本文按 TTRSS 官方安装指南部署 PostgreSQL、应用、更新器与 Nginx 四个组件,并说明持久化、初始化密码与备份方式。已有阅读器数据库的迁移应单独验证。
Tiny Tiny RSS 是自托管 RSS 阅读器,负责订阅、更新、分类与已读状态。RSSHub 可以作为内容来源,全文提取属于额外功能,不是基础安装所必需。TTRSS 官方安装指南
一、准备配置
在独立目录保存 compose.yaml。下面用 PostgreSQL 17 固定数据库大版本;不要用浮动 postgres:alpine 让已有数据库突然跨大版本启动。
services:
db:
image: postgres:17-alpine
restart: unless-stopped
env_file: .env
environment:
POSTGRES_USER: ${TTRSS_DB_USER}
POSTGRES_PASSWORD: ${TTRSS_DB_PASS}
POSTGRES_DB: ${TTRSS_DB_NAME}
volumes:
- db:/var/lib/postgresql/data
app:
image: ghcr.io/tt-rss/tt-rss:latest
restart: unless-stopped
env_file: .env
volumes:
- app:/var/www/html
- ./config.d:/opt/tt-rss/config.d:ro
depends_on:
- db
updater:
image: ghcr.io/tt-rss/tt-rss:latest
restart: unless-stopped
env_file: .env
command: /opt/tt-rss/updater.sh
volumes:
- app:/var/www/html
- ./config.d:/opt/tt-rss/config.d:ro
depends_on:
- app
web-nginx:
image: ghcr.io/tt-rss/tt-rss-web-nginx:latest
restart: unless-stopped
env_file: .env
ports:
- "127.0.0.1:8280:80"
volumes:
- app:/var/www/html:ro
depends_on:
- app
volumes:
db:
app:
应用卷同时提供给应用、更新器和 Web;数据库保存在另一个卷,数据库端口不映射到宿主机。上游仓库根目录的 Compose 已注明用于开发、没有数据库持久化,不应直接作为生产部署文件;本文对应安装指南的持久化方案。
创建 config.d 和权限受限的 .env,填写自己的数据库密码、完整访问 URL:
TTRSS_DB_USER=ttrss
TTRSS_DB_NAME=ttrss
TTRSS_DB_PASS=替换为随机数据库密码
TTRSS_SELF_URL_PATH=https://rss.example.com/tt-rss/
变量前缀是 TTRSS_。示例沿用 /tt-rss/ 路径;想放到网站根目录时,需要按官方指南同时改 APP_WEB_ROOT、APP_BASE 与 URL,不能只去掉末尾路径。
mkdir -p config.d
chmod 600 .env
docker compose config --quiet
docker compose up -d
docker compose logs --tail 100 app updater web-nginx
depends_on 不保证数据库已经可以接受连接,初始化情况应看日志。当前模板未设置 ADMIN_USER_PASS 时会生成随机管理员密码,按应用日志取得;不要假定存在通用初始密码。ADMIN_USER_* 设置在每次启动时应用,若主动设置密码,应理解这会影响后续启动。官方环境变量模板
二、HTTPS 反向代理
在已经配置证书的 Nginx 虚拟主机中添加:
location /tt-rss/ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://127.0.0.1:8280/tt-rss/;
}
登录后测试添加订阅、自动更新与文章打开。只看到首页不能证明更新器在运行。HTTP 和 HTTPS 混用或 SELF_URL_PATH 路径不一致,可能导致跳转、资源 URL 或客户端访问异常。
三、备份和升级
db 卷保存用户、订阅和已读状态,app 卷及 config.d 保存需要保留的本地扩展与配置。备份应包含这些数据,并在隔离环境验证恢复。数据库使用逻辑导出或一致性备份,不能复制运行中的数据目录后就宣称可恢复。
上游目前的可选备份容器带 PostgreSQL 17 客户端,不适用于直接备份更高大版本数据库。PostgreSQL 18 镜像还改变了数据卷路径;从 17 升级到 18 必须设计迁移与回滚,不能只修改 image 标签。官方备份和数据库版本说明
本文的应用镜像仍使用浮动标签,长期运行应记录已测试 digest,升级前阅读变更并备份。不要执行 docker compose down -v 来排查普通登录或网络问题,它会删除命名卷。
四、接入 RSSHub
先验证 RSSHub 路由返回有效 RSS,再从 TTRSS 所在网络测试其 URL。浏览器能访问不意味着容器能访问,localhost 也不是另一个容器。自建内部服务可放在共同网络并使用服务名,按上游指南处理端口和内网 URL 限制;不要为了单个订阅全局放开所有内部地址检查。
评论区