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/rsshubGitHub:
ghcr.io/diygod/rsshub
Supported architectures include:
linux/amd64linux/arm64
- (Dropped support since linux/arm/v72025-04-22)
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.ymlCheck if any configuration needs to be changed
$ vi docker-compose.yml # or your favorite editorLaunch
$ docker-compose up -dOpen http://{Server IP}:1200 in your browser, enjoy it! ✅
Update
Automatic Update
Use watchtower
Manual Update
Update image
$ docker-compose pullRestart container
$ docker-compose up -dConfiguration
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/rsshubWith puppeteer dependency
$ docker run -d --name rsshub -p 1200:1200 diygod/rsshub:chromium-bundledOpen 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 rsshubThen 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/rsshubThis 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 RSSHubExecute the following commands to install dependencies
pnpm iyarn inpm installBuild
pnpm buildyarn buildnpm run buildLaunch
Under RSSHub's root directory, execute the following commands to launch
pnpm startyarn startnpm run startpm2 start lib/index.ts --name rsshubOpen 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' >> .envUbuntu/Raspbian:
$ apt install chromium-browser
$ echo >> .env
$ echo 'CHROMIUM_EXECUTABLE_PATH=chromium-browser' >> .envRSSHub 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=600Please 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 pullThen 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-chartsYou can update the chart repository by running:
helm repo updateAnd install it with the helm command line:
helm install my-release nsl/rsshubUpdate
To upgrade the my-release RSSHub deployment:
helm upgade my-release nsl/rsshubUninstall
To uninstall/delete the my-release RSSHub deployment:
helm delete my-releaseInstalling 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: 2Install with HA mode
replicaCount: 3
puppeteer:
replicaCount: 2autoscaling:
enabled: true
minReplicas: 3
puppeteer:
autoscaling:
enabled: true
minReplicas: 2Install 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, whereURLis your fork address (e.g.https://github.com/USERNAME/RSSHub). - Configure
automatic deployin 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 RSSHubSign up for Fly.io and install the flyctl CLI;
Run
fly launchand choose a unique name and region to deploy;Use
fly secrets set KEY=VALUEto configure some modules;(Optional) Use
fly certs add your domainto 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 launchin 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 createto 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 deployFor 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 portbutton 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

