Self-Hosted RSS Reader: FreshRSS vs Miniflux
RSS isn’t dead—it’s just gone underground. While most people rely on algorithm-driven feeds from social media, power users and privacy-conscious individuals have rediscovered RSS as the ultimate way to curate content without tracking or manipulation.
If you’re ready to take control of your reading list, self-hosting an RSS reader is the way to go. The two most popular options are FreshRSS and Miniflux, but which one should you choose?
What is RSS and Why Self-Host?
RSS (Really Simple Syndication) lets you subscribe to websites and receive updates automatically. Instead of checking 20 different sites daily, your RSS reader fetches new content and presents it in one place.
Why Self-Host Your RSS Reader?
Privacy: Your reading habits aren’t tracked, sold, or used to profile you.
Control: No forced algorithms deciding what you see. You choose your sources.
Ownership: Services like Google Reader shut down. Your self-hosted reader stays up as long as you want.
No Ads: Clean reading experience without sponsored content or distractions.
Unlimited Feeds: No subscription tiers limiting your feed count.
FreshRSS vs Miniflux: Quick Comparison
| Feature | FreshRSS | Miniflux |
|---|---|---|
| Interface | Feature-rich, customizable | Minimal, fast |
| Language | PHP | Go |
| Database | SQLite, MySQL, PostgreSQL | PostgreSQL only |
| Mobile Apps | Many third-party clients | Native iOS app + third-party |
| Setup Difficulty | Easy | Moderate |
| Resource Usage | ~50-100MB RAM | ~20-50MB RAM |
| Themes | Yes, multiple | Limited |
| Plugins | Yes, extensions available | No plugins |
| Multi-user | ✅ Yes | ✅ Yes |
| Fever API | ✅ Yes | ✅ Yes |
| Responsive | ✅ Yes | ✅ Yes |
| Best For | Feature lovers, customization | Minimalists, speed freaks |
FreshRSS: The Feature-Rich Powerhouse
FreshRSS is a mature, full-featured RSS reader that mirrors the classic Google Reader experience with modern improvements.
Pros
Extensive Features
- Keyboard shortcuts for power users
- Content filtering and custom rules
- Feed tags and categories
- Read/unread/favorite management
- Statistics and reading analytics
Customization
- Multiple themes (dark mode, compact views)
- Layout options (list, cards, magazine)
- Extensions for additional functionality
- User CSS for total control
Easy Setup
- Works with SQLite out of the box (no separate database required)
- Can scale to MySQL/PostgreSQL if needed
- Docker deployment is straightforward
Great Mobile Support
- Compatible with dozens of third-party mobile apps
- Fever API support for legacy apps
- Google Reader API for maximum compatibility
Active Community
- Regular updates
- Well-documented
- Large user base means lots of troubleshooting help
Cons
Resource Usage
- PHP can be heavier than Go
- More features = more overhead
- Database can grow large with many feeds
Complexity
- Lots of settings and options
- Can feel overwhelming initially
- Interface feels “busy” to some users
Mobile Web Experience
- Responsive but not as polished as native mobile interface
- Best experienced with dedicated mobile apps
Miniflux: The Minimalist Speed Demon
Miniflux takes a different approach: ruthless minimalism. It does RSS and does it fast, with zero bloat.
Pros
Blazing Fast
- Written in Go (compiled, efficient)
- Minimal JavaScript
- Pages load instantly
- Works great on slow connections
Clean Interface
- No clutter, no distractions
- Keyboard-first navigation
- Pure focus on reading
- Beautiful typography
Low Resource Usage
- ~20MB RAM typical usage
- Tiny Docker image
- Perfect for Raspberry Pi or low-end hardware
Native iOS App
- Miniflux has an official iOS app
- Clean, native experience
- Syncs perfectly with self-hosted instance
Privacy-Focused
- No tracking, no analytics
- Minimal data collection
- Open-source and auditable
Modern Tech Stack
- PostgreSQL only (fast, reliable)
- No PHP dependencies
- Single binary deployment
Cons
No Plugins or Extensions
- You get what you get
- Can’t customize behavior
- Limited to built-in features
Requires PostgreSQL
- Can’t use SQLite
- More complex initial setup
- One more service to run
Fewer Mobile App Options
- Official iOS app is paid ($10)
- Fewer third-party clients than FreshRSS
- Android users rely on third-party apps
Minimalist UI May Feel Limited
- No themes beyond light/dark
- Fixed layout
- Some users find it too simple
Installation Comparison
Installing FreshRSS with Docker
docker-compose.yml:
version: '3.8'
services:
freshrss:
image: freshrss/freshrss:latest
container_name: freshrss
ports:
- "8080:80"
volumes:
- ./freshrss/data:/var/www/FreshRSS/data
- ./freshrss/extensions:/var/www/FreshRSS/extensions
environment:
- TZ=America/New_York
- CRON_MIN=*/15 # Refresh feeds every 15 minutes
restart: unless-stopped
Setup:
mkdir -p freshrss/{data,extensions}
docker-compose up -d
Visit http://YOUR_IP:8080 and follow the setup wizard.
Setup Time: 5 minutes
Installing Miniflux with Docker
docker-compose.yml:
version: '3.8'
services:
miniflux:
image: miniflux/miniflux:latest
container_name: miniflux
ports:
- "8080:8080"
environment:
- DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=admin
- ADMIN_PASSWORD=changeme
depends_on:
- db
restart: unless-stopped
db:
image: postgres:15-alpine
container_name: miniflux-db
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=miniflux
volumes:
- ./miniflux-db:/var/lib/postgresql/data
restart: unless-stopped
Setup:
mkdir -p miniflux-db
docker-compose up -d
Visit http://YOUR_IP:8080 and login with admin/changeme (change password immediately).
Setup Time: 10 minutes (PostgreSQL adds complexity)
Feature Deep Dive
Reading Experience
FreshRSS:
- Offers multiple view modes (normal, global, reader)
- Expandable articles inline
- Original article view via iframe or external link
- Article content filtering (show full text from truncated feeds)
Miniflux:
- Clean, distraction-free reading
- Two-column layout (feed list + article)
- Fetch original content automatically
- Dark mode with excellent contrast
Winner: Tie (depends on preference)
Feed Management
FreshRSS:
- Categories and tags
- Feed priority settings
- Custom refresh intervals per feed
- Import/export OPML
- Feed health monitoring
Miniflux:
- Categories (folders)
- Feed discovery from URL
- Import/export OPML
- Scraper rules for difficult feeds
- Fetch original content option
Winner: FreshRSS (more granular control)
Mobile Experience
FreshRSS:
- Works with:
- Reeder (iOS/macOS) - $10
- NetNewsWire (iOS/macOS) - Free
- Read You (Android) - Free
- FeedMe (Android) - Free
- 20+ other apps
Miniflux:
- Official iOS app - $10
- Third-party options:
- NetNewsWire (iOS/macOS) - Free
- Read You (Android) - Free
- Fewer options overall
Winner: FreshRSS (more mobile app choices)
Performance
FreshRSS:
- Loads fast on modern hardware
- Can feel sluggish with 100+ feeds
- Database optimization needed over time
Miniflux:
- Consistently fast regardless of feed count
- Handles 500+ feeds without slowdown
- Minimal server load
Winner: Miniflux (Go performance advantage)
Customization
FreshRSS:
- Themes: Default, Dark, Nord, Dracula, Ansum, more
- CSS customization supported
- Extensions: Share buttons, themes, integrations
- Keyboard shortcuts configurable
Miniflux:
- Light/dark mode only
- No themes
- No plugins
- Fixed keyboard shortcuts (excellent, but not customizable)
Winner: FreshRSS (by a mile)
Use Case Recommendations
Choose FreshRSS If You:
- Want a feature-rich RSS experience
- Enjoy customizing your tools
- Subscribe to many feeds (50+)
- Use multiple mobile RSS apps
- Need content filtering and custom rules
- Prefer a familiar Google Reader-like interface
- Want plugin support for integrations
- Have plenty of server resources
Choose Miniflux If You:
- Value speed and simplicity above all
- Run on constrained hardware (Raspberry Pi, etc.)
- Want minimal maintenance
- Prefer keyboard-first navigation
- Like clean, distraction-free interfaces
- Are comfortable with PostgreSQL
- Don’t need extensive customization
- Want native iOS app support
Advanced Tips
FreshRSS Optimizations
Speed up feed updates:
environment:
- CRON_MIN=*/10 # Every 10 minutes instead of 15
Enable full-text fetching:
- Settings → Reading
- Enable “Try to retrieve full content”
- Configure per-feed as needed
Install useful extensions:
- Reddit Image Preview
- YouTube Video Feed
- Tumblr GDPR
Keyboard shortcuts:
j/k- Next/previous articlev- Open original articlem- Mark as readf- Mark as favorite
Miniflux Optimizations
Custom scraper rules:
Add to feed settings for sites with truncated RSS:
{
"rules": [
"fetch_content"
]
}
Keyboard shortcuts:
h/l- Previous/next articlev- Open originalm- Toggle read statusf- Toggle favoriteg u- Go to unreadg b- Go to bookmarks
Integrations:
Miniflux has built-in integration with:
- Instapaper
- Wallabag
- Shaarli
- Shiori
Enable in Settings → Integrations.
Migration Between Readers
From FreshRSS to Miniflux
- Export OPML from FreshRSS:
- Settings → Import/Export → Export
- Import to Miniflux:
- Settings → Import → Upload OPML
From Miniflux to FreshRSS
- Export OPML from Miniflux:
- Settings → Export → Download OPML
- Import to FreshRSS:
- Settings → Import/Export → Import
Note: Article read/unread status won’t transfer. You’ll start fresh.
Security Considerations
FreshRSS Security
- Change default admin password immediately
- Use HTTPS (reverse proxy with Let’s Encrypt)
- Limit user registration (Settings → System)
- Keep Docker image updated regularly
- Enable authentication on all users
Miniflux Security
- PostgreSQL credentials in docker-compose (use secrets in production)
- Change ADMIN_PASSWORD before first run
- Enable HTTPS via reverse proxy
- API keys for mobile apps (more secure than password)
- Regular updates (Miniflux has good security track record)
Reverse Proxy Example (Nginx)
server {
listen 443 ssl http2;
server_name rss.yourdomain.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
location / {
proxy_pass http://localhost: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;
}
}
Backup Strategies
FreshRSS Backup
# Backup data directory
tar -czf freshrss-backup-$(date +%Y%m%d).tar.gz freshrss/data
Restore:
tar -xzf freshrss-backup-YYYYMMDD.tar.gz
docker-compose restart freshrss
Miniflux Backup
# Backup PostgreSQL database
docker exec miniflux-db pg_dump -U miniflux miniflux > miniflux-backup-$(date +%Y%m%d).sql
Restore:
docker exec -i miniflux-db psql -U miniflux miniflux < miniflux-backup-YYYYMMDD.sql
Community and Support
FreshRSS
- GitHub: https://github.com/FreshRSS/FreshRSS
- Community: Active forums, Discord
- Documentation: Comprehensive wiki
- Updates: Frequent releases
Miniflux
- GitHub: https://github.com/miniflux/v2
- Documentation: Excellent official docs
- Updates: Regular but conservative
- Support: GitHub issues, responsive maintainer
The Verdict
There’s no absolute winner—it depends on your priorities.
Choose FreshRSS if:
- You want maximum features and customization
- You like the Google Reader experience
- You subscribe to 50+ feeds
- You want lots of mobile app options
Choose Miniflux if:
- You value speed and simplicity
- You’re running on limited hardware
- You want a distraction-free reading experience
- You prefer keyboard-driven workflows
Can’t decide? Try both! They’re both free, self-hosted, and easy to deploy side-by-side on different ports. Use each for a week and see which workflow feels better.
Conclusion
Both FreshRSS and Miniflux are excellent self-hosted RSS readers that put you back in control of your content consumption. FreshRSS offers power and flexibility, while Miniflux delivers speed and focus.
The good news? You can’t make a wrong choice. Both are actively maintained, privacy-respecting, and significantly better than algorithm-driven social media feeds.
My personal take: I use Miniflux for daily reading (speed and simplicity), but recommend FreshRSS to friends new to RSS (easier onboarding, more familiar interface).
What matters most is breaking free from algorithmic feeds. Whether you choose FreshRSS or Miniflux, you’re taking back control of your online reading.
Next Steps:
- Deploy your chosen RSS reader with Docker
- Import your feeds via OPML
- Install a mobile app for on-the-go reading
- Consider pairing with Wallabag for “read it later” functionality
Happy reading! 📰🚀