Deployment
RSSHub provides a painless deployment process if you are equipped with basic programming knowledge, you may open an issue if you believe you have encountered a problem not listed here, the community will try to sort it out asap.
The deployment may involve the followings:
Deploy for public access may require:
Docker Image
The following two registries are supported:
Docker Hub:
diygod/rsshub
GitHub:
ghcr.io/diygod/rsshub
Supported architectures include:
linux/amd64
linux/arm/v7
linux/arm64
There are several tags available:
Tag | Description | Puppeteer Supported | Example |
---|---|---|---|
latest | Latest version | No | latest |
chromium-bundled | Latest version with Chromium bundled in | Yes | chromium-bundled |
{YYYY-MM-DD} | Specific date of the release | No | 2021-06-18 |
chromium-bundled-{YYYY-MM-DD} | Specific date of the release with Chromium bundled in | Yes | chromium-bundled-2021-06-18 |
{commit hash} | Specific commit | No | e7c233b1df982fae10684a11c9df57892e96940a |
While supporting puppeteer may consume more resources, it also supports a wider range of routes.
Docker Compose Deployment (Recommended)
Install
Download docker-compose.yml
$ wget https://raw.githubusercontent.com/DIYgod/RSSHub/master/docker-compose.yml
Check if any configuration needs to be changed
$ vi docker-compose.yml # or your favorite editor
Launch
$ docker-compose up -d
Open http://{Server IP}:1200
in your browser, enjoy it! ✅
Update
Automatic Update
Use watchtower
Manual Update
Update image
$ docker-compose pull
Restart container
$ docker-compose up -d
Configuration
Edit environment
in docker-compose.yml
Docker Deployment
WARNING
This deployment method does not include browserless and redis dependencies. If needed, please switch to the Docker Compose deployment method or deploy external dependencies yourself.
Install
Execute the following command to pull RSSHub's docker image.
No puppeteer dependency
$ docker run -d --name rsshub -p 1200:1200 diygod/rsshub
With puppeteer dependency
$ docker run -d --name rsshub -p 1200:1200 diygod/rsshub:chromium-bundled
Open http://{Server IP}:1200
in your browser, enjoy it! ✅
Update
Automatic Update
Use watchtower
Manual Update
Remove the old container
$ docker stop rsshub
$ docker rm rsshub
Then repeat the installation steps
Configuration
The simplest way to configure RSSHub container is via system environment variables.
For example, adding -e CACHE_EXPIRE=3600
will set the cache time to 1 hour.
$ docker run -d --name rsshub -p 1200:1200 -e CACHE_EXPIRE=3600 -e GITHUB_ACCESS_TOKEN=example diygod/rsshub
This deployment method does not include puppeteer (unless using diygod/rsshub:chromium-bundled
instead) and Redis dependencies. Use the Docker Compose deployment method or deploy external dependencies yourself if you need it.
To configure more options please refer to Configuration.
Manual Deployment
The most direct way to deploy RSSHub
, you can follow the steps below to deployRSSHub
on your computer, server or anywhere.
Install
Execute the following commands to download the source code
$ git clone https://github.com/DIYgod/RSSHub.git
$ cd RSSHub
Execute the following commands to install dependencies
pnpm i
yarn i
npm install
Build
pnpm build
yarn build
npm run build
Launch
Under RSSHub
's root directory, execute the following commands to launch
pnpm start
yarn start
npm run start
pm2 start lib/index.ts --name rsshub
Open http://{Server IP}:1200
in your browser, enjoy it! ✅
Configuration
TIP
On arm/arm64, this deployment method does not include puppeteer dependencies. To enable puppeteer, install Chromium from your distribution repositories first, then set CHROMIUM_EXECUTABLE_PATH
to its 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 can be configured by setting environment variables.
Create a .env
file in the root directory of your project. Add environment-specific variables on new lines in the form of NAME=VALUE
. For example:
CACHE_TYPE=redis
CACHE_EXPIRE=600
Please notice that it will not override already existed environment variables, more rules please refer to dotenv
This deployment method does not include Redis dependencies. Use the Docker Compose deployment method or deploy external dependencies yourself if you need it.
To configure more options please refer to Configuration.
Update
Under RSSHub
's directory, execute the following commands to pull the latest source code for RSSHub
$ git pull
Then repeat the installation steps.
A tip for Nix users
To install nodejs, yarn and jieba (to build documentation) you can use the following nix-shell
configuration script.
let
pkgs = import <nixpkgs> {};
node = pkgs.nodejs-12_x;
in pkgs.stdenv.mkDerivation {
name = "nodejs-yarn-jieba";
buildInputs = [node pkgs.yarn pkgs.pythonPackages.jieba];
}
Kubernetes(Helm) Deployment
RSSHub can be installed in Kubernetes using the Helm Chart from RSSHub Helm Chart
Ensure that the following requirements are met:
- Kubernetes 1.16+
- Helm version 3.9+ is installed
Install
Add NaturalSelection Labs chart repository to Helm:
helm repo add nsl https://naturalselectionlabs.github.io/helm-charts
You can update the chart repository by running:
helm repo update
And install it with the helm
command line:
helm install my-release nsl/rsshub
Update
To upgrade the my-release RSSHub deployment:
helm upgade my-release nsl/rsshub
Uninstall
To uninstall/delete the my-release RSSHub deployment:
helm delete my-release
Installing with custom values
helm install my-release nsl/rsshub \
--set="image.tag=2023-12-04" \
--set="replicaCount=2"
# File custom-values.yml
## Install with "helm install my-release nsl/rsshub -f ./custom-values.yml
image:
tag: "2023-12-04"
replicaCount: 2
Install with HA mode
replicaCount: 3
puppeteer:
replicaCount: 2
autoscaling:
enabled: true
minReplicas: 3
puppeteer:
autoscaling:
enabled: true
minReplicas: 2
Install with external Redis
redis:
# -- Disable internal redis
enabled: false
env:
# -- other env --
REDIS_URL: redis://external-redis:6379/
To configure more values please refer to RSSHub Helm Chart.
Ansible Deployment
This Ansible playbook includes RSSHub, Redis, browserless (uses Docker) and Caddy 2
Currently only support Ubuntu 20.04
Requires sudo privilege and virtualization capability (Docker will be automatically installed)
Install
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
# When prompt to enter a domain name, enter the domain name that this machine/VM will use
# For example, if your users use https://rsshub.example.com to access your RSSHub instance, enter rsshub.example.com (remove the https://)
Update
cd ~/RSSHub/scripts/ansible
sudo ansible-playbook rsshub.yaml
# When prompt to enter a domain name, enter the domain name that this machine/VM will use
# For example, if your users use https://rsshub.example.com to access your RSSHub instance, enter rsshub.example.com (remove the https://)
Deploy to Railway
Automatic updates are included.
Deploy to Heroku
Instant deploy (without automatic update)
Automatic deploy upon update
- Fork RSSHub to your GitHub account.
- Deploy your fork to Heroku:
https://heroku.com/deploy?template=URL
, whereURL
is your fork address (e.g.https://github.com/USERNAME/RSSHub
). - Configure
automatic deploy
in Heroku app to follow the changes to your fork. - Install Pull app to keep your fork synchronized with RSSHub.
Deploy to Zeabur
- Sign up for Zeabur
- Create a new project.
- Create a new service in the project, select deploying from the marketplace.
- Add a domain name, if you use a custom domain name, you can refer to Zeabur's domain name binding document.
Deploy to Vercel 🚧 Under repair
Instant deploy (without automatic update)
Automatic deploy upon update
- Fork RSSHub to your GitHub account.
- Deploy your fork to Vercel: Login Vercel with your GitHub account, create and deploy new Vercel project with your RSSHub repository.
- Install Pull app to keep your fork synchronized with RSSHub.
Deploy to Fly.io
Method 1: Fork
Fork RSSHub to your GitHub account;
Clone the source code from your fork
bash$ git clone https://github.com/<your username>/RSSHub.git $ cd RSSHub
Sign up for Fly.io and install the flyctl CLI;
Run
fly launch
and choose a unique name and region to deploy;Use
fly secrets set KEY=VALUE
to configure some modules;(Optional) Use
fly certs add your domain
to configure a custom domain, and follow the instructions to configure the related domain resolution at your DNS service provider (you can check the domain configuration status on the Dashboard Certificate page).
Upgrade: On the homepage of your Forked repository, click "Sync fork - Update Branch" to manually update to the latest official master branch, or install the Pull GitHub app to keep your fork synchronized with upstream.
Method 2: Maintain fly.toml by yourself
- Sign up for Fly.io and install the flyctl CLI;
- Create a new empty directory locally, run
fly launch
in it, and choose a unique name and instance region; - Edit the generated fly.toml file, add
[build]
image = "diygod/rsshub:latest"
Depending on the actual situation, you may want to use other image tags, please read the relevant content of Docker Image; 4. Modify the [env]
section in fly.toml or use fly secrets set KEY=VALUE
to configure some modules; 5. Execute fly deploy
to start the application; 6. (Optional) Use fly certs add your domain
to configure a custom domain, and follow the instructions to configure the related domain resolution at your DNS service provider (you can check the domain configuration status on the Dashboard Certificate page).
Upgrade: Enter the directory where you saved the fly.toml
file and execute fly deploy
to trigger the steps of pulling the latest image and starting the upgraded application.
Configure built-in Upstash Redis as cache
Run in the RSSHub
folder
$ flyctl redis create
to create a new Redis database. Choose the same region as when you created the RSSHub app above, and it is recommended to enable eviction. After creation, a string in the form of redis://default:<password>@<domain>.upstash.io
will be printed.
Due to a bug in a dependency, you currently need to append the family=6
parameter to the URL provided by Fly.io, i.e., use redis://default:<password>@<domain>.upstash.io/?family=6
as the connection URL.
Then configure the [env]
section in fly.toml or run
$ fly secrets set CACHE_TYPE=redis REDIS_URL='<the connection URL>'
and execute fly deploy
(if use the second install method) to trigger a redeployment to complete the configuration.
Deploy to Sealos(use Redis as cache)
Automatic updates are included.
Deploy to PikaPods
Run RSSHub from just $1/month. Includes automatic updates and $5 free starting credit.
Deploy to Google App Engine(GAE)
Before You Begin
Follow the official guide for completing your GCP account settings, creating a new Node project, adding billing information (required), installing git and initializing gcloud(link). Node.js is not required if you don't plan to debug RSSHub locally.
Please note, GAE free tier doesn't support Flexible Environment, please check the pricing plan prior to deployment.
Node.js standard environment is still under beta, unknown or unexpected errors might be encountered during the deployment.
Execute git clone https://github.com/DIYgod/RSSHub.git
to pull the latest code
app.yaml Settings
Deploy to Flexible Environment
Under RSSHub's root directory, create a file app.yaml
with the following content:
# [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 resources, adjust to suit your needs, the required disk space is 10 GB
resources:
cpu: 1
memory_gb: 0.5
disk_size_gb: 10
network:
forwarded_ports:
- 80:1200
- 443:1200
# environment variables section, refer to Settings
env_variables:
CACHE_EXPIRE: '300'
# [END app_yaml]
Deploy to standard environment
Under RSSHub's root directory, create a file app.yaml
with the following content:
# [START app_yaml]
runtime: nodejs8
network:
forwarded_ports:
- 80:1200
- 443:1200
# environment variables section, refer to Settings
env_variables:
CACHE_EXPIRE: '300'
# [END app_yaml]
Install
Under RSSHub's root directory, execute the following commands to launch RSSHub
gcloud app deploy
For changing the deployment project id or version id, please refer to Deploying a service
section here.
You can access your Google App Engine URL
to check the deployment status
Play with Docker
If you would like to test routes or avoid IP limits, etc., you may build your own RSSHub for free by clicking the button below.
WARNING
- DockerHub account required
- Play with Docker instance will last for 4 hours at most. It should only be used for testing purpose
- If deploy success but port cannot be auto-deteced,please click the
open port
button on the top and type1200
- Sometimes PWD won't work as expected. If you encounter blank screen after
Start
, or some error during initialization, please retry