Miniflux (Minimal RSS Reader) on Debian 12 (PostgreSQL + Nginx + SSL)

Miniflux is a fast, lightweight, and opinionated self-hosted RSS reader built for users who value simplicity, performance, and reliability over visual clutter and social features. It delivers a clean, distraction-free reading experience with excellent keyboard navigation, powerful feed filtering rules, and full support for RSS, Atom, and JSON feeds. Miniflux also exposes a robust REST API, making it compatible with many mobile and desktop feed-reader clients.

Running Miniflux on Debian 12 (Bookworm) provides a stable, secure, and long-term supported foundation. Debian 12 ships with systemd 252, OpenSSL 3, and mature PostgreSQL and Nginx packages, making it an excellent choice for a production-grade Miniflux deployment secured with HTTPS.


Architecture Overview

LayerComponentRole
OSDebian 12 (Bookworm)Stable, long-term supported Linux base
ApplicationMiniflux (Go binary)Core RSS reader and feed processing engine
DatabasePostgreSQL 15Stores users, feeds, entries, and metadata
Reverse ProxyNginxHTTPS termination, compression, routing
TLSLet’s Encrypt / PKISecure HTTPS access to the web interface

Miniflux runs as a single static Go binary, which makes it extremely efficient, easy to maintain, and well-suited for servers with limited resources.


Why Use Miniflux?

  • Minimalist by design – no ads, no tracking, no unnecessary UI elements
  • Very fast and efficient – written in Go, low CPU and memory usage
  • Self-hosted and private – your reading data never leaves your server
  • Advanced filtering rules – auto-tag, auto-remove, or rewrite feed content
  • Keyboard-first workflow – ideal for power users and developers
  • REST API support – integrates with mobile apps and automation tools
  • Reliable feed parsing – handles broken or non-standard feeds gracefully

Miniflux vs Other RSS Readers

Feature / CapabilityMinifluxFreshRSSTiny Tiny RSSFeedly
HostingSelf-hostedSelf-hostedSelf-hostedCloud only
BackendGo + PostgreSQLPHP + MySQLPHP + PostgreSQLProprietary
Resource usageVery lowMediumMedium–HighN/A
Ads / tracking❌ None❌ None❌ None✅ Yes
API access✅ Yes✅ Yes✅ YesLimited
PhilosophyMinimal & fastFeature-richFeature-richSaaS

Miniflux is best suited for users who prefer a focused, efficient reading experience and value speed and stability over advanced social or visual features.


Security & Best Practices

  • Run Miniflux behind Nginx with HTTPS enabled.
  • Store database credentials using environment variables, not in config files.
  • Bind Miniflux to 127.0.0.1 and expose only Nginx publicly.
  • Use strong admin credentials and rotate API tokens regularly.
  • Schedule PostgreSQL backups and vacuum jobs.
  • Use UFW or nftables to allow only ports 80 and 443.
  • Automate SSL certificate renewal with Certbot.
  • Keep Miniflux and system packages up to date for security fixes.

Typical Use Cases

  • Personal RSS reader replacing Feedly or old Google Reader workflows
  • Developers and DevOps engineers tracking blogs, changelogs, and CVE feeds
  • Journalists and researchers monitoring multiple news and information sources
  • Privacy-focused users avoiding cloud-based feed readers
  • Automation pipelines consuming feeds via Miniflux API

Deploying Miniflux on Debian 12 with PostgreSQL, Nginx, and SSL gives you a fast, secure, and distraction-free RSS reading platform that is easy to maintain, extremely efficient, and fully under your control.


Create a Cloud Server Instance on Shape.Host

Before installing Miniflux, you need a clean Debian 12 VPS.

Go to https://shape.host and log in.

Click Create.

Select Instance.

Shape.host Resources dashboard with Create > Instance highlighted.

Choose a data center close to your users.

Shape.host instance form with the data center location selector highlighted.

Select Debian 12 (64-bit) as the operating system.

Choose a plan (recommended minimum):

2 vCPUs

4 GB RAM

20 GB NVMe SSD

Shape.host instance form with the operating system image selector highlighted.

Click Create Instance.

Shape.host instance form with the Create Instance button highlighted.

Copy the public IP address of the instance.

Your server is now ready.

Shape.host Resources dashboard with the server IP address highlighted.

Step 1: Connect to the Server via SSH

Linux / macOS

ssh root@YOUR_SERVER_IP

Windows (PowerShell or Windows Terminal)

ssh root@YOUR_SERVER_IP

Accept the SSH fingerprint when prompted. You are now logged in as root.


Step 2: Update the System

apt update
apt upgrade -y

This updates the package index and upgrades all installed packages to the latest versions.

Terminal showing APT package management commands and output.

Step 3: Install Required Packages

apt install curl wget ca-certificates gnupg2 lsb-release unzip nginx postgresql postgresql-contrib

These packages provide:

  • Download tools (curl, wget)
  • Security and verification (ca-certificates, gnupg2)
  • Web server (Nginx)
  • Database server (PostgreSQL)
Terminal showing APT package management commands and output.

Step 4: Verify PostgreSQL Installation

psql --version

Confirms that PostgreSQL is installed correctly.

Terminal showing psql commands or output during Verify PostgreSQL Installation.

Step 5: Create Miniflux Database and User

Switch to the PostgreSQL system user:

su - postgres

Enter the PostgreSQL shell:

psql

Create the database and user:

CREATE DATABASE miniflux;
CREATE USER miniflux WITH PASSWORD 'STRONG_DB_PASSWORD';
ALTER DATABASE miniflux OWNER TO miniflux;
GRANT ALL PRIVILEGES ON DATABASE miniflux TO miniflux;
\q

Exit back to root:

exit

This ensures Miniflux has its own isolated database.

Terminal showing SQL database and user configuration commands.

Step 6: Download Miniflux Binary

cd /usr/local/bin
wget https://github.com/miniflux/v2/releases/latest/download/miniflux-linux-amd64

Downloads the official Miniflux binary.


Step 7: Make Miniflux Executable

chmod +x miniflux-linux-amd64
mv miniflux-linux-amd64 miniflux

Moves Miniflux into your system PATH.

Terminal showing file download commands and transfer output.

Step 8: Verify Miniflux Installation

miniflux -version

Confirms Miniflux runs correctly.

Terminal displaying the Miniflux version.

Step 9: Create Miniflux System User

useradd -r -s /usr/sbin/nologin miniflux
id miniflux

Creates a dedicated, non-login system user for security.

Terminal showing Linux user account management commands.

Step 10: Create Configuration Directory

mkdir /etc/miniflux

Step 11: Create Miniflux Configuration File

nano /etc/miniflux/miniflux.conf

Paste the configuration from your history:

DATABASE_URL=postgres://miniflux:STRONG_DB_PASSWORD@localhost/miniflux?sslmode=disable
LISTEN_ADDR=127.0.0.1:8080

# MUST MATCH NGINX DOMAIN
BASE_URL=https://rss.example.com

RUN_MIGRATIONS=1
CREATE_ADMIN=1
ADMIN_USERNAME=admin
ADMIN_PASSWORD=STRONG_ADMIN_PASSWORD

Save and exit.

Terminal showing application configuration fields.

Step 12: Secure Configuration File

chown -R miniflux:miniflux /etc/miniflux
chmod 600 /etc/miniflux/miniflux.conf

Restricts access to sensitive credentials.

Terminal showing file ownership or permission commands.

Step 13: Create systemd Service

nano /etc/systemd/system/miniflux.service

Paste:

[Unit]
Description=Miniflux RSS Reader
After=network.target postgresql.service

[Service]
User=miniflux
Group=miniflux
ExecStart=/usr/local/bin/miniflux -config-file /etc/miniflux/miniflux.conf
Restart=always
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target
Terminal showing a systemd service unit configuration.

Step 14: Enable and Start Miniflux

systemctl daemon-reload
systemctl enable miniflux
systemctl start miniflux
systemctl status miniflux

Confirms Miniflux is running as a system service.

Terminal showing systemd service management commands or output.

Step 15: Manual Test as Miniflux User (Optional)

su -s /bin/sh miniflux -c "miniflux -config-file /etc/miniflux/miniflux.conf"

Useful for debugging configuration issues.

Terminal showing su commands or output during Manual Test as Miniflux User (Optional).

Step 16: Test Miniflux from Browser (Before Nginx)

Open your browser and visit:

http://YOUR_SERVER_IP:8080

You should see the Miniflux login page.


Step 17: Configure Nginx Reverse Proxy

nano /etc/nginx/sites-available/miniflux

Paste:

server {
    listen 80;
    server_name rss.example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
Terminal showing web server configuration text.

Step 18: Enable Nginx Site

ln -s /etc/nginx/sites-available/miniflux /etc/nginx/sites-enabled/miniflux
rm /etc/nginx/sites-enabled/default

Step 19: Test and Reload Nginx

nginx -t
systemctl reload nginx
Terminal showing systemd service management commands or output.

Step 20: Install Certbot and Enable SSL

apt install certbot python3-certbot-nginx
certbot --nginx -d debian-tutorials.shape.host

Certbot automatically issues and configures an SSL certificate.

Terminal showing APT package management commands and output.
Terminal showing Certbot certificate commands and messages.

Access Miniflux Securely

https://your-domain.com

Miniflux is now fully installed and secured on Debian 12.

Miniflux sign-in form.
Miniflux unread items page with an empty feed list.

Miniflux, Ghostfolio, NocoDB, HedgeDoc, Paperless-ngx, and similar applications benefit from fast, reliable infrastructure.

Shape.Host offers:

  • Linux SSD VPS
  • Instant provisioning
  • Clean OS images
  • High uptime
  • Easy scalability

Visit https://shape.host to deploy your next application with confidence.