前言
你是否遇到过这样的困扰?
- 想把系统通知推送到微信,但不想依赖某个特定平台
- 同时使用钉钉、企业微信、Telegram,需要统一管理
- 担心某个推送服务突然宕机,消息发不出去
今天要介绍的这个开源项目 MagicPush(魔法推送),正是为了解决这些问题而生。
项目简介
| 项目 | 信息 |
|---|---|
| 项目名称 | MagicPush(魔法推送) |
| GitHub | github.com/magiccode1412/magicpush |
| Star | 8.7K |
| 语言 | JavaScript (Node.js + Vue) |
| 许可证 | MIT |
| 费用 | 完全免费开源 |
核心功能
多渠道支持
MagicPush 支持 20+ 种推送渠道,覆盖主流平台:
| 类别 | 支持渠道 |
|---|---|
| 微信系 | 微信龙虾机器人、元宝Bot、企业微信、公众号模板消息、Server酱 |
| 办公通讯 | 钉钉机器人、飞书机器人、企业微信应用 |
| 自建推送 | Bark、Gotify、Webhook、SMTP邮件 |
| 手机推送 | WxPusher、息知、PushDeer、iGot、Meow(鸿蒙) |
| 其他 | Telegram Bot、PushPlus、ntfy、PushMe、群晖Chat |
技术特性
- 多渠道消息同时推送
- 标准化 REST API
- 双令牌 JWT 认证机制
- 响应式 Web 管理界面
- 深浅色主题切换
- 推送历史记录追踪
安全防护
- 三层限流防护(IP级、接口级、全局)
- 动态限流配置,实时生效
- 推送接口双重限流
部署方式
方式一:Docker 一键部署(推荐)
1. 创建目录
mkdir -p ~/docker/magicpush/data
cd ~/docker/magicpush
2. 创建 docker-compose.yml
services:
app:
image: magiccode1412/magicpush:latest
# 国内用这个镜像更快:
# image: docker.cnb.cool/magiccode1412/magicpush:latest
container_name: magicpush
ports:
- "3000:3000"
volumes:
- ./data:/app/server/data # 数据库
# - ./logs:/app/server/logs # 日志(可选)
restart: always
network_mode: bridge
3. 启动服务
docker-compose up -d
4. 访问管理界面
http://你的服务器IP:3000
首次登录自行注册即可(邮箱可随便填,不需要验证)。
方式二:直接使用 Docker 命令
docker run -d \
-p 3000:3000 \
-v ./data:/app/server/data \
--name magicpush \
magiccode1412/magicpush:latest
方式三:Railway 云平台部署
Railway 提供 每月 $1 的付费方案(5美元积分+30天免费试用):
# Railway 部署命令
railway login
railway init
railway up
⚠️ 注意:1美元额度的服务有冷启动问题。
方式四:群晖 NAS 部署
1. 打开 Container Manager
在群晖 DSM 中打开 Container Manager。
2. 创建项目
- 项目名称:
magicpush - 配置文件路径:
/volume1/docker/magicpush
3. 配置文件
创建 docker-compose.yml:
services:
app:
image: magiccode1412/magicpush:latest
container_name: magicpush
ports:
- "3000:3000"
volumes:
- ./data:/app/server/data
restart: always
network_mode: bridge
4. 部署
点击「完成」,等待容器启动。
方式五:威联通 QNAP NAS 部署
1. 安装 Container Station
从 QNAP App Center 安装 Container Station。
2. 创建容器
- 镜像:
magiccode1412/magicpush:latest - 端口映射:
3000:3000 - 卷挂载:创建新卷
/app/server/data
3. 启动
点击「创建并启动」。
API 使用示例
部署完成后,可以通过 REST API 推送消息:
推送基础消息
curl -X POST "http://localhost:3000/api/push/send" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"channel": "serverchan",
"content": "测试消息"
}'
多渠道同时推送
curl -X POST "http://localhost:3000/api/push/broadcast" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{
"channels": ["serverchan", "telegram", "wxpusher"],
"content": "重要通知:系统将于今晚维护"
}'
管理界面功能
部署完成后访问 http://你的IP:3000,可以:
- 📊 Dashboard:查看推送统计
- 🔧 渠道管理:配置各推送渠道
- 🔑 API 管理:创建和管理 API Token
- 📝 推送历史:查看历史推送记录
- ⚙️ 安全设置:配置限流规则
技术栈
| 层级 | 技术 |
|---|---|
| 后端 | Node.js 18+, Express.js 4.x, SQLite3 |
| 前端 | Vue 3, Vite 5.x, Tailwind CSS, Element Plus |
| 认证 | JWT (access/refresh token) |
| 安全 | bcryptjs, express-rate-limit |
适用场景
- NAS 用户:将 NAS 状态通知统一推送到微信
- 开发者:统一管理多个项目的推送渠道
- 运维人员:搭建内部推送服务,不依赖第三方
- 自动化爱好者:配合 Home Assistant 等工具实现智能通知
总结
MagicPush 是一款免费开源的统一推送平台,优势在于:
- ✅ 完全免费,无付费功能
- ✅ 支持 20+ 推送渠道
- ✅ Docker 一键部署
- ✅ 自建服务,数据自主可控
- ✅ 活跃维护,Star 8.7K
如果你正在寻找一个统一的推送解决方案,MagicPush 值得一试。

.png)
-bpoi.png)
