
Deploy RSSHub | (Just Updated) RSS Feed Generator, Browser Routes Work, Key-Locked Instance
RSSHub RSS feed generator with Chromium, Redis cache, access key set
redis
Just deployed
/data
Just deployed
Deploy and Host RSSHub on Railway
Built for an LLM agent to deploy and use. There is no manual deploy step and nothing to fill in: the access key and the cache password are generated at deploy time, the instance is locked to that key, the contract below lists every URL and variable name, and one working script reads a feed with the key and shows the same request refused without it. An agent reads its variables, runs the curl, and has an RSS feed generator it can query for hundreds of sites.
RSSHub is an open-source RSS feed generator: it turns sites that have no feed (social networks, forums, news, video and package sites) into RSS, Atom or JSON Feed on request. This template runs the official chromium-bundled image, so the routes that drive a headless browser work, with a Redis cache behind it.
About Hosting RSSHub
This template runs two services: the official diygod/rsshub image, the chromium-bundled variant pinned by digest (it ships the Playwright Chromium that more than 120 routes need; the plain latest image has an empty browser cache and those routes fail with Executable doesn't exist), and Redis (private, password protected, volume at /data) used as the feed cache. RSSHub binds Railway's $PORT.
The instance is locked: ACCESS_KEY is generated, and every feed route answers 403 unless the request carries ?key=. The home page and / stay open so Railway can health check it.
Agent contract
- Public URL:
https://, on thersshubservice (setRSSHUB_URLto it) - Private URL:
http://rsshub.railway.internal:8080 - Credentials:
ACCESS_KEYon thersshubservice. The cache password isREDIS_PASSWORDon theredisservice. - Auth: append
?key=to any feed URL. Add&format=jsonfor JSON Feed output. - Health:
GET /returns 200 with no key (/healthzneeds the key)
# run with RSSHUB_URL (public URL) and ACCESS_KEY (rsshub service)
# 1. health check, no key needed
curl -s -o /dev/null -w 'health %{http_code}\n' "$RSSHUB_URL/"
# 2. a feed without the key is refused
curl -s -o /dev/null -w 'no key %{http_code}\n' "$RSSHUB_URL/rsshub/routes"
# 3. the same feed with the key, as JSON Feed
curl -s "$RSSHUB_URL/rsshub/routes?key=$ACCESS_KEY&format=json" | jq '{title, items: (.items | length)}'
Routes are listed in the RSSHub documentation. Some routes need an upstream account or cookie (for example a Twitter or Pixiv login); set those variables on the rsshub service as the route's documentation says. Routes that fetch arbitrary user-supplied domains stay disabled unless you set ALLOW_USER_SUPPLY_UNSAFE_DOMAIN.
Why Deploy RSSHub on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying RSSHub on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
- Agent-ready - generated access key, a contract block and one working script; no browser step.
- Browser routes work - the Chromium-bundled image is deployed, so Playwright routes launch a browser instead of failing.
- Not an open proxy - the instance answers 403 without the key, so strangers cannot spend your bandwidth.
- Cached and private - Redis has a password and a volume, and is reachable only inside the project.
Common Use Cases
- Follow sites with no feed - subscribe a reader to a social profile, forum board or changelog.
- Agent news inputs - give an AI agent a JSON Feed URL for each source it should watch.
- Self-hosted feed hub - one cached endpoint for the whole team's feed reader.
Dependencies for RSSHub Hosting
- Redis with a volume at
/data(included in this template).
Deployment Dependencies
- DIYgod/RSSHub - upstream project
- diygod/rsshub on Docker Hub - the image this template deploys,
chromium-bundledtag
Template Content
