Miniflux
v1.0.0A minimalist RSS and Atom feed reader with private subscriptions.
x-arcane:
icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/miniflux.svg"
urls:
- "https://miniflux.app/docs/docker.html"
services:
miniflux:
image: "miniflux/miniflux:latest"
restart: "unless-stopped"
ports:
- "${PORT:-8080}:8080"
environment:
DATABASE_URL: "postgres://miniflux:${DB_PASSWORD:?Set DB_PASSWORD in .env}@db:5432/miniflux?sslmode=disable"
RUN_MIGRATIONS: "1"
CREATE_ADMIN: "${CREATE_ADMIN:-1}"
ADMIN_USERNAME: "${ADMIN_USERNAME:-admin}"
ADMIN_PASSWORD: "${ADMIN_PASSWORD:?Set ADMIN_PASSWORD in .env}"
BASE_URL: "${BASE_URL:-http://localhost:8080}"
depends_on:
db:
condition: "service_healthy"
healthcheck:
test:
- "CMD"
- "/usr/bin/miniflux"
- "-healthcheck"
- "auto"
interval: "10s"
timeout: "5s"
retries: 10
start_period: "30s"
labels:
com.getarcaneapp.arcane.icon: "https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/miniflux.svg"
db:
image: "postgres:16-alpine"
restart: "unless-stopped"
environment:
POSTGRES_DB: "miniflux"
POSTGRES_USER: "miniflux"
POSTGRES_PASSWORD: "${DB_PASSWORD:?Set DB_PASSWORD in .env}"
volumes:
- "db-data:/var/lib/postgresql/data"
healthcheck:
test:
- "CMD-SHELL"
- "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"
interval: "10s"
timeout: "5s"
retries: 10
start_period: "30s"
labels:
com.getarcaneapp.arcane.icon: https://cdn.jsdelivr.net/gh/selfhst/icons@main/svg/postgresql.svg
volumes:
db-data: {}
# Replace every change-me with an independent secret before deployment.
# Generate secrets with: openssl rand -hex 32
PORT=8080
BASE_URL=http://localhost:8080
DB_PASSWORD=change-me
CREATE_ADMIN=1
ADMIN_USERNAME=admin
ADMIN_PASSWORD=change-me
README
A minimalist RSS and Atom feed reader with private subscriptions.
Copy .env.example to .env, review the settings, then run docker compose up -d. In Arcane, import the template and supply the same environment variables. Replace every change-me value before starting. Generate independent secrets with openssl rand -hex 32; use hexadecimal database passwords so connection URLs need no escaping. Use docker compose ps and docker compose logs to check startup.
Sign in at BASE_URL with ADMIN_USERNAME and ADMIN_PASSWORD. After first initialization set CREATE_ADMIN=0; account changes are then managed in the UI. PostgreSQL stores subscriptions, articles, and users.
Named volumes preserve server data across container recreation. Back up these volumes before upgrades; docker compose down -v deletes them. Set PORT to an unused host port. For remote browser access, put HTTPS in front of the application and update its public URL setting where provided.
Upstream documentation: Miniflux deployment.