为了解决双持安卓iOS之后短信不能同步的痛点。

需要一台公网服务器(即使单服务器反代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”
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”

koori

然后创建一个docker-compose.yaml。请注意修改你需要的外部端口(8009),内容如下:

version: ‘3’
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

koori

接下来启动容器:

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;
proxy_send_timeout 3m;
proxy_read_timeout 3m;

koori

正确的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

请仔细看看备注内容。需要修改头部/请求体。

然后建议剪贴板中复制些内容先运行一遍,因为会询问你能否立即发送,允许自动发送。

 

导入并配置好快捷指令后,在最下方自动化中添加“信息”,当我收到信息执行——选择刚刚导入的快捷指令。

联系人那一行可以不填写,信息包含的内容可以输入一个句号。因为绝大多数验证码短信都会有句号,你也可以按需自己决定。

记得将自动化设置为立即执行。