为了解决双持安卓iOS之后短信不能同步的痛点。
要素:在Debian下,使用docker搭建ntfy推送服务,搭配身份验证,反向代理。ntfy配置缓存、身份验证、附件、禁止未登陆使用。
需要一台公网服务器(即使单服务器反代docker内网)。自建是觉得短信算是敏感内容,ntfy.sh又不带身份验证,纯粹靠写一个别人猜不到的主题名字,有点过于草率了。
自行确定是否适合你的需求。参考官方文档:https://docs.ntfy.sh/install/
不适合纯小白参看,仅适合懒得翻文档的人直接抄作业。
自行安装好docker。
先创建ntfy的服务器配置
mkdir -p /etc/ntfy/
nano /etc/ntfy/server.yml
base-url: “https://改为你的域名,如:ntfy.xxx.com”
koori
cache-file: “/var/cache/ntfy/cache.db”
attachment-cache-dir: “/var/cache/ntfy/attachments”
attachment-total-size-limit: “5G”
attachment-file-size-limit: “15M”
attachment-expiry-duration: “3h”
visitor-attachment-total-size-limit: “100M”
visitor-attachment-daily-bandwidth-limit: “500M”
auth-file: “/var/lib/ntfy/user.db”
auth-default-access: “deny-all”
然后创建一个docker-compose.yaml。请注意修改你需要的外部端口(8009),内容如下:
version: ‘3’
koori
services:
ntfy:
image: binwiederhier/ntfy
container_name: ntfy
restart: unless-stopped
environment:
NTFY_BASE_URL: https://ntfy.shiiko.cn
NTFY_CACHE_FILE: /var/lib/ntfy/cache.db
NTFY_AUTH_FILE: /var/lib/ntfy/auth.db
NTFY_AUTH_DEFAULT_ACCESS: deny-all
NTFY_BEHIND_PROXY: “true”
NTFY_ATTACHMENT_CACHE_DIR: /var/lib/ntfy/attachments
NTFY_ENABLE_LOGIN: “true”
volumes:
– ./:/var/lib/ntfy
ports:
– 8009:80
command: serve
接下来启动容器:
docker-compose up -d
启动之后需要设置管理员账号,自行将username替换成你需要的用户名。会要求你输入密码和确认密码:
docker exec -it ntfy ntfy user add –role=admin username
此时访问你的服务器ip:8009(如果你修改了端口,自行匹配)就可以打开web控制页面了。可以先登录管理员账号确认一下。
配置反向代理
这个很简单就不讨论了orz如果使用nginx,确保加上:
proxy_buffering off;
proxy_request_buffering off;
proxy_redirect off;proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_connect_timeout 3m;
koori
proxy_send_timeout 3m;
proxy_read_timeout 3m;
正确的upgrade才能使用websocket模式。
至此ntfy的配置就结束了,除了服务器地址是你自建的,其他功能都可以按照文档的推送方式使用。
请参考:https://ntfy.sh/docs/publish/
关于身份验证
除去curl可以直接-u 用户名:密码 之外,Basic auth需要在请求头中添加authorization字段。
文档:https://docs.ntfy.sh/publish/#username-password
简单来说,假设你的用户密码为 username:password,base64编码后为dXNlcm5hbWU6cGFzc3dvcmQ= 将 用户名:密码 使用base64编码后,按照如下格式添加到请求头中:
Authorization:Basic dXNlcm5hbWU6cGFzc3dvcmQ=
即可完成身份验证。
快捷指令实现iOS短信自动推送
导入这一条快捷指令:https://www.icloud.com/shortcuts/91fd9b24ab2d4b3bbee3928cc65226d4
请仔细看看备注内容。需要修改头部/请求体。
然后建议剪贴板中复制些内容先运行一遍,因为会询问你能否立即发送,允许自动发送。
导入并配置好快捷指令后,在最下方自动化中添加“信息”,当我收到信息执行——选择刚刚导入的快捷指令。
联系人那一行可以不填写,信息包含的内容可以输入一个句号。因为绝大多数验证码短信都会有句号,你也可以按需自己决定。
记得将自动化设置为立即执行。