在 Debian 12 上安装并使用 RSStT

更关心您阅读体验的 Telegram RSS 机器人

RSS-to-Telegram-Bot (RSStT) 是一个功能强大的 Telegram 机器人,可以将 RSS 源的更新推送到 Telegram。使用 Docker Compose 是官方最推荐的部署方式,它极大地简化了安装、配置和更新过程,将应用程序及其依赖项打包在隔离的容器中运行,非常适合新手和追求便捷管理的用户。本教程将指导您如何在 Debian 12 服务器上一步步完成 Docker Compose 部署。

温馨提示

本文由用户 k08255-lxm 撰写,并已加入 VPS.Town 优秀原创文章激励计划,本站享有完整版权,未经允许不得转载。

本文已通过 VPS.Town 社区文章投稿及奖励规则 (试行稿) 审核,并获得 现金 50 元 奖励。

📖 本文目录

1. 准备工作

与任何安装方式一样,我们首先需要获取一些必要的凭证信息。如果您已在其他教程中获取过,可以跳过此步。

所需信息
  • Telegram Bot Token: 用于让我们的程序作为 Bot 连接到 Telegram。
  • 管理员 Telegram User ID: 用于管理 Bot 的权限。
  • Telegraph API Token(s): 用于将过长的消息发布为 Telegraph 文章 (推荐获取 5 个)。

1.1 获取 Telegram Bot Token

Get_BotToken

  1. 打开 Telegram,搜索并与 @BotFather 开始对话。
  2. 发送 /newbot 命令,按提示设置 Bot 的名字 (Name) 和用户名 (Username, 必须以 bot 结尾)。
  3. 创建成功后,复制 BotFather 发送的 HTTP API Token妥善保管
  4. (重要) 接着,向 BotFather 发送 /setinline 命令,选择你刚创建的 Bot,然后随意回复一条消息(如:输入命令...)以启用内联模式。
记录 Token

将获取到的 Bot Token 复制下来备用。我们称之为 TOKEN

然后与您的机器人对话,并发送/start命令。 Activate_Bot

1.2 获取你的 Telegram User ID

Get_TGUserID

  1. 打开 Telegram,搜索并与 @userinfobot 开始对话。
  2. 发送 /start 或任何消息。
  3. 复制它回复的纯数字 User ID
记录 User ID

将获取到的 User ID 复制下来备用。我们称之为 MANAGER

1.3 获取 Telegraph API Token(s)

Get_TelegraphAPIToken

  1. 访问 Telegraph API 创建页面(此链接会在生成的文章页脚留下 RSStT 的项目标识)

    自定义无标识链接: https://api.telegra.ph/createAccount?short_name=YourName

  2. 复制页面结果中 access_token 的值。
  3. (重要) 刷新页面以获取新的、不同的 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 更新系统软件包

首先,确保系统是最新的。

sudo apt update && sudo apt upgrade -y

2.2 安装 Docker

  1. 卸载旧版本 (如果存在):

    sudo apt remove docker docker-engine docker.io containerd runc -y
    
  2. 安装必要的依赖包:

    sudo apt install -y ca-certificates curl gnupg lsb-release
    
  3. 使用一键脚本

    curl -fsSL https://get.docker.com | bash
    

3. 使用 Docker Compose 安装 RSStT

现在 Docker 环境准备就绪,我们可以开始部署 RSStT 了。

3.1 创建工作目录并下载配置文件

# 创建一个专门的目录存放 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.yml

3.2 配置 docker-compose.yml 文件

docker-compose.yml 文件定义了运行 RSStT 所需的服务(即容器)及其配置。我们需要编辑它来填入之前准备好的凭证信息。

# 使用 nano 编辑器编辑文件 (也可以使用 vim 或其他编辑器)
nano docker-compose.yml

找到 services: -> rsstt: -> environment: 部分。这里定义了 RSStT 运行所需的环境变量。你需要修改以下几行:

docker-compose.yml (environment 部分)
services:
  rsstt:
    # ... (其他配置保持不变)
    environment:
      # --- Required ---
      # Telegram Bot Token (从 @BotFather 获取)
      - TOKEN=781243512:AAGSDGHSRTGHJTRDSFGDSSD # <--- 修改这里

      # 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:

# 确保你在 ~/rsstt_docker 目录下
# 如果你没有将用户添加到 docker 组,请使用 sudo docker compose up -d
docker compose up -d
  • up: 创建并启动 docker-compose.yml 文件中定义的服务。
  • -d: Detached mode,表示在后台运行容器。

Docker 会自动下载 RSStT 的镜像 (如果本地没有),然后创建并启动容器。

3.4 检查服务状态和日志

# 查看正在运行的容器 (应该能看到名为 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 非常简单:

  1. 进入工作目录:
    cd ~/rsstt_docker
    
  2. 拉取最新的 Docker 镜像:
    # 如果你没有将用户添加到 docker 组,请使用 sudo docker compose pull
    docker compose pull
    
  3. 停止当前容器并使用新镜像重新创建启动:
    # 如果你没有将用户添加到 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><RSS 订阅 URL>替换为你想要订阅的 url,例如/sub https://rss.nodeseek.com/

    • 批量订阅: /sub <URL1> <URL2> ... (url之间用空格分隔) 例如:/sub https://rss.nodeseek.com/ https://docs.vps.town/rss/event.xml Single_Sub

  • 为群组/频道订阅:

    • 首先,将机器人添加为群组成员或频道管理员(需发布消息权限)。

    • 将机器人加入至群组的步骤: Join_Group

    • 将机器人加入至频道的步骤: Join_Channel_S1 Join_Channel_S2 Join_Channel_S3 Join_Channel_S4

    • 方法一 (直接在群组/频道内):

      • 在群组或频道内直接发送 /sub <RSS 订阅 URL>。 Control_Bot_Public
    • 方法二 (在与 Bot 的私聊中指定目标):

      • 使用用户名: /sub @频道或群组用户名 <RSS 订阅 URL> 例如:/sub @MyChannelName https://example.com/feed.xml (注意:@ 符号必不可少)
        Control_Bot_in_Private_Chat

      • 使用 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 源了。

如果遇到任何问题或想了解更多高级功能,请查阅官方文档: