Miniflux (Minimal RSS Reader) on Ubuntu 24.04 (PostgreSQL + Nginx + SSL)

Miniflux is a fast, lightweight, and opinionated self-hosted RSS reader designed for users who want a distraction-free reading experience. Unlike feature-heavy feed aggregators, Miniflux focuses on speed, reliability, and simplicity, providing a clean web interface, powerful filtering rules, and first-class keyboard navigation. It supports RSS, Atom, and JSON feeds and exposes a REST API compatible with multiple mobile and desktop clients.

Running Miniflux on Ubuntu 24.04 LTS (Noble Numbat) provides a modern, secure, and long-term supported platform. Ubuntu 24.04 includes systemd 255, OpenSSL 3, and up-to-date PostgreSQL and Nginx packages, making it an excellent choice for a production-ready Miniflux deployment with HTTPS and strong performance.


Architecture Overview

LayerComponentRole
OSUbuntu 24.04 LTSStable, long-term supported Linux base
ApplicationMiniflux (Go binary)Core RSS reader and feed processing engine
DatabasePostgreSQL 15/16Stores 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, making it extremely efficient and easy to operate.


Why Use Miniflux?

  • Minimalist by design – no ads, no tracking, no unnecessary UI elements
  • Extremely fast – written in Go, optimized for low resource usage
  • Self-hosted & private – your reading habits stay on your server
  • Powerful filtering rules – auto-tag, auto-remove, or rewrite feed content
  • Keyboard-driven workflow – ideal for power users
  • REST API – compatible with mobile apps and third-party clients
  • Reliable feed fetching – handles flaky or malformed 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 support✅ Yes✅ Yes✅ YesLimited
PhilosophyMinimal & fastFeature-richFeature-richSaaS

Miniflux is ideal for users who value speed, clarity, and reliability over visual clutter and social features.


Security & Best Practices

  • Run Miniflux behind Nginx with HTTPS enabled.
  • Store database credentials using environment variables, not hardcoded values.
  • Bind Miniflux to 127.0.0.1 and expose only Nginx publicly.
  • Use strong admin credentials and rotate API tokens periodically.
  • Keep PostgreSQL vacuuming and backups scheduled.
  • Enable UFW and allow only ports 80 and 443.
  • Automate SSL renewals with Certbot.
  • Regularly update Miniflux to benefit from security and feed parser improvements.

Typical Use Cases

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

Deploying Miniflux on Ubuntu 24.04 with PostgreSQL, Nginx, and SSL gives you a fast, secure, and distraction-free RSS reading platform that scales effortlessly, consumes minimal resources, and keeps full control of your data in your hands.


Create a Cloud Server Instance on Shape.Host

Before installing Miniflux, you need a clean Ubuntu 24.04 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 location or users.

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

Select Ubuntu 24.04 (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.

Wait for provisioning to complete (about 30 seconds).

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

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


Step 2: Update the System

apt update
apt upgrade

These commands update package lists and upgrade installed software to the latest versions.
Running them twice ensures the system is fully synchronized.

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

This installs:

  • curl / wget – download tools
  • ca-certificates / gnupg2 – secure package verification
  • nginx – web server / reverse proxy
  • postgresql – database engine required by Miniflux
Terminal showing APT package management commands and output.

Step 4: Verify PostgreSQL Installation

psql --version

Confirms PostgreSQL is installed correctly.

Terminal displaying the PostgreSQL client version.

Step 5: Create the Miniflux Database and User

Switch to the PostgreSQL system user:

su - postgres

Inside PostgreSQL, run:

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 the PostgreSQL shell and user:

exit

This creates a dedicated database and user for Miniflux.

Terminal showing SQL database and user configuration commands.

Step 6: Download the Miniflux Binary

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

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 Configuration Directory

mkdir /etc/miniflux

Step 10: Create Miniflux Configuration File

nano /etc/miniflux/miniflux.conf

Paste your configuration exactly as in 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 11: Set Secure Permissions

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

Restricts access to sensitive credentials.


Step 12: Create Miniflux System User

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

Creates a dedicated system user for security.


Step 13: Reapply Ownership

chown -R miniflux:miniflux /etc/miniflux
Terminal showing Linux user account management commands.

Step 14: 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 15: Start Miniflux

systemctl start miniflux
systemctl status miniflux

Step 16: Manual Test as Miniflux User

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

Used to validate configuration.

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

Step 17: Reload systemd and Recheck

systemctl daemon-reload
systemctl status miniflux
Terminal showing systemd service management commands or output.

Step 18: Test Miniflux from Browser (Before Nginx)

Open your browser and visit:

http://YOUR_SERVER_IP:8080

If Miniflux is running correctly, the login page should load.


Step 19: 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 20: Enable Nginx Site

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

Step 21: Test and Reload Nginx

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

Step 22: Install Certbot and Enable SSL

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

Certbot automatically configures HTTPS.

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

Access Miniflux Securely

https://yourdomain.com

Your Miniflux RSS reader is now fully installed and secured.

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

Miniflux, Ghostfolio, NocoDB, HedgeDoc, Paperless-ngx, and similar self-hosted apps require fast and stable infrastructure.

Shape.Host offers:

  • NVMe Cloud VPS
  • Instant provisioning
  • Clean OS templates
  • Excellent uptime
  • Scalable resources

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