请输入图片描述
自从自己搭建的自动签到加上各种乱七八糟的东西越建越多,能及时了解程序的工作状况这个就非常重要了,这就需要到了消息推送.
然后毕竟推送用的的都是第三方,然后又各种限制,于是乎就考虑自己搭建了.

自搭的优势:
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   http:// $scheme://;
            proxy_pass http://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'