--- title: "FreshRSS — Self-Hosted RSS Reader" domain: opensource category: alternatives tags: [freshrss, rss, self-hosting, docker, privacy] status: published created: 2026-04-02 updated: 2026-04-02 --- # FreshRSS — Self-Hosted RSS Reader ## Problem RSS is the best way to follow websites, blogs, and podcasts without algorithmic feeds, engagement bait, or data harvesting. But hosted RSS services like Feedly gate features behind subscriptions and still have access to your reading habits. Google killed Google Reader in 2013 and has been trying to kill RSS ever since. ## Solution [FreshRSS](https://freshrss.org) is a self-hosted RSS aggregator. It fetches and stores your feeds on your own server, presents a clean reading interface, and syncs with mobile apps via standard APIs (Fever, Google Reader, Nextcloud News). No subscription, no tracking, no feed limits. --- ## Deployment (Docker) ```yaml services: freshrss: image: freshrss/freshrss:latest container_name: freshrss restart: unless-stopped ports: - "8086:80" volumes: - ./freshrss/data:/var/www/FreshRSS/data - ./freshrss/extensions:/var/www/FreshRSS/extensions environment: - TZ=America/New_York - CRON_MIN=*/15 # fetch feeds every 15 minutes ``` ### Caddy reverse proxy ``` rss.yourdomain.com { reverse_proxy localhost:8086 } ``` --- ## Initial Setup 1. Browse to your FreshRSS URL and run through the setup wizard 2. Create an admin account 3. Go to **Settings → Authentication** — enable API access if you want mobile app sync 4. Start adding feeds under **Subscriptions → Add a feed** --- ## Mobile App Sync FreshRSS exposes a Google Reader-compatible API that most RSS apps support: | App | Platform | Protocol | |---|---|---| | NetNewsWire | iOS / macOS | Fever or GReader | | Reeder | iOS / macOS | GReader | | ReadYou | Android | GReader | | FeedMe | Android | GReader / Fever | **API URL format:** `https://rss.yourdomain.com/api/greader.php` Enable the API in FreshRSS: **Settings → Authentication → Allow API access** --- ## Feed Auto-Refresh The `CRON_MIN=*/15` environment variable runs feed fetching every 15 minutes inside the container. For more control, add a host-level cron job: ```bash # Fetch all feeds every 10 minutes */10 * * * * docker exec freshrss php /var/www/FreshRSS/app/actualize_script.php ``` --- ## Why RSS Over Social Media - **You control the feed** — no algorithm decides what you see or in what order - **No engagement optimization** — content ranked by publish date, not outrage potential - **Portable** — OPML export lets you move your subscriptions to any reader - **Works forever** — RSS has been around since 1999 and isn't going anywhere ---