Skip to content

Miniflux

Modern RSS Feed Reader

Miniflux is a minimalist and opinionated feed reader written in Go and PostgreSQL. Designed for speed, simplicity, and self-hosting, it provides a clean reading experience without bloat.

Why Choose Miniflux?

  • Minimalist - clean, fast RSS reader focused on simplicity
  • PostgreSQL-backed - robust with full-text search
  • Lightweight - minimal resource usage perfect for small VPS
  • Privacy-first - no tracking with API access

Install

Infrastructure as Code

This Miniflux instance is deployed using OpenTofu with custom Incus images. The infrastructure configuration manages container provisioning and persistent storage.

Custom Miniflux Image

The Miniflux Incus image is built and maintained at forgejo.benoit.jp.net/Benoit/Laminar.

Infrastructure Configuration

The OpenTofu configuration provisions:

  • Incus instance running custom Miniflux image
  • One persistent storage volume:
    • /var/backups/miniflux - Backup storage
OpenTofu Configuration
resource "incus_storage_volume" "miniflux_var_backups_miniflux" {
  name = "miniflux_var_backups_miniflux"
  pool = incus_storage_pool.default.name
}

resource "incus_instance" "miniflux" {
  name  = "miniflux"
  image = "laminar.incus:miniflux-2.2.13-1benoitjpnet"

  device {
    name = "var_backups_miniflux"
    type = "disk"
    properties = {
      path   = "/var/backups/miniflux"
      source = incus_storage_volume.miniflux_var_backups_miniflux.name
      pool   = incus_storage_pool.default.name
    }
  }
}

Deploy Infrastructure

Apply OpenTofu configuration
tofu apply

After provisioning, configure Miniflux by editing /etc/miniflux.conf with your database connection and preferences.

Upgrade

Incus Image Upgrade

When upgrading to a newer Incus image version, follow these steps to migrate your data.

Backup current instance data before upgrading:

Enter Incus container
incus shell miniflux

Backup configuration file

cp /etc/miniflux.conf /var/backups/miniflux/

Backup PostgreSQL database

sudo -u postgres pg_dump miniflux > /var/backups/miniflux/db.sql

Deploy to new Incus image and restore data:

Update OpenTofu configuration

Edit your OpenTofu configuration file to update the image version:

resource "incus_instance" "miniflux" {
  name  = "miniflux"
  image = "laminar.incus:miniflux-NEW-VERSION"  # Update this line
  # ...
}

Apply infrastructure changes

Provision new Incus container
tofu apply
Enter Incus container
incus shell miniflux

Restore configuration file

cp /var/backups/miniflux/miniflux.conf /etc/

Restore PostgreSQL database

sudo -u postgres createdb miniflux
sudo -u postgres psql miniflux < /var/backups/miniflux/db.sql

Restart Miniflux service

systemctl restart miniflux

Upgrade Complete

Your Miniflux instance is now running on the new Incus image with all feeds and data intact!

Advanced Configuration

  • Performance Optimization


    /etc/miniflux.conf
    # Optimize for your server resources
    POLLING_FREQUENCY=60           # Minutes between feed updates
    BATCH_SIZE=100                 # Articles per batch
    WORKER_POOL_SIZE=5             # Concurrent feed fetchers
    DATABASE_MAX_CONNS=20          # PostgreSQL connection pool
    
  • Security Hardening


    /etc/miniflux.conf
    # Enhanced security settings
    HTTPS=on                       # Force HTTPS
    HSTS=on                        # HTTP Strict Transport Security
    CSP_DEFAULT_SRC='self'         # Content Security Policy
    SESSION_CLEANUP_FREQUENCY=24   # Hours between session cleanup
    
  • Notification Setup


    /etc/miniflux.conf
    # Webhook notifications for new articles
    WEBHOOK_URL=https://hooks.slack.com/...
    WEBHOOK_SECRET=your-secret-key
    NOTIFICATION_FREQUENCY=15      # Minutes between notifications
    
  • API Configuration


    /etc/miniflux.conf
    # Enable external API access
    API_KEY_LIFETIME=8760          # Hours (1 year)
    FEVER_ENABLED=on               # Third-party client support
    CORS_ALLOWED_ORIGINS=*         # Cross-origin requests
    

Related Documentation: - Infrastructure Overview - Complete self-hosting architecture - PostgreSQL Setup Guide - Database administration tips