ntfy 自建推送服务:Docker、缓存持久化与 HTTPS 一步到位

发布时间:2026/9/2 12:49:43
ntfy 自建推送服务:Docker、缓存持久化与 HTTPS 一步到位 ntfy 自建推送服务Docker、缓存持久化与 HTTPS 一步到位【免费下载链接】ntfySend push notifications to your phone or desktop using PUT/POST项目地址: https://gitcode.com/GitHub_Trending/nt/ntfy把一条告警、一次部署完成、一封来信变成手机和桌面都能收到的推送这就是 ntfy 在做的往一个 HTTP 端点发 PUT/POST 请求推送通知即刻送达。它打包成单个静态二进制支持 amd64、armv6、armv7、arm64 与 Windows、macOS。下面按任务推进——先让服务在 Docker 里跑起来再发第一条消息、把缓存落到磁盘、接入 HTTPS最后加访问控制。全程基本只改一个server.yml。不用 Docker 也行系统包安装Debian/Ubuntu、RPM和源码构建的步骤见 安装文档从源码编译需要 Go 1.25.8 起细节见 构建文档。用一条 Docker 命令起服务官方镜像是binwiederhier/ntfyWeb 界面和 API 都走 80 端口。第一次先裸跑确认能通docker run -d -p 8080:80 \ -v /etc/ntfy:/etc/ntfy \ -v /var/cache/ntfy:/var/cache/ntfy \ binwiederhier/ntfy serve提示镜像里不自带/etc/ntfy/server.yml要用配置文件就把仓库里的 server/server.yml 拷到宿主机/etc/ntfy再挂进去。把8080:80映射出来本机用http://localhost:8080就能打开 Web 应用生产环境把左边端口换成 80 即可。要带健康检查、非 root 用户和重启策略直接看仓库根目录的 docker-compose.yml。发出第一条消息并验证订阅发和收都是对主题 URL 的 HTTP 请求。发用 POST 或 PUT收用 GET 拿到流式消息curl -d 服务已上线 http://localhost:8080/mytopic curl -s http://localhost:8080/mytopic第二条命令会一直挂着并实时打印新消息看到服务已上线就代表收发都通了。带标题、优先级等字段时通过 HTTP 头传例如-H Title: 部署完成完整的请求头和响应格式见 订阅 API 文档。提示GET 是长连接客户端断开会丢失未推送的实时消息。想补拉历史消息给订阅加since参数前提是你已经开启了下面的缓存。配置消息缓存让重启不丢默认消息只在内存里重启即清空。想让重启后仍能按since拉回历史就把缓存写到 SQLite 文件改server.ymlcache-file: /var/cache/ntfy/cache.db cache-duration: 72h attachment-cache-dir: /var/cache/ntfy/attachmentscache-duration决定消息保留多久想彻底关掉磁盘缓存就设成0。attachment-cache-dir同时是开启文件附件的前置条件。用 Docker 时这两个路径正好落在上一步挂掉的/var/cache/ntfy卷里容器重建数据还在。提示用 systemd 跑时缓存文件要归ntfy用户chown ntfy.ntfy cache.db否则服务起不来或无法写入。给 ntfy 接入 HTTPS 与反向代理裸 80 端口适合内网对外暴露建议上 TLS。编辑server.yml用仓库里真实的listen-https、cert-file、key-file三个键listen-http: :80 listen-https: :443 cert-file: /etc/letsencrypt/live/ntfy.example.com/fullchain.pem key-file: /etc/letsencrypt/live/ntfy.example.com/privkey.pem改完systemctl restart ntfy生效。证书申请和续签交给你的反向代理或证书工具ntfy 只负责读这两个文件。如果 ntfy 藏在 Nginx 等反代后面记得在server.yml里设behind-proxy: true让它从X-Forwarded-For取真实访客 IP否则所有访问会被当成同一个 IP 触发限流。开启访问控制限制主题写入默认任何人能往任意主题发收。收紧权限用auth-file这一套键auth-file指定用户库auth-default-access设兜底策略read-write/read-only/write-only/deny-all再按主题配auth-access。密码用ntfy user hash生成访问令牌用ntfy token generate生成逐项写进auth-users和auth-tokens。每个主题能读写谁能只读都在这里控制完整字段见 配置文档。提示限流是内置的visitor-request-limit-burst、visitor-message-daily-limit等键能按访客压制突发请求和每日消息量公开部署时建议一并设上。上线前逐项自查跑完上面四步再对照下面这份清单过一遍容器/服务已设置开机自启Docker 加restart: unless-stopped包管理用systemctl enable已配置cache-file并确认真实落盘重启后since能拉回旧消息对外访问走 HTTPS证书文件路径可用且会定期续期在反代后面时已设behind-proxy: true访客 IP 正确auth-default-access已收紧到最小必要关键主题配了auth-access按部署规模调过访客限流与附件大小限制需要把告警接到 Grafana、Uptime Kuma 等工具时已参考 集成文档全部勾上这套 ntfy 自建推送服务就可以长期跑了。【免费下载链接】ntfySend push notifications to your phone or desktop using PUT/POST项目地址: https://gitcode.com/GitHub_Trending/nt/ntfy创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考