切换主题
在 Debian 12 上安装并使用 RSStT
更关心您阅读体验的 Telegram RSS 机器人
RSS-to-Telegram-Bot (RSStT) 是一个功能强大的 Telegram 机器人,可以将 RSS 源的更新推送到 Telegram。使用 Docker Compose 是官方最推荐的部署方式,它极大地简化了安装、配置和更新过程,将应用程序及其依赖项打包在隔离的容器中运行,非常适合新手和追求便捷管理的用户。本教程将指导您如何在 Debian 12 服务器上一步步完成 Docker Compose 部署。
1. 准备工作
与任何安装方式一样,我们首先需要获取一些必要的凭证信息。如果您已在其他教程中获取过,可以跳过此步。
所需信息
- Telegram Bot Token: 用于让我们的程序作为 Bot 连接到 Telegram。
- 管理员 Telegram User ID: 用于管理 Bot 的权限。
- Telegraph API Token(s): 用于将过长的消息发布为 Telegraph 文章 (推荐获取 5 个)。
1.1 获取 Telegram Bot Token
- 打开 Telegram,搜索并与 @BotFather 开始对话。
- 发送
/newbot命令,按提示设置 Bot 的名字 (Name) 和用户名 (Username, 必须以bot结尾)。 - 创建成功后,复制 BotFather 发送的 HTTP API Token。妥善保管。
- (重要) 接着,向 BotFather 发送
/setinline命令,选择你刚创建的 Bot,然后随意回复一条消息(如:输入命令...)以启用内联模式。
记录 Token
将获取到的 Bot Token 复制下来备用。我们称之为 TOKEN。
然后与您的机器人对话,并发送/start命令。 
1.2 获取你的 Telegram User ID
- 打开 Telegram,搜索并与 @userinfobot 开始对话。
- 发送
/start或任何消息。 - 复制它回复的纯数字 User ID。
记录 User ID
将获取到的 User ID 复制下来备用。我们称之为 MANAGER。
1.3 获取 Telegraph API Token(s)
访问 Telegraph API 创建页面(此链接会在生成的文章页脚留下 RSStT 的项目标识)。
自定义无标识链接: https://api.telegra.ph/createAccount?short_name=YourName
复制页面结果中
access_token的值。(重要) 刷新页面以获取新的、不同的
access_token。重复此操作,至少获取 5 个 Token。
记录 Telegraph Token
将获取到的所有 Telegraph API Token 用逗号连接起来,复制备用。我们称之为 TELEGRAPH_TOKEN。例如:token1,token2,token3,token4,token5。
2. 服务器环境准备:安装 Docker 和 Docker Compose
Docker Compose 需要 Docker Engine 运行环境。我们将安装最新的 Docker 版本。
操作环境
本教程假设您使用的是一台拥有 sudo 权限用户的 Debian 12 服务器。所有命令默认使用 sudo 提升权限,除非已将用户添加到 docker组。
2.1 更新系统软件包
首先,确保系统是最新的。
bash
sudo apt update && sudo apt upgrade -y2.2 安装 Docker
卸载旧版本 (如果存在):
bashsudo apt remove docker docker-engine docker.io containerd runc -y安装必要的依赖包:
bashsudo apt install -y ca-certificates curl gnupg lsb-release使用一键脚本
bashcurl -fsSL https://get.docker.com | bash
3. 使用 Docker Compose 安装 RSStT
现在 Docker 环境准备就绪,我们可以开始部署 RSStT 了。
3.1 创建工作目录并下载配置文件
bash
# 创建一个专门的目录存放 RSStT 的配置和数据
mkdir ~/rsstt_docker
cd ~/rsstt_docker
# 下载官方提供的 docker-compose.yml 示例文件
wget https://raw.githubusercontent.com/Rongronggg9/RSS-to-Telegram-Bot/dev/docker-compose.yml.sample -O docker-compose.yml3.2 配置 docker-compose.yml 文件
docker-compose.yml 文件定义了运行 RSStT 所需的服务(即容器)及其配置。我们需要编辑它来填入之前准备好的凭证信息。
bash
# 使用 nano 编辑器编辑文件 (也可以使用 vim 或其他编辑器)
nano docker-compose.yml找到 services: -> rsstt: -> environment: 部分。这里定义了 RSStT 运行所需的环境变量。你需要修改以下几行:
docker-compose.yml (environment 部分)
yaml
services:
rsstt:
# ... (其他配置保持不变)
environment:
# --- Required ---
# Telegram Bot Token (从 @BotFather 获取)
- TOKEN=YOUR_TELEGRAM_BOT_TOKEN # <--- 替换为自己的 Token
# Bot 管理员的 Telegram User ID (从 @userinfobot 获取)
- MANAGER=123456789 # <--- 修改这里
# Telegraph API Tokens (一行一个,至少一个,推荐5个)
TELEGRAPH_TOKEN=<你的Telegraph_API_Token1>
1599373e3dbf55515XXXXX8658d28297fa3
f2a8f5c5db81c740bcXxxxX52287ec413
361935c66b7XXX7ce645af19
0702249218XXXXXc2ab7fcd981b9db820d80098c03ce6
130f258173dXXXX10ef89adf51477535822a94fca708f578d62
# 数据库类型 (Docker Compose 默认使用 sqlite, 数据存储在 volume 中)
# 如果你想使用外部 PostgreSQL 数据库,需要取消注释并修改下面两行
# - DB_TYPE=postgre
# - DATABASE_URL=postgresql://user:password@host:port/database
# --- Optional ---
# Telegram API 的代理 (例如: socks5://192.168.1.100:1080, 注意这里的 IP 通常是宿主机 IP 或代理服务容器 IP)
# - PROXY=socks5://192.168.1.100:1080
# RSS 源的代理
# - RSS_PROXY=http://192.168.1.100:1081
# 启用 HTML 表格转图片 (需要容器内字体支持,官方镜像已包含)
# - TABLE_TO_IMAGE=1重要修改点:
- 将
<你的机器人TOKEN>替换为你的真实 Bot Token。 - 将
<你的Telegram用户ID>替换为你的真实 User ID。 - 将
<你的Telegraph_API_Token1>替换为你之前生成的 Telegraph Token ,一行一个。 - 如果需要代理,请取消对应
- PROXY=或- RSS_PROXY=行的注释并填入正确的代理地址。注意,如果代理在宿主机上,地址通常是宿主机的局域网 IP 或172.17.0.1(Docker 默认网桥 IP),而不是127.0.0.1。 - 默认使用 SQLite 数据库,数据会保存在 Docker Volume (
rsstt-data) 中,无需额外配置。
编辑完成后,按 Ctrl + X,然后按 Y,最后按 Enter 保存并退出 nano。
3.3 启动 RSStT 服务
现在,只需要一条命令即可启动 RSStT:
bash
# 确保你在 ~/rsstt_docker 目录下
# 如果你没有将用户添加到 docker 组,请使用 sudo docker compose up -d
docker compose up -dup: 创建并启动docker-compose.yml文件中定义的服务。-d: Detached mode,表示在后台运行容器。
Docker 会自动下载 RSStT 的镜像 (如果本地没有),然后创建并启动容器。
3.4 检查服务状态和日志
bash
# 查看正在运行的容器 (应该能看到名为 rsstt_docker-rsstt-1 或类似的容器)
# 如果你没有将用户添加到 docker 组,请使用 sudo docker ps
docker ps
# 查看 RSStT 容器的实时日志
# 如果你没有将用户添加到 docker 组,请使用 sudo docker compose logs -f
docker compose logs -f如果日志滚动显示,并且没有明显的错误信息 (如 ERROR 级别的日志),最后看到类似 INFO:telegram.ext.Application:Getting updates 的信息,说明 Bot 已经成功启动。
此时,你可以打开 Telegram,与你的 Bot 对话,发送 /start 或 /help 命令进行测试。
按 Ctrl + C 停止查看实时日志 (服务仍在后台运行)。
4. 管理 RSStT 服务 (Docker Compose)
使用 Docker Compose 管理 RSStT 非常方便:
- 启动服务 (后台运行):
docker compose up -d - 停止并移除容器:
docker compose down(数据卷rsstt-data默认会保留) - 停止服务 (不移除容器):
docker compose stop - 启动已停止的服务:
docker compose start - 重启服务:
docker compose restart - 查看所有服务日志:
docker compose logs - 查看实时日志:
docker compose logs -f - 拉取最新镜像 (用于更新):
docker compose pull
执行命令的位置
以上所有 docker compose 命令都需要在包含 docker-compose.yml 文件的目录 (~/rsstt_docker) 下执行。
5. 更新 RSStT
更新 RSStT 非常简单:
进入工作目录:
bashcd ~/rsstt_docker拉取最新的 Docker 镜像:
bash# 如果你没有将用户添加到 docker 组,请使用 sudo docker compose pull docker compose pull停止当前容器并使用新镜像重新创建启动:
bash# 如果你没有将用户添加到 docker 组,请使用 sudo docker compose up -d docker compose up -d --remove-orphans--remove-orphans会移除旧版本可能遗留的不再需要的容器。
更新完成!数据因为存储在 Docker Volume 中,所以会保留下来。
6. 常见问题与注意事项 (Docker)
- Bot 没有响应?
- 检查容器是否在运行:
docker ps(或sudo docker ps)。 - 查看容器日志:
docker compose logs -f(或sudo docker compose logs -f)。 - 确认
docker-compose.yml文件中的TOKEN,MANAGER,TELEGRAPH_TOKEN是否正确填写且没有多余空格。 - 确认服务器网络是否正常,Docker 容器的网络是否能访问 Telegram API (检查代理设置
PROXY是否正确)。 - 确认是否启用了 inline 模式 (
/setinline@BotFather)。
- 检查容器是否在运行:
- RSS 抓取失败?
- 检查 RSS 源地址是否有效。
- 确认 Docker 容器的网络是否能访问该 RSS 源 (检查代理设置
RSS_PROXY是否正确)。 - 查看容器日志获取详细错误信息。
- 消息过长被截断?
- 确认
docker-compose.yml文件中的TELEGRAPH_TOKEN是否配置正确且有效 (确保有多个,用逗号分隔)。 - 检查容器日志看是否有 Telegraph 相关的错误。
- 确认
- 数据持久化:
docker-compose.yml文件中定义了名为rsstt-data的 Docker Volume。只要你不手动删除这个 Volume (docker volume rm rsstt_docker_rsstt-data),你的订阅和配置信息就会在容器停止、重启或更新后保留下来。 - 资源占用: 可以使用
docker stats(或sudo docker stats) 命令查看 RSStT 容器的实时资源使用情况 (CPU, 内存等)。
7.使用
现在您的 RSStT 机器人已经在 Docker 中成功运行,是时候开始使用它来订阅和管理 RSS 源了。以下是一些基本的操作指令:
7.1 添加订阅
这是核心功能,用于添加新的 RSS 源。
为自己订阅 (Bot 向私聊发送信息):
订阅单个源:
/sub <RSS 订阅 URL>,将占位内容替换为你要订阅的实际地址,例如/sub https://example.com/feed.xml。批量订阅:
/sub <URL1> <URL2> ...,多个地址之间使用空格分隔。
为群组/频道订阅:
首先,将机器人添加为群组成员或频道管理员(需发布消息权限)。
将机器人加入至群组的步骤:

将机器人加入至频道的步骤:

方法一 (直接在群组/频道内):
- 在群组或频道内直接发送
/sub <RSS 订阅 URL>。
- 在群组或频道内直接发送
方法二 (在与 Bot 的私聊中指定目标):
使用用户名:
/sub @频道或群组用户名 <RSS 订阅 URL>例如:/sub @MyChannelName https://example.com/feed.xml(注意:@ 符号必不可少)使用 Chat ID:
/sub <频道或群组ID> <RSS 订阅 URL>例如:/sub -1001234567890 https://example.com/feed.xml(注意:频道/群组 ID 通常以 -100 开头。您可以通过转发频道/群组消息给 @userinfobot 等方式获取 ID)
7.2 管理订阅
对于在群组或频道中的管理可以参见 7.1:在群组或频道内直接发送命令或在与 Bot 的私聊中指定目标
- 列出订阅: 发送
/list查看您(或当前群组/频道)的所有订阅。 - 取消订阅:
- 发送
/unsub,机器人会列出订阅并提供按钮供您选择取消。 - 或发送
/unsub <RSS 订阅 URL>直接指定取消。
- 发送
- 全部取消订阅: 发送
/unsub_all将一次性取消当前聊天(私聊、群组或频道)中的所有 RSS 订阅。请谨慎使用! - 停用订阅: 发送
/deactivate_subs,可以选择暂时停止接收某些源的更新,但保留订阅关系。 - 启用订阅: 发送
/activate_subs,可以选择重新启用之前被停用的订阅源。
7.3 导入与导出
方便地迁移和备份您的订阅列表。
- 导入订阅: 发送 /import 命令,然后按提示上传一个 OPML 文件 (一种常见的 RSS 订阅列表格式)。机器人会将文件中的订阅源添加到当前聊天。
- 导出订阅: 发送 /export,机器人会将当前聊天的所有订阅打包成一个 OPML 文件发送给您,方便备份或迁移到其他阅读器。
7.4 自定义设置
调整订阅和机器人的行为。
- 单个订阅设置: 发送 /set,可以选择一个已订阅的源,并对其进行详细设置(如:通知格式、过滤规则、Webpage Preview 等)。这是进行精细化管理的入口。
- 默认设置: 发送 /set_default,可以为之后新添加的订阅设置默认的行为(类似 /set 中的选项,但作为默认值)。
- 选择语言: 发送
/lang,可以更改机器人界面的显示语言。
7.5 Bot 管理员命令 (仅限 MANAGER 用户 ID)
这些命令仅限在 docker-compose.yml 中配置为 MANAGER 的用户 ID 在与机器人私聊时使用。
- 测试订阅源: 发送
/test <RSS 订阅 URL>来检查机器人是否能成功抓取和解析该源。这对于诊断问题非常有用。 - 更改 Bot 配置: 允许 Bot 管理员修改一些全局性的机器人配置参数。
- 用户信息: 查看或修改与特定用户相关的信息(通常用于管理)。
7.6 其他命令
- 查看版本: 发送
/version查看当前运行的 RSStT 机器人版本。
7.7 获取帮助 (/help):
发送 /help 显示所有可用命令及其简要说明,您可以自行探索该机器人的更多用法。
8. 结语
恭喜!您已经通过 Docker Compose 在 Debian 12 服务器上成功部署并运行了 RSS-to-Telegram-Bot。这种方式不仅安装过程简洁,后续的维护和更新也十分方便。
现在,您可以开始在 Telegram 上与您的 Bot 互动,添加您想要关注的 RSS 源了。
如果遇到任何问题或想了解更多高级功能,请查阅官方文档:
- 项目仓库: https://github.com/Rongronggg9/RSS-to-Telegram-Bot
- 文档导航: docs
- FAQ: docs/FAQ.zh.md