MagicPush:开源统一消息推送平台,支持20+渠道一键部署

前言

你是否遇到过这样的困扰?

  • 想把系统通知推送到微信,但不想依赖某个特定平台
  • 同时使用钉钉、企业微信、Telegram,需要统一管理
  • 担心某个推送服务突然宕机,消息发不出去

今天要介绍的这个开源项目 MagicPush(魔法推送),正是为了解决这些问题而生。


项目简介

项目 信息
项目名称 MagicPush(魔法推送)
GitHub github.com/magiccode1412/magicpush
Star 8.7K
语言 JavaScript (Node.js + Vue)
许可证 MIT
费用 完全免费开源

MagicPush 预览图


核心功能

多渠道支持

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

适用场景

  1. NAS 用户:将 NAS 状态通知统一推送到微信
  2. 开发者:统一管理多个项目的推送渠道
  3. 运维人员:搭建内部推送服务,不依赖第三方
  4. 自动化爱好者:配合 Home Assistant 等工具实现智能通知

总结

MagicPush 是一款免费开源的统一推送平台,优势在于:

  • ✅ 完全免费,无付费功能
  • ✅ 支持 20+ 推送渠道
  • ✅ Docker 一键部署
  • ✅ 自建服务,数据自主可控
  • ✅ 活跃维护,Star 8.7K

如果你正在寻找一个统一的推送解决方案,MagicPush 值得一试。


参考链接

消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息