How to Install Miniflux (Minimal RSS Reader) on Debian 12
Introduction
This guide explains how to install Miniflux, a lightweight and efficient RSS reader, on Debian 12.
Miniflux runs as a single binary and stores feed data in PostgreSQL. In this setup, Nginx will be used as a reverse proxy to provide web access to the application.
This tutorial follows a structured step-by-step process including installing dependencies, configuring the database, running Miniflux as a system service, and setting up the Nginx reverse proxy.
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 will then be logged in as the root user.
Step 2: Update the System
apt update
apt upgrade -y
These commands refresh the package index and upgrade installed packages to the latest versions.
Step 3: Install Required Packages
apt install curl wget ca-certificates gnupg2 lsb-release unzip nginx postgresql postgresql-contrib
This installs the required tools, Nginx web server, and the PostgreSQL database server needed by Miniflux.
Step 4: Verify PostgreSQL Installation
psql --version
This command confirms that PostgreSQL is installed correctly.
Step 5: Create Miniflux Database and User
Switch to the PostgreSQL system user:
su - postgres
Open 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;
Exit PostgreSQL:
\q
Return to the root shell:
exit
This creates a dedicated database for Miniflux.
Step 6: Download Miniflux Binary
cd /usr/local/bin wget https://github.com/miniflux/v2/releases/latest/download/miniflux-linux-amd64
This downloads the official Miniflux binary from GitHub.
Step 7: Make Miniflux Executable
chmod +x miniflux-linux-amd64 mv miniflux-linux-amd64 miniflux
These commands make the binary executable and rename it to miniflux.
Step 8: Verify Miniflux Installation
miniflux -version
This verifies that the Miniflux binary works correctly.
Step 9: Create Miniflux System User
useradd -r -s /usr/sbin/nologin miniflux id miniflux
Creates a dedicated system user that will run the Miniflux service.
Step 10: Create Configuration Directory
mkdir /etc/miniflux
This directory will store the Miniflux configuration file.
Step 11: Create Miniflux Configuration File
nano /etc/miniflux/miniflux.conf
Paste the configuration:
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
This file defines the database connection, listening address, and initial admin credentials.
Step 12: Secure Configuration File
chown -R miniflux:miniflux /etc/miniflux chmod 600 /etc/miniflux/miniflux.conf
These commands restrict access to the configuration file since it contains sensitive credentials.
Step 13: Create systemd Service
nano /etc/systemd/system/miniflux.service
Paste the following service configuration:
[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
This allows Miniflux to run as a managed systemd service.
Step 14: Enable and Start Miniflux
systemctl daemon-reload
systemctl enable miniflux
systemctl start miniflux
systemctl status miniflux
These commands reload systemd, enable the service at boot, start the service, and check its status.
Step 15: Manual Test as Miniflux User (Optional)
su -s /bin/sh miniflux -c "miniflux -config-file /etc/miniflux/miniflux.conf"
This runs Miniflux manually as the service user for troubleshooting.
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 if the application is running correctly.
Step 17: Configure Nginx Reverse Proxy
nano /etc/nginx/sites-available/miniflux
Paste the configuration:
server {
listen 80;
server_name _;
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;
}
}
This config forwards web traffic from Nginx to the Miniflux application.
Step 18: Enable Nginx Site
ln -s /etc/nginx/sites-available/miniflux /etc/nginx/sites-enabled/miniflux rm /etc/nginx/sites-enabled/default
This enables the Miniflux Nginx site and disables the default configuration.
Step 19: Test and Reload Nginx
nginx -t
systemctl reload nginx
These commands verify the Nginx configuration and reload the web server so the changes take effect.
Step 20: Access Miniflux Securely
https://your-domain.com
Miniflux is now fully installed and secured on Debian 12.
Conclusion
You have successfully installed Miniflux on Debian 12 and configured it to run as a managed systemd service. The application is connected to a dedicated PostgreSQL database and served through Nginx as a reverse proxy.
Your Miniflux instance should now be accessible through the configured domain, allowing you to log in with the admin account created during the initial setup and begin subscribing to RSS feeds.
This deployment method ensures the service runs automatically on system boot, keeps configuration and credentials secured, and provides a reliable foundation for running Miniflux in a production environment.