前言

RSS(Really Simple Syndication)是一个非常古老,相应也很成熟的信息订阅方案。基于rss订阅规则,你可以在这个大数据计算偏好的环境下,拥有一块属于自己的纯净且相对隐私的净土。想看时事新闻?没问题!想看搞笑段子?没问题!想看小姐姐?当然也没问题!

在此前博主写了一篇《万物皆可RSS——订阅你感兴趣的内容》来介绍 rsshub。那时候还没有买服务器,所以部署在 vercel 平台。一年多过去了,其实我也没有了当初对于 rss 的那般热情。

但是自从我前段时间把服务器重装为 Debian 之后,发现原来我的小水管也可以做那么多事情!加上微博估计是 ban 了 vercel 的 ip,所以部署在 vercel 上面的 rsshub 已经无法获取到微博用户更新了,所以我在服务器上折腾了一番,本文做一个小小的总结,以免以后又不知道如何操作了。

Docker

“万能”的宝塔面板可以帮我们解决很多问题,比如不用手敲命令去安装 docker,在软件商店下载之后,你可以拥有一个更方便的 docker 管理器。

docker管理器

在这个面板中,你可以直接获取镜像(知道镜像名),而不用输入命令docker pull ...。此外,创建容器、删除容器、管理镜像等操作皆可一键完成。

因为服务器是良心云的,所以我设置的镜像加速地址也是良心云的镜像,这样可以大大加快镜像的拉去速度。链接 https://mirror.ccs.tencentyun.com

安装rsshub

官网文档里有写安装和运行命令之类,在上面安装的 docker 管理器中就更方便了。点开管理器——镜像管理——获取镜像,输入diygod/rsshub即可。

但是在创建容器之后,我发现某路由的内容我获取不到,报错如下:

特定路由报错

如果你也有特定的需求,比如订阅抖音平台的更新,记得使用diygod/rsshub:chromium-bundled镜像代替diygod/rsshub

关于环境变量

rsshub 有个简单的用户认证功能,比如在环境变量中配置了ACCESS_KEY,那么没有正确 key 的人无法通过你部署的 rsshub 来订阅内容。

我个人不愿意提供给其他人用的原因不是担心资源消耗,而是担心潜在的监管问题—— rss 可以获取到很多奇奇怪怪的东西。

在 vercel 上配置环境变量超级简单,但是才接触 docker,导致我在设定环境变量的问题上花了好多时间。

起先,我是安装官网文档的命令来启动:

docker run -d --name rsshub -p 1200:1200 diygod/rsshub:chromium-bundled

运行之后才意识到用户认证没有设置。于是必应了好久,都没找到有效在容器中添加环境变量的方法(实际是我没理解到)。

于是我删掉容器,通过管理器面板创建容器,因为在这里我仿佛看到了希望:

这里可以添加环境变量

但是创建成功之后,容器对外端口竟然是未启用,创建容器的时候我分明把服务器端口写上了呀!

于是删除容器,打开菜鸟教程——真的就挺适合我这种菜鸟的。仔细读docker run命令,恍然大悟。于是要添加环境变量的启动命令应该是:

docker run -d --name rsshub -e ACCESS_KEY=xxx -p 1200:1200 diygod/rsshub:chromium-bundled

绑定域名

Rsshub 在服务器上运行后,直接访问应是ip+端口,但是这样挺麻烦的。此前我也搜过docker应用如何绑定域名,看到的是一大堆命令,瞬间打了退堂鼓。

后来碎月告诉我,可以用反代呀!

因此,在宝塔面板新建一个站点,选择设置——反向代理,如下图所示:

反代docker应用

最后解析域名到服务器即可。

总结

安装:

$ docker pull diygod/rsshub:chromium-bundled

运行:

docker run -d --name rsshub -e ACCESS_KEY=xxx -p 1200:1200 diygod/rsshub:chromium-bundled

更新(删除旧容器再安装):

$ docker stop rsshub
$ docker rm rsshub

这篇文纯属于记录和总结自己在使用 docker 部署 rsshub 遇到的问题和解决办法,以便后来再次遇到问题的时候能够更快解决问题——毕竟好记性不如烂笔头嘛。