PushBits 0.10.7 介绍与选型指南

PushBits 认知篇:Gotify API 兼容、经 Matrix 投递的轻量推送中继服务器——定位、架构、功能特性、适用场景与 Gotify/ntfy/Apprise 量化选型对比,数据均为 2026-10-26 联网溯源实查。

PushBitsPushBits通知MatrixGotify自托管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 实测内容见本专栏部署与配置各篇)。

一、实查环境

本篇为纯联网溯源的认知篇,以下为本次实查的渠道与时间点,正文所有事实均可在这些来源复核:

💡 说明: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 项目身份信息(实查数据)

维度实查值来源与日期
开发语言GoGitHub 仓库 language 字段(2026-10-26)
开源许可ISC LicenseGitHub 仓库 license 字段(2026-10-26)
最新稳定版v0.10.7(2025-05-29 发布)GitHub Releases latest(2026-10-26)
仓库创建时间2020-07-25GitHub 仓库 created_at(2026-10-26)
仓库最近推送2026-01-10GitHub 仓库 pushed_at(2026-10-26)
Star 数370shields.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 + checksumsv0.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 等)]

三类角色分别对应:

  1. 发送方(应用/Application):每个应用持有一个 token,脚本报文时只需 POST /message?token=<应用token>,无需用户名密码;
  2. 接收方(用户/User):每个用户绑定一个 Matrix ID(如 @alice:matrix.org),PushBits 用一个专用 Matrix 账号(发送账号)向各用户的 Matrix ID 建立房间并投递消息;
  3. 管理员(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
PushBitsMatrix(复用任意 Matrix 客户端)否,Element 等现成客户端即可
Gotify自有 WebSocket 长连接是,Gotify Android/iOS 客户端
ntfyHTTP 流/长轮询 + 统一推送推荐安装 ntfy 客户端(iOS 依赖 APNs 中转)
Apprise100+ 第三方服务的 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 典型适用场景

  1. 监控告警投递:Alertmanager webhook 直接指向 POST /alert,告警落到运维团队的 Matrix 群/个人房间(官方配置里甚至有 alertmanager 专属的 annotation 映射参数);
  2. 脚本与定时任务通知:备份完成、证书到期、磁盘水位等事件,一条 curl 即可推送,且兼容 Gotify 报文格式——已有系统若原打向 Gotify,把 URL 换成 PushBits 即可切换接收端;
  3. CI/CD 流水线结果推送:构建成败、部署结果通知,复用 Gotify 生态的现成插件(官方明确以 Watchtower、Jellyfin 等的 Gotify 插件兼容为设计目标之一);
  4. 家庭实验室/自托管用户的统一收件箱:不想为每个自托管服务装一个通知 App,用一个 Matrix 客户端收所有服务器的消息。

6.2 明确的限制

  1. 无 Web 界面、无消息历史查询 UI:消息历史在 Matrix 房间里,管理走 API;
  2. 单一投递通道:0.10.x 仅支持 Matrix 投递(早期版本曾支持 Telegram,现行主线为 Matrix only);
  3. alpha 阶段 + 单人维护:官方不承诺 API/配置向后兼容,且 2FA 尚未实现;
  4. 消息送达依赖 Matrix 账号体系:接收人必须先有 Matrix 账号并告知其 Matrix ID,PushBits 无法"凭空"给手机号/邮箱推送;
  5. token 即凭据:应用 token 持有者即可向对应用户发消息,泄露需及时通过 API 重置(PUT /application 的 refresh_token 参数)。

七、同类选型对比(量化)

自托管推送通知这一赛道的主要选手为 Gotify、ntfy、Apprise(以及商业托管服务 Pushover)。下表数据均为 2026-10-26 从各项目官方渠道(GitHub 仓库/官网/README)实查:

维度PushBits 0.10.7Gotify 3.1.1ntfy 2.32.0Apprise API 2.0
定位通知中继,经 Matrix 投递自建推送服务器(自有协议+App)HTTP 发布/订阅通知服务通知分发网关(100+ 目标服务)
开发语言GoGoGoPython
许可ISCMITApache-2.0MIT
Star 数370约 12k约 25k约 13k(库)/ API 独立仓库
接收端要求任意 Matrix 客户端(Element 等)Gotify 专用 Appntfy 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 的版本与特性细节可参见站内对应专栏文章。)

选型建议(如果…则…):

一句话总结:PushBits 是" Gotify 发送协议 + Matrix 接收生态"的组合 Specialist——它不追求大而全,而是把"自建推送最后一公里"外包给了 Matrix。如果你的接收端本来就在 Matrix 上,它的极简与零客户端依赖是同类中独有的;反之若没有 Matrix 使用习惯,为此单建一套 Matrix 账号体系则得不偿失,Gotify/ntfy 更合适。

八、参考链接