这篇记录 ntfy 的 Docker Compose 部署配置。这里的重点不是复杂参数,而是把 ntfy 接入统一的外部 Docker 网络 matrix,方便后续和 Nginx Proxy Manager(NPM)或其他服务放在同一个网络里通信。
如果你的反代入口也接在 matrix 网络里,NPM 后台就可以直接用容器名 ntfy 作为上游地址。
一、先确认 matrix 网络
如果前面已经创建过 matrix 网络,这一步可以跳过。否则先在宿主机终端创建:
docker network create matrix查看网络是否存在:
docker network ls | grep matrix后续需要被反代的容器,都建议统一接入这个网络。
二、准备数据目录
这份配置把 ntfy 的缓存和配置目录挂载到宿主机:
/root/data/docker_data/ntfy/data/cache
/root/data/docker_data/ntfy/data/config可以先创建目录:
mkdir -p /root/data/docker_data/ntfy/data/cache
mkdir -p /root/data/docker_data/ntfy/data/config其中:
cache用来保存 ntfy 的缓存数据。config对应容器内的/etc/ntfy,后续可以放置 ntfy 配置文件。
三、创建 docker-compose.yml
新建并编辑 docker-compose.yml:
nvim docker-compose.yml写入下面的配置:
services:
ntfy:
image: binwiederhier/ntfy:latest
container_name: ntfy
command:
- serve
environment:
- TZ=Asia/Shanghai
volumes:
- /root/data/docker_data/ntfy/data/cache:/var/cache/ntfy
- /root/data/docker_data/ntfy/data/config:/etc/ntfy
restart: unless-stopped
networks:
- matrix
networks:
matrix:
external: true
name: matrix这份配置没有直接暴露宿主机端口,适合让 NPM 这类反代容器从同一个 matrix 网络内访问 ntfy。
四、关键配置:server.yml
在映射的宿主机目录 /root/data/docker_data/ntfy/data/config 下新建 server.yml,内容参考如下(根据你的域名或 IP 修改):
# 服务的访问地址(反代后的域名或带端口)
base-url: "https://sms.888.org"
# 如果使用了 Nginx Proxy Manager 等反代工具,需开启此项
behind-proxy: true
# 转发官方推送(可选,用于处理 iOS 等特殊推送需求)
upstream-base-url: "https://ntfy.sh"
# 日志级别,调试阶段建议设为 TRACE
log-level: TRACE五、启动 ntfy
启动服务:
docker compose up -d查看容器状态:
docker ps | grep ntfy查看日志:
docker logs -f ntfy如果日志里没有明显报错,说明 ntfy 已经正常运行。
五、反代时的上游写法
因为 ntfy 和 NPM 都接入了 matrix 网络,所以在 NPM 后台添加 Proxy Host 时,上游可以直接填写容器名:
ntfy常见写法是:
http://ntfy:80如果你后续在 /etc/ntfy 里自定义了监听端口,就把这里的端口改成对应值。
六、注意事项
这套配置的关键点有三个:
matrix是外部网络,Compose 不会自动创建,必须提前存在。- ntfy 没有直接映射宿主机端口,访问入口交给同网络内的反代服务。
- 配置和缓存都挂载到宿主机目录,容器重建后数据不会跟着丢。
如果后面还要部署其他服务,继续统一接入 matrix,整体反代会更好维护。