Installation Instructions

Installing Miniflux is straightforward if you have some basic sysadmin knowledge.

Packages

Platform Type Repository URL
Debian/Ubuntu Upstream (Binary) https://github.com/miniflux/deb-package
RHEL/Fedora Upstream (Binary) https://github.com/miniflux/rpm-package
Alpine Linux Community (Source) aports/testing/miniflux
Arch Linux Community (Source) https://aur.archlinux.org/packages/miniflux/
FreeBSD Port Community (Source) ports/www/miniflux
Nix Community (Source) pkgs/servers/miniflux

You can download precompiled binaries and packages on the releases page: https://github.com/miniflux/miniflux/releases.

You could also build the application from the source code.

Database Configuration

Creating the Database

Here an example from the command line:

# Switch to the postgres user
$ su - postgres

# Create a database user for Miniflux
$ createuser -P miniflux
Enter password for new role: ******
Enter it again: ******

# Create a database for miniflux that belongs to our user
$ createdb -O miniflux miniflux

# Create the extension hstore as superuser
$ psql miniflux -c 'create extension hstore'
CREATE EXTENSION

Enabling HSTORE extension for Postgresql

Creating Postgresql extensions requires the SUPERUSER privilege. Several solutions are available:

1) Give SUPERUSER privileges to the miniflux user only during the schema migration:

ALTER USER miniflux WITH SUPERUSER;
-- Run the migrations (miniflux -migrate)
ALTER USER miniflux WITH NOSUPERUSER;

2) You could create the hstore extension with another user that have the SUPERUSER privileges before running the migrations.

sudo -u postgres psql $MINIFLUX_DATABASE
> CREATE EXTENSION hstore;

Manual Installation

  1. Copy the precompiled binary somewhere on your server, for example in /usr/local/bin
  2. Make the file executable: chmod +x miniflux
  3. Define the environment variable DATABASE_URL if necessary
  4. Run the SQL migrations: miniflux -migrate
  5. Create an admin user: miniflux -create-admin
  6. Start the application: miniflux

You should configure a process manager like systemd or supervisord to supervise the Miniflux daemon.

Debian Package Installation

You must have Debian >= 8 or Ubuntu >= 16.04. When using the Debian package, the Miniflux daemon is supervised by systemd.

  1. Install Debian package: dpkg -i miniflux_2.0.13_amd64.deb
  2. Check process status: systemctl status miniflux
  3. Define the environment variable DATABASE_URL if necessary
  4. Run the SQL migrations: miniflux -migrate
  5. Create an admin user: miniflux -create-admin

Note that you could also use the Miniflux APT repository instead of downloading manually the Debian package.

Systemd reads the environment variables from the file /etc/miniflux.conf. You must restart the service to take the new values into consideration.

RPM Package Installation

You must have Fedora or Centos/Redhat >= 7. When you use the RPM package, the Miniflux daemon is supervised by systemd.

  1. Install Miniflux RPM: rpm -ivh miniflux-2.0.13-1.0.x86_64.rpm
  2. Define the environment variable DATABASE_URL if necessary
  3. Run the SQL migrations: miniflux -migrate
  4. Create an admin user: miniflux -create-admin
  5. Enable the systemd service: systemctl enable miniflux
  6. Start the process with systemd: systemctl start miniflux
  7. Check process status: systemctl status miniflux

Note that you could also use the Miniflux RPM repository instead of downloading manually the RPM package.

Systemd reads the environment variables from the file /etc/miniflux.conf. You must restart the service to take the new values into consideration.

Alpine Linux Installation

Alpine Linux is a lightweight Linux distribution that is perfectly suited for running Miniflux.

An APK package is available from the Edge repository.

Edit the file /etc/apk/repositories to enable the Edge repository: http://dl-cdn.alpinelinux.org/alpine/edge/testing. And then run apk update.

The Miniflux installation is simple as running:

apk add miniflux

Do not forget to install Postgresql:

apk add postgresql postgresql-contrib

Configure the database and enable the HSTORE extension as mentioned previously.

On Alpine Linux, the Miniflux process is supervised by supervise-daemon from OpenRC (there is no Systemd). The log file /var/log/miniflux.log is rotated by logrotate.

In this context, the configuration file /etc/miniflux.conf is used instead of environment variables:

# /etc/miniflux.conf

LOG_DATE_TIME=yes
LISTEN_ADDR=127.0.0.1:8080
DATABASE_URL=user=postgres dbname=miniflux sslmode=disable

To finalize the installation, create the database schema and a first user:

miniflux -c /etc/miniflux.conf -migrate
miniflux -c /etc/miniflux.conf -create-admin

And finally, start the application:

service miniflux start

Docker Installation

Pull the image and run the container:

docker run -d -p 80:8080 miniflux/miniflux:latest

You will probably need to pass some environment variables like the DATABASE_URL.

You could also use Docker Compose. Here an example of docker-compose.yml file:

version: '3'
services:
    miniflux:
    image: miniflux/miniflux:latest
        ports:
            - "80:8080"
        depends_on:
            - db
        environment:
            - DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
    db:
        image: postgres:latest
        environment:
            - POSTGRES_USER=miniflux
            - POSTGRES_PASSWORD=secret
        volumes:
            - miniflux-db:/var/lib/postgresql/data
volumes:
    miniflux-db:

Start the database first docker-compose up db and then the application docker-compose up miniflux.

Remember that you still need to run the database migrations and create the first user:

# Run database migrations
docker exec -ti <container-name> /usr/bin/miniflux -migrate

# Create the first user
docker exec -ti <container-name> /usr/bin/miniflux -create-admin

Another way of doing the same thing is to populate the variables RUN_MIGRATIONS, CREATE_ADMIN, ADMIN_USERNAME and ADMIN_PASSWORD.

For example:

version: '3'
services:
    miniflux:
        image: miniflux/miniflux:latest
        ports:
            - "80:8080"
        depends_on:
            - db
        environment:
            - DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
            - RUN_MIGRATIONS=1
            - CREATE_ADMIN=1
            - ADMIN_USERNAME=admin
            - ADMIN_PASSWORD=test123
    db:
        image: postgres:latest
        environment:
            - POSTGRES_USER=miniflux
            - POSTGRES_PASSWORD=secret
        volumes:
            - miniflux-db:/var/lib/postgresql/data
volumes:
    miniflux-db: