133 lines
3.7 KiB
Markdown
133 lines
3.7 KiB
Markdown
+++
|
|
title = "miniflux setup on debian"
|
|
date = 2022-11-30
|
|
tags = ['Self-host', 'rss']
|
|
+++
|
|
|
|
Looking for a minimal self-hosted feed reader I found [miniflux](https://miniflux.app/). But trying to set it up I found my self trying to set it up for 3 freaking hours since I only recently started to self-host things. So here I will try to explaing it in the most easy way how to set it up on a debian server with https using certbot and nginx.
|
|
|
|
<!-- more -->
|
|
|
|
For this tutorial I expect that you already have a server seted up with nginx and certbot. To set up this things check out [landchad](https://landchad.net)
|
|
|
|
## Installing needed packages
|
|
|
|
You will first need to setup miniflux apt repository to install it on your system.
|
|
``` bash
|
|
echo "deb [trusted=yes] https://repo.miniflux.app/apt/ /" | sudo tee /etc/apt/sources.list.d/miniflux.list > /dev/null
|
|
apt update
|
|
```
|
|
|
|
Then just install the needed packages.
|
|
``` bash
|
|
apt install miniflux postgresql
|
|
```
|
|
|
|
## Setting up postgres database and miniflux
|
|
|
|
Here I will detail steps to create the postgres database.
|
|
|
|
### Initial postgres setup
|
|
``` bash
|
|
# Switch to the postgres user
|
|
$ su - postgres
|
|
|
|
# Creating a miniflux user, enter a safe and secure password
|
|
$ createuser -P miniflux
|
|
|
|
# Create a database for miniflux that belongs to our user
|
|
$ createdb -O miniflux miniflux
|
|
|
|
# Create a database for miniflux that belongs to our user
|
|
$ createdb -O miniflux miniflux
|
|
|
|
# Creating extension hstore as superuser
|
|
$ psql miniflux -c 'create extension hstore'
|
|
|
|
# Managing the miniflux database
|
|
$ psql $MINIFLUX_DATABASE
|
|
|
|
# Giving miniflux user all privileges
|
|
> alter user miniflux with superuser;
|
|
|
|
# Exit the postgres database
|
|
> \q
|
|
|
|
# Exit postgres user
|
|
$ exit
|
|
```
|
|
### Miniflux configuration file
|
|
|
|
Open the miniflux configuration file in path `/etc/miniflux.conf` and edit it like this.
|
|
|
|
``` bash
|
|
# See https://miniflux.app/docs/configuration.html
|
|
LISTEN_ADDR=127.0.0.1:8080
|
|
DATABASE_URL=user=miniflux password=PASSWORD_HERE dbname=miniflux sslmode=disable
|
|
RUN_MIGRATIONS=1
|
|
```
|
|
|
|
### Migrating the database and removing superuser privileges in postgres
|
|
|
|
Now we will migrate the database and remove unneded superuser privileges, since it is reccomended in the miniflux documentation.
|
|
|
|
``` bash
|
|
# Migrating the database
|
|
$ miniflux -c /etc/miniflux.conf -migrate
|
|
|
|
# Creating miniflux admin user
|
|
$ miniflux -c /etc/miniflux.conf -create-admin
|
|
|
|
# Restarting the systemctl service
|
|
$ systemctl restart miniflux
|
|
|
|
# Entering postgres database user
|
|
$ su - postgres
|
|
|
|
# Entering miniflux database
|
|
$ psql $MINIFLUX_DATABASE
|
|
|
|
# Removing unneded superuser privileges from miniflux user
|
|
> alter user miniflux with nosuperuser;
|
|
|
|
# Exit the postgres database
|
|
> \q
|
|
|
|
# Exit postgres user
|
|
$ exit
|
|
```
|
|
|
|
## Nginx and certbot setup
|
|
|
|
Make sure to have a domain to use for your miniflux setup.
|
|
|
|
Create and open a nginx config with path `/etc/nginx/sites-available/miniflux.conf` and add this
|
|
``` nginx
|
|
server {
|
|
server_name your.domain.ext;
|
|
listen 80;
|
|
listen [::]:80;
|
|
|
|
location / {
|
|
proxy_pass http://127.0.0.1:8080;
|
|
proxy_redirect off;
|
|
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;
|
|
}
|
|
}
|
|
```
|
|
|
|
Now just link the config to enabled sites and restart nginx service.
|
|
``` bash
|
|
$ ln -s /etc/nginx/sites-available/miniflux.conf /etc/nginx/sites-enabled/miniflux.conf
|
|
$ systemctl restart nginx
|
|
```
|
|
|
|
To get https on your domain you just need to run `certbot --nginx` same as in this [tutorial](https://landchad.net/basic/certbot/)
|
|
|
|
## Finishing words
|
|
|
|
I hope that this wasn't hard to follow and shouldn't take hours like it took me first time I tried to set this all up.
|