PushBits 0.10.7 介绍与选型指南
PushBits 认知篇:Gotify API 兼容、经 Matrix 投递的轻量推送中继服务器——定位、架构、功能特性、适用场景与 Gotify/ntfy/Apprise 量化选型对比,数据均为 2026-10-26 联网溯源实查。
PushBits 0.10.7 介绍与选型指南
目标:帮助读者快速理解 PushBits 是什么、解决什么问题、适合谁用,并与 Gotify / ntfy / Apprise 等同类自托管推送通知方案做量化对比,给出可落地的选型建议。本文为认知篇,所有数据均来自 2026-10-26 对官方文档站(pushbits.github.io)、GitHub 仓库(github.com/pushbits/server)、ghcr.io 镜像仓库等公开渠道的联网溯源实查,未做本地实测(安装、配置与 API 实测内容见本专栏部署与配置各篇)。
一、实查环境
本篇为纯联网溯源的认知篇,以下为本次实查的渠道与时间点,正文所有事实均可在这些来源复核:
- 查询日期:2026-10-26(Asia/Shanghai);
- 官方文档站:https://pushbits.github.io/docs/ (Getting Started / User Guide / Developer Guide);
- API 文档:https://pushbits.github.io/api/ (Redoc 渲染,规格标注版本 0.10.5);
- 源码仓库:https://github.com/pushbits/server (默认分支 main);
- CLI 客户端仓库:https://github.com/pushbits/cli ;
- 镜像仓库:ghcr.io/pushbits/server(官方文档明确"唯一支持安装途径");
- GitHub Releases:https://github.com/pushbits/server/releases 。
💡 说明:PushBits 仍处于官方声明的 alpha 阶段,仓库 README 顶部有醒目的 alpha 提示条,且作者公开征集新的维护者(Looking for Maintainers)。选型时应对"单人维护 + alpha 状态"有明确预期,本文第七章的风险对比会量化这一维度。
二、软件概述
2.1 一句话定位
PushBits 是一个用 Go 编写的推送通知中继(relay)服务器:你的脚本、监控告警、CI 任务通过一个简单的 Web API 把消息发进来,PushBits 把消息投递到你已有的 Matrix 账号上。官方 README 的自我描述是:
PushBits enables you to send push notifications via a simple web API, and delivers them to your users.(来源:github.com/pushbits/server README,查询日期 2026-10-26)
它的核心设计意图是**"发送侧极简 + 接收侧复用"**:发送侧兼容 Gotify 的消息 API(POST /message?token=...),接收侧不要求安装任何专用 App——只要一个 Matrix 客户端(Element 等)就能收通知。官方对这一取舍的解释是:省去自研客户端与各平台插件(如 Watchtower、Jellyfin 的通知插件)的维护负担,把"最后一公里"交给成熟的 Matrix 生态。
2.2 项目身份信息(实查数据)
| 维度 | 实查值 | 来源与日期 |
|---|---|---|
| 开发语言 | Go | GitHub 仓库 language 字段(2026-10-26) |
| 开源许可 | ISC License | GitHub 仓库 license 字段(2026-10-26) |
| 最新稳定版 | v0.10.7(2025-05-29 发布) | GitHub Releases latest(2026-10-26) |
| 仓库创建时间 | 2020-07-25 | GitHub 仓库 created_at(2026-10-26) |
| 仓库最近推送 | 2026-01-10 | GitHub 仓库 pushed_at(2026-10-26) |
| Star 数 | 370 | shields.io 徽章 img.shields.io/github/stars/pushbits/server(2026-10-26) |
| 官方安装途径 | Docker / Podman(ghcr.io/pushbits/server) | 官方文档站 Getting Started(2026-10-26) |
| 支持数据库 | sqlite3(默认)、mysql、postgres | 仓库 config.example.yml(2026-10-26) |
| Release 产物 | linux_amd64 / linux_arm64 二进制 tar.gz + checksums | v0.10.7 Release assets(2026-10-26) |
| 成熟度声明 | alpha 阶段,公开征集维护者 | README 顶部提示(2026-10-26) |
💡 技术拓展:ISC 许可证与 MIT/BSD-2 同属宽松(permissive)许可家族,允许商用、闭源分发,只需保留版权声明;相比 GPL 系列(copyleft,衍生品必须开源)约束极小。企业内网自托管 PushBits、二次改造后内部使用都没有许可合规负担。本方案实际所处生态以宽松许可为主流(Gotify 为 MIT、ntfy 为 Apache-2.0、Apprise 为 MIT),选型时许可通常不构成区分项。
2.3 版本节奏观察
实查 GitHub Releases 时间线:v0.10.7 发布于 2025-05-29,是当前最新稳定版;仓库最近一次代码推送在 2026-01-10。结合 README"征集维护者"的声明,可以判断该项目处于低频维护状态——不是废弃,但功能迭代缓慢,适合把它定位为"部署一次就不再折腾"的基础设施。0.x 版本号也意味着官方不承诺 API 与配置格式的向后兼容,升级前应阅读 Release Notes 并先在测试环境验证(本专栏部署篇会演示版本锁定与升级注意事项)。
三、核心架构
3.1 组件角色与数据流
PushBits 的架构可以概括为"一个进程、两类账号、三种入口"。以下数据流描述综合自官方文档站 Getting Started 与 API 文档(查询日期 2026-10-26):
[脚本/Alertmanager/CI/监控]
│ HTTP POST(/message、/alert)
▼
┌─────────────────────────────┐
│ PushBits 服务器 │
│ ┌─────────┐ ┌──────────┐ │
│ │ 用户/应用 │ │ 消息投递 │ │──▶ Matrix 房间(每用户一个通知房间)
│ │ 管理 API │ │ 引擎 │ │ (homeserver 默认 matrix.org)
│ └─────────┘ └──────────┘ │
│ ▼ │
│ SQLite / MySQL / Postgres │
└─────────────────────────────┘
▼
[管理员/用户的 Matrix 客户端(Element 等)]
三类角色分别对应:
- 发送方(应用/Application):每个应用持有一个 token,脚本报文时只需
POST /message?token=<应用token>,无需用户名密码; - 接收方(用户/User):每个用户绑定一个 Matrix ID(如
@alice:matrix.org),PushBits 用一个专用 Matrix 账号(发送账号)向各用户的 Matrix ID 建立房间并投递消息; - 管理员(Admin):初始管理员账号在首次启动时创建,其 Matrix ID 用于接收"用户被创建/应用 token 变动"等管理事件通知。
3.2 存储模型
PushBits 内置多用户与应用管理,持久化层支持三种方言(实查 config.example.yml,2026-10-26):
- sqlite3(默认):单文件数据库(默认
pushbits.db),单机部署零外部依赖,是与 PushBits"轻量中继"定位匹配的推荐选择; - mysql:以 go-sql-driver 的 DSN 连接串配置;
- postgres:以 pgx 的 libpq 连接串配置。
对中小规模使用场景,SQLite 单文件足以承载;只有当 PushBits 与其他服务共享数据库基础设施、或需要外部备份体系统一纳管时,才有必要切换 MySQL/Postgres。
3.3 与 Matrix 的关系
PushBits 自身不是 Matrix 服务器,而是 Matrix 客户端(服务端机器人角色):它使用一个专用 Matrix 账号登录 homeserver(默认 https://matrix.org ,可自建),替每个用户创建通知房间并发送消息。这一设计带来两个部署要点(详见本专栏部署篇):
- PushBits 服务器必须能访问所选 homeserver 的 Client-Server API;
- 发送 Matrix 账号的凭据(用户名/密码)是首次启动的必填配置。
💡 技术拓展:消息投递通道不止 Matrix 一种思路。同类工具的通道选择对比——
工具 接收通道 是否需要专用 App PushBits Matrix(复用任意 Matrix 客户端) 否,Element 等现成客户端即可 Gotify 自有 WebSocket 长连接 是,Gotify Android/iOS 客户端 ntfy HTTP 流/长轮询 + 统一推送 推荐安装 ntfy 客户端(iOS 依赖 APNs 中转) Apprise 100+ 第三方服务的 API 视目标服务而定 PushBits 选择 Matrix 的原因:Matrix 是联邦化、可自建 homeserver 的开放协议,且客户端成熟;官方 README 也说明了为何不用 Signal/WhatsApp(无可用 API)与 Telegram(Bot 无法主动建会话)。本方案实际采用 Matrix 通道,理由是不引入私有 App 依赖。
四、功能特性
以下功能清单逐项实查自官方 README 与文档站(查询日期 2026-10-26):
| 功能 | 状态 | 说明 |
|---|---|---|
| 多用户 + 每用户多应用(频道) | ✅ 已支持 | 应用即消息频道,每个应用独立 token |
| Gotify 发送 API 兼容 | ✅ 已支持 | POST /message?token=... 报文格式与 Gotify 一致,现成 Gotify 插件可直接指向 PushBits |
| 用户/应用管理 API | ✅ 已支持 | HTTP Basic 认证的 REST API(/user、/application 增删改查) |
| CLI 管理工具 pbcli | ✅ 已支持 | 独立仓库 pushbits/cli,官方镜像内置,支持创建/删除/列出应用与用户管理 |
| HIBP 弱口令检查 | ✅ 可选 | 对接 Have I Been Pwned 数据库校验用户密码是否泄露(security.checkhibp) |
| Argon2 密码存储 | ✅ 默认 | 密码以 Argon2id KDF 存储,参数可调(memory/iterations/parallelism) |
| 消息格式 text/plain、text/html、text/markdown | ✅ 已支持 | 通过 extras.client::display.contentType 指定(仿 Gotify 消息 extras) |
| 消息优先级 | ✅ 已支持 | priority 字段;0.10.7 起支持按优先级给标题着色(formatting.coloredtitle) |
| Alertmanager webhook | ✅ 已支持 | POST /alert?token=... 接收 Alertmanager 告警报文,标题/正文取自 annotations 映射 |
| 消息撤回 | ✅ 已支持 | DELETE /message/{id}?token=...,会向原消息回复"已删除"通知 |
| 房间名/话题修复行为 | ✅ 可配置 | repairbehavior.resetroomname/resetroomtopic,防止成员误改通知房间属性 |
| 两步验证(2FA) | ❌ 规划中 | 官方 issue #19,未实现 |
| 双向密钥验证 | ❌ 规划中 | 官方 issue #20,未实现 |
| Web 管理界面 | ❌ 无 | 官方明确不做 GUI,管理走 API/pbcli |
💡 说明:与大多数同类工具不同,PushBits 没有 Web 管理界面,一切管理动作都通过 REST API 或 pbcli 完成。这对运维人员是加分项(可自动化、可脚本化纳管),对偏好点选界面的用户则需权衡。
五、快速开始(最小可用示例)
本节内容摘录自官方文档站 Getting Started(https://pushbits.github.io/docs/ ,查询日期 2026-10-26,未做本地改写;逐命令实测见本专栏部署篇)。最小可用链路为:准备一个 Matrix 发送账号 → 用 Docker/Podman 拉起 PushBits → 创建应用拿 token → 发一条消息。
官方文档给出的 Docker Compose 起步配置如下(原文摘录,账号字段需替换为你自己的 Matrix 账号):
version: '2'
services:
server:
image: ghcr.io/pushbits/server:latest
ports:
- 8080:8080
environment:
PUSHBITS_DATABASE_DIALECT: 'sqlite3'
PUSHBITS_ADMIN_MATRIXID: '@your/matrix/username:matrix.org' # The Matrix account on which the admin will receive their notifications.
PUSHBITS_ADMIN_PASSWORD: 'your/pushbits/password' # The login password of the admin account. Default username is 'admin'.
PUSHBITS_MATRIX_USERNAME: 'your/matrix/username' # The Matrix account from which notifications are sent to all users.
PUSHBITS_MATRIX_PASSWORD: 'your/matrix/password' # The password of the above account.
volumes:
- /etc/localtime:/etc/localtime:ro
- /etc/timezone:/etc/timezone:ro
- ./data:/data
准备就绪后,发送一条通知的最小 API 调用(官方示例原文):
curl \
--header "Content-Type: application/json" \
--request POST \
--data '{"message":"my message","title":"my title"}' \
"https://pushbits.example.com/message?token=$PB_TOKEN"
其中 $PB_TOKEN 是应用 token,可用官方 pbcli 工具查询:
pbcli application show $PB_APPLICATION --url https://pushbits.example.com --username $PB_USERNAME
⚠️ 注意:官方文档明确"目前唯一支持的安装途径是 Docker 或 Podman,镜像托管于 ghcr.io"。不过 GitHub Releases 自 v0.10.7 起同时发布 linux amd64/arm64 的二进制压缩包与 checksums,裸机(systemd 托管)安装路径可行——本专栏《安装指南》篇已按该路径逐命令实测并沉淀了完整流程。0.x 阶段请始终锁定具体版本。
六、适用场景与限制
6.1 典型适用场景
- 监控告警投递:Alertmanager webhook 直接指向
POST /alert,告警落到运维团队的 Matrix 群/个人房间(官方配置里甚至有 alertmanager 专属的 annotation 映射参数); - 脚本与定时任务通知:备份完成、证书到期、磁盘水位等事件,一条 curl 即可推送,且兼容 Gotify 报文格式——已有系统若原打向 Gotify,把 URL 换成 PushBits 即可切换接收端;
- CI/CD 流水线结果推送:构建成败、部署结果通知,复用 Gotify 生态的现成插件(官方明确以 Watchtower、Jellyfin 等的 Gotify 插件兼容为设计目标之一);
- 家庭实验室/自托管用户的统一收件箱:不想为每个自托管服务装一个通知 App,用一个 Matrix 客户端收所有服务器的消息。
6.2 明确的限制
- 无 Web 界面、无消息历史查询 UI:消息历史在 Matrix 房间里,管理走 API;
- 单一投递通道:0.10.x 仅支持 Matrix 投递(早期版本曾支持 Telegram,现行主线为 Matrix only);
- alpha 阶段 + 单人维护:官方不承诺 API/配置向后兼容,且 2FA 尚未实现;
- 消息送达依赖 Matrix 账号体系:接收人必须先有 Matrix 账号并告知其 Matrix ID,PushBits 无法"凭空"给手机号/邮箱推送;
- token 即凭据:应用 token 持有者即可向对应用户发消息,泄露需及时通过 API 重置(PUT /application 的 refresh_token 参数)。
七、同类选型对比(量化)
自托管推送通知这一赛道的主要选手为 Gotify、ntfy、Apprise(以及商业托管服务 Pushover)。下表数据均为 2026-10-26 从各项目官方渠道(GitHub 仓库/官网/README)实查:
| 维度 | PushBits 0.10.7 | Gotify 3.1.1 | ntfy 2.32.0 | Apprise API 2.0 |
|---|---|---|---|---|
| 定位 | 通知中继,经 Matrix 投递 | 自建推送服务器(自有协议+App) | HTTP 发布/订阅通知服务 | 通知分发网关(100+ 目标服务) |
| 开发语言 | Go | Go | Go | Python |
| 许可 | ISC | MIT | Apache-2.0 | MIT |
| Star 数 | 370 | 约 12k | 约 25k | 约 13k(库)/ API 独立仓库 |
| 接收端要求 | 任意 Matrix 客户端(Element 等) | Gotify 专用 App | ntfy App(推荐) | 视分发目标(Telegram/邮件/钉钉…) |
| 发送 API 形态 | POST /message?token=(Gotify 兼容) | POST /message?token=(原生) | POST/PUT 主题式(body 即消息) | POST /notify/...(URL 指定目标) |
| 消息历史 | 存于 Matrix 房间 | 服务端 Web UI 可查 | 服务端缓存(可配置时长) | 不存储(即发即走) |
| Web 管理界面 | 无 | 有 | 有 | 有(配置 Web UI) |
| 多目标分发 | 单通道(Matrix) | 单通道(自有 App) | 单通道(自有 App) | 强项:一次调用分发到上百种服务 |
| 部署形态 | 单二进制/容器,SQLite 起步 | 单二进制/容器,SQLite 起步 | 单二进制/容器,SQLite 起步 | Python 服务/容器 |
| 成熟度 | alpha,征集维护者 | 稳定,社区活跃 | 稳定,社区活跃 | 稳定,作为库生态广泛 |
(Star 数来源:各项目 shields.io 徽章与 GitHub 仓库页,2026-10-26;Gotify/ntfy/Apprise 的版本与特性细节可参见站内对应专栏文章。)
选型建议(如果…则…):
- 已经在用 Matrix,或团队通讯录就长在 Matrix 上 → 选 PushBits:零新 App、消息进联邦化账号体系、多设备同步天然成立;
- 想要服务端消息历史回查 + 管理后台 + 最成熟的自建推送体验 → 选 《Gotify 3.1.1 介绍与选型指南》:它就是 PushBits 的"发送侧协议源头",功能最完整;
- 移动推送是第一诉求(出门在外也要秒收)、消息量大 → 选 《ntfy 2.32.0 介绍与选型指南》:主题订阅模型 + iOS 统一推送支持最完善;
- 要把同一事件分发到 Telegram/钉钉/邮件/企微等一堆异构服务 → 选 《Apprise 介绍与选型指南》:它不做"接收端",专做分发路由;
- 只想给 Alertmanager 找个落点 → PushBits 的
/alert端点与 《Alertmanager 0.34 介绍与选型指南》 的 webhook 配置直接对接(对接实测见本专栏部署篇),配合 《Alertmanager Docker Compose 部署指南》 可以快速搭出完整链路。
一句话总结:PushBits 是" Gotify 发送协议 + Matrix 接收生态"的组合 Specialist——它不追求大而全,而是把"自建推送最后一公里"外包给了 Matrix。如果你的接收端本来就在 Matrix 上,它的极简与零客户端依赖是同类中独有的;反之若没有 Matrix 使用习惯,为此单建一套 Matrix 账号体系则得不偿失,Gotify/ntfy 更合适。
八、参考链接
- 官方文档站 Getting Started:https://pushbits.github.io/docs/ (查询日期 2026-10-26)
- API 文档(Redoc):https://pushbits.github.io/api/ (规格标注 0.10.5,查询日期 2026-10-26)
- 源码仓库:https://github.com/pushbits/server (README、config.example.yml、Dockerfile、LICENSE,查询日期 2026-10-26)
- Releases:https://github.com/pushbits/server/releases/tag/v0.10.7 (2026-10-26)
- CLI 客户端 pbcli:https://github.com/pushbits/cli (README,查询日期 2026-10-26)
- 镜像仓库:https://ghcr.io/pushbits/server (官方文档引用,查询日期 2026-10-26)
- Matrix 协议规范:https://spec.matrix.org/unstable/client-server-api/ (官方文档引用,2026-10-26)
- 站内关联:《Gotify 3.1.1 介绍与选型指南》、《ntfy 2.32.0 介绍与选型指南》、《Apprise 介绍与选型指南》、《Alertmanager 0.34 介绍与选型指南》