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?

Perfect for folks who value control, speed, and simplicity.

2. What You’ll Need

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:

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:

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