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

TL;DR

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 為主的團隊先別急著自架
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 為主的團隊先別急著自架。
⭐ Star 34.6k🟢 活躍維護
curl -d "測試通知" ntfy.sh/YOUR_RANDOM_TOPIC # YOUR_RANDOM_TOPIC 一定要換成你自己的隨機英數字串;Windows 的 PowerShell 要打 curl.exe;自架:docker run -p 80:80 -it binwiederhier/ntfy serve

報價表單晚上十點有人填,你隔天早上十點才看到;n8n 的流程半夜掛掉,三天後客戶來問才發現。缺的通常不是更厲害的工具,是一個會在當下叫你的鈴鐺。

ntfy 就是那個鈴鐺,開箱那篇 講過他適合誰,這裡直接接起來。發通知到手機只要一行指令,真正要想清楚的是兩件事:主題名稱等於密碼,還有你團隊拿的是 iPhone 還是 Android。

先用 ntfy.sh 跑通一次

ntfy 是開源推播服務,GitHub 34,556 顆星,最新版 v2.28.0,Apache-2.0 與 GPLv2 雙授權,商用沒有營收或人數限制。作者養了一台公開伺服器 ntfy.sh,不用註冊就能用:

  1. 手機裝 ntfy App(Google Play、F-Droid 或 App Store)
  2. 訂閱一個主題,名稱只能用英數、底線、連字號,最長 64 字元,直接打一串隨機英數
  3. 電腦打 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 免費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:

  1. cache-file:訊息預設放記憶體,重啟就沒了,設好檔案路徑並掛 volume
  2. auth-file 加 auth-default-access: deny-all:預設所有人都能讀寫任何主題,帳號資料庫一樣要掛 volume
  3. behind-proxy: true:前面有 Nginx 的話,沒開會把所有訪客當同一個 IP 限流
  4. upstream-base-url: https://ntfy.sh:給 iPhone 用的,下一段講

開了 deny-all,ntfy user add 建的帳號預設沒有權限,要升 admin 或開主題權限,n8n 才發得出去,指令放在文末常見問題。要不要碰 Docker,我寫在 行銷人該不該學 Docker。

iPhone 用戶先看這段

iOS 限制背景執行,自架的 ntfy 得透過 ntfy.sh 叫醒手機,轉過去的只有訊息 ID 和雜湊值,不含內文。官方寫明:

作者也承認 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 容器名稱。