ntfy 教學:一行 curl 推到手機,主題名稱才是你真正的密碼

ntfy 是 Apache-2.0 與 GPLv2 雙授權的開源推播服務,GitHub 34,556 顆星,最新版本 v2.28.0。用作者的公開伺服器 ntfy.sh,手機裝 App、訂閱主題、電腦打一行 curl(Windows 的 PowerShell 要打 curl.exe)就能把通知推到手機,Title、Priority、Click 這幾個 header 最實用;從 n8n 發的話,中文標題放 header 會報錯,要改成 POST JSON 到根網址 https://ntfy.sh/。行銷人最值得接的是高價值表單、n8n 流程失敗(用 Error Trigger 節點,每條要監控的流程都要各自指定,只有自動執行的流程出錯才會觸發)、網站掛掉(Uptime Kuma 內建 ntfy 選項)與競品變動(changedetection.io 透過 Apprise)。最大的坑是 ntfy.sh 上沒鎖的主題,任何知道名稱的人都能訂閱也能發送,名稱要隨機、通知內文不放客戶個資。免費版每天 250 則、附件單檔 2 MB;付費 Supporter 每月 6 美元起可以保留主題。自架要設 cache-file 讓訊息重啟後還在、deny-all(記得替帳號開權限,一般帳號預設沒有權限)、behind-proxy 與 upstream-base-url,iPhone 沒設轉送的話通知可能晚好幾個小時,以 iPhone 為主的團隊先別急著自架。
- 發通知只要一行 curl(Windows 的 PowerShell 要打 curl.exe),先用公開的 ntfy.sh 跑通,再加 Title、Priority、Click 讓通知能直接點進後台;從 n8n 發中文標題要改成 POST JSON 到根網址,放 header 會報錯
- ntfy.sh 上沒鎖的主題,知道名稱的人都能訂閱也能發送,主題名要隨機英數,通知內文不放客戶個資
- 免費版每天 250 則、附件單檔 2 MB;付費 Supporter 每月 6 美元起可以保留主題,設成只有自己能讀寫,團隊要一起收得共用同一組帳號或 token
- 自架開 deny-all 之後,ntfy user add 建的一般帳號預設沒有權限,要升成 admin 或用 ntfy access 開主題權限,n8n 才發得出通知;訊息要撐過重啟還得設 cache-file
- 自架推 iPhone 要設 upstream-base-url 轉給 ntfy.sh,沒設可能晚好幾個小時,以 iPhone 為主的團隊先別急著自架
報價表單晚上十點有人填,你隔天早上十點才看到;n8n 的流程半夜掛掉,三天後客戶來問才發現。缺的通常不是更厲害的工具,是一個會在當下叫你的鈴鐺。
ntfy 就是那個鈴鐺,開箱那篇 講過他適合誰,這裡直接接起來。發通知到手機只要一行指令,真正要想清楚的是兩件事:主題名稱等於密碼,還有你團隊拿的是 iPhone 還是 Android。
先用 ntfy.sh 跑通一次
ntfy 是開源推播服務,GitHub 34,556 顆星,最新版 v2.28.0,Apache-2.0 與 GPLv2 雙授權,商用沒有營收或人數限制。作者養了一台公開伺服器 ntfy.sh,不用註冊就能用:
- 手機裝 ntfy App(Google Play、F-Droid 或 App Store)
- 訂閱一個主題,名稱只能用英數、底線、連字號,最長 64 字元,直接打一串隨機英數
- 電腦打 curl -d "有人填了報價表單" ntfy.sh/YOUR_RANDOM_TOPIC,主題換成你取的名字。Windows 的 PowerShell 要打 curl.exe
手機跳出來就成功了。再用 header 加參數:Title 是標題,Priority 分 1 到 5(5 會長震動跳視窗),Click 讓點通知直接打開 CRM 那一列。
行銷人最常接的三種通知
高價值表單有人填。 電子報訂閱不用叫你,報價、企業內訓詢問才值得。表單送進 n8n 的 Webhook 節點,接 HTTP Request 節點發到 ntfy。坑在這裡:n8n 跑在 Node.js 上,header 放中文會報 Invalid character in header content,標題有中文就改成 POST JSON 到根網址 https://ntfy.sh/,topic、title、message 都寫進去。n8n 怎麼上手,看 n8n 教學。
自動化流程失敗。 我覺得最值得先做。建一條用 Error Trigger 節點開頭的流程,再到每條要監控的流程設定裡把他指定成 Error workflow,掛掉就推一則 Priority 5。只有排程、webhook 這類自動執行的流程出錯才會觸發,手動按執行測試不會。原因我寫在 自動化會安靜地失敗。
網站掛了,或競品動了。 Uptime Kuma 的通知設定直接有 ntfy 選項,填伺服器和主題就好。changedetection.io 透過 Apprise,通知網址填 ntfys:// 加主題名稱,競品改價會直接跳到手機。
主題名稱就是密碼
ntfy.sh 上沒鎖的主題,任何知道名稱的人都能訂閱、也都能發送。取 leads、公司名加 alert 這種好猜的名字,別人看得到你每則表單通知,也能塞假警報給你。
官方說隨機 10 位字元的主題名配上速率限制,強度跟好密碼差不多。我會再多做一步:通知內文不放客戶姓名、電話、email,只寫「新的報價需求」,Click 連到要登入的後台。就算主題外洩,漏的也只是「有人填了表單」。ntfy.sh 的紀錄還會留主題名稱和 IP,作者在 FAQ 直接寫:訊息敏感就自己架。
ntfy.sh 方案與自架怎麼選
| 面向 | ntfy.sh 免費 | ntfy.sh 付費 | 自架 |
|---|---|---|---|
| 費用 | 0 | 每月 6、12、25 美元 | 只有 VPS 錢 |
| 每日訊息 | 250 則 | 2,500、20,000、50,000 則 | 自己設 |
| 鎖主題 | 不行 | 保留 3、10、50 個 | 存取控制全部鎖 |
| iPhone 即時推播 | 直接可用 | 直接可用 | 要設 upstream 轉送 |
| 適合 | 先跑通、不含個資 | 不想顧主機又要鎖主題 | 內容敏感、每人各自帳號 |
自架要先設的四個地方
用 Docker 架,image 裡沒有 server.yml,要自己建一份掛進 /etc/ntfy:
- cache-file:訊息預設放記憶體,重啟就沒了,設好檔案路徑並掛 volume
- auth-file 加 auth-default-access: deny-all:預設所有人都能讀寫任何主題,帳號資料庫一樣要掛 volume
- behind-proxy: true:前面有 Nginx 的話,沒開會把所有訪客當同一個 IP 限流
- upstream-base-url: https://ntfy.sh:給 iPhone 用的,下一段講
開了 deny-all,ntfy user add 建的帳號預設沒有權限,要升 admin 或開主題權限,n8n 才發得出去,指令放在文末常見問題。要不要碰 Docker,我寫在 行銷人該不該學 Docker。
iPhone 用戶先看這段
iOS 限制背景執行,自架的 ntfy 得透過 ntfy.sh 叫醒手機,轉過去的只有訊息 ID 和雜湊值,不含內文。官方寫明:
- 沒設 upstream-base-url,通知可能晚好幾個小時
- base-url 跟 App 的預設伺服器網址不一致,通知會整個收不到
- 手機連不到你的伺服器,只會看到「New message」
作者也承認 iOS App 很陽春、有點 bug,已知問題是通知跳了,App 列表要手動下拉才更新。Android 重要的主題記得開即時傳送(instant delivery),不然可能晚幾分鐘到幾小時。
所以團隊以 iPhone 為主,先別急著自架,ntfy.sh 加付費保留主題通常省事很多。
我的建議
先用 ntfy.sh 免費版、隨機主題、內文不放個資,把「流程失敗就推到手機」跑通。
再替通知分級:網站掛掉給 5,報價表單給 4,每日報表給 2。全部都給最高級,通常沒多久你就會把他靜音。
多人要一起收,付費保留主題(共用一組帳號或 token)或自架(每人各自帳號)都行;內容非帶客戶資料不可,就自架加 deny-all。要不要自架怎麼判斷,可以看 工具要不要自架的五個問題。
每多一則不需要你動手的通知,下一則重要的就更容易被滑掉,真正要練的是挑出哪幾件事值得叫你。怎麼把這些通知接進自動化流程,我在 AI101 也整理了一些。
我認為農場誇張詞會讓人秒識破你在學爆紅文。判斷很簡單,這個字會不會出現在農場標題,會就換掉。把「崩、爆、神級、秒懂」換成具體描述,可信度反而比喊得大聲還高。
我自己在學 AI 工具的方法,就是先動手做出一個小到不能再小的版本,再回頭優化。我寫教學也照這個邏輯,與其解釋一個技巧,不如用文章本身的形式直接演給讀者看,看到比讀到多十倍說服力。
不想碰伺服器,只想要結果?
這個 GitHub 專案功能完整,但你得自己配 server、串 API 金鑰、扛維運。
如果你現在只是要 AI 幫你寫文案、拆工作流、生行銷內容,免安裝、開箱即用的線上工具會更快上手。
30 秒免費試用 AI101 挑戰平台 →常見問題
ntfy.sh 免費版有什麼限制?需要付費嗎?
不註冊直接用 ntfy.sh 的話,每天可以發 250 則訊息,附件單檔上限 2 MB,訊息預設快取 12 小時,而且主題無法保留,任何知道名稱的人都能訂閱與發送。需要更高額度或想鎖住主題可以付費:Supporter 每月 6 美元(每天 2,500 則、保留 3 個主題)、Pro 每月 12 美元、Business 每月 25 美元,年繳另有折扣。一個人的表單與監控通知,免費版通常就夠用。
ntfy 自架之後 iPhone 收不到通知或延遲很久怎麼辦?
iOS 限制背景執行,自架伺服器要在設定檔加上 upstream-base-url: https://ntfy.sh,讓他把喚醒請求轉給 ntfy.sh,再經 Firebase 與 APNS 叫醒手機;轉過去的只有訊息 ID 與主題網址的雜湊值,不含內文。沒設的話通知可能晚好幾個小時。另外有兩種狀況要分開看:base-url 跟 iOS App 設定的預設伺服器網址不一致,通知會整個收不到;手機連不到你的伺服器,只會看到「New message」,看不到內容。
ntfy 的主題名稱被別人知道會怎樣?要怎麼保護?
在 ntfy.sh 這類沒有設存取控制的伺服器上,知道主題名稱的人都能訂閱你的通知,也能往裡面發假訊息,官方的說法是主題名稱就是密碼。保護方式有三層:主題名稱用隨機英數字元;通知內文不放客戶姓名電話,只放連到需要登入的後台的連結;需要時改用 ntfy.sh 付費方案保留主題,或自架並把 auth-default-access 設成 deny-all。自架開了 deny-all 之後要注意,ntfy user add 建出來的一般帳號預設沒有任何權限,要用 ntfy user change-role 帳號 admin 升成管理員,或用 ntfy access 帳號 主題 rw 替一般帳號開讀寫權限,再用 ntfy token add 帳號 發 access token 給 n8n 這類程式,不然發通知會被拒絕。用 Docker 架的話,這幾個指令前面要加 docker exec -it 容器名稱。
每週一封,上週精選寄給你
每週一早上寄一封,把上週站上新上架的文章挑出來給你。行銷觀點建立判斷力,工具開箱幫你選對工具,隨時可以退訂。