手把手教你自建 Gotify 推送服務(wù),消息直達(dá) Android 手機(jī)
大家好,我是星哥。
在日常運(yùn)維、腳本監(jiān)控或者日常折騰中,我們常常需要一種方式,讓服務(wù)器上的重要信息能實(shí)時(shí)推送到我們的手機(jī)上。
以前大家用得最多的可能是 Server 醬 或者各類第三方 webhook 服務(wù)。雖然方便,但總歸受制于人:要么有次數(shù)限制,要么擔(dān)心隱私泄露,要么服務(wù)不穩(wěn)定。
![]()
“自己的數(shù)據(jù),當(dāng)然要掌握在自己手里。”
今天,星哥就帶大家搭建一個(gè)開(kāi)源、輕量、高效的自建消息推送服務(wù)——Gotify。它支持 WebSocket 長(zhǎng)連接,消息毫秒級(jí)直達(dá) Android 手機(jī),而且完全私有化部署。
![]()
廢話不多說(shuō),咱們直接開(kāi)干!
第一步:服務(wù)端部署(CentOS 示例)
Gotify 是基于 Go 語(yǔ)言編寫的,單二進(jìn)制文件運(yùn)行,非常輕量。這里我們以 CentOS 服務(wù)器為例,當(dāng)然,如果你熟悉 Docker,也可以用 Docker 一鍵部署,原理相通。
1. 下載并解壓
我們選取目前穩(wěn)定的 v2.9.1 版本(建議去 GitHub 查看最新版)。在服務(wù)器終端執(zhí)行以下命令:
2. 配置文件調(diào)整# 下載安裝包
wget https://github.com/gotify/server/releases/download/v2.9.1/gotify-linux-amd64.zip
# 解壓
unzip gotify-linux-amd64.zip# 賦予執(zhí)行權(quán)限
chmod +x gotify-linux-amd64
直接運(yùn)行可能會(huì)占用 80 端口,容易沖突。我們需要自定義配置文件。
# 下載官方示例配置
wget -O config.yml https://raw.githubusercontent.com/gotify/server/master/config.example.yml編輯 config.yml 文件,主要修改以下幾點(diǎn):
? 端口設(shè)置 :默認(rèn)改為
9080(避免與 Nginx 或其他服務(wù)沖突)。? 數(shù)據(jù)庫(kù) :默認(rèn)使用 SQLite,適合個(gè)人使用,無(wú)需額外安裝 MySQL/Postgres。
? 默認(rèn)管理員賬號(hào) :初始化時(shí)會(huì)創(chuàng)建,記得修改默認(rèn)密碼,安全第一!
port: 9080
database:
dialect: sqlite3
connection: data/gotify.db
defaultuser:
name: admin
pass: your_strong_password # ?? 務(wù)必修改為強(qiáng)密碼3. 啟動(dòng)服務(wù) ./gotify-linux-amd64此時(shí),服務(wù)已在后臺(tái)運(yùn)行,監(jiān)聽(tīng)本地的 9080 端口。
第二步:配置 Nginx 反向代理(推薦 HTTPS)
為了安全和方便訪問(wèn),強(qiáng)烈建議通過(guò) Nginx 進(jìn)行反向代理,并配置 HTTPS 證書(shū)。
1. Nginx 配置示例
在你的 Nginx 配置文件中(通常在 /etc/nginx/conf.d/ 下),添加如下配置:
upstream gotify {
server 127.0.0.1:9080;
}
server {
listen 443 ssl http2; # 建議使用 HTTPS
server_name push.yourdomain.com; # 替換為你的域名
# SSL 證書(shū)配置(略,請(qǐng)自行配置 cert 和 key)
location / {
proxy_pass http://gotify;
proxy_http_version 1.1;# ?? 關(guān)鍵配置:支持 WebSocket
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
# 保持連接超時(shí)時(shí)間
proxy_connect_timeout 1m;
proxy_send_timeout 1m;
proxy_read_timeout 1m;
}
}
星哥提示:Upgrade 和 Connection 頭信息至關(guān)重要,因?yàn)?Gotify 依賴 WebSocket 進(jìn)行實(shí)時(shí)通信,缺少這兩行會(huì)導(dǎo)致消息無(wú)法實(shí)時(shí)推送。2. 重啟 Nginx
nginx -t && systemctl reload nginx第三步:Android 客戶端連接服務(wù)端搞定后,我們需要在手機(jī)上安裝客戶端來(lái)接收消息。
1. 下載 App : 前往 GitHub Release 頁(yè)面下載 Android 客戶端: Gotify Android Releases https://github.com/gotify/android/releases
2. 登錄配置:
? 打開(kāi) App,輸入你的服務(wù)器地址(例如:
https://push.yourdomain.com)。? 輸入之前配置的
admin用戶名和密碼。? 點(diǎn)擊登錄,如果顯示綠色連接狀態(tài),說(shuō)明成功!
為了區(qū)分不同來(lái)源的消息(比如一個(gè)是監(jiān)控報(bào)警,一個(gè)是博客評(píng)論通知),我們需要在 Gotify 網(wǎng)頁(yè)端創(chuàng)建“應(yīng)用”。
1. 獲取 Token
1. 瀏覽器訪問(wèn)你的 Gotify 地址,登錄后臺(tái)。
2. 點(diǎn)擊左側(cè)菜單 APPS -> CREATE APPLICATION 。
3. 填寫名稱(如 "My Server"),點(diǎn)擊創(chuàng)建。
4. 復(fù)制生成的 Token ,這串字符是你發(fā)送消息的鑰匙,妥善保管!
我們可以用 curl 命令測(cè)試一下是否通暢。假設(shè)你的 Token 是 CDfn-FD5Ba5nTyJ:
curl -H "Accept: application/json" \
-H "Content-type: application/json" \
-X POST \
-d '{"title": "星哥測(cè)試", "message": "這是一條來(lái)自自建服務(wù)的推送消息!", "priority": 5}' \
"https://push.yourdomain.com/message?token=CDfn-FD5Ba5nTyJ"查看手機(jī): 如果一切正常,你的 Android 手機(jī)應(yīng)該會(huì)立刻彈出一條通知,標(biāo)題是“星哥測(cè)試”,內(nèi)容是“這是一條來(lái)自自建服務(wù)的推送消息!”。
星哥點(diǎn)評(píng)與注意事項(xiàng)
? 優(yōu)點(diǎn):
? 完全私有 :數(shù)據(jù)不經(jīng)過(guò)第三方,隱私安全。
? 實(shí)時(shí)性強(qiáng) :基于 WebSocket,比輪詢接口省電且即時(shí)。
? 輕量級(jí) :資源占用極低,老舊服務(wù)器也能跑。
?? 潛在坑點(diǎn):
? Android 后臺(tái)保活 :這是所有安卓推送的通病。如果 Gotify App 被系統(tǒng)殺后臺(tái),消息可能收不到。建議在手機(jī)設(shè)置中,將 Gotify 設(shè)為“允許后臺(tái)活動(dòng)”、“忽略電池優(yōu)化”,并鎖定后臺(tái)任務(wù)。
? iOS 支持 :目前 Gotify 官方?jīng)]有 iOS 客戶端(因?yàn)?iOS 對(duì)后臺(tái)推送機(jī)制限制嚴(yán)格,通常需要 APNs 支持)。iOS 用戶可以考慮配合 Bark 等其他方案,或者僅作為 Web 端查看。
自建服務(wù)雖然前期需要一點(diǎn)配置成本,但換來(lái)的是長(zhǎng)期的穩(wěn)定和對(duì)數(shù)據(jù)的掌控感。對(duì)于喜歡折騰的技術(shù)愛(ài)好者來(lái)說(shuō),Gotify 絕對(duì)是一個(gè)值得加入工具箱的神器。
如果你在部署過(guò)程中遇到問(wèn)題,或者有更好的推送方案歡迎交流!
覺(jué)得文章有用? 歡迎點(diǎn)贊、在看、轉(zhuǎn)發(fā),支持星哥繼續(xù)分享更多硬核技術(shù)干貨!
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.