
Lovin Miniflux
September 9, 2025I’ve made some references in the past to my attempts over the years to replace Google Reader. Released in 2005 the functionality it offered was convenient. I have tried multiple times applications to replace this, but none offered the same level of simplicity. I love RSS as a concept because it empowers open decentralised distribution. The consumer gets to control the feeds they consume. You choose your feeds. As long as you’re just sorting by date there is no ‘algorithm’ nudging you in one direction or another.
There are many examples today of how the metric which delivers monetary value for tech companies is human attention. I have engaged with and left multiple platforms over the years which have sought to funnel their users into unhealthy consumption patterns; YouTube, Facebook, Instagram, Reddit, Netflix, Spotify, Twitter / X. All present a skewed list with keyset based pagination and horrible re-discoverability. The purpose is to continually consume, never linger, inquire, come back to.
Enter Miniflux to breech the gap. I have a Thinkpad X220 acting as my home server. On that I have Miniflux running in docker compose. I can connect to it any time I’m at home. I have explored methods to expose it to the internet securely, but for now this has just not been worth the risk to me. It does everything I want; add feeds, browse feeds globally or individually, mark feeds as read, favourites. It works in the background so the feeds are ready through a minimal but functional UI.

version: "2"
services:
miniflux:
image: miniflux/miniflux:latest
ports:
- "9191: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=admin
restart: "always"
db:
image: postgres:17-alpine
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=miniflux
restart: "always"
user: "1000:1000"
volumes:
- ./miniflux_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD", "pg_isready", "-U", "miniflux"]
interval: 10s
start_period: 30s