自架通知推送服務 – ntfy

前言

前幾天在大改內網的網路架構,所以經常使部分服務不太穩定。雖然我一直都有使用類似 Uptime Kuma 這類的監控服務,但他通常是發送到 Discord 或 Telegram 的,這讓我有時候會忽視這些訊息。

也是在前些時間看到 ntfy 這個軟體,他是獨立設計成 APP 的。當有人向 ntfy 的 API 端點發送訊息時,你手機上的這個 APP 就會收到並彈出通知。而當然,ntfy 也是可以自行架設伺服器的,所以這篇文章就是來說說如何玩他。

安裝方式

你可以使用最簡單的方式,單次的就將 ntfy 安裝在你的 Linux 上。

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://archive.heckel.io/apt/pubkey.txt | sudo gpg --dearmor -o /etc/apt/keyrings/archive.heckel.io.gpg
sudo apt install apt-transport-https
sudo sh -c "echo 'deb [arch=amd64 signed-by=/etc/apt/keyrings/archive.heckel.io.gpg] https://archive.heckel.io/apt debian main' \
    > /etc/apt/sources.list.d/archive.heckel.io.list"  
sudo apt update
sudo apt install ntfy
sudo systemctl enable ntfy
sudo systemctl start ntfy

接著打開瀏覽器,輸入機器的 IP 位址,就可以直接看到 ntfy 的網頁介面了,很快吧。

001.jpg

但如果你不想讓這個網頁介面攤在陽光下,我們可以把它關掉。編輯 /etc/ntfy/server.yml 這個檔案,找到 web-root 這行,改成 disable 即可。

002.jpg

並重啟 ntfy 使他生效。

sudo systemctl restart ntfy

開始使用

在我的環境中,我已經將他綁上網域了,所以接下來的所有操作都已經連接上網路了,你也可以先這麼做。

我在手機上安裝了 ntfy,打開他後,選擇右上角的 Setting,去更改我們已經綁上網域的伺服器。

003.jpg

接著回到主頁,我們就可以新增並訂閱一個 topic,那我們這裡就用 test 就好。

004.jpg

接著你可以用 Postman 之類的東西,向這個 /test 這個端點發送訊息,例如說:

POST /test HTTP/1.1
Host: your.domain.com
Title: Testing!!!
Priority: urgent
Tags: warning,skull

哈囉!測試一個測試訊息。

送出後,你的手機就會收到通知!

005.jpg

這就是簡單使用 POST 來觸發通知的方式,聰明如你現在可以自己寫程式把他套進去,或是相關服務如果支援 ntfy 的話,來使你的手機收到通知囉!