搭建基于bark server的消息推送服务器
本文最后更新于 196 天前,其中的信息可能已经有所发展或是发生改变,如有失效可到评论区留言。
文章摘要
在监控站点健康状态时,用户面临短信、Webhook、Telegram等通知方式的局限性,最终选择部署Bark自建消息推送服务器。通过Docker搭建Bark服务端,配置iOS设备注册获取唯一token,并在Uptime-Kuma中设置Bark接入点地址,实现跨设备实时推送通知。方案利用Bark轻量化的HTTP API特性,结合反向代理实现公网访问,解决了传统短信模板限制和第三方平台适配问题,最终构建出无需复杂认证、支持多终端同步的即时通知系统,为监控告警场景提供了一种高效可行的解决方案。
Qwen3-14B · 2026-06-18

前言

我在使用Uptime-Kuma的时候,遇到一个很纠结的问题:那就是监控到自己站点的健康变化的时候,如何才能最有效的进行实时通知?Uptime-Kuma支持很多通知方式,但是正常人能用的不过是这几个:
1、SMTP
这个倒是可以,不过需要设置对应的邮件客户端的即时通知,只是我一般不喜欢一有邮件就看,所以邮件通知可以作为存档查看,却不合适作为即时通知。这里顺便一提139邮箱,到是支持短信通知,但是对于短信通知的格式却不太容易改。
2、webhook
这个也行,但是最好是你有现成的webhook接收端,如果要完全自建那就不推荐。
3、Telegram
这个其实也行,但是不适合国内使用,自己有方法的朋友可以自己自行设置,也比较简单。
4、AliyunSMS
这个本来是可行的,我还专门花了30元买了一个套餐,结果搞到最后才发现,短信模板必须包含以下4个变量:{name}{time} {status}{msg},但是包含了这4个变量的短信模板却不能通过审核,客服打死不同意4个变量,建议我3个就够了,可能是怕我干坏事?

image.png

所以30元打了水漂。。

image.png

另外还有钉钉,飞书,企业微信机器人等,但是这些都不适合我用(本来就在使用的兄弟可以用),我本来就没用这些。。

到这里视乎陷入了死局,结果这个时候我发现了bark。

image.png

Bark是一个支持自建的消息推送服务器(其实也是webhook),并且在苹果系列产品上(iphone,ipad,mac)上都可以直接在app stroe里安装client用来接收通知,这个完全契合了我的现状。

部署bark-server

首先,使用docker安装一个bark服务器,推荐在有公网地址的家庭宽带,或者云服务器上进行安装,安装命令如下:

docker run --name bark-server -dt  --restart=always  -p 8080:8080 -v /docker/bark-server/data:/data finab/bark-server

参数解释:
-p 8080:8080
指定容器的映射端口,8080这个按你自己实际环境需求修改就行。
-v /docker/bark-server/data:/data finab/bark-server
/docker/bark-server/data是我宿主机上的挂载目录,按照自己的实际环境进行更改。

运行完成以后,直接使用浏览器访问http://你的公网ip:8080/ping,如果得到以下响应:

image.png

即为成功。

ios终端设置

然后在appstroe里下载bark的app,打开后,显示如下界面:

image.png

顺便说一句,bark默认就提供了可用的消息服务器,就是上面那个api.day.app,讲道理直接是可以用的,只不过是公用的,你推送的消息别人都能看到。所以为了安全我们还是最终要使用自建的服务器。

点击右上角的+号:

image.png

image.png

在服务器地址这里,输入http://你的公网ip:8080,然后点击右下角的完成,如下图:

image.png

添加成功以后会回到初始界面:
image.png

然后点击注册设备:
这时候会收到通知,要求允许bark app的通知,这里点击允许:
image.png

然后回到这个页面,就表示注册设备已经成功:
image.png

然后回到Uptime-Kump,在通知里选择bark:

image.png

注意这个红框中的bark接入点地址,就是上面我们刚注册成功以后那个界面中的红框部分地址,如下图:

image.png

这里我们只要点上方的复制按钮就能直接把这个地址复制下来,然后粘贴到Uptime-Kuma通知中的bark接入点就行了。后面的”这里改成你自己的推送内容“可以按你自己的需要进行修改,这个就是监控站点出问题的时候,app接收到通知的内容。

自此Uptime-Kuma的bark通知设置完成,我是同时设置了好几个bark通知,分别对应iphone,ipad,macbook,mac-mini,一出问题所有设备都实时收到通知,非常实用,再也不用纠结短信了。

配置公网访问

如果要发布到公网上的,大家需要根据实际环境和自己使用的反向代理选择最适合自己的发布方式,可以参考我以前的几篇文章:
1、docker系列 使用docker基于NPM搭建自己的反向代理
2、linux面板系列 配置反向代理并使用非443端口进行发布
3、家庭数据中心系列 通过国内备案云主机白嫖cloudflare实现国外快速访问国内站点
4、家庭数据中心系列 通过无公网IP的家庭宽带白嫖cloudflare实现快速建站(通用)

其中第1,2种方式适合有公网ip却没有合法443端口的环境(家庭宽带、未备案的云主机),需要在url后面加非标端口(如果使用cloudflare建站的不需要加端口,但是需要自定义源站端口,这个可以参考:家庭数据中心系列 通过cloudflare的Origin Rules解决建站有公网IP却没有合法的80、443端口的问题)。第3种方式适合有备案的云主机,第4种方式适合所有环境(包括没有公网IP的环境),也是我建议的方式(不管你的环境有没有公网IP,因为这种方式不需要直接在公网上跑https流量)。

4 总结

一、Bark 是一个简单的 Webhook 接收 API

Bark 服务端本质上是一个轻量的、基于 HTTP 的 API 接收服务。它不负责用户认证、不持久化数据,只做一件事:接收带有特定路径结构的 HTTP 请求,并将其中的内容转发为推送通知。

二、客户端注册获取唯一身份标识(token)

每个 Bark 客户端(如某台 iPhone)需要先与 Bark 服务端建立注册连接,注册完成后会获得一个唯一的 token。
这个 token 就是这个客户端的标识符,相当于它的”地址”。

三、Webhook 平台调用 Bark 的方式

任何支持 webhook 通知的平台,只需向 Bark 服务端发送如下形式的请求即可:

https://your-bark-server.com/token/推送内容

只要请求格式满足 Bark 的约定,Bark 服务端就会识别出目标设备,并把消息内容转发过去。

四、服务端的工作流程

  1. Bark 服务端接收到客户端请求(即 webhook 请求)
  2. 解析 URI 中的 token,查找当前已注册并活跃的客户端设备
  3. 提取路径和参数中的通知内容
  4. 构造并发送推送通知给客户端(如通过 Apple Push Notification Service)

五、为什么说 Bark 是一个简单的 Webhook 实现

• 请求结构清晰,无需认证流程

• 使用路径区分目标客户端,避免了复杂的数据交互

• 客户端保持活跃连接,使得推送几乎是即时的

• 本质是一个“根据 URI 匹配 + 提取参数内容 + 推送”的中转服务

注:最后这一节的总结部分内容是后期加的,可能和整体内容在一起显得有点突兀,不过无所谓了,我觉得还是加上这一节的内容比较好。

📌 内容结构提示:
这篇内容属于「博客知识地图」的一部分,你可以从这里查看完整内容路径: 博客知识地图
查看相关分类·3个匹配
📎 相关文章
分享这篇文章
博客内容均系原创,转载请注明出处!博客的RSS地址为:https://blog.tangwudi.com/feed,欢迎订阅;如有需要,可以加入Telegram群一起讨论问题。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
       

👋 欢迎来到“无敌的个人博客”

这里主要围绕以下方向展开长期探索:

🧱 个人数字基础设施与博客系统构建
☁️ Cloudflare 与网络架构实践
🧠 AI 与知识系统探索
🛡️ 网络安全与访问优化
🎵 音乐与声音认知
👁️ 认知视角与世界观