在甲骨文云搭建telegram的RSS机器人–数据永久化

之前写过一篇在甲骨文云搭建Telegram RSS机器人的教程,使用的是 RSS-to-Telegram-Bot 这个项目,通过 Easypanel 部署在 Docker 容器里。

搭建完之后,机器人用起来非常顺手——订阅管理、RSS推送一切正常。但有一个问题:每次服务器重启,所有的订阅设置就全部消失了,需要重新手动添加一遍。

一开始以为是机器人项目本身的问题,后来才发现——原来是自己在 Easypanel 上漏掉了一个关键步骤:没有设置 Volume 挂载(持久化存储)


原因分析:Docker容器的无状态性

这是一个 Docker 的基础特性,但我这样的新手很容易踩坑。

Docker 容器本身是无状态的。

容器内部产生的数据(比如 RSS-to-Telegram-Bot 的订阅数据库文件),默认只保存在容器的可写层里。一旦容器停止、重启或被重建,这些数据就会随之消失

在甲骨文云搭建telegram的rss机器人 5
在甲骨文云搭建telegram的rss机器人

要让数据在重启后依然保留,必须通过 Volume(卷)Bind Mount(绑定挂载) 将容器内的数据目录映射到宿主机的持久化存储上。

Easypanel 提供了图形界面来配置这一点,但如果当初没有注意到,部署时就会跳过这一步。


解决方法:在Easypanel中添加Volume挂载

操作非常简单,进入 Easypanel 对应的 App,找到 「マウント(挂载)」 设置页面,按以下步骤添加一个 Volume Mount:

步骤

  1. 在 Easypanel 控制台,进入对应的 App(本例为 rss2tele
  2. 找到 Mounts(挂载) 部分
  3. 点击 「ボリュームマウントを追加(添加Volume挂载)」
  4. 填写如下配置:
字段填写内容
Volume名称rss2tele(自定义,建议与App同名方便识别)
容器内路径/app/config
  1. 点击保存,然后重新部署(Redeploy)该 App

如下图所示,正确配置后,挂载项会出现在列表中:

スクリーンショット
スクリーンショット

为什么是 /app/config
RSS-to-Telegram-Bot 将订阅数据、配置文件等持久化内容默认存放在容器内的 /app/config 目录。将此目录挂载到 Volume,就能确保数据在容器重启后依然完好保留。


验证效果

配置完成并重新部署后,可以按以下方式验证:

  1. 在 Telegram 机器人中重新添加几个 RSS 订阅(/sub命令)
  2. 在 Easypanel 中手动重启该 App(或等待服务器重启)
  3. 重启完成后,对机器人发送 /list 命令,确认订阅列表依然存在

如果订阅依然在,问题就彻底解决了。


总结:Easypanel部署Docker App的注意事项

检查项说明
✅ 环境变量TOKENMANAGER 是否正确填写
✅ Volume挂载数据目录是否已挂载到持久化Volume ← 本文的重点
✅ 重新部署修改挂载配置后必须 Redeploy 才会生效

这个问题说小不小——因为表面上机器人运行完全正常,只有在重启后才会暴露,很容易让人以为是代码或配置问题,实际上只是忘了挂载 Volume 这一步。