本文属于「自托管 Docker 部署实战」系列(共 35 篇),第 16 篇。 示例中的 IP(192.0.2.10)、域名(example.com)、密码均为占位符,请按实际环境替换。

它是什么

PushMe 是一个轻量的消息推送服务:服务端跑在自己的服务器上,手机、浏览器或脚本通过 HTTP 接口把通知推送到你绑定的设备。适合做服务器告警、定时提醒、CI 结果通知这类「一条消息到达手机」的场景。

相比 Bark/ntfy 这类纯推送工具,PushMe 带 Web 管理后台,可以创建多个「应用」,分别管理各自的推送地址与设备。

镜像地址

yafoo/pushme-server:latest

前置条件

  • 一台 Linux 服务器(1C1G 足够);
  • 已安装 Docker 与 Compose v2,执行 docker compose version 有版本号输出;
  • 想让推送在公网可用,需要一个域名(示例统一用 example.com)。
# 安装 Docker(已安装可跳过)
curl -fsSL https://get.docker.com | sh

# 目录约定:一个服务一个目录,后文的 ./config 均指栈目录内
mkdir -p /srv/docker/active/pushme && cd /srv/docker/active/pushme

部署步骤

# docker-compose.yml
services:
  pushme:
    image: yafoo/pushme-server:latest
    container_name: pushme
    restart: unless-stopped
    ports:
      - "3010:3010"
    volumes:
      - ./config:/pushme-server/config
    environment:
      - TZ=Asia/Shanghai
docker compose up -d
docker compose ps

浏览器打开 http://<SERVER_IP>:3010,完成初始化。

首次使用

  1. 在后台注册/登录,创建一个「应用」;
  2. 按页面提示绑定设备(手机端或浏览器);
  3. 后台会给出该应用的推送地址,脚本里直接 curl 这个地址即可,例如:

bash # 地址以后台生成的为准,这里只是形式示意 curl -fsS "http://<SERVER_IP>:3010/<你的推送地址>" \ -H "Content-Type: application/json" \ -d '{"title":"测试通知","content":"hello pushme"}'

  1. 手机收到通知即说明整条链路通了。

关键配置

项 说明
3010:3010 HTTP 服务端口,反代时 upstream 指向它
./config 配置与数据目录,必须持久化
TZ 不设置的话通知时间会差 8 小时

注意事项

  • 推送地址本身就是凭据,泄露等于别人能给你发垃圾通知,别贴到公开仓库;
  • 公网使用务必套 HTTPS(反向代理),并且不要用默认域名/端口裸奔;
  • 手机端如果收不到,先排查:服务端日志有没有请求 → 手机是否允许通知 → 推送服务是否需要保活;
  • 升级前备份 config/,镜像升级后检查后台数据是否兼容。

备份与升级

# 升级前备份配置与数据
tar czf "backup-$(date +%F).tar.gz" ./config

# 升级
docker compose pull
docker compose up -d

# 验证
docker compose logs --tail=100
curl -fsS -o /dev/null -w '%{http_code}\n' http://127.0.0.1:3010/
  • 生产环境把镜像 tag 固定到具体版本,别用 latest;
  • 回滚就是把 tag 改回旧值再 up -d。