
How to Setup Miniflux as Your Self-Hosted RSS Feed Reader
If you’re tired of cluttered feeds, third-party trackers, and broken RSS apps, Miniflux is what you want.
It’s a fast, minimalist RSS reader that you host yourself. No JavaScript bloat. No algorithmic “smart feeds.” Just your subscriptions — clean, fast, and yours.
Here’s how to set it up, configure it, and keep it running smoothly on your own server.
1. Why Miniflux?
- Written in Go — single binary deployment
- No JS frontend — pure HTML/CSS (fast even on ancient devices)
- Cron-based refresh (not real-time, but predictable and efficient)
- Import/export via OPML
- Built-in readability parser, filters, and feed rewriting
Perfect for folks who value control, speed, and simplicity.
2. What You’ll Need
- A VPS or home server (1 CPU, 256MB RAM is enough)
- A domain or subdomain (optional, but recommended)
- Docker or systemd access
- PostgreSQL (required — no SQLite support)
You don’t need much horsepower. Even the lowest-tier VPS will run Miniflux just fine.
You can grab one here for under $12/year.
We’ll walk through both Docker and native install paths.
3. Docker Install (Quickest)
Pull the image:
docker pull miniflux/miniflux:latest
Create a PostgreSQL container first:
docker run -d \
--name miniflux-db \
-e POSTGRES_USER=miniflux \
-e POSTGRES_PASSWORD=supersecret \
-e POSTGRES_DB=miniflux \
-v miniflux-db:/var/lib/postgresql/data \
postgres:15
Then launch Miniflux:
docker run -d \
--name miniflux \
--link miniflux-db \
-e DATABASE_URL="postgres://miniflux:supersecret@miniflux-db/miniflux?sslmode=disable" \
-e RUN_MIGRATIONS=1 \
-e ADMIN_USERNAME=admin \
-e ADMIN_PASSWORD=yourpass \
-p 8080:8080 \
miniflux/miniflux:latest
Access it at http://your-ip:8080
.
4. Native Install (Systemd)
Install Go and PostgreSQL if not already installed.
Then create a miniflux
PostgreSQL user and database:
sudo -u postgres createuser -P miniflux
sudo -u postgres createdb -O miniflux miniflux
Download the latest Miniflux binary:
wget https://github.com/miniflux/v2/releases/latest/download/miniflux-linux-amd64.tar.gz
tar -xvzf miniflux-linux-amd64.tar.gz
sudo mv miniflux /usr/local/bin/
Create a systemd unit file at /etc/systemd/system/miniflux.service
:
[Unit]
Description=Miniflux RSS Reader
After=network.target
[Service]
User=miniflux
ExecStart=/usr/local/bin/miniflux
Environment=DATABASE_URL=postgres://miniflux:yourpass@localhost/miniflux?sslmode=disable
Environment=RUN_MIGRATIONS=1
Restart=always
[Install]
WantedBy=multi-user.target
Enable and start it:
sudo systemctl daemon-reexec
sudo systemctl enable --now miniflux
Access it on port 8080.
5. Secure It with NGINX + HTTPS
Use NGINX as a reverse proxy. Example config:
server {
listen 80;
server_name rss.yourdomain.com;
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;
}
}
Then add TLS with Certbot:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d rss.yourdomain.com
6. Configure Feed Refresh
Miniflux uses polling. You can tweak the refresh interval per feed or globally.
To run refresh manually:
miniflux -refresh
Or via cron:
*/15 * * * * /usr/local/bin/miniflux -refresh >/dev/null 2>&1
The default inside Docker is auto-refresh every 15 minutes.
7. Importing Feeds
Go to the web UI → Settings → Import → Upload an OPML file.
You can export your feeds anytime under the same menu. Great for backups or switching tools.
8. Filters, Rewrites, and Readability
Miniflux supports:
- Filter rules: hide or rewrite titles
- Readability mode: full-article text parsing
- Rewrite rules: fix broken feeds (e.g. Hacker News)
All via the web UI under the feed settings.
No plugins or add-ons needed. Just smart parsing.
9. Mobile Access + Custom Clients
The web UI is fully responsive. But you can use external clients via Miniflux’s REST API.
Popular third-party apps:
- NetNewsWire (iOS)
- NewsFlash (Linux)
- Fluent Reader (cross-platform)
Just generate an access token from your Miniflux account settings.
10. Updates + Maintenance
For Docker:
docker pull miniflux/miniflux
docker stop miniflux
docker rm miniflux
# then re-run with updated image
For native:
wget latest binary → replace existing → restart systemd service
The schema migrates automatically unless you disabled it.
Backups? Dump your Postgres DB:
pg_dump -U miniflux miniflux > miniflux_backup.sql
Final Thoughts
Miniflux is refreshingly unopinionated. You control the schedule. You see exactly what you subscribe to. It never phones home or recommends junk.
Once you’ve used it, you’ll wonder how you ever tolerated bloated feed readers.
Last updated: 2025-04-09 21:46 UTC