Bark是一款开源的消息推送服务,用于给 iPhone 发送自定义的内容,支持文字和链接。我们可以使用Bark作者Fin提供的服务端来发送通知,也可以使用别人的。但通知过程所有数据都会保存在服务器,这样并不安全 。通过部署自己的 Bark 服务端,我们可以安全地推送一些敏感信息。部署自己的 bark-server
,来进行消息提醒。Bark 分为客户端和服务端。其中,客户端用于接收消息;服务端用于推送消息。
官方项目地址:
https://github.com/Finb/bark-server https://github.com/Finb/Bark
安装 最简单的,docker部署:
1 docker run -dt --name bark -p 8080:8080 -v `pwd `/bark-data:/data finab/bark-server
或者docker-compose启动,方便之后修改参数:
1 2 3 mkdir bark-server && cd bark-server curl -sL https://git.io/JvSRl > docker-compose.yaml docker-compose up -d
【可选】健康检查 为了监控,增加了一个健康检查,先修改docker-compose.yml
文件。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 version: '3.8' services: bark-server: image: finab/bark-server build: context: ./ dockerfile: Dockerfile container_name: bark-server healthcheck: test: curl http://127.0.0.1:8080/healthz restart: always volumes: - ./data:/data ports: - "8080:8080"
但是原镜像是没有curl这个命令的,我们需要加上,所以创建Dockerfile文件,写入:
1 2 FROM finab/bark-server RUN apk --update --no-cache add curl
然后启动即可
1 docker-compose up -d --build
用docker ps
查看:
1 2 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3dba0f99f5ea finab/bark-server "bark-server" 4 minutes ago Up 4 minutes (healthy) 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp bark-server
打开防火墙 如果你装了防火墙的话,不要忘记放开端口,否则不能外网访问:
1 2 firewall-cmd --permanent --zone=public --add-port=8080/tcp firewall-cmd --reload
iptables是另外的方法。
检查可用性 用 safari
,在网址一栏输入 http://你的ip:8080/ping
打开,看是否返回类似下面的信息:
1 { "code" : 200 , "message" : "success" , "timestamp" : 1652768076 }
或者输入 http://你的ip:8080/healthz
,看网页是否返回 ok
。
添加nginx反代 用IP访问确实难看,换成域名访问还需要用nginx反代,这里准备一个域名,解析到你的服务器IP。 创建nginx配置文件:
1 vim /etc/nginx/conf.d/bark.conf
填入一下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 server { listen 80; listen [::]:80; # Replace bark.app.dev with your real domain name. server_name bark.app.dev; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; # Replace bark.app.dev with your real domain name. server_name bark.app.dev; # ssl_certificate /path/to/signed_cert_plus_intermediates; # ssl_certificate_key /path/to/private_key; ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; # about 40000 sessions ssl_session_tickets off; # modern configuration ssl_protocols TLSv1.3; ssl_prefer_server_ciphers off; # HSTS (ngx_http_headers_module is required) (63072000 seconds) add_header Strict-Transport-Security "max-age=63072000" always; # OCSP stapling ssl_stapling on; ssl_stapling_verify on; # verify chain of trust of OCSP response using Root CA and Intermediate certs # ssl_trusted_certificate /path/to/root_CA_cert_plus_intermediates; # replace with the IP address of your resolver #resolver 127.0.0.1; location / { log_not_found on; # Replace http://192.168.1.123:8080 with the listening address of the bark server. proxy_pass http://192.168.1.123:8080; proxy_read_timeout 300; proxy_connect_timeout 300; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Real-IP $remote_addr; } }
用 nginx -t
验证一下是否有问题。
申请SSL证书 用certbot 申请SSL证书,具体安装看官网👉certbot
我的是:
1 2 yum install certbot certbot --nginx
按照指示来就好。
客户端使用 下载bark app,打开,点击右上角的 +
号,添加刚刚的域名或者ip
域名格式: https://你的域名
,比如说 https://api2.day.app
。
ip格式: http://你的ip:你的端口
,比如说 https://123.45.67.89:8080
。
之后回到首页,点击 注册设备
获取你的 Device Key
获取key 打开bark,在界面点击☁云朵图案。
然后点击要用的服务器,点击 Copy address and key
。即可。