参考官方文档:https://docs.ntfy.sh/install/

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”

关于auth-default-access: “deny-all”建议改为,auth-default-access: "write-only",如果你的 ntfy 开启了 Access Control,Basic auth需要在请求头中添加authorization字段

简单来说,假设你的用户密码为 username:password,base64编码后为dXNlcm5hbWU6cGFzc3dvcmQ=  将 用户名:密码 使用base64编码后,按照如下格式添加到请求头中:

Authorization:Basic dXNlcm5hbWU6cGFzc3dvcmQ=

即可完成身份验证。也就是说会麻烦一点,所以可以不用deny-all,使用write-only允许任何人都可以发消息给ntfy服务器,但读取需要认证。

docker-compose为

services:
  ntfy:
    image: binwiederhier/ntfy
    container_name: ntfy
    restart: unless-stopped
    environment:
      NTFY_BASE_URL: https://改为你的域名
      NTFY_CACHE_FILE: /var/lib/ntfy/cache.db
      NTFY_AUTH_FILE: /var/lib/ntfy/auth.db
      NTFY_AUTH_DEFAULT_ACCESS: write-only
      NTFY_BEHIND_PROXY: "true"
      NTFY_ATTACHMENT_CACHE_DIR: /var/lib/ntfy/attachments
      NTFY_ENABLE_LOGIN: "true"
    volumes:
      - /var/cache/ntfy:/var/cache/ntfy
      - /etc/ntfy:/etc/ntfy
    ports:
      - 8009:80
    command: serve

启动之后需要设置管理员账号,自行将username替换成你需要的用户名。会要求你输入密码和确认密码:

docker exec -it ntfy ntfy user add –role=admin username