2026 年 ntfy Docker Compose 部署:接入 matrix 网络

记录 ntfy 的 Docker Compose 部署方式:挂载本地缓存和配置目录,并统一接入 matrix 外部网络,方便后续通过 Nginx Proxy Manager 反代。

这篇记录 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,整体反代会更好维护。