Miniflux Feed Reader
Minimalist and opinionated RSS reader.
Overview
Miniflux is a minimalist, open-source RSS and Atom feed reader written in Go, designed with a philosophy of simplicity and efficiency. Created by Frédéric Guillot, it prioritizes speed, security, and a clean user interface over feature bloat, making it an excellent choice for users who want a straightforward feed reading experience without unnecessary complexity. Miniflux supports modern web standards, keyboard shortcuts for power users, and includes API compatibility with popular feed reader protocols.
This deployment configuration sets up Miniflux with a dedicated PostgreSQL database backend, creating a two-container architecture that separates the application layer from data persistence. The miniflux service runs the web application and API server, while the db service provides a PostgreSQL 15 Alpine instance specifically configured for Miniflux's data storage needs. The setup includes automatic database migrations and admin user creation, making the initial deployment process streamlined.
This stack is ideal for individuals, small teams, or organizations looking for a self-hosted RSS solution that combines simplicity with reliability. The PostgreSQL backend ensures data integrity and performance for users with large numbers of feeds and articles, while the lightweight Miniflux application keeps resource usage minimal. This configuration is perfect for homelab enthusiasts, privacy-conscious users, and teams wanting to maintain control over their feed reading infrastructure.
Key Features
- Minimalist web interface with focus on readability and speed
- Built-in Fever API and Google Reader API compatibility for mobile app integration
- Comprehensive keyboard shortcuts for efficient navigation and article management
- Automatic HTTPS feed fetching with certificate validation
- PostgreSQL backend with ACID compliance for reliable article storage and user data
- Automatic database schema migrations and admin user provisioning
- Feed autodiscovery and import/export functionality in OPML format
- Real-time feed updates with configurable refresh intervals
Common Use Cases
- 1Personal RSS aggregation for news, blogs, and technical publications
- 2Team knowledge sharing by centralizing industry feeds and updates
- 3Content curation for research projects requiring systematic information gathering
- 4Alternative to cloud-based feed readers for privacy-conscious users
- 5Homelab deployment for self-hosted productivity tools
- 6Mobile feed reading through Fever API compatible applications
- 7Backup solution for users wanting to maintain feed reading during service outages
Prerequisites
- Docker and Docker Compose installed on the host system
- Minimum 512MB RAM available (PostgreSQL requires 256MB+ and Miniflux needs additional memory)
- Port 8080 available on the host for web interface access
- Environment variables configured: ADMIN_USER, ADMIN_PASSWORD, and DB_PASSWORD
- Basic understanding of RSS/Atom feeds and feed reader concepts
- Network access for the container to fetch RSS feeds from external sources
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 miniflux: 3 image: miniflux/miniflux:latest4 container_name: miniflux5 environment: 6 - DATABASE_URL=postgres://miniflux:${DB_PASSWORD}@db/miniflux?sslmode=disable7 - RUN_MIGRATIONS=18 - CREATE_ADMIN=19 - ADMIN_USERNAME=${ADMIN_USER}10 - ADMIN_PASSWORD=${ADMIN_PASSWORD}11 ports: 12 - "8080:8080"13 depends_on: 14 - db15 networks: 16 - miniflux-network17 restart: unless-stopped1819 db: 20 image: postgres:15-alpine21 container_name: miniflux-db22 environment: 23 - POSTGRES_USER=miniflux24 - POSTGRES_PASSWORD=${DB_PASSWORD}25 - POSTGRES_DB=miniflux26 volumes: 27 - postgres-data:/var/lib/postgresql/data28 networks: 29 - miniflux-network30 restart: unless-stopped3132volumes: 33 postgres-data: 3435networks: 36 miniflux-network: 37 driver: bridge.env Template
.env
1# Miniflux2ADMIN_USER=admin3ADMIN_PASSWORD=secure_admin_password4DB_PASSWORD=secure_miniflux_passwordUsage Notes
- 1Web UI at http://localhost:8080
- 2Login with admin credentials
- 3Keyboard navigation
- 4Fever and Google Reader API
- 5Automatic HTTPS fetching
Individual Services(2 services)
Copy individual services to mix and match with your existing compose files.
miniflux
miniflux:
image: miniflux/miniflux:latest
container_name: miniflux
environment:
- DATABASE_URL=postgres://miniflux:${DB_PASSWORD}@db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=${ADMIN_USER}
- ADMIN_PASSWORD=${ADMIN_PASSWORD}
ports:
- "8080:8080"
depends_on:
- db
networks:
- miniflux-network
restart: unless-stopped
db
db:
image: postgres:15-alpine
container_name: miniflux-db
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=miniflux
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- miniflux-network
restart: unless-stopped
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 miniflux:5 image: miniflux/miniflux:latest6 container_name: miniflux7 environment:8 - DATABASE_URL=postgres://miniflux:${DB_PASSWORD}@db/miniflux?sslmode=disable9 - RUN_MIGRATIONS=110 - CREATE_ADMIN=111 - ADMIN_USERNAME=${ADMIN_USER}12 - ADMIN_PASSWORD=${ADMIN_PASSWORD}13 ports:14 - "8080:8080"15 depends_on:16 - db17 networks:18 - miniflux-network19 restart: unless-stopped2021 db:22 image: postgres:15-alpine23 container_name: miniflux-db24 environment:25 - POSTGRES_USER=miniflux26 - POSTGRES_PASSWORD=${DB_PASSWORD}27 - POSTGRES_DB=miniflux28 volumes:29 - postgres-data:/var/lib/postgresql/data30 networks:31 - miniflux-network32 restart: unless-stopped3334volumes:35 postgres-data:3637networks:38 miniflux-network:39 driver: bridge40EOF4142# 2. Create the .env file43cat > .env << 'EOF'44# Miniflux45ADMIN_USER=admin46ADMIN_PASSWORD=secure_admin_password47DB_PASSWORD=secure_miniflux_password48EOF4950# 3. Start the services51docker compose up -d5253# 4. View logs54docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/miniflux-reader/run | bashTroubleshooting
- Database connection failed errors: Verify DB_PASSWORD environment variable matches between miniflux and db services
- Admin login not working: Ensure ADMIN_USERNAME and ADMIN_PASSWORD are properly set and CREATE_ADMIN=1 is configured
- Feeds not updating or fetching: Check container logs for SSL/TLS certificate issues and verify network connectivity
- Port 8080 already in use: Modify the port mapping in docker-compose.yml to use an alternative port like 8081:8080
- PostgreSQL startup failures: Ensure sufficient disk space is available for the postgres-data volume
- Migration errors on startup: Delete the postgres-data volume and restart to recreate the database with fresh schema
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Components
minifluxpostgresql
Tags
#rss#miniflux#feed-reader#minimalist#go
Category
Productivity & CollaborationAd Space
Shortcuts: C CopyF FavoriteD Download