RSS Without the Bloat
RSS never died – it just got buried under algorithmic feeds and walled gardens. For anyone who still wants to read the web on their own terms, a self-hosted RSS reader offers something no social platform can: a clean, chronological list of content you actually asked for. Miniflux is built around that premise, stripped of every feature that isn’t absolutely necessary.
Written in Go, Miniflux runs as a single binary with a PostgreSQL database. There’s no JavaScript framework loading in the background, no plugin ecosystem to maintain, no theme engine to configure. The entire interface is fast by design, not by optimization. That distinction matters more than it sounds when you’re checking feeds across dozens of sources every day.

What You’ll Need Before Starting
Miniflux requires a Linux server or VPS – a small instance with 512MB of RAM is more than enough for personal use. You’ll also need PostgreSQL installed and running, along with either a direct binary install or Docker if you prefer containerized deployments. A domain name pointed at your server is optional but recommended if you plan to access Miniflux from outside your local network.
Docker Compose is the cleanest path for most home server setups. It lets you define Miniflux and PostgreSQL together in a single file, restart automatically on reboot, and update with a single command. If you’re already running a self-hosted stack – including a dashboard like Homarr – adding Miniflux as another service fits naturally into the same workflow.
Before writing any configuration file, confirm that PostgreSQL is accepting connections, that you have a user with permission to create databases, and that port 8080 (Miniflux’s default) isn’t already in use on your host. These three checks prevent the majority of setup failures before they happen.
Installing With Docker Compose
Create a new directory for Miniflux and add a docker-compose.yml file. The configuration needs two services: one for the Miniflux application and one for PostgreSQL. The Miniflux service depends on the database being healthy before it starts, so use the depends_on condition with a health check on the PostgreSQL service. Without it, Miniflux will attempt to connect before the database is ready and exit immediately.
A working base configuration looks like this. Under the Miniflux service, set the image to miniflux/miniflux:latest, map port 8080:8080, and pass environment variables for DATABASE_URL, RUN_MIGRATIONS set to 1, and CREATE_ADMIN set to 1 with ADMIN_USERNAME and ADMIN_PASSWORD of your choice. The PostgreSQL service uses the standard postgres:15 image with matching credentials. Run docker compose up -d and Miniflux will be available at http://your-server-ip:8080 within seconds.

Configuring Feeds, Filters, and Access
Once you’re logged in, adding feeds is straightforward: paste a feed URL into the subscription field and Miniflux fetches the rest automatically. It supports standard RSS and Atom formats, and it handles authentication for feeds that require it via HTTP Basic Auth credentials stored per-feed. For sites that don’t publish a full-text feed, Miniflux includes a built-in scraper that fetches the original article and extracts the content – useful for news sites that publish only summaries in their feed output.
Feed management gets more powerful through categories. Group feeds by topic, source type, or reading priority and the sidebar organizes them automatically. Miniflux also lets you define custom fetch intervals per feed, which is worth using on high-volume sources. A news site that publishes fifty articles a day doesn’t need to be checked every minute – setting a thirty-minute interval reduces unnecessary server load and keeps the unread count from becoming overwhelming before you’ve had coffee.
The filtering system deserves specific attention because it changes how Miniflux behaves at the ingestion level, not just the display level. You can define rules using regular expressions against entry titles, content, or author fields. Entries matching a filter rule can be automatically marked as read or hidden entirely. If you subscribe to a developer blog but only care about posts tagged with a specific language or framework, a filter handles that without requiring you to scroll past irrelevant content manually.
For external access, place Miniflux behind a reverse proxy using Nginx or Caddy. Caddy is the lower-friction option – point it at your domain, configure it to forward traffic to localhost:8080, and it handles HTTPS certificate provisioning automatically through Let’s Encrypt. Miniflux also exposes a full REST API and supports the Fever and Google Reader compatible APIs, which means existing mobile RSS apps like Reeder, NetNewsWire, or ReadKit can connect to your instance directly. You’re not locked into Miniflux’s own web interface if you prefer reading on a phone.

Performance, Updates, and the Trade-offs Worth Knowing
Miniflux’s Go foundation keeps resource usage genuinely low. On a shared VPS with limited CPU, it won’t compete with other services for memory the way Java or Electron-based applications would. The database grows proportionally to how many articles you retain – Miniflux lets you set a retention period after which old entries are purged automatically, which prevents the PostgreSQL database from accumulating years of articles you’ll never read again.
Updating is a single command: docker compose pull followed by docker compose up -d. Miniflux runs database migrations automatically on startup when RUN_MIGRATIONS is set, so there’s no manual schema management between versions. The project maintains a clear changelog and the developer has a history of keeping breaking changes well-documented.
The honest trade-off with Miniflux compared to more feature-heavy options is that it doesn’t try to be a read-later service, a podcast manager, or a social reading platform. There are no highlight tools, no inline annotations, no discovery features. If you want any of that, you’re sending articles to a separate tool like Wallabag or Readwise. Miniflux does one thing – aggregate feeds and let you read them – and that constraint is a feature for people who’ve watched other RSS readers bloat into something unrecognizable. If you’ve previously worked with FreshRSS and found it more complicated than necessary, Miniflux takes the opposite approach: fewer configuration surfaces, faster load times, no PHP dependency to manage.
The one area where Miniflux asks something of you is the initial comfort level with the command line. There’s no graphical installer, no one-click setup wizard, and troubleshooting a failed database connection means reading container logs rather than a friendly error page. Whether that’s a barrier or a selling point depends entirely on what kind of self-hoster you are.





