FreshRSS on a VPS: Self-Hosted RSS Feed Reader with Multi-User and API Support
FreshRSS is a self-hosted RSS and Atom feed aggregator — it fetches articles from blogs, news sites, and podcasts, presents them in a clean reader interface, and syncs read state across devices via API. It supports the Google Reader and Fever APIs, making it compatible with every major RSS reader app (Reeder, NetNewsWire, Unread, ReadKit). Feedly charges $8/month for pro features. FreshRSS is free and stores your reading history privately.
Step 1: Docker Compose Setup
<code">mkdir -p /opt/freshrss && cd /opt/freshrss nano docker-compose.yml
<code">version: '3.8'
services:
freshrss:
image: freshrss/freshrss:latest
container_name: freshrss
restart: always
ports:
- "127.0.0.1:8080:80"
environment:
TZ: America/New_York
CRON_MIN: "*/15" # Fetch new articles every 15 minutes
FRESHRSS_ENV: production
volumes:
- freshrss_data:/var/www/FreshRSS/data
- freshrss_extensions:/var/www/FreshRSS/extensions
<code">docker compose up -d
Step 2: Nginx Reverse Proxy
<code">sudo nano /etc/nginx/sites-available/freshrss
<code">server {
listen 443 ssl http2;
server_name rss.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/rss.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/rss.yourdomain.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
<code">sudo certbot --nginx -d rss.yourdomain.com sudo systemctl reload nginx
Step 3: Initial Setup
- Visit
https://rss.yourdomain.com - FreshRSS install wizard: database (SQLite or PostgreSQL), admin username/password
- Settings → Archiving: set article retention (default: 3 months)
- Settings → Shortcuts: customize keyboard navigation
Step 4: Import Feeds (OPML)
<code"># Export from Feedly/Inoreader/other RSS readers as OPML file # FreshRSS → Subscriptions → Import/Export → Import OPML # Or add feeds manually: # + (Add a feed) → paste URL → FreshRSS fetches feed metadata # Popular feeds to start with: # Tech news: https://hnrss.org/frontpage (Hacker News) # Dev news: https://lobste.rs/rss # Stack Overflow: https://stackoverflow.com/feeds/tag/linux # Github releases: https://github.com/docker/compose/releases.atom
Step 5: Configure API for Mobile Apps
<code"># Enable Google Reader API (most widely supported): # Settings → Authentication → API → Enable API access # Set a separate API password (not your login password) # Compatible apps (Google Reader API): # - Reeder 5 (iOS/macOS): Settings → Add Account → Feedbin # Actually works with Google Reader API: # Server URL: https://rss.yourdomain.com/api/greader.php # Username: your FreshRSS username # Password: your API password # - NetNewsWire (iOS/macOS): Add Account → FreshRSS # URL: https://rss.yourdomain.com # Username / API password # - ReadKit, Reeder, Unread: use Google Reader or FreshRSS API endpoint # Fever API (for apps that only support Fever): # Enable: Settings → Authentication → Fever emulation # URL: https://rss.yourdomain.com/api/fever.php
Step 6: Filters and Categories
<code"># Organize feeds into categories: # Subscriptions → Manage → Categories → New Category # Categories: "Tech", "Security", "Design", "Business" # Drag feeds into categories # Reading filters: # Search → use filter operators: # #tag → filter by tag # ?unread → unread only # ?starred → starred/saved articles # author:name → filter by author # feed:sitename → filter by feed # Content filters (filter out noise): # FreshRSS → Subscriptions → Edit Feed → Filtering Rules # Title doesn't contain: "sponsored", "promoted", "advertisement" # Global search: magnifying glass → searches all articles across all feeds
Step 7: Extensions
<code"># Popular FreshRSS extensions:
# Place in /var/www/FreshRSS/extensions/
# Readable full-content (fetch full article text for truncated feeds):
git clone https://github.com/ariel-sr/freshrss-readable.git \
/opt/freshrss-data/extensions/Readable
docker compose restart freshrss
# Enable: Extensions → Readable → activate for specific feeds
# Other useful extensions:
# - Better Reading: keyboard shortcuts improvement
# - Reddit Embed: renders Reddit posts inline
# - YouTube API: shows YouTube thumbnails
Getting Started
FreshRSS uses under 100 MB RAM — perfect for a 1 GB Ubuntu VPS at VPS.DO. The Docker image handles the cron job for article fetching automatically. For users with 50–200+ subscriptions (common among tech professionals), self-hosted FreshRSS is faster than Feedly for searching article history and provides unlimited article archival without premium tier restrictions.
Conclusion
Self-hosted FreshRSS provides private, unlimited RSS reading — no article limits, no algorithm filtering, no read history sold to advertisers. The Google Reader and Fever API compatibility means every major RSS app on iOS, macOS, Android, and Windows works identically. For information-dense readers who rely on RSS for staying current, FreshRSS provides the chronological, unfiltered feed experience that algorithmic social media replaces with engagement optimization.
Tidew
October 28, 2026How can self-hosted RSS feed readers like FreshRSS help users organize news sources, protect their data privacy, and efficiently manage information from multiple websites? Universitas Swasta Terbaik