在群晖上使用Bark搭建专属的消息推送服务
一直以来我都是使用Server酱完成各类消息的推送,比如某东薅羊毛通知等。不过随着微信官方对微信消息的管控越来越严,Server酱免费版也开始限制推送消息的数量,所以我就想有没有其他类似的解决方案。结果我就找到了这个神器——Bark
Bark是一款开源的消息推送服务,目前官方默认支持iOS系统,用于给iPhone发送自定义的内容,支持文字、链接和声音。通过部署Bark服务器,可以安全的推送信息。
开源地址:https://github.com/Finb/bark-server
安装Bark服务器
我手里有一台群晖DS918+,完美支持docker,所以下面的操作都是在这台群晖上进行的。当然如果你有其他设备支持Docker,并且你手头有一台iPhone,一样可以玩转这款软件。
1、下载Bark
在docker注册表中搜索Bark
,结果中的第一个就是,双击下载即可。
2、配置和启动Bark
1)下载完成后,在映像中找到Bark的镜像,然后双击打开,设置容器的名称
2)点击高级设置,设置挂在文件目录和端口映射,然后点击应用
将容器的/data
目录挂载到本地目录
将容器的8080
端口映射到本地的端口(选择一个没有被占用的端口,如18080)
3)点击下一步,勾选向导完成后运行此容器
,然后点击完成,即可启动Bark服务器
3、使用Docker命令一键启动Bark
在群晖中可有安装上面的步骤一步步操作即可,当然也可以直接使用Docker命令一键启动:
docker run -dt --name bark -p 8080:8080 -v `pwd`/bark-data:/data finab/bark-server
4、配置反向代理和路由器端口映射
通过上面的操作,我们已经把Bark服务器搭建和运行起来了,这时候如果想在公网环境下使用,还需要对群晖进行一些设置
1)配置反向代理
打开控制面板->登录门户->高级,点开反向代理服务器
,新增一条规则,配置如下:
来源配置:协议选https,主机名就是域名,端口为下面将映射到路由器上的端口
目的地配置:协议选http,主机名填localhost,端口为容器映射到本地的端口
2)配置路由器端口映射
方法一:
打开控制面板->外部访问->路由器设置,新增一个端口映射,配置如下:
选择内置应用程序
,然后下一步,在页面中找到上面创建的反向代理服务器端口应用,选中后点击完成。然后在主页面点击应用,等待一会即可。
方法二:
直接到路由器管理后台,设置NAT映射
安装和配置客户端
服务器配置完成后,需要配置手机端应用了。
1、下载Bark客户端
在App Store中搜索Bark
,排在第一位就是,直接下载即可。
2、配置客户端
打开App,点击右上角的+
,然后输入你的域名即可:
返回主界面后,你将得到一个带有专属于你URL链接。注意域名后面的那一串字母和数字是你的专属标签,不要泄露。
3、推送消息
你可以直接点击App上的箭头按钮,将自动触发一条消息推送,当然是测试用的。
在真正的使用场景中,一般是通过请求Bark的URL链接实现推送的。
1)Bark的URL链接规范
支持发 get 或者 post 请求 ,请求成功会立即收到推送。
除掉域名,URL 组成: 第一个部分是 key , 之后有三个匹配
/:key/:body
/:key/:title/:body
/:key/:category/:title/:body
title 推送标题 比 body 字号粗一点
body 推送内容 换行请使用换行符 '\n'
category 另外的功能占用的字段,还没开放 忽略就行
post 请求 参数名也是上面这些
比如:通过浏览器请求下面的链接
https://yourdomain/yourkey/我是胡萝虎
你的手机将收到这样一条通知:
2)高级操作
除了支持推送基本的文字外,还支持下面更多消息类型:
- url
// 点击推送将跳转到url的地址(发送时,URL参数需要编码) https://api.day.app/yourkey/百度网址?url=https://www.baidu.com
- isArchive
// 指定是否需要保存推送信息到历史记录,1 为保存,其他值为不保存。 // 如果不指定这个参数,推送信息将按照APP内设置来决定是否保存。 https://api.day.app/yourkey/需要保存的推送?isArchive=1
- group
// 指定推送消息分组,可在历史记录中按分组查看推送。 https://api.day.app/yourkey/需要分组的推送?group=groupName
- icon(仅iOS15及以上)
// 指定推送消息图标 https://api.day.app/yourkey/需要自定义图标的推送?icon=http://day.app/assets/images/avatar.jpg
- 时效性通知
// 设置时效性通知 https://api.day.app/yourkey/时效性通知?level=timeSensitive // 可选参数值 // active:不设置时的默认值,系统会立即亮屏显示通知。 // timeSensitive:时效性通知,可在专注状态下显示通知。 // passive:仅将通知添加到通知列表,不会亮屏提醒
3)实战
下面为某东自动领豆脚本的配置,会将告警或日报等消息使用Bark发送到手机上: