Ich nutze sehr gerne RSS-Feeds , wenn es darum geht, über neue Blog-Beiträge oder aktuelle Nachrichten informiert zu sein und diese zu lesen. Im Gegensatz zum Abonnieren von Newslettern, was die Weitergabe der E-Mailadresse erforderlich macht, kann man RSS-Feeds diverser Webseiten von einer zentralen Stelle aus verwalten, d.h. abonnieren, bearbeiten und löschen. Am einfachsten geht dies über einen RSS-Client, der ähnlich wie ein Mailprogramm in regelmäßigen Abständen nach neuen Artikeln der abonnierten Quellen sucht und diese herunterlädt.
Jahrelang habe ich dafür einfache RSS Reader App (z.B. zuletzt die Open Source App Flym News Reader ) genutzt. Solange man nur ein einziges Gerät zum Lesen der Nachrichten benutzt, funktioniert dies auch wunderbar. Die meisten Apps, die ich ausprobiert hatte, unterstützen auch den einfachen Im- und Export der abonnierten RSS-Feeds, sodass ein Wechsel der App recht einfach möglich war.
Irgendwann wollte ich jedoch sowohl auf dem Smartphone als auch auf dem Tablet meine Feeds lesen, wofür eine Synchronisation zwischen den Geräten hilfreich ist.
Ich hatte schon früher einmal die Anwendung Tiny Tiny RSS dafür benutzt. Tiny Tiny RSS ist eine Server-Anwendung, die zentral die RSS-Feeds verwaltet. Mittels spezieller Client-Applikationen kann man dann von dort die Nachrichten abrufen. Was man auf dem Client markiert oder gelesen hat, das wird (wie bei einem IMAP-Postfach) auch so mit dem Server synchronisiert. Trotz des wirklich guten Funktionsumfangs bin ich dennoch nie richtig warm geworden mit Tiny Tiny RSS.
Bei der Suche nach einer leichtgewichtigen Alternative bin ich eines Tages auf Miniflux gestoßen. Wie der Name impliziert, handelt es sich um einen sehr minimalistischen RSS-Server, der mir jedoch alle Funktionen bietet, die ich benötige (inkl. Anlegen mehrerer Accounts für verschiedene Benutzer). Die Web-Oberfläche ist responsiv und wird daher auch gut auf Smartphone- und Tablet-Displays dargestellt. Bequemer und schöner finde ich jedoch das Lesen über eine App. Miniflux bietet hierfür die Fever API, die einige RSS-Apps, wie z. B. Readably und Reeder (beide gefallen mir gut, sind aber leider keine Open Source Software) integriert haben.
Vorbereitung
Da ich für die Installation Docker nutze, muss zunächst Docker auch auf dem System installiert werden, falls dies noch nicht der Fall ist. Dies geschieht mit den folgenden Befehlen:
$ curl -sSL https://get.docker.com | sh
Um bei Docker-Befehlen nicht jedes Mal sudo eintippen zu müssen, wird der Benutzer (in dem Fall pi
der Gruppe Docker hinzugefügt:
$ sudo usermod -aG docker pi
Ich nutze außerdem docker-compose
, weshalb dieses ebenfalls installiert werden muss:
$ sudo apt install docker-compose
Da die Daten innerhalb eines Docker-Containers nur so lange bestehen bleiben, wie der Docker-Container existiert, sollte man für persistenten Speicher ein zusätzliches Docker-Volume oder einfach ein lokales Verzeichnis auf dem Grundsystem anlegen, in dem die Dateien gespeichert werden. In meinem Fall könnte dies z. B. das Verzeichnis /srv/docker-persist/
sein.
Installation von Miniflux mit docker-compose
Miniflux erfordert neben der eigentlichen Installation von Miniflux eine Datenbank, in der die Daten gespeichert werden. Vorgeschlagen wird dafür PostgreSQL.1 Beides lässt sich mittels einer docker-compose.yml
-Datei wie folgt konfigurieren:
version: "2"
services:
miniflux-db:
container_name: Miniflux_Database
restart: always
image: postgres:latest
environment:
POSTGRES_USER: database_username
POSTGRES_PASSWORD: database_password
volumes:
- /srv/docker-persist/miniflux:/var/lib/postgresql/data
miniflux:
container_name: Miniflux
restart: always
image: miniflux/miniflux:latest
ports:
- 8081:8080
environment:
DATABASE_URL: postgres://database_username:database_password@miniflux-db/miniflux?sslmode=disable
RUN_MIGRATIONS: 1
CREATE_ADMIN: 1
ADMIN_USERNAME: admin_username
ADMIN_PASSWORD: admin_password
depends_on:
- miniflux-db
Für die Datenbank (miniflux-db
) kann direkt in der docker-compose.yml
-Datei ein Benutzername (POSTGRES_USER
, hier database_username
) und ein Password (POSTGRES_PASSWORD
, hier database_password
) vergeben werden. Diese Angaben werden für den Miniflux-Container (miniflux
) benötigt. Zudem sollte angegeben werden, wo die Daten dauerhaft gespeichert werden sollen, da die Daten sonst bei einem Neustart des Containers nicht mehr vorhanden sind. Ich habe die Datenbank unter dem Pfad /srv/docker-persist/miniflux
auf dem Server abgespeichert.
Wird Miniflux auf einem lokalen Server, z.B. einem Raspberry Pi betrieben, kann man die DATABASE_URL
so übernehmen und muss nur database_username
und database_password
entsprechend den oben gemachten Angaben anpassen. Natürlich könnte man auch eine externe Datenbank verwenden. In dem Fall müsste die DATABASE_URL
entsprechend angepasst werden. Zusätzlich kann man direkt in der docker-compose.yml
-Datei bereits einen Administrations-Benutzer für Miniflux erstellen (CREATE_ADMIN: 1
), den man für die erste Anmeldung verwenden kann. Die Zugangsdaten können mit ADMIN_USERNAME
und ADMIN_PASSWORD
vergeben werden. Der Standard-Port von Miniflux (8080
) kann bei Bedarf auf einen anderen Port (hier 8081
) gelegt werden.
Anschließend kann man im Terminal mit dem Befehl docker-compose up -d
die Container starten und kurze Zeit darauf die Miniflux-Weboberfläche aufrufen.
RSS-Reader mit Fever-API einrichten
Um einen RSS-Reader, der über die Fever API verfügt, nutzen zu können, muss bei Miniflux noch diese Schnittstelle aktiviert werden. Hierzu geht man im Menü oben auf den Punkt Einstellungen
und anschließend auf Dienste
. Hier kann man verschiedene Schnittstellen, unter anderem die Fever API aktivieren. Außerdem müssen hier noch einmal ein Benutzername und ein Passwort vergeben werden, die nur für die Fever API gelten.
In der App, die zum Abrufen und Lesen der RSS-Feeds genutzt werden soll, muss die URL der Miniflux-Installation gefolgt von dem Zusatz /fever/
angegeben werden, sowie die hierfür vergebenen Zugangsdaten.
Nun kann man seine RSS-Feeds über Miniflux abonnieren und auf allen verknüpften Endgeräten synchronisiert abrufen.