PushMe Server 是一个基于 Node.js 开发的自建消息推送服务器,为 PushMe APP 和 PushMeClient 提供私有化部署方案。
- 🔐 数据隐私: 完全自主可控的消息服务,保障数据安全
- 🎯 接口兼容: 消息接口参数与官方完全一致,支持 push_key 和 temp_key
- 🖥️ 可视化管理: 提供 Web 管理界面,支持 push_key 管理、系统日志查看和在线测试
- 📡 多协议支持: 同时支持 HTTP/HTTPS API 和 MQTT/WebSocket 消息服务
- 🔧 灵活配置: 支持通过 Web 界面修改端口、证书等配置,无需编辑文件
- 📊 实时监控: 独立的系统信息面板,实时显示面板和服务运行状态
- 📝 系统日志: 实时日志查看功能,支持级别筛选和历史日志查看
- 🐳 容器化部署: 支持 Docker 快速部署
- Node.js: >= 20.19.0
- 端口占用(默认值,可通过 Web 界面修改):
3010- Web 管理及 API 接口3100- MQTT/WebSocket 消息服务
# 创建项目
npx pushme-server init mypush
# 进入项目目录
cd mypush
# 启动服务
npm start或者在当前目录初始化:
npx pushme-server init
npm start启动后访问 http://localhost:3010 即可使用。
docker run -dit \
-p 3010:3010 \
-p 3100:3100 \
-e TZ=Asia/Shanghai \
-v $PWD/pushme-server/config:/pushme-server/config \
--name pushme-server \
--restart unless-stopped \
yafoo/pushme-server:latest说明:
-v参数将配置文件挂载到宿主机,方便持久化和修改--restart unless-stopped确保容器异常退出后自动重启
# 创建部署目录
mkdir pushme-server && cd pushme-server
# 创建 docker-compose.yml
cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
pushme-server:
image: yafoo/pushme-server:latest
container_name: pushme-server
restart: unless-stopped
ports:
- "3010:3010"
- "3100:3100"
volumes:
- ./config:/pushme-server/config
environment:
- TZ=Asia/Shanghai
EOF
# 启动服务
docker-compose up -dPushMe Server 已提供飞牛 fnOS 的 .fpk 应用包配置,详见 fpk/ 目录。
打包步骤:
- 在
fpk/目录补充应用图标(ICON.PNG、ICON_256.PNG、app/ui/images/) - 安装 fnpack 工具
- 在
fpk/目录执行fnpack build,生成pushme-server.fpk - 将
.fpk文件安装到飞牛 fnOS 设备
# 1. 克隆仓库
git clone https://github.com/yafoo/pushme-server.git
cd pushme-server
# 2. 安装依赖
npm i
# 3. 启动服务
npm start- 启动服务后,访问
http://您的服务器IP:3010 - 完成初始化配置(设置管理员账号密码)
- 在"PushKey"页面管理推送密钥(支持添加备注)
在 PushMe 安卓或 Windows 客户端中:
- Host: 填写服务器 IP(如
192.168.1.100) - Port: 填写
3100 - 保存配置即可使用
- 接口地址:
http://您的服务器IP:3010(支持 IPv6) - 请求参数: 与官方接口完全一致
- 支持的密钥类型:
push_key: 永久推送密钥temp_key: 临时推送密钥(可在 PushKey 管理中配置)
示例:
# 使用 push_key
curl -d "push_key=YOUR_KEY&title=测试&content=消息内容" http://您的IP:3010
# 使用 temp_key
curl -d "temp_key=YOUR_TEMP_KEY&title=测试&content=消息内容" http://您的IP:3010text: 纯文本消息markdown: Markdown 格式消息html: HTML 格式消息url: URL 消息(点击打开链接)data: 数据消息(仅传递数据)markdata: Markdown 数据消息note: 笔记/任务列表消息svg: SVG 图片消息chart: 图表消息echarts: ECharts 图表消息
通过 Web 管理界面修改端口:
- 进入"面板设置"或"服务设置"页面
- 修改对应端口号
- 保存后系统将自动重启
系统支持自签名证书和公共证书:
- 进入"面板设置"或"服务设置"页面
- 选择证书类型
- 如需自签名证书,点击"生成自签名证书"按钮
- 输入域名(支持 IP 地址,多个域名换行分隔)
- 系统自动生成证书并重启服务
生产环境建议通过 Nginx 反向代理绑定域名:
- 配置 Nginx 反向代理到
localhost:3010 - 配置 SSL 证书启用 HTTPS
- 消息端口可能变为 80/443
二次开发时,请在 config/app.js 中设置:
app_debug: truepushme-server/
├── app/ # 应用核心代码
│ ├── controller/ # 控制器层
│ │ ├── admin.js # 后台管理基类
│ │ ├── index.js # 消息推送接口
│ │ ├── login.js # 用户认证
│ │ ├── server.js # 服务管理
│ │ ├── setting.js # 系统设置
│ │ └── log.js # 日志管理
│ ├── libs/ # 业务逻辑库
│ │ ├── setting.js # 设置管理
│ │ ├── third.js # 第三方平台适配
│ │ └── tls.js # 证书管理
│ └── view/ # 视图模板
├── lib/ # 核心库
│ ├── config.js # 配置管理器(统一配置)
│ ├── log_buffer.js # 日志缓冲区(内存环形缓冲)
│ ├── pushme_panel.js # 面板服务(Web管理)
│ ├── pushme_proxy.js # PushMe代理
│ └── pushme_server.js # 推送服务(MQTT/WS/TCP)
├── config/ # 配置文件
│ ├── app.js # 应用配置
│ ├── log.js # 日志配置
│ ├── view.js # 视图配置
│ └── data.json # 系统数据(配置和状态)
├── public/ # 静态资源(Layui)
├── docker/ # Docker 相关文件
├── fpk/ # 飞牛 fnOS 应用包配置
├── server.js # 服务入口
└── package.json # 项目依赖
从 v2.1.0 升级到新版本时,系统会自动执行配置迁移:
- 自动合并
config/setting.js和config/data.json为统一的config/data.json - 保留所有原有配置
- 添加版本标识,支持后续迁移
- 后端框架: jj.js ^1.1.0
- MQTT Broker: aedes ^1.1.1
- WebSocket: ws ^8.21.3
- 证书生成: selfsigned ^5.5.0
- 前端 UI: Layui ^2.9.21
本项目基于 jj.js 轻量级框架开发,如需二次开发请参考其文档。
- PushmeServer: 推送服务核心,负责 MQTT/WebSocket/TCP 协议处理
- PushmePanel: Web 面板服务,基于 jj.js 框架
- PushmeProxy: 代理层,提供统一的服务接口
- ConfigManager: 配置管理器,统一配置管理
- LogBuffer: 日志缓冲区,支持实时日志查看
- GitHub: https://github.com/yafoo/pushme-server
- Gitee: https://gitee.com/yafu/pushme-server
- Docker Hub: https://hub.docker.com/r/yafoo/pushme-server
- PushMe 官网: https://push.i-i.me/
- 飞牛NAS: https://fnnas.com/
- pushme-server-golang: https://github.com/0x01feng/pushme-server-golang (第三方实现的golang版本PushMeServer)
PushMe Server 提供飞牛 fnOS 的 .fpk 应用包配置,位于 fpk/ 目录。
- 应用名称: PushMe Server
- 应用描述: 自建消息推送服务器,支持MQTT/WebSocket,接口兼容官方PushMe APP
- Docker镜像:
yafoo/pushme-server:latest - 端口: 3010 (Web管理) / 3100 (消息服务)
- 应用商店: https://app.fnnas.com/
- 准备应用图标(需要
ICON.PNG、ICON_256.PNG和app/ui/images/下的图标) - 安装 fnpack 工具
- 在
fpk/目录执行fnpack build生成pushme-server.fpk - 将
.fpk文件安装到飞牛 fnOS 设备
详细文档参见 fpk/README.md。
MIT License
欢迎提交 Issue 和 Pull Request!
💡 提示: 如有问题或建议,欢迎在 GitHub Issues 中反馈。