Kategorie: Projekt

Ein Upgrade für den Homeserver Teil 14 – Immich

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Kennt ihr Google Fotos? Das ist ein Programm von Google, um seine Fotos zu verwalten. Die Fotos vom Smartphone werden mit der Cloud synchronisiert und sind dann auf allen Geräten, auf denen man mit seinem Google Account angemeldet ist, synchronisiert. Man bekommt ab und zu ganz nette Rückblicke („Schau dir an, was du vor X Jahren gemacht hast …“) und man kann „intelligent“ nach Dingen suchen, die auf den Fotos zu sehen sind.

Google Fotos finde ich sowohl optisch als auch von den Funktionen her sehr ansprechend. Wären da nicht zwei kleine (eher eine kleine und eine sehr große) Sachen, die mich stören würden. Das für mich kleinere Problem ist, dass meine privaten Fotos auf Google Servern liegen. Das stört mich jetzt vielleicht weniger als so manch anderen, aber wenn die Fotos bei mir bleiben würden, fände ich das schon besser. Das viel größere Problem ist aber der begrenzte Speicherplatz. Mit 15 GB gehört Google zwar zu den Cloudanbietern, die im kostenlosen Programm am meisten Speicherplatz bieten. Nach ein paar Jahren wird das aber für Fotos einfach zu wenig.

Deswegen machte ich mich auf die Suche nach einer selbst gehosteten Alternative und bin auf Immich gestoßen. Als ich die Oberfläche gesehen habe, war ich echt begeistert. Diese ist nahezu identisch zur Oberfläche von Google Fotos. Auch der Funktionsumfang ist ähnlich. Damals habe ich noch versucht, Immich auf einem RaspberryPi zu installieren. Grundsätzlich möglich, man sollte aber dann auf die Objekt- und Personenerkennungsfunktionen verzichten. Das zieht einfach zu viel CPU-Last, bzw. wenn man seine bestehenden Fotos importiert, wird man nie fertig, da die Objekterkennung für die paar tausend Fotos VIEL zu lange braucht. Da ich mir aber einen neuen Server mit mehr Leistung angeschafft habe, sollte das auf diesem um einiges besser laufen.

Kurze Info vorweg: Die Entwickler von Immich weisen auf ihrer Webseite auf die schnelle Entwicklung hin. Immich sollte nicht die einzige Methode sein, seine Fotos zu speichern.

Installation

Die Dokumentation bietet viele Installationsmöglichkeiten an. Ein Installationsskript, Docker und sogar Unraid sind dabei. Da ich bereits eine Portainer-Instanz bei mir am Laufen habe, wähle ich diese Methode.

Da die Installation in der Dokumentation sehr gut erklärt ist, gehe ich an dieser Stelle nicht weiter darauf ein.

Erste Einrichtung

Zunächst kam bei mir die Fehlermeldung, dass Immich keinen Zugriff auf die Datenbank hätte. Das lag daran, dass diese einfach noch nicht fertig gestartet war. Nach kurzer Wartezeit wurde ich dann schon vom schlichten Willkommens-Screen begrüßt:

Einrichtung von Immich

Anschließend kann man einen Admin-Account erstellen:

Anlegen eines Adminaccounts

Oberfläche

Wie schon gesagt, ist die Oberfläche von Immich nahezu identisch zu der von Google Fotos. Hier mal ein paar Vergleiche:

Startseite von Immich
Startseite von Immich
Startseite von Google FOtos
Startseite von Google Fotos
"Erinnerungen" in Immich
„Erinnerungen“ in Immmich
"Erinnerungen" in Google Fotos
„Erinnerungen“ in Google Fotos

Ein Upgrade für den Homeserver Teil 13 – WireGuard mit wg-easy

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Was ist WireGuard?

WireGuard ist eine Software, um eine VPN-Verbindung aufzubauen. Sie ist im Vergleich zu anderen, wie zum Beispiel OpenVPN schneller und einfacher.

Installation von WireGuard

WireGuard selbst ist bereits in den Linux-Kernel integriert. Eine schöne Möglichkeit, Verbindungen einfach zu verwalten, aber nicht. Hier hilft uns das Tool „wg-easy„. Damit lassen sich WireGuard-Verbindungen wirklich sehr einfach verwalten. Wg-easy wird im Docker-Container installiert. Dazu erstelle ich einen neuen Container in Portainer, gebe ihm den Namen „Wireguard“ und wähle das Image „ghcr.io/wg-easy/wg-easy:latest“ im Advanced Mode. Außerdem gebe ich den Port 51820 über UDP und den Port 51821 über TCP frei. Letzteres wird später der Port für das Webinterface sein.

Konfiguration von WireGuard in Docker

Anschließend erstelle ich ein Volume für die Konfigurationsdateien:

Anlegen eines Volumes

Da WireGuard einige zusätzliche Berechtigungen braucht, ist die Konfiguration dieses Containers etwas komplizierter als die der Container, die wir bisher in dieser Artikelserie hatten. Unter „Capabilities“ muss man die Optionen „NET_ADMIN“ und „SYS_MODULE“ aktivieren.

Setzen der Capabilities

Zudem müssen im Menü „Runtime & Ressources“ die Sysctls net.ipv4.conf.all.src_valid_mark und net.ipv4.ip_forward jeweils mit dem Wert „1“ hinzugefügt werden.

Setzen der Sysctls

Im letzten Schritt füge ich noch Umgebungsvariablen hinzu. Eine vollständige Liste der möglichen Variablen findet man im Git-Repository von wg-easy. Ich verwende die Einstellungen PASSWORD, um das Passwort für das Webinterface festzulegen, WG_HOST, um den Hostname des VPN-Servers festzulegen (Der Hostname, unter dem der Server von außerhalb des Heimnetzwerks erreichbar ist), WG_PORT, um den Port von außerhalb festzulegen (Wer aufmerksam war, hat erkannt, dass das nicht der Port ist, unter dem der VPN-Server innerhalb meines Heimnetzwerks erreichbar ist.) und WG_DEFAULT_DNS. Das ist der DNS-Server, den die VPN-Clients standardmäßig verwenden. In meinem Fall ist das die IP meines Servers innerhalb des Docker-Netzwerkes. Das führt dann dazu, dass alle VPN-Clients automatisch mein Pihole verwenden.

Setzen der Umgebungsvariablen

Nachdem der Container erstellt ist, erreicht man das Webinterface unter dem vorher angegebenen Port.

Erstellen einer VPN-Verbindung

Im Webinterface muss man anschließend sein vorher festgelegtes Passwort eingeben.

WireGuard Webinterface Passworteingabe

Dann kann man mit „New“ eine Konfiguration für einen neuen VPN-Client anlegen. Dabei muss man nur den Namen eingeben und schon erscheint der Client in der Liste.

WireGuard Webinterface

Es gibt nun zwei Möglichkeiten, die Konfiguration auf den Client zu laden. Entweder man klickt auf den QR-Code, den man dann mit der WireGuard-App scannen kann, oder man lädt die Konfigurationsdatei herunter.

Ein Upgrade für den Homeserver Teil 12 – Mosquitto

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Was ist MQTT?

MQTT ist ein Übertragungsprotokoll, das besonders Anwendung im IoT-Bereich findet. Dabei gibt es eine Zentrale, den Broker. Möchte man als Client etwas senden, so sendet man diese Nachricht unter einem Topic zuerst an den Broker. Das nennt man dann publish. Möchte man als Client etwas empfangen, so kann man bestimmte topics beim Broker abonnieren. Das nennt man subscribe. Das hat den Vorteil, dass Sender und Empfänger sich nicht kennen müssen, sondern nur jeweils den Broker. Die Topics sind mit „/“ aufgebaut, zum Beispiel „sensoren/küche/raumtemperatur“. Wenn man jetzt „sensoren/#“ subscribed („#“ steht für „alles“), dann bekommt man die Daten aller Sensoren. Subscribed man „sensoren/küche/#“, dann nur die der Sensoren in der Küche, usw.

Was ist Mosquitto?

Mosquitto bietet sowohl einen Client, um auf einen MQTT Server zuzugreifen, als auch den MQTT Server selbst. In diesem Beitrag soll es hauptsächlich um den Server gehen.

Installation von Mosquitto

Mosquitto lässt sich recht einfach im Terminal installieren mit:

Konfiguration von Mosquitto

Damit man auch aus dem Netzwerk auf den Server zugreifen kann, muss man noch eine kleine Einstellung vornehmen. Dazu erstellt man die Datei /etc/mosquitto/conf.d/mosquitto.conf:

Und fügt dort folgendes ein:

Um die Einstellungen zu übernehmen, muss man den Mosquitto-Server noch neu starten:

Testen

Möchte man den Server ausprobieren, kann man das zum Beispiel mit einem weiteren Linux-Rechner tun. Dazu installiert man zuerst den Mosquitto Client:

Mit folgendem Befehl lässt sich etwas auf dem Broker subscriben:

Die IP-Adresse musst du natürlich anpassen. „-v“ sorgt dafür, dass nicht nur der Inhalt der Nachricht, sondern auch das Topic angezeigt wird. Hinter dem „-t“ steht in Anführungszeichen das Topic, das man subscriben möchte. „#“ steht für alles.

Mit folgendem Befehl lässt sich eine Nachricht senden:

Die IP-Adresse musst du wieder anpassen. Hinter dem „-t“ steht wieder das Topic und in diesem Fall hinter dem „-m“ die Nachricht.

Ein Upgrade für den Homeserver Teil 11 – Homeassistant

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Was ist Homeassistant?

Homeassistant ist eine Software zur Steuerung, Visualisierung und Automatisierung eines Smarthomes. In Homeassistant lassen sich Produkte von über 2500 Marken einbinden. Diese kann man dann zentral steuern oder automatisieren.

Installationsmethoden von Homeassistant

Grundlegend gibt es 3 Möglichkeiten, Homeassistant zu installieren: als „Homeassistant OS“, im Docker-Container oder direkt.

Homeassistant OS ist, wie der Name schon sagt, ein ganzes OS, also ein Linux-System mit Homeassistant (das übrigens auch hier in Docker installiert ist), Docker und einer vereinfachten Oberfläche, um weitere Docker-Container zu installieren. Praktisch Portainer nur sehr abgespeckt und mit begrenzter Auswahl an Containern. Die Vorteile dieser Installationsmethode sind, dass sie recht einfach ist und man auch als Anfänger recht leicht weitere Software installieren kann. Die Nachteile sind, dass man durch diese abgespeckte Software auch sehr beschränkt ist, vor allem, wenn man Homeassistant OS direkt installiert, da es eben ein ganzes OS ist und so keine weiteren Betriebssysteme parallel installiert werden können. Installiert man es aber in einer VM, zum Beispiel mit Proxmox, fällt dieser Nachteil natürlich weg. Aber auch dann braucht das Homeassistant OS minimal mehr Leistung als bei den anderen beiden Installationsmethoden.

Homeassistant im Docker-Container hat im Gegensatz zu Homeassistant OS eben nicht diese einfache Möglichkeit, andere Software zu installieren. Auch die Installation ist etwas komplizierter. Dafür hat man aber die volle Freiheit in der Wahl des Betriebssystems, unter dem Docker läuft und damit auch mehr Auswahl an Software.

Die direkte Installation von „Homeassistant core“ benötigt kein Docker. Der Funktionsumfang ist aber identisch zur Dockerinstallation. Der große Nachteil hier ist aber, dass die Installation mit Abstand am schwierigsten ist, da man sich hier mit verschiedenen Python-Versionen und Modulen herumschlagen muss.

Eine Übersicht der Installationsmethoden findet man hier.

Installation von Homeassistant

Ich habe mich für die Dockerinstallation entschieden. Dazu lege ich in Portainer einen neuen Container an. Diesen nenne ich „homeassistant“ und wähle im „Advanced mode“ das Image „ghcr.io/home-assistant/home-assistant:stable“.

Installation von Homeassistant in Portainer

Im Menü „Network“ wähle ich die Methode „host“.

Wählen der Netzwekmethode

Anschließend lege ich unter „env“ eine neue Umgebungsvariable für die Zeitzone an:

Setzen der Umgebungsvariablen

Dann aktiviere ich unter „Runtime & Resources“ den Priviledged Mode.

Installation von Homeassistant in Portainer

Als Letztes erstelle ich noch zwei Bind-Volumes. Beim ersten musst du den Pfad im Host bei deiner Installation anpassen. Beim zweiten ist es wichtig, dass er Read-Only gemountet ist.

Erstellen der Volumes

Jetzt lässt sich der Container erstellen und anschließend die Weboberfläche von Homeassistant unter https://IP_ADRESSE:8123 öffnen.

Einrichten von Homeassistant

Dort begrüßt uns auch schon der Einrichtungsassistent:

Einrichtungsassistent von Homeassistant

Im ersten Schritt legt man einen Adminaccount an:

Benutzer anlegen in Homeassistant

Anschließend legt man seine Heimatadresse fest, die zum Beispiel für die Wettervorhersage oder für Geofencing verwendet wird.

Heimatort festelgen

Für die Einheiten muss noch das Land festgelegt werden.

Land festlegen für Einheiten

Möchte man anonyme Diagnosedaten an die Entwickler senden, kann man das im nächsten Schritt aktivieren:

Diagnosedaten

Homeassistant sucht automatisch nach Geräten im Heimnetzwerk. Möchte man diese bereits bei der Einrichtung hinzufügen, kann man das mit einem Klick auf das jeweilige Gerät tun.

Hinzufügen von Geräten

Installation von HACS

Homeassistant selbst bietet schon extrem viele Erweiterungen an. Noch mehr bekommt man mit dem „Home Assistant Community Store“ kurz HACS. Hier gibt es auch Erweiterungen für das Dashboard, zum Beispiel ein Wetterradar oder eine Erweiterung, um das Design des Dashboards per CSS zu ändern.

Um HACS zu installieren, geht man ins Terminal und wechselt in das Konfigurationsverzeichnis von Homeassistant. Das ist das Verzeichnis, wo auch unter anderem die Datei „configuration.yaml“ liegt.

Dort gibt man folgenden Befehl ein:

Anschließend startet man Homeassistant neu, indem man unten links die Entwicklerwerkzeuge öffnet und dort auf „Neu starten“ klickt:

Neustarten von Homeassistant
Neustarten von Homeassistant

Dann kann man unter Einstellungen → Geräte und Dienste → Integration hinzufügen HACS hinzufügen.

Hinzufügen von HACS
Hinzufügen von HACS

Nachdem man die Integration HACS gewählt hat, muss man noch einige Punkte bestätigen. Ich wähle alle außer den letzten. Anschließend muss man noch HACS mit seinem GitHub Account verbinden. Das ist nötig, da die Erweiterungen aus HACS von GitHub heruntergeladen werden.

Hinzufügen von HACS
HACS im Menü von Homeassistant

Hat man alles fertig eingerichtet, findet man HACS im Menü von Homeassistant und hat nun noch viel mehr Möglichkeiten, Geräte einzubinden und sein Dashboard zu gestalten.

Ein Upgrade für den Homeserver Teil 10 – InfluxDB und Grafana

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Was ist InfluxDB, was ist Grafana?

InfluxDB ist eine Datenbank, die darauf spezialisiert ist, zeitbasierte Daten, z.B. Messwerte zu speichern.

Grafana ist eine Software, um diese Daten in Form von verschiedenen Diagrammen zu visualisieren.

Installation von InfluxDB

Die Installation von InfluxDB ist in deren Dokumentation sehr gut erklärt. Die Befehle von dort können wir einfach so ins Terminal übertragen.

Installation von Grafana

Grafana installiere ich als Docker-Container. Dazu lege ich in Portainer einen neuen Container an und wähle das Image „grafana/grafana-enterprise:latest“. Dann gebe ich noch den Port 3000 frei und lege ein Volume an.

Installation von Grafana in Portainer
Installation von Grafana in Portainer: Volumes

Nachdem man den Container erstellt hat, gelangt man mit http://IP_ADRESSE:3000 auf die Weboberfläche von Grafana. Dort muss man noch ein Passwort festlegen, dann ist Grafana einsatzbereit.

InfluxDB in Grafana konfigurieren

Ich gehe davon aus, dass in InfluxDB bereits eine Datenbank angelegt ist. Diese wollen wir nun in Grafana einbinden.

Dazu wähle ich im ausklappbaren Menü links den Punkt „Connections“

Erstellen einer Verbindung von InfluxDB in Grafana

Anschließend wähle ich unter „Add new Connection“ die InfluxDB.

Erstellen einer Verbindung von InfluxDB in Grafana

Dort klicke ich noch auf „Add new data source“.

Erstellen einer Verbindung von InfluxDB in Grafana

Anschließend lässt sich die Verbindung zur Datenbank konfigurieren. Als URL muss die IP-Adresse des Servers eingetragen werden. Standard-Port ist 8086. „localhost“ funktioniert hier nicht, weil „localhost“ auf die IP-Adresse des Docker-Containers zeigt, da wir Grafana ja über Docker installiert haben.

Im unteren Abschnitt muss noch der Name der Datenbank und falls vorhanden der Benutzername und das Passwort eingetragen werden.

Erstellen einer Verbindung von InfluxDB in Grafana

Nach einem Klick auf „Save & test“ erhält man ein „datasource is working“ wenn alles funktioniert hat.

Erfolgsmeldung

Fazit

Auf das Erstellen eines Dashboards gehe ich hier nicht weiter ein, da das abhängig von der Art der Daten sehr unterschiedlich sein kann. Als Inspiration zeige ich hier noch zwei meiner Dashboards.

Einmal ein Systemmonitor meines alten Servers:

Beispieldashboard Grafana
Beispieldashboard Grafana

Und hier die Visualisierung einer PV-Anlage:

Beispieldashboard Grafana
Beispieldashboard Grafana
Beispieldashboard Grafana
Beispieldashboard Grafana

Ein Upgrade für den Homeserver Teil 9 – Jellyfin

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Was ist Jellyfin?

Jellyfin ist eine Streamingsoftware für den eigenen Server. Mit Jellyfin lassen sich Filme und Musik, die auf der Festplatte des Servers liegen, bequem im eigenen Netzwerk streamen. Es erkennt auch automatisch die Medien und fügt Informationen wie Cover, Erscheinungsjahr oder FSK-Freigabe hinzu. Kennt das Endgerät das Format der Medien nicht, konvertiert Jellyfin diese in Echtzeit um.

Einbinden einer NFS Freigabe von Openmediavault

Wer Teil 3 dieser Serie gelesen hat, weiß, dass ich meine Festplatten mit Openmediavault verwalte. Für Jellyfin habe ich dazu eine NFS Freigabe konfiguriert. Diese binde ich nun in mein Ubuntu ein.

Zuerst muss der NFS Client installiert werden:

Anschließend erstellen wir den Mountpoint, also die Stelle im Dateisystem, an dem später das Laufwerk eingehängt werden soll.

Mit dem folgenden Befehl lassen sich alle NFS Freigaben eines Rechners anzeigen. So sieht man, welchen Pfad diese haben.

Jetzt können wir die Freigabe einmal testweise manuell einhängen:

Nachdem ich getestet habe, ob das Einhängen funktioniert hat, hänge ich die Freigabe wieder aus:

Um die Freigabe bei Systemstart automatisch einzuhängen, braucht es einen Eintrag in der Datei /etc/fstab.

Dieser Eintrag sieht bei mir so aus:

Nach dem Speichern mit Strg+O und Schließen mit Strg+X kannst du zum Testen entweder den Server neu starten oder nur mit folgendem Befehl alle Einträge in der fstab einhängen:

Installation von Jellyfin

Ich installiere Jellyfin als Docker-Container. Also lege ich in Portainer einen neuen Container mit dem Namen „Jellyfin“ an und wähle das Image „jellyfin/jellyfin:latest“

Installation von Jellyfin in Docker

Im nächsten Schritt lege ich 3 Volumes an. Das letzte Volume ist der Mountpoint der Festplatte, auf der die Medien liegen.

Installation von Jellyfin in Docker

Im Menü „Network“ wähle ich abschließend noch „Host“ als Netzwerk aus.

Installation von Jellyfin in Docker

Jetzt kann der Container erstellt werden. Die Weboberfläche von Jellyfin ist jetzt unter http://IP_DES_SERVERS:8096 erreichbar.

Einrichtung von Jellyfin

Unter dieser Adresse erreicht man direkt den Einrichtungsassistenten von Jellyfin. Als Sprache wähle ich Deutsch:

Einrichtungsassistent von Jellyfin

Anschließend muss man einen Benutzernamen und ein Passwort für das Admin-Konto festlegen:

Benutzer anlegen

Im nächsten Schritt werden die Medienbibliotheken hinzugefügt. Ich erstelle zu Demonstrationszwecken eine Medienbibliothek für Musik.

Bibliothek einrichten

Als Typ des Inhalts wähle ich also Musik. Auch der Anzeigename bleibt bei „Musik“. Als Verzeichnisse müssen die Verzeichnisse ausgewählt werden, in denen die Musikdateien liegen. In meinem Beispiel oben habe ich meine Festplatte mit Medien in /media/HDD1 gemountet. Im Screenshot unten ist das aber nicht so, da es sich dabei nur um eine Testinstallation handelt. Als Sprache und Land wähle ich Deutsch/Deutschland und aktivieren anschließend die Echtzeitüberwachung. Das ist praktisch, da mit diesem Feature automatisch die Medien hinzugefügt werden, die man ins Medienverzeichnis kopiert.

Erstellen einer Bibliothek

Bei den Diensten aktiviere ich grundsätzlich alle. Sowohl für Bildquellen, als auch für Metadaten.

Erstellen einer Bibliothek
Erstellen einer Bibliothek
Erstellen einer Bibliothek

Anschließend könnte man noch weitere Bibliotheken, z. B. für Filme oder Serien einrichten. Das funktioniert sehr ähnlich. Ich belasse es jetzt aber bei meiner Musikbibliothek und klicke auf „Nächstes“.

fertig eingerichtete Bibliothek in Jellyfin

Dort muss ich nochmal (wie oft habe ich jetzt schon Sprache und Land angegeben? 😅) Sprache und Land angeben, dieses Mal für die Metadaten. Im Abschnitt „Fernzugriff konfigurieren“ belasse ich alles auf Standardeinstellungen.

Konfiguration der Metadaten-Sprache
Fernzugriff konfigurieren

Sowohl die Benutzer- als auch die Administrationseinstellungen von Jellyfin erreicht man im Ausklappmenü link. Dort könnte man zum Beispiel die Bibliotheken bearbeiten.

Einstellung von Jellyfin

Ein Upgrade für den Homeserver Teil 8 – Pihole

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Was ist Pihole?

Pihole ist ein Netzwerkweiter Blocker auf DNS-Ebene, unter anderem zum Blockieren von Werbung und Trackern

Vorbereitungen

Auf Ubuntu läuft standardmäßig ein DNS-Service auf Port 53. Das ist schlecht, denn auf Port 53 soll später unser Pihole laufen. Der Service lässt aber deaktivieren mit:

Jetzt ist unser Ubuntu aber ohne DNS-Server unterwegs, d. h., es ist nicht mehr dazu in der Lage Domains aufzulösen. Das lässt sich mit einem Eintrag in einer Datei beheben:

Dort ändern wir die Zeile nameserver 127.0.0.53 in nameserver 192.168.178.1 oder eben die IP-Adresse eines anderen DNS-Servers.

Ubuntu ist jetzt fertig für die Installation von Pihole.

Installation von Pihole

Wir installieren wieder Pihole in einem Docker-Container. Dazu geben wir dem Container einen Namen, wählen das Image „pihole/pihole:latest“ und geben die Port 53 und 80 frei. Port 53 sowohl über TCP, als auch über UDP.

Installation von Pihole in Docker

Dann legen wir 2 Volumes an:

Installation von Pihole in Docker

Und setzen über Environment Variablen die Zeitzone und das Passwort.

Installation von Pihole in Docker

Der Pihole Container kann jetzt erstellt werden und ist dann unter dem gewählten Port mit /admin erreichbar, also: http://IP_ADRESSE:PORT/admin

Dort kann man jetzt Einstellungen vornehmen, wobei das erstmal nicht nötig ist. Pihole funktioniert auch schon auf Standardeinstellungen sehr gut.

Hinzufügen von Blocklisten

Trotzdem verwende ich einige weitere Blocklisten. Hauptsächlich sind das die Blocklisten von rpilist.

Ein Upgrade für den Homeserver Teil 7 – Unifi Controller

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Was ist der Unifi Controller?

Der Unifi Controller ist eine Software, die benötigt wird, um Unifi Geräte einzurichten. Man kann diese grundsätzlich auch nur temporär zur Einrichtung der Geräte auf seinem Rechner laufen lassen. Lässt man ihn aber 24/7 laufen, so erhält man einige interessante Statistiken.

Installation des Unifi Controllers

Bis vor kurzem war es noch möglich, den Unifi Controller mit einem einzigen Container zu installieren. Mittlerweile wurde aber die Datenbank ausgelagert. Man braucht also zwei Container. Einen für die Datenbank und einen für Unifi selbst.

Dazu machen wir uns die Docker „Stacks“ zunutze. Ein Stack ist eine Einheit aus mehreren Containern (und Volumes).

Ich lege also einen neuen Stack in Portainer an:

Erstellen eines Docker Stacks

Diesem gebe ich einen Namen und füge folgenden Code im Webeditor ein.

Erstellen eines Docker Stacks mit Unifi Controller und DB

Die Volumes musst du bei dir natürlich anpassen (nur den Teil vor dem Doppelpunkt). Ebenso das Passwort für die DB.

Anschließend klicke ich auf „Deploy this stack“, um den Unifi Controller samt Datenbank zu starten. Öffnet man jetzt die Weboberfläche des Unifi Controllers unter Port 8443, so erhält man ein „404 – Not found“. Das liegt daran, dass es in der Datenbank weder den Benutzer noch die Datenbank delbst gibt.

Konfiguration der Datenbank

Um das zu ändern, wählen wir im Abschnitt „Containers“ unseren Container mit der Datenbank, in meinem Fall „unifi-db“.

Öffnen der Konsole der Datenbank

Dort klicken wir auf „Console“ und anschließend auf „connect“.

Öffnen der Konsole der Datenbank

In der Konsole angekommen, geben wir mongo ein, um in die Konsole der Datenbank zu kommen.

Konfigurieren der Datenbank für Unifi Controller

Dort legen wir einen Benutzer und zwei Datenbanken mit den Befehlen:

Das Passwort muss natürlich wieder das gleiche sein, wie das Passwort, was wir bei der Installation vom Unifi Controller angegeben haben.

Unifi Controller konfigurieren

Jetzt sieht man unter der Adresse https://IP_ADRESSE:8443 den Einrichtungsassistenten von Unifi:

Unifi Controller EInrichtungsassistent

Da ich von einem anderen Server umziehe, wähle ich hier den Punkt „Restore Server from a Backup“ und werde hier nicht weiter auf die Einrichtung eingehen.

Ändern des Inform Host

Der Unifi Controller in Docker erkennt nicht von selbst, welche IP-Adresse er hat. Damit man Geräte hinzufügen kann, muss er dies aber wissen, damit er die Adresse den Geräten mitteilen kann.

In den Systemeinstellungen des Unifi Controllers kann man das festlegen:

Ändern des Inform Host in Unifi Controller

Fazit

Der Unifi Controller ist jetzt fertig installiert und konfiguriert!

Ein Upgrade für den Homeserver Teil 6 – Homarr

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Was ist Homarr?

Homarr ist eine Dashboard-Software, mit der man unter anderem die Anwendungen auf seinem Server im Überblick haben kann. Man kann aber auch sehr viel selbst personalisieren. So lassen sich z. B. auch Links zu Webseiten oder Webseiten selbst über iframes einbinden.

Installation von Homarr in Portainer

In Portainer erstelle ich einen neuen Dockercontainer. Diesem gebe ich einen Namen. Die URL des Images muss im „Advanced mode“ angegeben werden. Sie lautet ghcr.io/ajnart/homarr:latest.

Als Port muss der Port 7575 im Container freigegeben werden. Als Host-Port verwende ich in diesem Fall 40083.

Homarr Installation in Portainer

Anschließend erstellen wir insgesamt 4 Bind-Volumes. Der Pfad vom Host ist bei den ersten 3 frei wählbar und muss vorher erstellt werden. In meinem Fall liegen sie alle im Ordner „docker_data“ meines Homeverzeichnisses.

Homarr Installation in Portainer

Jetzt kann der Container mit „Deploy Container“ erstellt werden.

Erster Start

Homarr ist jetzt unter der IP-Adresse auf dem gewählten Port erreichbar. Zuerst sieht man einen Willkommensbildschirm:

Erster Start von Homarr

Das im nächsten Screen vorgeschlagene Update brauchen wir nicht. Wir können gleich mit „Continue“ weitermachen.

Updatemeldung

Anschließend lässt sich ein Admin-Benutzer anlegen

Erstellen eines Adminaccounts in Homarr

Mit „go to yout board“ im nächsten Schritt können wir die Installation abschließen.

Erfolgsmeldung

Jetzt sieht man das Dashboard von Homarr. Als Erstes wechsle ich in den Darkmode.

Ändern des Farbschemas

Unter dem Zahnrad kann man allgemeine Einstellungen für das Dashboard vornehmen. Ich aktiviere dort die linke Sidebar und die Pings.

Dashboardeinstellungen von Homarr

Nachdem ich diese Einstellung gespeichert habe, wechsle ich mit dem Stift in den Bearbeitungsmodus. Die Uhr und das Wetter ziehe ich in die Sidebar. Alles andere lösche ich.

Im restlichen Bereich sollten später alle Programme aufgelistet sein, die auf meinem Server laufen. Diese werden in Homarr als „App“ erstellt.

Erstellen einer App in Homarr

Ich nenne meine App „Openmediavault“ und Homarr erkennt automatisch, um welche Software es sich handelt und bietet mir gleich das richtige Icon an.

Erstellen einer App in Homarr

Dort gebe ich noch die Adresse zu meiner OMV-Instanz an und kann anschließend speichern.

Auf dem Dashboard sieht man jetzt die Openmediavault App und unten rechts einen grünen pulsierenden Punkt. Dieser zeigt an, dass Openmediavault gerade läuft und erreichbar ist. Mein Dashboard ist jetzt noch relativ leer, aber mit der Zeit wird es sich schon noch füllen.

Homarr Dashboard

Ein Upgrade für den Homeserver Teil 5 – Docker und Portainer

Seit gut drei Jahren betreibe ich einen RaspberryPi als Homeserver. Zunächst reichte dieser noch gut aus. Mit der Zeit wurde aber nicht nur die Zahl der Anwendungen, die auf dem Raspberry laufen, mehr, sondern auch die Leistungsanforderungen der Anwendungen selbst. Besonders meine ich damit die Influx Datenbank, die seit über drei Jahren jede Minuten um einen Datensatz der PV-Anlage größer wird. Die Datenbank braucht mittlerweile über 10 Minuten zum Starten. Auch diese Webseite braucht zum Laden deutlich länger, als sie sollte. Wenn ich den Raspberry komplett neu starte, braucht es ca. eine Stunde, bis alle Anwendungen wieder laufen. Das ist definitiv zu viel. Es sollte also ein neuer Rechner her. In dieser Artikelserie möchte ich davon berichten.


Übersicht aller Artikel dieser Serie


Installation von Docker

Auf meinem zuvor eingerichteten Ubuntu Server installiere ich nun Docker. Die Installation ist in der Dokumentation von Docker sehr gut erklärt. Die dort aufgeführten Befehle kann man so eins zu eins ins Terminal kopieren und ausführen, also:

und

Jetzt ist Docker schon fertig installiert.

Installation von Portainer

Jetzt installiere ich Portainer nach dieser Dokumentation.

Zuerst erstellen wir ein Volume:

Dann kann Portainer schon installiert und gleichzeitig gestartet werden:

Konfiguration von Portainer

Die Admin-Seite von ist jetzt unter https://IP_ADRESSE:9443 erreichbar. Dort lässt sich ein Admin-Konto mit Passwort anlegen.

Portainer anlegen eines Adminaccounts

Im nächsten Screen klicke ich auf „Get startet“, da ich Portainer nur für meine lokale Docker Instanz verwenden möchte.

Unter „local“→“Containers“ sieht man alle Dockercontainer. Bisher eben nur einen einzigen – nämlich Portainer selbst.

Portainer

Leitet man Ports von einem Container an den Host weiter, so werden diese Ports in der Übersicht (Bild oben) klickbar dargestellt. Standardmäßig zeigen diese Links aber auf die IP-Adresse „0.0.0.0“. Das kann man ändern unter „Settings“→“Environments“→“local“. Dort kann man seine IP-Adresse angeben. Dann funktionieren die Links in der Übersicht auch.

Portainer und Docker sind jetzt fertig. Wir können jetzt unsere Container bequem in der grafischen Oberfläche erstellen und konfigurieren. Als ersten Container installiere ich homarr, eine Dashboard-Software, damit ich alle meine Programme im Überblick habe.