Let you entertain you! - Eigene Dienste unter Linux hosten

28.10.2020 | Thilo Mull in howto

Gründe gegen die Großen

Für all die oben genannten Bedürfnisse existieren eine Vielzahl an Lösungen, die von Firmen entweder kostenlos oder für wenig Geld zur Verfügung gestellt werden. Diese sind so gebaut, dass sie bequem zu nutzen sind und sie werden auch von vielen Menschen genutzt. Jedoch: Obwohl sie oft kostenlos nutzbar sind, sind sie keineswegs umsonst. Der gewichtigste Grund gegen die Verwendung von sogenannten Cloud-Lösungen zum Teilen von Daten wie Fotos oder Dokumenten liegt darin, dass Sie die Daten dem Betreiber des Dienstes anvertrauen müssen. Dies bedeutet, dass Sie sich zum einen den Bedingungen des Dienstes unterwerfen müssen und zum anderen, dass Sie dem Betreiber im Umgang mit den Daten vertrauen müssen. Einige Anbieter haben Regeln darüber, welche Daten, z.B. bestimmte Motive auf Bildern, nicht bei ihnen hinterlegt werden dürfen. Um diese Regeln durchzusetzen werden sämtliche Daten aller Nutzer durchsucht und solche, die gegen die Regeln verstoßen, einfach gelöscht [1][2]. Problematisch ist dabei nicht nur, dass sich diese Regeln jederzeit ändern können, sodass nicht gewiss ist, was morgen automatisch gelöscht wird, sondern ebenso, dass die Dienste standardmäßig alle bei ihnen hinterlegten Daten automatisiert, auch inhaltlich, analysieren. Somit wird der Einsatz für private oder auch geschäftliche Daten recht heikel. Dasselbe gilt übrigens für Mails sowie deren Anhänge. Auch diese werden systematisch gelesen und analysiert [3]. Wenn Daten beim Anbieter gelöscht werden, so muss darauf vertraut werden, dass diese Daten auch tatsächlich gelöscht wurden. Auch dies ist nicht immer gegeben und kommt lediglich durch Zufälle ans Tageslicht [4]. Darüber hinaus besteht ein Abhängigkeitsproblem, denn ist der Dienst nicht verfügbar oder plötzlich insolvent, verkauft oder ändert die Geschäftsordnung, so besteht unter Umständen kein Zugriff mehr auf die eigenen Daten [5][6][7]. Kurz: wer seine Daten in kostenlosen Lösungen ablegt, verliert vollständig die Kontrolle über diese, wer die Daten bei externen Cloudbetreibern mit einem geschäftlichen Vertrag ablegt, macht sich immerhin von diesen abhängig.

Neben den Clouddiensten, bei denen es in erster Linie darum geht, eigene Daten hochzuladen, existieren mittlerweile auch Dienste, um Daten ausschließlich herunterzuladen. Hierzu gehören Plattformen, um Musik zu hören oder Filme und Serien zu schauen. Dort werden zwar nicht die eigenen Daten analysiert, jedoch das eigene Verhalten, um daraus Nutzungsdaten zu generieren. Wer auf einer solchen Plattform Medien konsumiert, muss sich darüber im Klaren sein, dass das eigene Nutzerverhalten genauestens analysiert wird [8][9]. Das Ziel ist, die Nutzer möglichst lange auf der Plattform zu halten, damit mehr Daten erzeugt und erhoben werden können. Diese werden dann unter anderem dafür genutzt, bessere Vorschläge machen zu können, was jedoch den Effekt haben soll, dass die Nutzer mehr Zeit auf der Plattform verbringen. Das Geschäftsmodell basiert darauf, möglichst detaillierte Datensätze an Geschäfts- und Werbekunden zu verkaufen. Dabei wird z.B. erhoben, was wie lange konsumiert wird, aber auch Daten wie Alter, Geschlecht, Standort, Tageszeit und Plattform (Gerät, Browser, App, etc…) [10]. Von einer anderen Perspektive aus betrachtet wird der Nutzer zum Datenproduzenten und die zur Verfügung gestellten Inhalte sind nur Mittel zum Zweck, um die Nutzer an die Plattform bzw. das Eingabeinterface zu binden [11]. Hinzu kommt, dass die konsumierten Medien nicht in den eigenen Besitz übergehen, sondern mit einer Lizenz für eine bestimmte Dauer zum Konsum zur Verfügung stehen. Wirft ein Anbieter etwas aus dem Programm, das gestern noch verfügbar war, ist es plötzlich nicht mehr verfügbar [12]. Auch für E-Books existiert dieses Problem, sobald sich das Gerät in einer permanenten Verbindung zum Online-Shop befindet. Die erworbenen Bücher können plötzlich verschwinden oder verändert werden [13][14]. Im Gegensatz zu Büchern aus Papier oder E-Books ohne Kopierschutz befinden sich diese E-Books nämlich nicht im eigenen Besitz. In jedem Fall kommt die vermeintliche Bequemlichkeit hinter all diesen Diensten also mit Einbußen und einem langen Schatten.

Der Ausgang des Menschen aus seiner digitalen Unmündigkeit

Die gute Nachricht lautet, dass es heutzutage sehr wohl möglich ist, sich von vielen dieser Dienste zu emanzipieren. Bestand der große Nachteil der eigenen CD-, bzw MP3-Sammlung beispielsweise darin, dass der Konsum meistens an einen bestimmten Ort gebunden war, so ist es heute problemlos möglich seine eigene Sammlung entweder auf das Smartphone zu streamen oder mindestens automatisch zu synchronisieren. Dasselbe gilt für andere Medien wie Filme und Serien, die als DVD erworben wurden und heute über den Webbrowser gestreamt werden können, oder die eigene Fotosammlung, die vielleicht mit guten Freunden geteilt werden soll. Auch für das Teilen von Daten, die Abstimmung von Terminen oder die Kommunikation in Privatheit existieren Open-Source-Lösungen, die selbst betrieben werden können. Heutzutage ist es möglich ein eigenes, nahezu geschlossenes Ökosystem zu betreiben, dass transparent von einer weltweiten großen Gemeinschaft entwickelt und stetig verbessert wird.

Im Folgenden will ich einen Überblick über einige diese Werkzeuge liefern, gepaart mit kurzen Hinweisen zu Installation und Betrieb.

Die Grundlage: Ein bisschen Linux und der eigene Server

Gegen das Betreiben eigener Dienste wird häufig angebracht, dass es ein Genie brauche und die Bereitstellung der nötigen Hardware teuer sei. Beidem würde ich widersprechen, denn das Aufsetzen der meisten Dienste ist nicht sonderlich schwer – besonders, wenn z.B. Docker benutzt werden kann. Bei den Kosten kommt es darauf an, was umgesetzt werden soll. Die meisten Werkzeuge, bei denen keine großen Datenmengen gespeichert werden müssen, können auf virtuellen Maschinen gehostet werden, die bei den großen deutschen Hostinganbietern für unter 5€ im Monat zu bekommen sind. Zu diesen Werkzeugen gehören etwa Terminfindung, Kalenderfunktionen, Online-Textverarbeitung, Gruppentelefonate oder Cloudspeicher mit bis zu 50 Gigabyte. Für Speicherplatzintensive Anwendungen wie die eigene Musik- oder digitale DVD-Sammlung, ein Fotoarchiv oder Backups empfiehlt sich ein kleiner Server daheim. Solche Server können entweder recht günstig selbst zusammengestellt oder schon fertig als sogennantes NAS (Network attached Storage) gekauft werden. Beides hat Vor- und Nachteile: Der selbst gebaute Server kann freier konfiguriert, die Linuxdistribution selbst gewählt werden und zumeist sind die Hardwaremöglichkeiten umfangreicher. Die bereits fertigen NAS-Systeme der großen Hersteller kommen dagegen in der Regel fertig eingerichtet und haben ein spezielles Betriebssystem vorinstalliert, in dem über eine Weboberfläche eine Vielzahl von Anwendungen konfiguriert werden kann. Um die zu Hause gehosteten Dienste auch über das Internet erreichen zu können, lohnt sich die Anschaffung einer festen Ip-Adresse beim Internet Service Provider. Da dies leider immer weniger angeboten wird, kann mit DynDNS (Dynamisches DNS) [15] Abhilfe geschaffen werden.

Ich möchte hier nicht weiter auf schon fertige NAS-Systeme eingehen, da diese nicht alle vorgestellten Programme unterstüzen. Stattdessen wird hier ein Server mit der Linux-Distribution Debian zu Grunde gelegt. Auf diesem Server sollte ein Webserver installiert sein, hier wird mit Aapche gearbeitet, Nginx ginge allerdings genausogut. Die benötigten Fähigkeiten sind eine generelle Orientierung auf der Linux-Kommandozeile sowie das Lesen und Verstehen von Installationsanleitungen (“How-Tos”).

Nextcloud: Die eigene Cloud die fast alles kann

Mit Nextcloud [16] bietet sich die Möglichkeit, viele der oben genannten Anwendungen in einem abzuhaken. Als weboberflächenbasierte Cloud kann Nextcloud nicht nur über den Browser, sondern auch über Desktop- und mobile Apps erreicht werden. Neben dem Ablegen und Freigeben von Daten können darüber hinaus noch viele Funktionen über Plugins installiert werden. Eine Nextcloudinstanz kann somit problemlos Daten und deren Freigaben verwalten, Kalender, Kontakte und Aufgaben zwischen Geräten synchronisieren, Officedokumente im Browser bearbeiten, Videotelefonie anbieten, Bilder sortieren, teilen und anzeigen, Mindmaps verwalten und vieles mehr [17]. Über die Benutzerverwaltung können beliebig viele Benutzer angelegt werden, sodass im Zweifel die ganze Familie und Freunde die Cloud mitbenutzen können. Über die Desktop- und Mobilclients (Android und iOS) können einfach automatische Backups von Verzeichnissen, Fotos oder Chatverläufen erstellt werden, die die Daten z.B. immer dann synchronisieren, wenn sich das Gerät ins Wlan einwählt. Mit dieser Funktion könnten Sie auch dafür sorgen, dass Ihre Musiksammlung immer automatisch mit Ihrem Telefon abgeglichen wird. Für die Synchronisation der Kalender wird auf Androidtelefonen noch das Open-Source-Programm davx5 [18] benötigt, iOS Geräte haben haben diese Funktion bereits integriert.

Für die Installation einer Nextcloud extisieren zahlreiche detaillierte Anleitungen im Netz [19]. Hier soll deshalb lediglich der grobe Umfang geschildert werden.

Eine Nextcloud benötigt für den Betrieb eine aktuelle PHP-Version (ab 7.3), eine Datenbank (MariaDB) sowie einen Webserver (Apache). Nachdem die Pakete über den Paketmanager installiert wurden, müssen einige PHP-Einstellungen geändert, eine Datenbank samt Nutzer für die Nextcloud und eine V-Host Konfiguration im Apache-Webserver eingerichtet werden. Die Software für die Nextcloud selbst wird einfach als Zip-Archiv heruntergeladen und in den Pfad entpackt, der als DocumentRoot in der V-Host Konfiguration eingetragen ist. Alle weiteren Einstellungen sowie die Installation von Plugins können Sie dann über das Webinterface vornehmen.

Beispiel einer V-Host-Konfiguration für eine Nextcloud mit apache2:

<VirtualHost *:80>
    ServerName nextcloud.example.com
    ServerAdmin admin@example.com
    DocumentRoot /var/www/nextcloud/
</VirtualHost>
Die Benutzeroberfläche von Nextcloud
Die Benutzeroberfläche von Nextcloud

Terminabsprache mit dudle

Für alle, die gerne Termine mit anderen koordinieren oder einfache Umfragen erstellen möchten, empfiehlt sich der schlanke Dienst dudle [20]. Die Funktionsweise entspricht der des proprietären Namensvetters, jedoch bleiben alle Daten in eigener Hand.

Um dudle auf Ihrem Server zu installieren, laden Sie die letzte Version von der Github-Seite herunter, und platzieren Sie das Verzeichnis unter /var/www/ auf Ihrem System. Nachdem Sie eine V-Host Konfiguration mit diesem Verzeichnis als DocumentRoot erstellt und das Apache Modul cgi akvtiviert haben, ist Ihr dudle erreichbar und einsatzbereit. Nach der Installation können Sie noch weitere Einstellungen wie eine Auswahl der Sprache vornehmen oder das Erscheinungsbild anpassen.

Beispiel einer V-Host-Konfiguration für dudle mit apache2:

<VirtualHost *:80>
    ServerName dudle.example.com
    ServerAdmin admin@example.com
    DocumentRoot /var/www/dudle
</VirtualHost>
Das dudle von B1 Systems
Das dudle von B1 Systems

Musik überall mit Airsonic

Mit Airsonic [21], das aus dem Dienst Subsonic hervorgegangen ist, ist es ein Kinderspiel geworden, seine eigene Musiksammlung über Wlan oder auch über das Internet verfügbar zu machen. Optimiert für MP3-Dateien beherrscht Airsonic durch das Einbinden des Konvertierungswerkzeugs ffmpeg [22] alle gängigen Audioformate. Darüber hinaus kann Airsonic durch den Einsatz von ffmpeg auch Echtzeitkompression von MP3-Dateien und Echtzeitkonvertierung von Formaten wie z.B. Lossless-Dateien (.flac) zu MP3. Durch diese Funktion können Bandbreite und Traffic gespart werden, wenn z.B. der Client mit mobilen Daten benutzt wird. Zusätzlich zur eigenen Sammlung beinhaltet Airsonic die Funktion, Podcastfeeds einzubinden und diese automatisch herunterzuladen und zu speichern. Gerade in Deutschland, wo die öffentlich-rechtlichten Podcasts nach einer bestimmten Zeit depubliziert werden, ist dies eine sehr nützliche Funktion. Neben dem Webfrontend, das über den Browser bedient wird, stehen zahlreiche Apps für Android wie auch iOS in den entsprechenden Stores zur Verfügung.

Um Airsonic in Betrieb zu nehmen, kann neben einer Installation im System auch auf WAR-Dateien [23] (Web Application Archive für Java) oder Dockercontainer [24] zurückgegriffen werden, was das Aufsetzen zu einer sehr kurzen Angelegenheit macht. Damit die Instanz erreichbar wird, muss eine V-Host Konfiguration im Webserver eingerichtet werden. Die Konfiguration der auszulesenden Verzeichnisse findet in der Weboberfläche statt.

Für den Betrieb verfügt Airsonic über eine sehr umfangreiche Dokumentation [25].

Beispiel einer V-Host Konfiguration für Airsonic mit apache2:

<VirtualHost *:80>
    ServerName airsonic.example.com
    ServerAdmin admin@example.com
    redirect / http://localhost:9090/

    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:9090/
    ProxyPassReverse / http://localhost:9090/
</VirtualHost>

Der Dienst airsonic lauscht auf dem Port 9090, weshalb der Aufruf der URL airsonic.example.com einen redirect auf diesen Port macht. Dies wird in diesem Fall nötig, da der Dienst nicht in einem DocumentRoot-Verzeichnis, sondern in einem Container betrieben wird. Die Proxyeinstellungen dienen mit dem ProxyPass und dem ProxyPassReverse der Serverinternen Umleitung auf diesen Port, ohne dass sich die URL in der Adressleiste des Browsers verändert. Somit kann der Dienst unter dem Port 9090 im Browser über die Domain airsonic.example.com aufgerufen werden.

Screenshot von Airsonic
Screenshot von Airsonic

Filme streamen mit Jellyfin

Um die eigene Film- und Seriensammlung vom eigenen Server im Netzwerk oder im Internet zu streamen ist Jellyfin [26] optimal. Bei Jellyfin handelt es sich um einen Fork von emby, das irgendwann proprietär-kommerzielle Wege eingeschlagen hat. Jellyfin liest Verzeichnisse nach Filmdateien aus, stattet diese automatisch mit Metadaten von IMDb aus und kann sie mit ffmpeg in Echtzeit an die mögliche Bandbreite anpassen. Zusätzlich verfügt Jellyfin über eine Reihe von Plugins [27], die dabei helfen, die Medien zu sortieren, automatisch Untertitel von Opensubtitles zu laden oder Benachrichtigungen zu senden. Zudem verfügt Jellyfin über DLNA [28], womit es möglich wird die Inhalte direkt auf Fernseher zu streamen, wenn diese ebenfalls über DLNA verfügen. Auf dem PC kann mit Jellyfin komfortabel über den Browser gestreamt werden, für Android, wie auch für iOS steht eine App zur Verfügung. Desweiteren vefügt eine Reihe von TV Erweiterungen wie der Fire TV Stick oder Chromecast über eine Jellyfin Integration [29].

Neben einer Installation im System über den Paketmanager kann Jellyfin auch über Docker [30] in Betrieb genommen werden. Damit die Instanz erreichbar wird, muss eine V-Host Konfiguration im Webserver eingerichtet werden. Bei Problemen hilft ein Blick in die sehr umfangreiche Dokumentation [31].

Beispiel einer V-Host Konfiguration für Jellyfin mit apache2:

<VirtualHost *:80>
    ServerName jellyfin.example.com
    ServerAdmin admin@example.com
    redirect / http://localhost:9091/

    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:9091/
    ProxyPassReverse / http://localhost:9091/
</VirtualHost>

Auch hier wird die URL über einen redirect auf den Port des Dienstes umgeleitet. Für eine Erläuterung schauen Sie in dem Abschnitt V-Host Konfiguration für Airsonic.

Jellyfin Übersicht
Jellyfin Übersicht
Jellyfin Detail
Jellyfin Detail
Jellyfin Player
Jellyfin Player

E-Books verwalten mit Calibre-Web

Wer gerne liest, nutzt eventuell schon Calibre [32] zum Verwalten der E-Book-Sammlung. Wer aber auf seine Bibliothek nicht nur lokal auf einem Rechner zugreifen will, für den bietet sich Calibre-Web [33] an. Das in Python geschriebene Calibre-Web liest schon vorhandene Calibre-Datenbanken aus und stellt deren Inhalt übersichtlich in einer Weboberfläche zur Verfügung. Nachdem die Datenbank einmal eingelesen ist, kann diese von Calibre-Web weitergeführt und mit einer Menge an zusätzlichen Funktionen erweitert werden. Hierzu gehören z.B. das Suchen von Metadaten, die Konvertierung in andere Formate, das Hinterlegen verschiedener Formate, Untestützung zum Lesen von EPUB- und PDF-Dateien im Browser, das Bereitstellen eines OPDS-Feeds für zahlreiche Apps sowie die Integration in viele bestehende E-Book-Ökosysteme.

Da es sich bei Calibre-Web um ein Python-Programm handelt, kann es einfach gestartet werden. Eventuell fehlende Abhängigkeiten können mit dem Pyhton-Paketmanager pip installiert werden. Ebenso exsitieren Images für Docker [34]. Damit Calibre-Web erreichbar wird, muss eine V-Host Konfiguration im Webserver eingerichtet werden.

Auch Calibre-Web verfügt über eine Dokumentation [35].

Beispiel einer V-Host Konfiguration für Calibre mit apache2:

<VirtualHost *:80>
    ServerName calibre.example.com
    ServerAdmin admin@example.com
    redirect / http://localhost:9092/

    ProxyRequests Off
    ProxyPreserveHost On
    <Proxy *>
        Order deny,allow
        Allow from all
    </Proxy>
    ProxyPass / http://localhost:9092/
    ProxyPassReverse / http://localhost:9092/
</VirtualHost>

Auch diese V-Host Konfiguration entspricht dem Muster der beiden vorangegangenen, der Eintrag des Ports muss mit dem des Dienstes übereinstimmen.

Calibre-Web nach der Installation einrichten Die Oberfläche von Calibre-Web

Fazit

Die Einrichtung der oben genannten Dienste führt weg von den großen, monolithischen Anbietern und deren Ökosystem, hin zu seinem eigenen, dezentralen Garten aus Open-Source Diensten – und zur Wiedererlangung der eigenen Unabhängigkeit. Natürlich ist es ebenso möglich, eine Reihe weiterer Dienste selber zu hosten. Gerade in der Zeit der Pandemie ist beispielsweise unabhängige Videotelefonie sehr gefragt. Wie Sie ein System, das über das Nextcloudplugin hinaus reicht, mit BigBlueButton aufsetzen können, habe ich hier bereits beschrieben. Ebenso lässt sich mit dem Betreiben von eigenen, dezentralen Open-Source-Diensten die Privatsphäre deutlich besser schützen. Zu solchen Diensten gehören etwa der eigene Messenger mit XMPP [36], die eigene Metasuchmaschine mit Searx [37], der eigene VPN-Server mit OpenVPN [38] und der eigene Mailserver in Docker mit Mailcow [39]. Aber dazu ein andermal mehr.

Wichtiger Hinweis

Sofern Ihre Dienste über das Internet, d.h. außerhalb Ihres lokalen Netzwerks erreichbar sind, wird dringend empfohlen, eine Transportverschlüsselung (https) per TLS einzurichten. Werden die Daten ohne TLS übertragen, so können diese von jedermann mitgelesen werden. Das für Transportverschlüsselung benötigte Zertifikat können Sie kostenlos von Let’s encrpyt [40] beziehen. Hierfür gibt es zahlreiche Werkzeuge, wie z.B. certbot-auto [41], die dies für Sie automatisieren. Damit certbot-auto ein Zertifikat für eine Domain oder Subdomain ausstellen kann, muss diese über einen gültigen DNS Eintrag sowie eine VHost Konfiguration im Webserver verfügen. Die VHost Konfiguration für die verschlüsselte Verbindung (https über Port 443 statt Port 80) wird von certbot-auto automatisch angelegt und geladen.

Wenn Sie certbot-auto installiert haben, erhalten Sie mit dem folgenden Befehl ein Zertifikat für die mit der Option -d angegebene (Sub-)Domain:

$ sudo certbot-auto -d <domain>

Ob die Verbindung zu Ihren Diensten transportverschlüsselt erfolgt, können Sie in Ihrem Browser überprüfen, indem Sie die URL des Dienstes mit https:// statt http:// aufrufen.

Thilo Mull
Thilo Mull
Thilo Mull arbeitet seit 2019 als Technical Writer bei B1 Systems GmbH und verfasste seitdem unter anderem Schulungsunterlagen zu Themen wie Ansible, Salt und Kubernetes. Seit seiner Jugend ist er fasziniert von freier und Open-Source-Software und betreibt mit Begeisterung so viele Dienste wie möglich selber.

 


Haben Sie Anmerkungen oder Nachfragen? Melden Sie sich unter blog%b1-systems.de
Col 2