跳到主要内容

部署

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

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

  1. 命令行操作
  2. Git
  3. Node.js
  4. npmyarn

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

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

Docker 镜像

默认推荐使用 diygod/rsshubdiygod/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后空白页面,或者拉起失败,请重试