在Docker中部署RssHub记录
前言
RSS(Really Simple Syndication)是一个非常古老,相应也很成熟的信息订阅方案。基于rss订阅规则,你可以在这个大数据计算偏好的环境下,拥有一块属于自己的纯净且相对隐私的净土。想看时事新闻?没问题!想看搞笑段子?没问题!想看小姐姐?当然也没问题!
在此前博主写了一篇《万物皆可RSS——订阅你感兴趣的内容》来介绍 rsshub。那时候还没有买服务器,所以部署在 vercel 平台。一年多过去了,其实我也没有了当初对于 rss 的那般热情。
但是自从我前段时间把服务器重装为 Debian 之后,发现原来我的小水管也可以做那么多事情!加上微博估计是 ban 了 vercel 的 ip,所以部署在 vercel 上面的 rsshub 已经无法获取到微博用户更新了,所以我在服务器上折腾了一番,本文做一个小小的总结,以免以后又不知道如何操作了。
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 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 部署 rsshub 遇到的问题和解决办法,以便后来再次遇到问题的时候能够更快解决问题——毕竟好记性不如烂笔头嘛。