Why RSS Still Wins for Power Readers
RSS never died – it just got abandoned by the companies that found it inconvenient. Algorithmic feeds replaced chronological ones, and suddenly the news you actually wanted to follow was buried under promoted content and engagement-bait. RSS readers kept the original promise: you choose your sources, you see everything they publish, in the order they published it. No ranking, no manipulation, no ads inserted between posts.
Miniflux takes that premise and strips it down even further. It is a self-hosted RSS aggregator written in Go, built around the philosophy that a feed reader should be fast, minimal, and yours. No cloud subscription, no third-party sync service, no tracking. You run it on your own server, and it does exactly one thing well: fetch feeds and present them cleanly. The setup takes under an hour, and once it is running, it stays running.

What You Need Before You Start
Miniflux runs as a single binary with PostgreSQL as its database. You need a Linux server – a VPS, a home machine, or a device like a Raspberry Pi will all work. The minimum hardware requirements are low enough that a two-dollar-a-month VPS handles it without strain. You also need PostgreSQL 9.5 or later installed and a basic comfort level with the command line.
Before touching Miniflux itself, set up PostgreSQL and create a dedicated database and user for it. Connect to your Postgres prompt and run: CREATE USER miniflux WITH PASSWORD ‘yourpassword’; followed by CREATE DATABASE miniflux OWNER miniflux;. Then enable the hstore extension inside that database with CREATE EXTENSION IF NOT EXISTS hstore;. That extension is not optional – Miniflux will fail to migrate without it, and it is the one step most first-time setups skip.
If you plan to access your Miniflux instance from outside your home network without exposing it directly to the internet, a tool like Tailscale makes that straightforward by creating a private network overlay without any port forwarding required. Otherwise, a reverse proxy like Nginx or Caddy with a valid SSL certificate is the standard path for public access.
Installing and Configuring Miniflux
The simplest install method on Debian or Ubuntu is through the official package repository. Add the Miniflux APT repository, import the signing key, run apt update, and install with apt install miniflux. The configuration lives in /etc/miniflux.conf, and you only need a handful of lines to get going: set DATABASE_URL to your Postgres connection string, set LISTEN_ADDR to 127.0.0.1:8080 if you are putting Nginx in front of it, and set BASE_URL to whatever domain or IP you are using to reach it. Once those are in place, run miniflux -migrate to apply the database schema, then miniflux -create-admin to set your admin credentials.
Start the service with systemctl enable –now miniflux and check its status to confirm it is running. The web interface will be available immediately at the address you configured. The whole installation from a blank server takes around fifteen minutes if PostgreSQL is already set up. Docker Compose is the other popular path – Miniflux publishes an official image, and the compose file from their documentation gets you a working stack with a bundled Postgres container in a single docker-compose up -d command.

Getting the Most Out of Miniflux
The web interface is deliberately sparse, which is either a relief or a frustration depending on what you expected. There are no folders, no tags in the traditional sense – just categories you assign to feeds, a reading view, and a set of keyboard shortcuts that make navigating purely by keyboard genuinely fast. The shortcuts follow a similar pattern to other keyboard-driven tools: j and k move between entries, v opens the original article, m marks as read. After a day of use they become muscle memory.
One underused feature is the rewrite and scraping rules system. Many feeds deliver only a summary or a truncated excerpt, which forces you to click out to the original site for every article. Miniflux includes a set of built-in scraper rules for common sites that fetch the full content directly into the reading view. For sites not already covered, you can write custom rules using CSS selectors. This alone makes Miniflux more practical than most hosted alternatives, which either do not offer full-content fetching or put it behind a paid tier.
The API is worth exploring even if you do not plan to build anything custom. Miniflux exposes a full REST API and also supports the Fever API and the Google Reader API, which means it works as a backend for third-party mobile apps like Reeder, NetNewsWire, and ReadKit. You get the self-hosted infrastructure with the polished mobile interface of your choice layered on top. Authentication for the API uses a token you generate inside the settings panel – it is a one-time setup that takes about two minutes.
Feed refresh intervals are configurable globally and per-feed. By default Miniflux polls feeds on a set schedule, but you can also trigger manual refreshes from the interface or via API. For high-volume news subscriptions, it is worth tuning the global refresh interval and batch size in your config to avoid hammering sources or overwhelming the database. On modest hardware, fifty to a hundred feeds refreshing every thirty minutes is comfortable. At several hundred feeds, bumping the refresh interval to an hour and increasing the database connection pool keeps things stable without any perceptible delay in reading.
The real question for anyone who has bounced between Feedly, Inoreader, and similar services is whether the maintenance overhead of self-hosting actually justifies the control you gain. With Miniflux, that calculation is unusually favorable – the binary rarely needs attention after initial setup, updates through the package manager are clean, and the PostgreSQL database is easy to back up with a standard pg_dump cron job. The reader does not call home, does not require an account on anyone else’s platform, and does not change its feature set based on what a business model demands. What it shows you is exactly what you subscribed to.






