Generate RSS feeds from Rumble channels for use with RSS readers like Reeder.
- 🚀 Fast and lightweight Express server
- 💾 In-memory caching (configurable TTL)
- 🐳 Docker and Docker Compose support
- ✅ Input validation and error handling
- 🔄 Automatic fallback for user vs channel URLs
- 📊 Health check endpoint
- 🎯 RSS 2.0 with iTunes and Media RSS extensions
docker-compose up -dAccess feeds at http://localhost:9000/{channelname}
- Clone the repository:
git clone https://github.com/mmoyles87/rumble-rss-proxy.git
cd rumble-rss-proxy- Build and run:
docker-compose up -d-
Prerequisites:
- Node.js 20 LTS or higher
- npm
-
Install dependencies:
npm install- Build the project:
npm run build- Start the server:
npm startFor development with hot reload:
npm run devGet the RSS feed for any Rumble channel:
GET http://localhost:9000/{channelname}
Example:
curl http://localhost:9000/timcastThe server will try both channel formats:
https://rumble.com/c/{channelname}https://rumble.com/user/{channelname}
Check if the service is running:
GET http://localhost:9000/health
Response:
{
"status": "ok",
"timestamp": "2025-11-20T12:00:00.000Z"
}Set environment variables to customize the server:
| Variable | Default | Description |
|---|---|---|
PORT |
9000 |
Server port |
CACHE_TTL_MINUTES |
10 |
Cache time-to-live in minutes |
- Copy the example file:
cp .env.example .env- Edit
.envwith your values:
PORT=9000
CACHE_TTL_MINUTES=15In docker-compose.yml:
environment:
- PORT=9000
- CACHE_TTL_MINUTES=15Generate RSS feed for a Rumble channel.
Parameters:
channel(path) - Rumble channel name (alphanumeric, dash, underscore, 1-100 chars)
Response:
200 OK- RSS XML feed400 Bad Request- Invalid channel name404 Not Found- Channel not found500 Internal Server Error- Server error504 Gateway Timeout- Request timeout
RSS Feed Format:
- RSS 2.0 compatible
- iTunes podcast tags
- Media RSS tags
- Thumbnails included
- Video metadata (duration, views, comments)
docker build -t rumble-rss-proxy .
docker run -p 9000:9000 rumble-rss-proxydocker-compose up -d --build- Build the project:
npm run build- Set environment variables and start:
export PORT=9000
export CACHE_TTL_MINUTES=10
npm start- In-memory cache with configurable TTL
- Cache key: channel name
- Reduces Rumble requests by ~90%
- Prevents rate limiting
- Fast response times (50ms cached vs 3-5s uncached)
- Input validation prevents injection attacks
- Proper HTTP status codes
- Detailed console logging
- Timeout protection (5 seconds)
- Graceful degradation
MIT
This is a fork focused on improvements and modernization. Feel free to submit issues and pull requests at https://github.com/mmoyles87/rumble-rss-proxy.
Original project by alexandersokolow