Abstract teal and amber illustration representing Miniflux, a minimalist self-hosted RSS feed reader

Miniflux

Miniflux

Miniflux is a self-hosted feed reader built on a single premise: the fewer moving parts, the better. It compiles to one static Go binary with no external runtime dependencies beyond a PostgreSQL database, ships no plugin system, and the project’s own FAQ describes its feature set as intentionally limited because, in its words, “nobody likes bloatware.” For anyone who wants RSS and Atom feeds pulled into one ad-free, tracker-stripped reading list without a PHP stack or a three-page settings menu, Miniflux is usually the second name that comes up after FreshRSS, and often the one people migrate to.

License: Miniflux is licensed under the Apache License 2.0 (Apache-2.0), confirmed directly from the LICENSE file in the miniflux/v2 GitHub repo, not assumed from a badge.

Quick facts: Official site miniflux.app · GitHub miniflux/v2 · Current release 2.3.2 (June 2026) · Docker image miniflux/miniflux on Docker Hub, also mirrored at ghcr.io/miniflux/miniflux and quay.io/miniflux/miniflux.

Why “opinionated” is the whole pitch

Miniflux’s own tagline calls it a “minimalist and opinionated feed reader,” and the opinions are documented, not incidental. The project’s FAQ explains why there’s no plugin system in plain terms: plugins add complexity, and unmaintained third-party plugins rot over time, so the default answer to most feature requests is no. The interface follows the same rule: a handful of light and dark themes, full keyboard-shortcut navigation, and not much else to configure. Privacy defaults are just as deliberate: pixel trackers get stripped from articles, tracking parameters like utm_source and fbclid are removed from URLs, external JavaScript is blocked outright, and a built-in media proxy stops third parties from tracking image loads. None of that sits behind a paid “privacy mode.” It’s just the default behavior.

What Miniflux actually does

Underneath the minimalism is a genuinely capable reader. It supports Atom 0.3/1.0, RSS 1.0/2.0, and JSON Feed, fetches the original article through a local Readability parser when a feed only publishes summaries, and offers scraper rules and regex filters for feeds that need more control. Full-text search runs directly off PostgreSQL instead of a bolted-on index. On the sync side, Miniflux speaks both the Fever API and the Google Reader API, so existing mobile apps like Reeder, NetNewsWire, or Miniflutt (built specifically for Miniflux) connect straight to a self-hosted instance instead of a company’s servers. More than 25 integrations cover read-later and notification tools, Pinboard, Wallabag, Telegram, and Discord among them, plus a REST API with official Go and Python clients. Authentication extends to passkeys and OpenID Connect, not just a local password.

Installing Miniflux with Docker

The one non-negotiable requirement is PostgreSQL. Miniflux’s own documentation states it plainly: the application “works only with PostgreSQL,” no SQLite or MySQL fallback, the single biggest difference from FreshRSS’s single-container setup. A docker-compose.yml with both services covers a typical homelab deployment:

services:
  miniflux:
    image: miniflux/miniflux:latest
    container_name: miniflux
    restart: unless-stopped
    ports:
      - "8080:8080"
    depends_on:
      db:
        condition: service_healthy
    environment:
      DATABASE_URL: postgres://miniflux:secret@db/miniflux?sslmode=disable
      RUN_MIGRATIONS: 1
      CREATE_ADMIN: 1
      ADMIN_USERNAME: admin
      ADMIN_PASSWORD: change-this-password

  db:
    image: postgres:16
    container_name: miniflux-db
    restart: unless-stopped
    environment:
      POSTGRES_USER: miniflux
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: miniflux
    volumes:
      - miniflux-db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "miniflux"]
      interval: 10s
      start_period: 30s

volumes:
  miniflux-db:
docker compose up -d

RUN_MIGRATIONS=1 applies the database schema on first boot, and CREATE_ADMIN plus the username and password variables create the first account, all four are safe to delete from the compose file after that initial run. Log in at http://your-server-ip:8080 once both containers report healthy.

No SQLite, no MySQL. Unlike FreshRSS, Nextcloud, or most other single-container homelab apps, Miniflux will not start against anything but PostgreSQL, confirmed directly in its own documentation. There’s no lighter fallback for a quick test: budget the extra container and the RAM PostgreSQL needs before assuming this is a five-minute install.

First run

  • Wait for the miniflux-db healthcheck to pass; the app container uses depends_on and won’t start until Postgres reports ready.
  • Log in with the ADMIN_USERNAME and ADMIN_PASSWORD set in the compose file, then change the password and remove those variables.
  • Add feeds individually by URL, or import an OPML file exported from Feedly, Inoreader, or FreshRSS.
  • Connect a mobile client over the Fever or Google Reader API from Settings then API Keys.

Hardware: the Go binary itself barely registers as a process. Self-hosters on r/selfhosted regularly report it running under 20MB of RAM, and it’s a common pick for a Raspberry Pi. PostgreSQL is the heavier half of the pair, budget for it like any other database container, not like the app sitting next to it. Our homelab setup guide for beginners covers sizing hardware for a stack like this one.

Homelab use cases

The Docker image doesn’t terminate HTTPS on its own, so most deployments sit behind a reverse proxy like Traefik or Caddy, the same pattern used across most of this site’s Docker stacks. Portainer is worth running alongside it too, mainly to watch the separate database container without memorizing psql commands. Because Miniflux already needs PostgreSQL, it pairs naturally with other Postgres-backed apps in the same stack, Wiki.js is a common one, since one PostgreSQL container can host a separate database for each app instead of running Postgres per service.

Miniflux: pros and cons

  • Free and fully open source under Apache-2.0, the optional paid hosting is a convenience, not a license gate
  • Single static Go binary, light on CPU and memory
  • Aggressive privacy defaults: tracker and tracking-parameter stripping, no telemetry, blocked external JavaScript
  • Broad mobile app support through the Fever and Google Reader APIs
  • Requires PostgreSQL, no SQLite or MySQL fallback for a lighter test install
  • No plugin system and no built-in feed discovery, by design, not an oversight
  • Filtering relies on regex rules instead of a point-and-click UI
  • Smaller third-party app ecosystem than more mainstream readers

Miniflux vs FreshRSS

FreshRSS and Miniflux get compared constantly because they solve the same problem from opposite directions. FreshRSS ships a built-in SQLite database, a setup wizard, Web scraping for sites without a feed, and a plugin-friendly extension system, all inside a single container that’s easy to stand up on almost any host. Miniflux strips that surface area down to a Go binary and a PostgreSQL connection string, and treats the missing plugin system as a feature rather than a gap. The trade-off comes down to that database: FreshRSS’s SQLite default is genuinely the lower-friction first deploy, while Miniflux asks for a second container up front in exchange for a lighter, faster application once it’s running. Neither is objectively the “better” reader: FreshRSS suits people who want more built-in surface area and an easier install, Miniflux suits people who already run Postgres somewhere and want the smallest possible footprint on top of it.

FAQ

Is Miniflux free?

Yes. It’s licensed under the Apache License 2.0 with the full source on GitHub, no feature paywall in the self-hosted software. Miniflux also runs an optional hosted version for $15/year for people who’d rather not run a server at all, but that’s a separate convenience product, not a requirement.

Does Miniflux really require PostgreSQL?

Yes, with no alternative. The project’s own documentation states that Miniflux “works only with PostgreSQL.” SQLite and MySQL, both offered by FreshRSS, aren’t supported at all.

Is Miniflux better than FreshRSS?

It depends what’s being optimized for: Miniflux is lighter and faster once running, with a smaller feature set; FreshRSS is faster to get running from zero and includes more out of the box, like Web scraping and extensions. Both are free, open source, and actively maintained.

Who is Miniflux good for?

People already comfortable running a PostgreSQL container, who want the smallest, fastest reader they can pair with a native mobile app over the Fever or Google Reader API, and who’d rather have fewer settings than more of them.

Miniflux earns its “opinionated” label honestly: what it refuses to do is as deliberate as what it does. Our homelab setup guide for beginners covers the Docker fundamentals a Postgres-backed stack like this depends on, and the Docker & Containers category rounds out the rest of the tooling on this site.