Ntfy 通知推送服务搭建教程

Ntfy(读作 notify)是一款简单的基于 HTTP 的发布/订阅通知服务。它的设计理念是尽可能简单:发送通知只需要一条 curl 命令,接收通知只需要订阅一个主题(topic)。Ntfy 支持 Android、iOS、Web 多端接收,并且无需注册账号即可使用。本文将介绍如何在搬瓦工 VPS 上自建 Ntfy 服务。

一、Ntfy 功能特点

  • 极其简单:发送通知只需 curl -d "消息内容" ntfy.sh/topic,无需认证。
  • 多端支持:提供 Android、iOS、Web 客户端和 PWA 支持。
  • 附件支持:支持发送带附件的通知(图片、文件)。
  • 操作按钮:通知中可以添加可点击的操作按钮(打开 URL、发送 HTTP 请求)。
  • 定时发送:可以设置消息在指定时间发送。
  • 消息缓存:离线消息会被缓存,客户端上线后自动接收。
  • 访问控制:自建服务器支持用户认证和主题权限控制。
  • UnifiedPush:兼容 UnifiedPush 协议,可以作为 Android 应用的推送网关。

二、环境准备

  • 搬瓦工 VPS 一台,256MB 内存即可(使用优惠码 NODESEEK2026 享受 6.77% 折扣)。
  • 已安装 Docker(参考 Docker 安装教程)。

三、Docker 部署

mkdir -p /opt/ntfy/{cache,etc}
cat > /opt/ntfy/docker-compose.yml <<'EOF'
version: '3.8'

services:
  ntfy:
    image: binwiederhier/ntfy:latest
    restart: always
    ports:
      - "8080:80"
    command: serve
    environment:
      TZ: Asia/Shanghai
    volumes:
      - /opt/ntfy/cache:/var/cache/ntfy
      - /opt/ntfy/etc:/etc/ntfy
EOF

3.1 创建配置文件

cat > /opt/ntfy/etc/server.yml <<'EOF'
base-url: https://ntfy.yourdomain.com
cache-file: /var/cache/ntfy/cache.db
attachment-cache-dir: /var/cache/ntfy/attachments
attachment-total-size-limit: 1G
attachment-file-size-limit: 15M
behind-proxy: true
auth-default-access: deny-all
EOF

auth-default-access: deny-all 表示默认禁止所有访问,需要认证后才能使用。如果你希望不认证即可使用,改为 read-write

四、启动服务

cd /opt/ntfy
docker compose up -d

4.1 创建管理员用户

docker compose exec ntfy ntfy user add --role=admin admin

按提示设置密码。

4.2 设置主题权限

# 允许所有人只读某个公开主题
docker compose exec ntfy ntfy access everyone public-alerts read-only

# 允许特定用户读写某个主题
docker compose exec ntfy ntfy access admin server-alerts read-write

五、发送通知

5.1 简单文本通知

curl -u admin:password -d "服务器磁盘使用率超过 90%" https://ntfy.yourdomain.com/server-alerts

5.2 带标题和优先级

curl -u admin:password \
  -H "Title: 磁盘告警" \
  -H "Priority: high" \
  -H "Tags: warning" \
  -d "服务器 /dev/sda1 磁盘使用率 92%" \
  https://ntfy.yourdomain.com/server-alerts

5.3 带操作按钮

curl -u admin:password \
  -H "Title: 新版本发布" \
  -H "Actions: view, 查看详情, https://github.com/project/releases" \
  -d "v2.0.0 已发布,包含重要安全更新" \
  https://ntfy.yourdomain.com/server-alerts

5.4 发送图片附件

curl -u admin:password \
  -H "Title: 服务器截图" \
  -H "Filename: screenshot.png" \
  -T /path/to/screenshot.png \
  https://ntfy.yourdomain.com/server-alerts

六、配置反向代理

cat > /etc/nginx/sites-available/ntfy <<'EOF'
server {
    listen 80;
    server_name ntfy.yourdomain.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_buffering off;
    }

    client_max_body_size 20m;
}
EOF

ln -sf /etc/nginx/sites-available/ntfy /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d ntfy.yourdomain.com

七、客户端配置

在 Android(Google Play/F-Droid)或 iOS(App Store)下载 Ntfy 客户端。添加你的自建服务器地址,订阅感兴趣的主题即可接收推送通知。也可以直接在浏览器中访问 https://ntfy.yourdomain.com 使用 Web 版本。

八、在脚本中集成

#!/bin/bash
# 通用通知函数
notify() {
    curl -s -u admin:password \
      -H "Title: $1" \
      -H "Priority: ${3:-default}" \
      -d "$2" \
      https://ntfy.yourdomain.com/server-alerts
}

# 使用示例
notify "备份完成" "数据库备份成功,文件大小 1.2GB" "low"
notify "服务异常" "Nginx 服务已停止" "urgent"

九、数据备份

tar czf /opt/ntfy/backup_$(date +%Y%m%d).tar.gz /opt/ntfy/cache /opt/ntfy/etc

总结

Ntfy 是最简单易用的自托管推送通知服务,一条 curl 命令即可发送通知。如果你需要更结构化的消息管理,可以参考 Gotify 推送服务。选购搬瓦工 VPS 请访问 bwh81.net,使用优惠码 NODESEEK2026 享受 6.77% 折扣。

关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工的方案、优惠和教程。我们不销售主机,不提供技术服务。

新手必读
搬瓦工优惠码

NODESEEK2026(优惠 6.77%)

购买时填入即可抵扣。