Featured image of post Reclaim Your Feed: Self-Host RSS Reader with FreshRSS on VPS

Reclaim Your Feed: Self-Host RSS Reader with FreshRSS on VPS

Build your personal information hub with FreshRSS + Docker. Ditch algorithmic feeds, take back control of what you read.

Why RSS Still Matters in 2026

In this era of algorithm-driven feeds and infinite scrolling, we appear to have access to an ocean of information — but we’ve actually fallen into filter bubbles.

  • TikTok, Xiaohongshu, and YouTube feed you what their algorithms think you’ll engage with, not what you actually want to know;
  • Twitter/X timelines are polluted with pinned posts, paid promotions, and bot accounts;
  • The blogs you follow might publish great content that you never see because you’re not scrolling at the right moment.

RSS (Really Simple Syndication) remains the last untamed corner of the internet. It lets you pull information actively instead of being pushed whatever the platform decides.

All you need is a reliable RSS reader — self-hosted on your VPS, with data fully under your control.

Why FreshRSS?

There are many RSS readers available. Why FreshRSS?

FeatureFreshRSSFeedlyInoreader
DeploymentSelf-hostedSaaSSaaS
Data OwnershipFully privatePlatform-ownedPlatform-owned
Free TierUnlimited100 sources only150 sources only
API Access✅ FullPaidPaid
Extensions✅ Rich
PlatformsAny VPSWeb/AppWeb/App

FreshRSS’s core advantage: your data stays yours, a rich plugin ecosystem (AI summaries, translations, deduplication), and minimal resource footprint (a 512MB VPS is more than enough).

Prerequisites

You’ll need:

  • A VPS (1 CPU, 1GB RAM minimum)
  • Docker + Docker Compose installed
  • A domain name (optional but highly recommended)
  • 10 minutes of your time

One-Command FreshRSS Deployment

Step 1: Create Docker Compose Configuration

Create the directory on your VPS:

mkdir -p /opt/freshrss && cd /opt/freshrss

Create docker-compose.yaml:

services:
  freshrss:
    image: freshrss/freshrss:latest
    container_name: freshrss
    restart: unless-stopped
    ports:
      - "8080:80"
    volumes:
      - freshrss_data:/var/www/freshrss/data
      - freshrss_ext:/var/www/freshrss/extensions
    environment:
      - CRON=min
      - TZ=Asia/Shanghai

volumes:
  freshrss_data:
  freshrss_ext:

Start the service:

docker compose up -d

Step 2: Configure Reverse Proxy

If you have a domain (e.g., rss.yourdomain.com), set up HTTPS with Nginx or Caddy:

Nginx Example:

server {
    listen 443 ssl http2;
    server_name rss.yourdomain.com;

    ssl_certificate     /path/to/cert.pem;
    ssl_certificate_key /path/to/key.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;
    }
}

Caddy Example (simpler, automatic HTTPS):

rss.yourdomain.com {
    reverse_proxy localhost:8080
}

Step 3: Complete Initial Setup

Visit http://your-ip:8080 or https://rss.yourdomain.com and follow the setup wizard:

  1. Create admin account and password
  2. Configure database (SQLite by default, perfectly fine for small VPS)
  3. Set timezone and language (English available)

Start Collecting Your Sources

Adding Feeds

FreshRSS supports standard RSS/Atom formats. Here are common feed sources:

PlatformFeed Method
BlogsPaste RSS link directly
YouTubehttps://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID
Twitter/XUse HiveStream or Nitter instance
ZhihuUse RSSHub to generate
WeChat ArticlesUse WeRSS or RSSHub
Bilibili Creatorshttps://rsshub.app/bilibili/user/video/{uid}

Using RSSHub for Extra Sources

RSSHub is an open-source RSS generator that creates feeds for virtually every Chinese platform:

# Deploy RSSHub with Docker
docker run -d --name rsshub -p 1200:1200 diygod/rsshub

Then access feeds via RSSHub:

# Example: Bilibili creator feed
https://your-rsshub-address/bilibili/user/video/123456789

# Example: Zhihu trending topics
https://your-rsshub-address/zhihu/hot-list

RSSHub documentation is comprehensive: docs.rsshub.app

Discovering RSS Feeds

Advanced Configuration

AI-Powered Summaries

FreshRSS supports AI summary via extensions. Install the AI Summary extension:

cd /opt/freshrss/freshrss/extensions
git clone https://github.com/Mantoux09/freshrss-ai-summary.git AI-Summary
# Enable the extension in FreshRSS admin panel

Pair with Ollama running locally for fully private AI summaries.

Auto-Archiving Strategy

Set up automatic article archiving to prevent database bloat:

Admin Panel → Configuration → Auto Archive

SettingRecommended ValueDescription
Max Articles per Source5000Max articles kept per feed
Max Age (days)30Auto-archive articles older than 30 days
Max DB Size500MBThreshold to trigger archiving

Email & Push Notifications

Configure in Admin Panel → Configuration → Notifications:

  • Email: Get notified when subscribed sources have new content
  • Webhook: Integrate with Telegram Bot, Bark, Pushbullet, and more

Browser Extension: FreshRSS Helper

Install the browser extension to auto-detect RSS feeds on any webpage:

  • Chrome: FreshRSS Helper
  • Firefox: Similar extensions available
  • Features: One-click subscribe, highlight RSS icons, batch add sources

Data Backup & Security

Data Backup

FreshRSS stores all data in Docker volumes. Backup is straightforward:

# Backup all data
docker run --rm \
  -v freshrss_data:/data:ro \
  -v /backup:/backup \
  alpine tar czf /backup/freshrss-data-$(date +%Y%m%d).tar.gz -C /data .

# Backup extensions and config
docker run --rm \
  -v freshrss_ext:/data:ro \
  -v /backup:/backup \
  alpine tar czf /backup/freshrss-extensions-$(date +%Y%m%d).tar.gz -C /data .

Add to cron for automatic daily backups:

# Auto backup daily at 3 AM
echo "0 3 * * * /path/to/backup-script.sh" | crontab -

Security Hardening

  1. Enable HTTPS: Force SSL encryption
  2. Change default path: Don’t use the default / path
  3. Enable 2FA: Admin Panel → Security
  4. Regular updates: docker compose pull && docker compose up -d
  5. Restrict access IP: Use Nginx or firewall to limit access to your home/NAT IP

Alternatives Comparison

If your needs are different, consider these alternatives:

SolutionLanguageResource FootprintCharacteristics
FreshRSSPHP⭐ MinimalFeature-rich, extensible, top choice
MinifluxGo⭐ MinimalMinimal design, single binary
Tiny Tiny RSSPHP⭐ LowPowerful, but complex config
FeedlySaaSN/AFree tier is very limited
InoreaderSaaSN/AGreat rules engine, paid

For most VPS users, FreshRSS is the best balance: lightweight, feature-complete, and mature ecosystem.

Daily Reading Workflow Tips

A good reader isn’t just about collecting information — it’s about managing attention:

  1. 10 minutes in the morning: Quick-scan all sources, star interesting items
  2. Dedicated reading session: 1 hour of deep reading, focused only on starred content
  3. Weekly cleanup: Remove dead sources, reorganize categories, archive read articles
  4. Monthly review: Evaluate feed quality, unsubscribe from low-value sources

Remember: You don’t need to read everything. You just need to read the right things.

Summary

Self-hosting an RSS reader is fundamentally about reclaiming attention sovereignty in the information age. FreshRSS, with its minimal resource footprint, rich extension ecosystem, and full data privacy, is the top choice for VPS self-hosting.

Ten minutes to set up, and it saves you hours of mindless scrolling every day. That’s the value of self-hosting — taking control back into your own hands.


Article auto-generated and distributed by selfvps.net

📺 看视频版教程 → DuckDB Lab YouTube

Subscribe for more DuckDB & AI automation tutorials