部署
部署 RSSHub 需要基本的计算机编程常识,如果您在部署过程中遇到无法解决的问题请到 issues 寻找类似的问题或 向我们提问,我们会尽快给您答复。
部署涉及到以下基本编程常识:
部署到可外网访问则可能涉及到:
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 部署
安装
$ 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 CLI
- 使用自定义配置文件
helm install my-release nsl/rsshub \
--set="image.tag=2023-12-04" \
--set="replicaCount=2"
# custom-values.yml 文件
## 使用 "helm install my-release nsl/rsshub -f ./custom-values.yml" 安装
image:
tag: "2023-12-04"
replicaCount: 2
使用 HA 模式安装
- 不使用自动扩缩的 HA 模式
- 使用自动扩缩的 HA 模式
replicaCount: 3
puppeteer:
replicaCount: 2
autoscaling:
enabled: true
minReplicas: 3
puppeteer:
autoscaling:
enabled: true
minReplicas: 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
- yarnv1
- npm
pnpm install --prod
yarn --production
npm install --omit=dev
由于众所周知的原因,在中国使用 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
包含自动更新。