这个教程解决什么问题
读完这篇你能做到:选对部署路线,完成 SubBoost 的安装,创建管理员账号,通过健康检查确认服务就绪。SubBoost 有两条官方部署路径——一键镜像和 Compose 源码构建,本文都覆盖。
路线怎么选
| 路线 | 适合 | 特点 |
|---|---|---|
| 一键部署(GHCR 镜像) | 大多数人 | 拉镜像即跑,最快上手 |
| 高级部署(Compose 源码构建) | 熟悉 Docker Compose、要深度定制 | 从源码构建,配置全部可控 |
先说一句通用前提:SubBoost 依赖 PostgreSQL 存储订阅和节点数据,一键镜像已经内置处理,Compose 路线则由 Compose 文件提供或复用你已有的数据库。
路线一:一键部署(推荐)
官方镜像发布在 GHCR(ghcr.io),一键部署的具体命令以官方文档「一键部署」章节为准——镜像 tag 会随版本更新,直接复制文档里的 docker run 命令执行即可。
核心要点是三个:
- 端口映射:容器内服务端口映射到宿主机(可用
SUBBOOST_PORT环境变量自定义) - 数据持久化:把数据目录挂载为 volume,升级镜像不丢订阅配置
- 首次初始化:部署完成后浏览器打开服务页面,首次访问会引导你创建管理员账号——这一步完成后才能进入管理界面
部署形态和本站写过的 n8n Docker 部署是同一套范式,如果你的服务器上已经跑着其他自托管服务,流程完全熟悉。
路线二:Docker Compose 源码构建
适合想完全掌控配置的用户。按官方文档的步骤:
第一步,准备环境。 需要 Docker 和 Docker Compose,以及一份公开源码。PostgreSQL 由 Compose 文件提供,或者指向你已有的数据库实例。
第二步,配置环境变量。 进入源码的 local 目录,复制环境变量模板:
cd local
cp local.env.example .env
然后编辑 .env,关键变量清单:
| 变量 | 作用 | 注意事项 |
|---|---|---|
POSTGRES_PASSWORD | 数据库密码 | 用长随机串,别用默认值 |
DATABASE_URL | 数据库连接串 | 密码与上一项保持一致 |
ENCRYPTION_KEY | 订阅数据加密密钥 | 生成后妥善保管,丢失则加密数据无法解密 |
JWT_SECRET | 登录会话签名密钥 | 换成随机值 |
CRON_SECRET | 定时任务触发凭证 | 自动刷新功能使用 |
APP_URL | 应用的对外访问地址 | 影响生成的订阅链接域名 |
SUBBOOST_PORT | 服务监听端口 | 按需自定义 |
其中 ENCRYPTION_KEY 最值得强调:SubBoost 用它加密存储你的订阅敏感信息。这个密钥一旦丢失,数据库里的订阅数据就解不开了——部署时生成好,和数据库备份一起纳入你的备份策略。
第三步,启动。 Compose 文件会同时拉起应用和数据库:
docker compose up -d
部署后验证
两条官方提供的健康检查端点:
# 存活检查
curl http://127.0.0.1:端口/api/health/live
# 就绪检查(数据库连通)
curl http://127.0.0.1:端口/api/health/ready
live 返回正常说明进程活着,ready 返回正常说明数据库连接就绪。两个都通过后,浏览器打开服务地址,走首次访问的管理员创建流程,登录进控制台就算部署完成。
反向代理与 HTTPS
给 SubBoost 套一层反代是标准操作:订阅链接走 HTTPS 更安全,也避免部分客户端对 HTTP 订阅的限制。Caddy 两行配置搞定,本站的雷池配合 Caddy 方案里 Caddy 的配置模式可以直接套用;Vercel/Nginx 用户按常规反代配置即可。
注意 APP_URL 要和反代后的对外地址一致,否则生成的订阅链接域名不对。
部署常见问题 FAQ
Q:服务器需要什么配置?
SubBoost 是轻量 Web 服务,依赖 PostgreSQL 存数据,一台最低配的 VPS 就能跑。它的职责是拉取订阅、管理节点池、输出聚合订阅,不承载代理流量,对带宽和 CPU 没有特殊要求。
Q:可以复用已有的 PostgreSQL 吗?
可以。Compose 路线允许把 DATABASE_URL 指向已有的数据库实例,不必单独起库。注意容器网络里主机名用服务名而不是 localhost,并给 SubBoost 单独建库建账号,别和其他服务混用同一份数据。
Q:怎么升级版本?
Compose 路线两条命令:docker compose pull 拉新镜像,docker compose up -d 重建容器。数据都在 volume 里不会丢。升级前确认 volume 配置在,顺手做一次数据库备份,再走健康检查验证。
Q:忘记管理员密码怎么办?
管理界面首次访问创建的管理员账号控制着你全部订阅数据,凭证务必存进密码管理器。万一丢失,重置方式以官方文档为准——这也是数据库备份不能偷懒的另一个理由。
Q:端口被占用或不想暴露端口怎么办?
改 SUBBOOST_PORT 换一个监听端口即可。更好的做法是让应用只监听本机回环地址,对外由反向代理提供 HTTPS 服务——安全性和整洁度都更好。
Q:可以部署在 NAS 或家里的小主机上吗?
可以,Docker 能跑的地方就能部署。两个前提要满足:机器常开稳定——聚合订阅是全家客户端的依赖入口,服务器宕机等于所有客户端断更;外网访问路径要处理好,家庭宽带环境要么内网穿透,要么只在局域网内使用。
Q:健康检查端点要暴露到公网吗?
不必。live 和 ready 两个端点在本机 curl 验证即可,反向代理上可以不转发它们——暴露面越小越好。
日常运维操作卡
部署完成只是开始,日常高频操作记这一张表:
| 操作 | 命令 / 位置 | 说明 |
|---|---|---|
| 查看日志 | docker compose logs -f | 排障第一步,报错信息在这里 |
| 重启服务 | docker compose restart | 改过环境变量要用 up -d 重建 |
| 升级版本 | docker compose pull && docker compose up -d | 数据在 volume,配置不丢 |
| 备份数据库 | pg_dump 定时任务 | 备份三件套见自托管隐私实践 |
| 健康检查 | curl /api/health/ready | 升级或改动后先跑一遍 |
三个常见坑
坑一:数据库连接失败。 Compose 路线先确认数据库容器起来了再看应用日志;复用已有 PostgreSQL 时检查 DATABASE_URL 的主机名——容器网络里要用服务名而不是 localhost。
坑二:订阅链接打不开。 十有八九是 APP_URL 配置与实际访问地址不一致,或者反代没有正确转发。
坑三:升级后数据丢失。 没挂数据卷。PostgreSQL 数据和应用数据都在 volume 里,docker compose pull && docker compose up -d 升级前确认 volume 配置在。
部署完成后,下一步就是把你的订阅导入进来——见订阅聚合实战。