From 8be253b3df343514a9b2ebd3ab41d102a16a9355 Mon Sep 17 00:00:00 2001 From: LiuShen <3162475700@qq.com> Date: Wed, 30 Jul 2025 11:03:59 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=98=8B=E6=B7=BB=E5=8A=A0=E5=BA=94?= =?UTF-8?q?=E7=94=A8message-pusher?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- message-pusher/README.md | 93 ++++++++++++++++++++++ message-pusher/data.yml | 19 +++++ message-pusher/logo.png | Bin 0 -> 14469 bytes message-pusher/v0.4.12/data.yml | 10 +++ message-pusher/v0.4.12/docker-compose.yml | 21 +++++ 5 files changed, 143 insertions(+) create mode 100644 message-pusher/README.md create mode 100644 message-pusher/data.yml create mode 100644 message-pusher/logo.png create mode 100644 message-pusher/v0.4.12/data.yml create mode 100644 message-pusher/v0.4.12/docker-compose.yml diff --git a/message-pusher/README.md b/message-pusher/README.md new file mode 100644 index 000000000..559febaa3 --- /dev/null +++ b/message-pusher/README.md @@ -0,0 +1,93 @@ +# Message Pusher + + > 自托管消息推送服务,支持 Web UI + 多平台推送通道。 + + 本项目使用 [songquanpeng/message-pusher](https://github.com/songquanpeng/message-pusher) 镜像通过 Docker Compose 快速部署,支持通过网页管理和 API 接口进行消息推送。 + + ## ✨ 项目特点 + + - 支持 Telegram、Bark、企业微信、Server 酱等消息推送方式 + - 提供简洁易用的 Web UI 管理界面 + - 支持用户注册、Token 管理 + - 提供 RESTful API 接口,适合自动化集成 + +--- + + ## 📦 快速部署 + + ### 1. 拉取项目 + + ```bash + git clone https://github.com/your-username/message-pusher-docker.git + cd message-pusher-docker + ~~~ + + ### 2. 启动服务 + + ```bash + docker compose up -d + ``` + + 启动成功后访问: + + ``` + http://localhost:3000 + ``` + + 若部署在服务器,请替换为服务器的 IP 或域名。 + + ### 3. 默认配置说明 + + Docker Compose 配置中: + + - **端口映射**:`3000:3000` + - **数据挂载目录**:`./data:/data` + - **时区设置**:`Asia/Shanghai` + +------ + + ## 🧾 Docker Compose 文件示例 + + ```yaml + version: '3' + + services: + message-pusher: + image: songquanpeng/message-pusher + container_name: message-pusher + restart: always + ports: + - "3000:3000" + environment: + - TZ=Asia/Shanghai + volumes: + - ./data:/data + ``` + +------ + + ## 🛠 更新与维护 + + 更新镜像并重启服务: + + ```bash + docker compose pull + docker compose up -d + ``` + +------ + + ## 🔗 官方链接 + + - 官方项目主页: https://github.com/songquanpeng/message-pusher + - 在线体验地址: [https://push.sbs](https://push.sbs/) + - Docker Hub 镜像: https://hub.docker.com/r/songquanpeng/message-pusher + +------ + + ## 📄 License + + MIT License + + 由 [@songquanpeng](https://github.com/songquanpeng) 开发维护。 + diff --git a/message-pusher/data.yml b/message-pusher/data.yml new file mode 100644 index 000000000..9e3c1ffda --- /dev/null +++ b/message-pusher/data.yml @@ -0,0 +1,19 @@ +name: Message-Pusher +tags: + - 实用工具 +title: 自托管消息推送服务 +description: 一款支持多平台的自托管消息推送服务,支持 Web UI 和 API 接口。 +additionalProperties: + key: message-pusher + name: Message-Pusher + tags: + - Tool + shortDescZh: 一款支持多平台的自托管消息推送服务 + shortDescEn: A self-hosted multi-platform message pushing service + type: tool + crossVersionUpdate: true + limit: 0 + recommend: 0 + website: https://github.com/songquanpeng/message-pusher + github: https://github.com/songquanpeng/message-pusher + document: https://github.com/songquanpeng/message-pusher#readme diff --git a/message-pusher/logo.png b/message-pusher/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e418146a9438ceeea1be975b81cd0c171c25efa1 GIT binary patch literal 14469 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