快轉到主要內容

Ntfy Push Notification

·
Site部大開發 Ntfy Oracle VPS Nginx
目錄

使用 Ntfy 架設自己的 push notification server
#

搭建好 Uptime Kuma,自然需要一個 push notification 服務方便能馬上能收到通知。 Uptime Kuma 支援一大堆不同的 push notification 服務。我原先想用PushOver。網上用戶評價不錯,不需要訂閱(這個很重要),收費合理,每個平台上5刀一次買斷無限次 push,有 browser extension,即是說我10刀就可全平台(ios,android,Mac)。 但後來又發現 Ntfy 基於盡可能 self host (貧窮)的原則,所以着手搭建 Ntfy server。以下是自己踩坑的經歷, 方便已步入失智的我日後參考。

Ntfy 是什麼?
#

Ntfy(發音為 “notify”)是一個簡單的、自助的、易於部署的伺服器及命令列工具。它透過 HTTP/HTTPS 工作,提供了基本的 Web UI、命令列界面和 API,對各種用例都極具靈活性。它支援包括命令列、網頁瀏覽器等在內的多種客戶端。此外,ntfy 還擁有跨平台支援,意味著我可以將其整合到我其它的服,。

使用 Docker Compose 安裝 Ntfy
#

提供了多種安裝方法,但現但是我只在我這種小白當然只會Dock和Dockcom post

version: '3'
services:
  ntfy:
    image: binwiederhier/ntfy
    restart: unless-stopped
    environment:
      NTFY_BASE_URL: your base url e.g https://ntfy.mydomain.com
      NTFY_CACHE_FILE: /var/lib/ntfy/cache.db
      NTFY_AUTH_FILE: /var/lib/ntfy/auth.db
      NTFY_AUTH_DEFAULT_ACCESS: deny-all
      NTFY_BEHIND_PROXY: true
      NTFY_ATTACHMENT_CACHE_DIR: /var/lib/ntfy/attachments
      NTFY_ENABLE_LOGIN: true
      NTFY_UPSTREAM_BASE_URL: https://ntfy.sh
      NTFY_WEB_PUSH_PUBLIC_KEY: <public_key>
      NTFY_WEB_PUSH_PRIVATE_KEY: <private_key>
      NTFY_WEB_PUSH_FILE: /var/lib/ntfy/webpush.db
      NTFY_WEB_PUSH_EMAIL_ADDRESS: <email>
	  TZ=Asia/Hong_Kong    # 更換為您本地的時區
    volumes:
      - ./:/var/lib/ntfy
    ports:
      - 8093:80
    command: serve

在終端機窗口中導航至您的專案目錄並運行:

   docker compose up -d

這個命令將從 Docker Hub 拉取 ntfy 的 Docker 映像,創建您定義的 volumes,並在新容器中啟動 ntfy 服務命令

檢查一下 ntfy 是否成功創建

   docker ps

這是應該看見已經成功,運行,順便記下 ntfy 的 container id, 下一步有需要用到。

在 Docker 容器內運行 Ntfy
#

我並不打算公開這個服務,所以在 post裏面有這樣

      NTFY_AUTH_DEFAULT_ACCESS: deny-all

意思是預設所有用戶都沒有任何權限。於是我們需要添加用戶並賦予權限。反正只是得我使用,添加一個Admin用戶就可以了。 伺服器運行後,我們要添加新用戶等管理任務。這些任務可以使用 ntfy 命令列界面來完成,因為 ntfy 本身是在 container 內,所以需要使用 docker exec 命令來在容器內運行命令。 例如我需要添加 admin 用戶,:

docker exec -it ntfy_container_name ntfy user add --role=admin admin

意思是加入一個名叫 admin 的用戶並付予admin權限, 然後確認密碼。

ntfy_container_name 替換為容器的實際名稱或剛才記下的 container id

確認一下:

docker exec -it ntfy_container_name ntfy user list

docker exec 一起使用的 -it 選項的意思是:

  • -i--interactive 保持 STDIN(標準輸入)打開,允許您輸入到容器中。
  • -t--tty 分配一個偽 TTY,為您提供支援文字格式、光標移動等的終端機類界面。

-it 結合起來,使得如同在本地終端機會話一般,能夠實現真正的互動體驗。

使用 Ntfy 的 Web UI
#

一切運作正常後,可以從 http://localhost:8093 來訪問 Web UI。有了這個界面,就可以管理話題、查看消息等。不過你馬上又會看到這個 Error:
Notification not supoorted Nofification are only supported over HTTPS. This is a limitation of the api

意思是只能用來訪問服務這時, 我們的好朋友 [Nginx Proxy Manager] 又要出動了。

保護 Ntfy
#

新增一個 ntfy 的 A record, 指向 mydomain.com,亦即 docker compose 中的 BASE_URL

在 NPN 中 新增 ntfy.mydomain.com 的 host, 指向本機的 port 8093 , 使用之前已經申請的 wild card certificate

大功告成!

相關文章

Oracle Pay as you Go
Site部大開發 VPS
Docker Compose PUID Best Practice
Site部大開發 docker compose
Oracle Always Free VPS
Site 部大開發 VPS