从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • Windows

  • 手机

  • 笔记软件

  • 输入法

  • 浏览器

  • Office

  • 图片类

  • 效率类

  • RSS

    • RSS 简介
    • RSS 源管理
    • RSSHub 入门
    • 自建 RSSHub
      • 什么是 Docker
      • 官网文档
      • 关于镜像的问题
      • Docker Compose
      • 订阅 bilibili
      • RSSHub 日常维护
    • 通过 RSS 订阅微信公众号
    • RSS 阅读器推荐
    • 其他生成 RSS 源的方法
    • RSS 教程完结
  • 码字工具

  • 各大平台

  • 效率软件
  • RSS
2024-08-07
目录

自建 RSSHub

# 400.自建 RSSHub

本文着重讲讲根据 Docker 如何自建 RSSHub。

当然,根据官网文档,使用 npm/Vercel 的方式也是可以的,也很简单。

‍‍

先声明下:

  • 如果没有编程基础的话,搭建起来会有点麻烦,这没关系,每天学习一点,慢慢搭建,总能成功的。
  • 网上有不少一键部署的教程,Vercel 一键部署 RSSHub (opens new window)
  • 如果你实在不想动手,那就用我上一篇博客提到的 RSSHub 镜像实例,搭网友的便车。 ‍

# 什么是 Docker

如果你不了解什么是 Docker,可以看看我写的 Docker 教程:https://www.peterjxl.com/Docker (opens new window),看前几篇文章就行。

Docker 其实不是很复杂,能安装、启动、了解一些常用命令就可以完成日常的使用了。

如果你觉得我的博客比较难懂,也可以去看其他人写的教程,网上有很多。 ‍

# 官网文档

可以先简单看看官网文档(访问不到的话可以看看镜像站):

​ ‍

# 关于镜像的问题

默认的镜像是:diygod/rsshub​

但我推荐使用 diygod/rsshub:chromium-bundled​,该镜像还包括了 puppeteer​,这是一个 Node 库,有些 RSS 源需要它。

例如,我原先使用的是 diygod/rsshub​,在订阅 B 站用户动态的时候,就遇到报错:

Error: Could not find Chrome (ver. 123.0.6312.86). This can occur if either 1. you did not perform an installation before running the script (e.g. `npx puppeteer browsers install chrome`) or 2. your cache path is incorrectly configured (which is: /app/node_modules/.cache/puppeteer). For (2), check out our guide on configuring puppeteer at https://pptr.dev/guides/configuration.
1

‍ 经过这些参考的 issue,才知道换一个镜像,后续就没报错了:

  • https://github.com/DIYgod/RSSHub/issues/7612 (opens new window)
  • https://github.com/DIYgod/RSSHub/issues/14812 (opens new window)
  • https://github.com/DIYgod/RSSHub/discussions/11047 (opens new window)

# Docker Compose

我这里使用 Compose 方式,就不用下载镜像后再配置了。新建 docker-compose.yml 文件,内容如下:

services:
    rsshub:
        # two ways to enable puppeteer:
        # * comment out marked lines, then use this image instead: diygod/rsshub:chromium-bundled
        # * (consumes more disk space and memory) leave everything unchanged
        image: diygod/rsshub:chromium-bundled
        restart: always
        ports:
            - '1200:1200'
        environment:
            NODE_ENV: production
            CACHE_TYPE: redis
            REDIS_URL: 'redis://redis:6379/'
            PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000'  # marked
        depends_on:
            - redis
            - browserless  # marked

    browserless:  # marked
        image: browserless/chrome  # marked
        restart: always  # marked
        ulimits:  # marked
          core:  # marked
            hard: 0  # marked
            soft: 0  # marked

    redis:
        image: redis:alpine
        restart: always
        volumes:
            - redis-data:/data

volumes:
    redis-data:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

‍ PS:该文件来自官网 https://github.com/DIYgod/RSSHub/blob/master/docker-compose.yml (opens new window),我这里仅仅是修改了镜像为 diygod/rsshub:chromium-bundled​

创建 volume 持久化 Redis 缓存:

docker volume create redis-data
1

‍ 启动(加了 -d​ 是后台启动的意思。如果不加则是前台启动,一关闭终端就会停止):

docker compose up -d
1

停止:

docker compose down
1

‍ 然后我们就可以开始订阅啦~

# 订阅 bilibili

订阅的时候,注意有些路由是要做配置的,原因在之前的博客讲“RSS 的没落”的时候也讲过。

例如,订阅 B 站需要 Cookie(可以理解为登录后的凭证,感兴趣的可以看我的另一篇博客:Cookie 笔记 (opens new window))

官网文档 (opens new window) 是这样说的:

​ ‍

我觉得这个步骤有点太简单了,我折腾了好久、查了很多 issue 才达到这个功能,接下来就详细说明下如何操作。

首先登录 bilibili,然后打开 https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid = 0& type = 8 (opens new window)

然后按 F12 键打开浏览器的控制台,切换到 Network (网络)面板:

​ ‍

再次刷新网页,并且查找 dy 开头的网络请求,然后找到请求标头里的 Cookie 字段:

​ ‍

然后可以双击该字段,就会全选,然后按下 Ctrl + C 复制(注意 Cookie 是一个很长的字符串,这里我截图只截了一部分,此外不同路由需要的字段也不尽相同,具体请参考官网文档) ‍ 然后我们在 docker-compose.yml 的同级目录下,新建 rsshub.env 文件(新建 txt 后,然后改后缀名),文件内容格式为:

BILIBILI_COOKIE_{UID}=[Cookie]
1

‍ 例如我的文件内容如下:

BILIBILI_COOKIE_12345678 = buvid3=6049693D-979D-D59F-D0EF-02E96541F39075143...
1

注:

  • 这个文件是 Docker​ 的环境变量文件
  • 关于文件名:env​ 是后缀,不能改;而 rsshub​ 是应用的名字(在 docker-compose.yml​ 里配置的)。
  • 如果只命名为 .env​,会因为“. 开头的文件和目录被视为隐藏文件”而读取不到
  • UID 随便填,填个 123456 都行 ‍ 然后重启 RSSHub 即可,这样后续就可以订阅 B 站动态了。

注意:cookie 会更新,更新后原本的就会失效,导致 rsshub 抓取失败。所以需要定期更新,并且重启 docker。如果不提供 Cookie 或者 Cookie 已经失效了,那么订阅时会提示:

Error: 503 Service Unavailable
1

‍ 一些方案:

  • 方法一:在浏览器无痕模式(隐身模式)下登录后获取相应的 Cookie。因为用户通过浏览器访问才会触发 Cookie 刷新,所以可以用该方法规避,能极大地延长 Cookie 有效时间。
  • 方法二:使用 CookieCloud (opens new window) 同步 Cookie。这一步较为复杂,不展开讲。

我平时用的是 Chrome 浏览器,然后我通过 Edge 浏览器获取的 Cookie,也能用很长一段时间。 ‍ 参考的 issue:

  • https://github.com/DIYgod/RSSHub/issues/15205 (opens new window)
  • https://github.com/DIYgod/RSSHub/issues/12207 (opens new window)
  • https://github.com/DIYgod/RSSHub/discussions/10765 (opens new window)
  • https://github.com/DIYgod/RSSHub/issues/15476 (opens new window)

# RSSHub 日常维护

由于我是在 Windows 上使用,因此新建了一个 restart.bat​ 文件,里面的内容是:

docker compose down

docker compose up -d

pause
1
2
3
4
5

‍ 这样我双击该 bat 文件,即可完成 RSSHub 的重启,而不用动手输命令:

​ ‍

如果你使用的是 Linux,也可以新建一个 shell 脚本完成类似的功能。

——完——

上次更新: 2025/6/3 09:31:54
RSSHub 入门
通过 RSS 订阅微信公众号

← RSSHub 入门 通过 RSS 订阅微信公众号→

最近更新
01
学点统计学:轻松识破一本正经的胡说八道
06-05
02
2025 年 5 月记
05-31
03
《贫穷的本质》很棒,但可能不适合你
05-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式