前言
Bark 是一款 iOS 端的推送服务,通过部署一个 Server 服务端,可以通过浏览器,脚本,以及各种程序里来给 iOS 设备发送推送通知。
这个项目其实已经出来有好几年了,只是最近在优化一些运维管理项目时才接触和使用,在使用了几个月后还是打算分享下部分小技巧。
推送流程简单说明
首先需要一个服务端,本文会介绍如何部署。然后 iOS 设备在 App Store 安装Bark
,获取到该设备的唯一key
,通过浏览器、curl 命令或者在各种 shell python 脚本里来配置推送内容。触发后,服务端接受到推送,会请求苹果的APNs
向你的 iOS 设备发送推送通知。
免费的推送服务器
https://bark.ioiox.com
key
和内容
都会记录到服务器日志中,请不要使用免费服务器来推送机密或私有信息
,也请不要滥用。你可以继续参照下文部署自己的服务端。
Bark Server
使用 docker 来部署非常简单,官方镜像支持 X86 和 ARM 架构。
docker
docker run -dt --name bark -p 8080:8080 -v `pwd`/bark-data:/data finab/bark-server
根据情况自行修改端口映射和数据目录的挂载。
docker compose
version: '3.8'
services:
bark-server:
image: finab/bark-server
container_name: bark-server
restart: always
volumes:
- ./data:/data
ports:
- "8080:8080"
配置域名 (可选)
部署完毕后http://IP:8080
就是 bark 的后端服务地址,可以直接使用,也可以参考以下 nginx conf 来配置域名和 HTTPS。
upstream bark {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name bark.ioiox.com;
return 301 https://bark.ioiox.com$request_uri;
}
server {
listen 443 ssl;
server_name bark.ioiox.com;
gzip on;
ssl_certificate /usr/local/nginx/conf/ssl/ioiox.cer;
ssl_certificate_key /usr/local/nginx/conf/ssl/ioiox.key;
ssl_trusted_certificate /usr/local/nginx/conf/ssl/ioiox.cer;
location / {
proxy_redirect off;
proxy_pass http://bark;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;
client_max_body_size 100m;
client_body_buffer_size 128k;
}
access_log /home/wwwlogs/bark.ioiox.com.access.log main;
error_log /home/wwwlogs/bark.ioiox.com.error.log warn;
}
常规使用
客户端
iOS 设备直接在 App Store 下载bark
,打开后添加 bark 后端服务器地址。(实际上不添加也不影响使用,只是添加服务器端可以方便的在 app 里查看到各种推送地址方便复制使用。)
同时也会看到本设备的一串key
,请不要随意泄露此key
,以免被别人滥用推送垃圾通知,如果泄露也可以通过删除 app 重新安装来更新。
bark 的常规命令
其实 app 内和官方文档已经很好的介绍了如何使用,最简单的例子如下:
浏览器中打开
https://bark.ioiox.com/your_key/标题/内容
curl命令(可以用于 shell python 脚本中)
curl https://bark.ioiox.com/your_key/标题/内容
还可以配置分组,分组的意思是在 iOS 端里的历史记录中可以根据分组来查看各种通知。
https://bark.ioiox.com/your_key/标题/内容?group=IOIOX
高级用法
常规在浏览器或者命令行推送对文字的空格,换行都是需要进行 url-encoder 才能识别,以下是一些我在使用中用到过的示例,大家可以直接拿去使用。
换行
换行符为%0a
,注意标题是不支持换行的。
https://bark.ioiox.com/your_key/标题/内容%0a换行
https://bark.ioiox.com/your_key/网站服务通知/网站:www.ioiox.com%0a状态:运行正常
空格
空格符为%20
,标题也是可以使用空格符。
如果是在浏览器里发送推送,可以直接在内容里使用空格,浏览器会自动转换。
https://bark.ioiox.com/your_key/标题/内容 空格
如果在命令行里则需要使用空格符
https://bark.ioiox.com/your_key/标题/内容%20空格
其他需要转译的字符
例如/
符号也是需要进行 url-encoder 获得%2F
。
https://bark.ioiox.com/your_key/GitHub/stilleshan%2Fdockerfiles
配合换行和空格
https://bark.ioiox.com/your_key/GitHub%20Action/仓库:%20stilleshan%2Fdockerfiles%0a状态:%20Workflow%20工作流成功
icon 和 group 等多个叠加
正常情况下 icon 配置,icon 图标会缓存到 iOS 设备中。
https://bark.ioiox.com/your_key/标题/内容?icon=https://www.ioiox.com/avatar.jpg
如果同时还需要配置 group 等,则需要使用&
来拼接。
https://bark.ioiox.com/your_key/标题/内容?icon=https://www.ioiox.com/avatar.jpg&group=IOIOX
基本上以上一些小技巧应该能完全满足大部分的需求了。当然 bark 还支持 Jason 格式的请求,相信会 Jason 的程序员们应该不需要我来教了,直接查看文档即可。
结语
再次感谢作者Finb
开发的这么好用的工具,可以加入他的 TG 群组讨论和咨询。
11 条评论
已经部署成功!谢谢大佬~
建立域名,申请证书,反向代理。
请问这个域名部署可以出一期详细的教程吗?目前有动态公网ip和花生壳ddns,但是无法通过外网访问bark-server,但docker中的nginx倒是可以访问
就是常规反代就可以了