rssCloud Server implementation in Node.js.
Subscribers register a callback to be told when a feed updates; publishers announce a change; the server fans the notification out to every subscriber. It speaks the rssCloud protocol (over REST and XML-RPC) and acts as a WebSub hub — and a single publish reaches all of them at once.
POST /pleaseNotify and
POST /ping as form posts.rssCloud.hello,
rssCloud.pleaseNotify, and rssCloud.ping at POST /RPC2.This project uses pnpm via corepack. Node.js 22+ is required.
git clone https://github.com/rsscloud/rsscloud-server.git
cd rsscloud-server
corepack enable
pnpm install
pnpm start
State (resources and subscriptions) is held in memory and persisted to a JSON
file on disk, configured via DATA_FILE_PATH (default
./data/subscriptions.json). The store loads at startup and flushes atomically
on an interval, at shutdown, and on unexpected exit. No external database is
required.
Version 3.0 removes MongoDB entirely; the JSON file is the only data store. There is no automatic migration from MongoDB, so do not upgrade directly from an older 2.x release to 3.0 or your existing subscriptions will be lost.
Migrate in two steps:
DATA_FILE_PATH, default
./data/subscriptions.json) has been written and reflects your current
subscriptions.MONGODB_URI. Make sure the data directory is on a persistent volume so
the file survives restarts and redeploys.Once on 3.0 you can decommission MongoDB.
Version 4.0 restructures the project into a pnpm monorepo — the server itself moved
from the repo root into apps/server. If you deployed 3.x by running node app.js
from the repo root with a root-level .env and ./data directory, no migration step
is required: a compatibility app.js at the repo root loads the root .env (if
present), points DATA_FILE_PATH/STATS_FILE_PATH at the root ./data directory (if
present), then hands off to the real server in apps/server. Your existing
subscriptions and stats keep working untouched — the legacy data file is only ever
read, never rewritten (a new .v2.json sibling holds every write going forward).
Pull the new code, run pnpm install (see How to install), and
start it exactly as before:
node app.js
There's no rush to change anything once it's running, but the supported path going
forward is apps/server: move .env and data/ into apps/server/, and start it
with pnpm start instead of node app.js from the repo root.
The API is tested using docker containers. I've only tested on MacOS so if you have experience testing on other platforms I'd love having these notes updated for those platforms.
First install Docker Desktop for Mac
pnpm test
This should build the appropriate containers and show the test output.
Our tests create mock API endpoints so we can verify rssCloud server works correctly when reading resources and notifying subscribers.