自从自己搭建的自动签到加上各种乱七八糟的东西越建越多,能及时了解程序的工作状况这个就非常重要了,这就需要到了消息推送.
然后毕竟推送用的的都是第三方,然后又各种限制,于是乎就考虑自己搭建了.
自搭的优势:
1.设备数和推送条数都几乎无限(例如秒用完的5条免费配额
2.没有各种你懂的限制,想推多长推多长,想推什么推送么(去年双十一微信恶意拦截"红包"关键词等
3.自己的服务,受别人牵制的概率比较小(微信下线模板推送等等
4.推送源码找开源的,方便自己控制与二次开发
自搭的劣势:
1.需要有自己的公网服务器
2.通道需要自己维护,要有一定的开发能力
3.因为安卓的原因,需要多一个app常驻后台
既然决定了自己搭建,那就开始选型了,放狗搜了下,很快就发现Gotify这个推送服务(然后因为我的设备全是安卓,ios就不考虑了
打开他们的官网(https://gotify.net/)映入眼帘的就很简单的一句话
a simple server for sending and receiving messages
然后试用了下unifiedpush 提供的免费的Gotify服务:https://gotify1.unifiedpush.org,并试用了下推送的API,感觉还挺简单方便的,并且消息体支持markdown语法,后续改造并替换掉现有服务的难度并不大,于是乎就确定使用Gotify搭建了.
Gotify搭建步骤:
1.搭建docker
2.拉取并运行镜像(对于个人用户,默认的配置都不用改,实现开箱即用,要是你有要求,可以参考官网帮助文档去配置
docker run --restart always --name gotify -d -p 20080:80 -v /var/gotify/data:/app/data gotify/server
3.配置nginx反代,顺便挂载证书(如果不需要,也可以省略
server {
listen 443 ssl;
listen [::]:443 ssl;
server_name gotify.youdomain.com;
ssl_certificate server.crt;
ssl_certificate_key server.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
add_header Cache-Control no-store;
proxy_set_header Host $http_host;
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 REMOTE-HOST $remote_addr;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto http;
proxy_redirect https:// $scheme://;
proxy_pass https://127.0.0.1:20080;
# These sets the timeout so that the websocket can stay alive
proxy_connect_timeout 1m;
proxy_send_timeout 1m;
proxy_read_timeout 1m;
}
}
4.配置完nginx后,打开https://gotify.youdomain.com 即可看到后台管理界面(默认用户密码都是admin,建议登录后修改并创建一个普通账户用作推送
5.登录成功后,切换到APP页面新建一个应用,拿到推送token
6.设置完服务端,然后就到客户端(安卓的客户端可以在官网下载APK文件或者在google play搜索同名应用即可
打开客户端后,在第一行输入你的推送服务器,然后输入用户密码点击登录即可
最后试下推送,打开个终端输入以下命令,手机和电脑都能同时看到推送即可:
curl -L -X POST 'https://gotify.youdomain.com/message?token=appkey&title=test&message=test&priority=7'