跳到主要内容

部署

部署 RSSHub 需要基本的计算机编程常识,如果您在部署过程中遇到无法解决的问题请到 issues 寻找类似的问题或 向我们提问,我们会尽快给您答复。

部署涉及到以下基本编程常识:

  1. 命令行操作
  2. Git
  3. Node.js
  4. npm 或 yarn

部署到可外网访问则可能涉及到:

  1. Nginx
  2. Docker 或 docker-compose
  3. Redis
  4. Heroku
  5. Google App Engine
  6. Fly.io
  7. Zeabur
  8. Sealos

Docker 镜像​

默认推荐使用 diygod/rsshub 即 diygod/rsshub:latest 最新版镜像以获取最新路由。

当 diygod/rsshub:latest 存在问题时,可以使用以日期为标签的近期镜像临时使用,例如:

$ docker pull diygod/rsshub:2021-06-18

待最新镜像更新后再切换回 diygod/rsshub:latest 最新版镜像。

如需启用 puppeteer,可使用 diygod/rsshub:chromium-bundled;若指定日期则为 diygod/rsshub:chromium-bundled-2021-06-18。

亦可使用 Docker Compose 部署以启用 puppeteer,但更消耗磁盘空间和内存。通过修改 docker-compose.yml,也可以使用 diygod/rsshub:chromium-bundled,这样就没有更消耗资源的问题了。

Docker Compose 部署​

安装​

下载 docker-compose.yml

$ wget https://raw.githubusercontent.com/DIYgod/RSSHub/master/docker-compose.yml

检查有无需要修改的配置

$ vi docker-compose.yml  # 也可以是你喜欢的编辑器

创建 volume 持久化 Redis 缓存

$ docker volume create redis-data

启动

$ docker-compose up -d

更新​

删除旧容器

$ docker-compose down

如果之前已经下载 / 使用过镜像,下方命令可以帮助你获取最新版本:这可能可以解决一些问题。

$ docker pull diygod/rsshub

然后重复安装步骤

添加配置​

修改 docker-compose.yml 中的 environment 进行配置

Docker 部署​

提示

如需启用 puppeteer,请在每条命令中均将 diygod/rsshub 替换为 diygod/rsshub:chromium-bundled。

安装​

运行下面的命令下载 RSSHub 镜像

$ docker pull diygod/rsshub

然后运行 RSSHub 即可

$ docker run -d --name rsshub -p 1200:1200 diygod/rsshub

在浏览器中打开 http://127.0.0.1:1200,enjoy it! ✅

您可以使用下面的命令来关闭 RSSHub

$ docker stop rsshub

更新​

删除旧容器

$ docker stop rsshub
$ docker rm rsshub

然后重复安装步骤

添加配置​

配置运行在 docker 中的 RSSHub,最便利的方法是使用 docker 环境变量

以设置缓存时间为 1 小时举例,只需要在运行时增加参数:-e CACHE_EXPIRE=3600

$ docker run -d --name rsshub -p 1200:1200 -e CACHE_EXPIRE=3600 -e GITHUB_ACCESS_TOKEN=example diygod/rsshub

该部署方式不包括 puppeteer(除非改用 diygod/rsshub:chromium-bundled)和 redis 依赖,如有需要请改用 Docker Compose 部署方式或自行部署外部依赖

更多配置项请看 #配置

Kubernetes 部署 (Helm)​

RSSHub 可以使用来自 RSSHub Helm Chart 的 Helm Chart 在 Kubernetes 中安装

确保满足以下要求:

  • Kubernetes 1.16+
  • 已经 安装 Helm 版本 3.9+

安装​

将 NaturalSelection Labs Chart 仓库添加到 Helm:

helm repo add nsl https://naturalselectionlabs.github.io/helm-charts

你可以通过运行以下命令更新 Chart 仓库:

helm repo update

然后使用 helm 命令行安装:

helm install my-release nsl/rsshub

更新​

要升级 my-release RSSHub 部署:

helm upgade my-release nsl/rsshub

移除​

如要删除 my-release RSSHub 部署:

helm delete my-release

使用自定义配置安装​

helm install my-release nsl/rsshub \
--set="image.tag=2023-12-04" \
--set="replicaCount=2"

使用 HA 模式安装​

replicaCount: 3

puppeteer:
replicaCount: 2

使用外部 Redis 安装​

redis:
# -- 禁用内部 redis
enabled: false
env:
# -- 其他环境变量 --
REDIS_URL: redis://external-redis:6379/

要配置更多值,请参阅 RSSHub Helm Chart。

Ansible 部署​

这个 Ansible playbook 包括了 RSSHub, Redis, browserless (依赖 Docker) 以及 Caddy 2

目前只支持 Ubuntu 20.04

需要 sudo 权限和虚拟化能力(Docker 将会被自动安装)

安装​

sudo apt update
sudo apt install ansible
git clone https://github.com/DIYgod/RSSHub.git ~/RSSHub
cd ~/RSSHub/scripts/ansible
sudo ansible-playbook rsshub.yaml
# 当提示输入 domain name 的时候,输入该主机所使用的域名
# 举例:如果您的 RSSHub 用户使用 https://rsshub.example.com 访问您的 RSSHub 实例,输入 rsshub.example.com(去掉 https://)

更新​

cd ~/RSSHub/scripts/ansible
sudo ansible-playbook rsshub.yaml
# 当提示输入 domain name 的时候,输入该主机所使用的域名
# 举例:如果您的 RSSHub 用户使用 https://rsshub.example.com 访问您的 RSSHub 实例,输入 rsshub.example.com(去掉 https://)

手动部署​

部署 RSSHub 最直接的方式,您可以按照以下步骤将 RSSHub 部署在您的电脑、服务器或者其他任何地方

安装​

首先是下载 RSSHub 的源码

$ git clone https://github.com/DIYgod/RSSHub.git
$ cd RSSHub

下载完成后,需要安装依赖(开发不要加 --production 参数)

pnpm install --prod

由于众所周知的原因,在中国使用 npm 下载依赖十分缓慢,建议挂一个代理或者考虑使用 NPM 镜像

启动​

然后在 RSSHub 文件夹中运行下面的命令就可以启动

$ yarn start

或

$ npm start

或使用 PM2

$ pm2 start lib/index.js --name rsshub

在浏览器中打开 http://127.0.0.1:1200,enjoy it! ✅

详细使用说明参照 指南,替换所有路由例子中的 https://rsshub.app/ 为 http://localhost:1200 即可正常使用

添加配置​

提示

在 arm/arm64 上,此部署方式不包含 puppeteer 依赖。要启用 puppeteer,你需要先从发行版安装 Chromium,然后设置 CHROMIUM_EXECUTABLE_PATH 为其可执行路径。

Debian:

$ apt install chromium
$ echo >> .env
$ echo 'CHROMIUM_EXECUTABLE_PATH=chromium' >> .env

Ubuntu/Raspbian:

$ apt install chromium-browser
$ echo >> .env
$ echo 'CHROMIUM_EXECUTABLE_PATH=chromium-browser' >> .env

可以通过设置环境变量来配置 RSSHub

在项目根目录新建一个 .env 文件,每行以 NAME=VALUE 格式添加环境变量,例如

CACHE_TYPE=redis
CACHE_EXPIRE=600

注意它不会覆盖已有的环境变量,更多规则请参考 dotenv

该部署方式不包括 redis 依赖,如有需要请改用 Docker Compose 部署方式或自行部署外部依赖

更多配置项请看 #配置

更新​

在 RSSHub 文件夹中运行下面的命令就从 github 仓库拉取最新版本

$ git pull

然后重复安装步骤。

Nix 用户提示​

通过 nix-shell 配置简化安装 nodejs, yarn 和 jieba:

let
pkgs = import <nixpkgs> {};
node = pkgs.nodejs-12_x;
in pkgs.stdenv.mkDerivation {
name = "nodejs-yarn-jieba";
buildInputs = [node pkgs.yarn pkgs.pythonPackages.jieba];
}

部署到 Railway​

包含自动更新。

Deploy on Railway

部署到 Heroku​

注意​

注意

Heroku 不再 提供免费服务。

未验证支付方式的 heroku 账户每月仅有 550 小时额度(约 23 天),验证支付方式后可达每月 1000 小时。

一键部署(无自动更新)​

Deploy to Heroku

自动更新部署​

  1. 将 RSSHub 分叉(fork) 到自己的账户下。
  2. 把自己的分叉部署到 Heroku:https://heroku.com/deploy?template=URL,其中 URL 改为分叉地址 (例如 https://github.com/USERNAME/RSSHub)。
  3. 检查 Heroku 设置,随代码库更新自动部署。
  4. 安装 Pull 应用,定期将 RSSHub 改动自动同步至你的分叉。

部署到 Sealos(包含 Redis 缓存)​

包含自动更新

Deploy to Sealos

部署到 Vercel (ZEIT Now)​

一键部署(无自动更新)​

Deploy to Vercel

自动更新部署​

  1. 将 RSSHub 分叉(fork) 到自己的账户下
  2. 去 Vercel 部署一个新项目:使用 GitHub 账户登录 Vercel,进入 项目创建页面 选择导入 RSSHub 仓库进行部署
  3. 安装 Pull 应用,定期将 RSSHub 改动自动同步至你的仓库

部署到 Fly.io​

方案一:Fork​

  1. 将 RSSHub Fork 到自己的账户下;

  2. 下载分叉的源码

    $ git clone https://github.com/<your username>/RSSHub.git
    $ cd RSSHub
  3. 前往 Fly.io 完成注册,并安装 flyctl CLI;

  4. 运行 fly launch, 并选择一个唯一的名称和实例地区;

  5. 使用 fly secrets set KEY=VALUE 对部分模块进行配置;

  6. 配置通过 GitHub Actions 自动部署;

  7. (可选)利用 fly certs add 你的域名 来配置自定义域名,并根据指引在你的 DNS 服务商配置相关域名解析(你可在 Dashboard Certificate 页面查看域名的配置状态)。

更新:在你 Fork 出来的仓库首页点击「Sync fork - Update Branch」来手动更新至官方最新的 master 分支,或安装 Pull 应用来定期自动同步。

方案二:自行维护 fly.toml​

  1. 前往 Fly.io 完成注册,并安装 flyctl CLI;

  2. 自行在本地新建一个空目录,在其中运行 fly launch, 并选择一个唯一的名称和实例地区;

  3. 编辑生成的 fly.toml 文件,新增

    [build]
    image = "diygod/rsshub:latest"

    根据实际情况,你可能希望使用其他镜像标签,请阅读 Docker 镜像 的有关内容;

  4. 修改 fly.toml 中的 [env] 段或使用fly secrets set KEY=VALUE 对部分模块进行配置;

  5. 执行 fly deploy 启动应用;

  6. (可选)利用 fly certs add 你的域名 来配置自定义域名,并根据指引在你的 DNS 服务商配置相关域名解析(你可在 Dashboard Certificate 页面查看域名的配置状态)。

更新:进入你存储了 fly.toml 文件的目录,执行 fly deploy 即可触发拉取最新镜像、启动应用的步骤。

配置内置的 Upstash Redis 缓存​

在 RSSHub 文件夹下运行

$ fly redis create

来创建一个新的 Redis 数据库,地域选择与你上面创建 RSSHub app 时相同的地域,建议选择开启 eviction。创建完成后会输出类似于 redis://default:<password>@<domain>.upstash.io 的字符串。

因目前 上游依赖的一个 bug,你暂时需要在 Fly.io 给你的连接 URL 后追加 family=6 的参数,即使用 redis://default:<password>@<domain>.upstash.io/?family=6 作为连接 URL。

再配置 fly.toml 中的 [env] 段或运行

$ fly secrets set CACHE_TYPE=redis REDIS_URL='<刚才的连接 URL>'

并执行 fly deploy 触发重新部署来完成配置。

部署到 PikaPods​

每月只需 1 美元即可运行 RSSHub。包括自动更新和 5 美元的免费起始额度。

Run on PikaPods

部署到 Zeabur​

  1. 前往 Zeabur 完成注册
  2. 创建一个新项目
  3. 在项目中选择创建新服务,选择从服务市场部署。
  4. 添加域名,若使用自定义域名,可参见 Zeabur 的域名绑定文档。

Deploy on Zeabur

部署到 Google App Engine​

准备​

Before you begin

按照这里的引导完成 GCP 账号设置,创建 GCP 项目,创建 App Engine 项目,开通付费功能(必须),安装 git 与 gcloud 工具。并完成 gcloud 工具的初始化,初始化具体方式 请查看这个链接。如果你不打算在本地调试本项目,可以不安装 Node.js 环境。

请注意,GAE 免费用量不支持 Flexible Environment,部署到 Flexible Environment 前请确认收费标准。

Node.JS 的 standard environment 仍在测试中,您可能会在部署或使用中遇到某些不可预期的问题。

运行 git clone https://github.com/DIYgod/RSSHub.git 拉取本项目的最新版本。

app.yaml 配置​

部署到 Flexible Environment​

在 RSSHub 项目根目录下建立一个 app.yaml 文件,内容示例如下:

# [START app_yaml]
runtime: custom
env: flex

# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/nodejs/configuring-your-app-with-app-yaml
manual_scaling:
instances: 1
# 以下是 app engine 资源配置,可以自行修改,硬盘最低为 10G
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
network:
forwarded_ports:
- 80:1200
- 443:1200
# 以下是环境配置示例,具体可配置项见本文档配置章节
env_variables:
CACHE_EXPIRE: '300'
# [END app_yaml]

部署到 standard environment​

在 RSSHub 项目根目录下建立一个 app.yaml 文件,内容示例如下:

# [START app_yaml]
runtime: nodejs8

network:
forwarded_ports:
- 80:1200
- 443:1200
# 以下是环境配置示例,具体可配置项见本文档配置章节
env_variables:
CACHE_EXPIRE: '300'
# [END app_yaml]

安装​

在 RSSHub 项目根目录下运行

gcloud app deploy

进行项目部署,如果您需要变更 app.yaml 文件名称或者变更部署的项目 ID 或者指定版本号等,请参考 Deploying a service。

部署完成后可访问您的 Google App Engine URL 查看部署情况。

Play with Docker​

如果想要测试因为反爬规则导致无法访问的路由,您可以点击下方按钮拉起一套免费,临时,专属于您的 RSSHub

Try in PWD

注意
  • 需要 DockerHub 账号
  • Play with Docker 一次仅能使用 4 小时,不能作为持久化解决方案,应当用于测试 / 验证路由规则
  • 如果部署完成后不能看到自动识别的端口,请手动点击顶部按钮open port并输入1200
  • 有的时候 PWD 会抽风,如果遇到点击Start后空白页面,或者拉起失败,请重试