PushMe:Docker 部署自建消息推送服务
本文属于「自托管 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,完成初始化。
首次使用
- 在后台注册/登录,创建一个「应用」;
- 按页面提示绑定设备(手机端或浏览器);
- 后台会给出该应用的推送地址,脚本里直接
curl这个地址即可,例如:
bash
# 地址以后台生成的为准,这里只是形式示意
curl -fsS "http://<SERVER_IP>:3010/<你的推送地址>" \
-H "Content-Type: application/json" \
-d '{"title":"测试通知","content":"hello pushme"}'
- 手机收到通知即说明整条链路通了。
关键配置
| 项 | 说明 |
|---|---|
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。
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 程序员小航
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果