Ab und an werde ich gefragt, ob mein Homelab auch einen produktiven Nutzen erfüllt oder ausschließlich zum Herumexperimentieren gedacht ist. Der Name mag etwas verwirrend sein, aber ein paar produktive Services braucht ja jeder ITler. Und welche das genau sind, erfährst du in diesem Artikel. Außerdem erzähle ich etwas aus dem Nähkästchen, wie sich mein Homelab im Jahr 2022 verändert hat.
2022: Ein Jahr der Veränderungen
Anfang des Jahres hatte ich lediglich einen alten Dell-Server bei mir Zuhause stehen. Darauf installiert war der Hypervisor Proxmox. Genutzt wurde der laute Rack-Server nur sporadisch, um mit verschiedenen Technologien zu spielen. Gemeinsam mit den Azubis meines alten Arbeitgebers habe ich dann ein etwas größeres Labor im sogenannten Mitarbeiterrack eingerichtet.
Dort hatte ich selbst einen dedizierten Proxmox-Host in Form eines Dell R510 stehen. Außerdem teilte ich mir einen wirklich alten PowerEdge-Server als Netzwerkspeicher mit den Kollegen. Auch nicht vergessen darf ich dabei den günstig bei Ebay erworbenen Dell R410 als Firewall mit Sophos XG Home. Nach einem Arbeitgeberwechsel im Herbst änderte sich aber alles drastisch.
Ich wollte bei mir in der Wohnung nicht mehrere laute und stromhungrige Server in einem Besenkammer-Rack betreiben. Daher trennte ich mich schweren Herzens von den Maschinen und mietete einen physischen Server bei Hetzner an. Schnell war alles dorthin migriert und anfangs war ich recht zufrieden. Doch ganz so günstig ist ein eigener Server samt Storagebox für die Backups gar nicht.
Dies veranlasste mich schließlich zu einem großen Schritt. Ich wollte alle meine Services in der Cloud und das möglichst günstig betreiben. Doch wie sollte das gelingen? Mein Setup war darauf einfach nicht ausgelegt. Ich hatte rund 40 VMs und betrieb alles nach einem Credo: 1 Service pro Server und massig Testkisten für meine Ansible Playbooks obendrauf.
Allerdings spukte mir eine Idee schon länger im Kopf herum. Die Rede ist von Containern. Doch ein Kubernetes-Upstream-Cluster zur Orchestrierung und ein eigenes Downstream-Cluster erschien mir doch recht teuer und vor allem übertrieben. Also setzte ich zum Kahlschlag an und mistete knallhart aus. Und seit etwa einem Monat läuft alles auf einem einzigen Docker-Host in der Cloud.
Zumindest, wenn es um produktiv genutzte Dinge geht. Ich habe aber weiterhin zu Hause einen Dell R710 als NAS-Server für private Daten stehen und nutze außerdem noch einen Dell R815 unter der Couch als Spielwiese. Dank der 4 CPUs und dem SSD-Plattenpool kann ich darauf nach Herzenslust mit mehreren Kubernetes-Clustern herumexperimentieren oder neue Playbooks testen.
Außerdem habe ich mein Heimnetzwerk komplett überarbeitet. Nutze ich Anfang des Jahres nur eine Fritz!Box für alles, werkelt heute eine Draytek-Firewall im Schrank vor sich hin. Zwischenzeitlich hatte ich sogar eine Router-Kaskade ohne doppeltes NAT aus den beiden Produkten gebaut, um eine richtige DMZ zu haben. Aber die brauche ich ja nicht. Also war mir Strom sparen am Ende wichtiger.
Meine selbstgehosteten Services
![](https://homelabtopia.com/wp-content/uploads/2022/12/Homelab-Docker.png)
Kommen wir nun endlich zum Teil des Beitrags, der die meisten interessieren dürfte. Was hoste ich selbst und wie zufrieden bin ich damit, dass alles in Form von Container läuft? Den letzten Teil der Frage kann ich gleich beantworten. Ich könnte nicht glücklicher sein. Ich spare nämlich nicht nur einiges an Geld, sondern auch eine Menge Nerven.
Schließlich muss ich nur noch ein neues Image herunterladen und den Container danach einfach neu starten. Da ich darauf geachtet habe, möglichst ohne zusätzlichen Datenbank-Container bei meinen Anwendungen auszukommen, war es das in der Regel auch. Außerdem habe ich den Rest der Arbeiten dank Scripting automatisiert.
So lasse ich mich bequem benachrichtigen, wenn Updates am Linux-Host oder an den Containern selbst anstehen. Und alle Arbeiten wie das Starten, Stoppen oder Updaten der Container, mit und ohne Server lassen sich mit wenigen Befehlen ausführen. Schließlich sollte eine Verschlankung des Homelabs in der heutigen Zeit auch immer mit mehr Automatisierung einhergehen.
Heimdall: Dashboard für deine Dienste
Meine ersten Berührungspunkte mit Docker hatte ich durch genau diese Anwendung. Ich war schon länger auf der Suche nach einer Möglichkeit, wie man sich ohne HTML und CSS ein kleines Dashboard mit Links zu seinen Servern und Services basteln kann. Und eines Tages sah ich ein YouTube-Video, wo genau solche Dashboard gezeigt wurden.
Besonders Heimdall hatte es mir angetan. Es war sehr schlicht gehalten und bot trotzdem viele Möglichkeiten in puncto Design und Funktionalität. Ich selbst verlinke darüber ausschließlich meine Services. Es ist aber auch möglich, direkt in der Kachel weitere Informationen zur Anwendung einblenden zu lassen. So kann man sich beispielsweise die Speicherauslastung bei Nextcloud anzeigen lassen.
Im Funktionsumfang sind unter anderem folgende Dinge enthalten:
- Individuelle Designanpassungen mittels CSS und eigenen Bildern
- Suchleiste mit Unterstützung von Google, Bing & DuckDuckGo
- Login mit eigenem Nutzername und Passwort möglich
Filebrowser: Schlanke Nextcloud-Alternative
Mein erstes Homelab-Projekt war eine eigene Nextcloud-Instanz. Inspiriert wurde ich dazu von einem Kumpel und überzeugt hatte mich der Gedanke, seine Daten nicht der Obhut von Dropbox, Google und Co. zu übergeben. Lange war ich sehr zufrieden mit der Lösung. Doch ich nutzte die App auf den Mobilgeräten kaum und brauchte auch die vielen Funktionen nicht.
Leider möchte ich an dieser Stelle kurz darauf hinweisen, dass es immer wieder Probleme gab, die Synchronisation mit der Nextcloud mithilfe der App zum Laufen zu bekommen. Auch führten Updates immer mal wieder zu einem zurückgesetzten Design und deaktivierten Plugins. Deshalb war die Zeit für eine neue Anwendung gekommen.
Die Rede ist von Filebrowser und hier ist der Name einfach Programm. Weder gibt es eine eigene App noch massig Features. Dafür funktioniert alles tadellos und man muss sich nur um einen kleinen Container kümmern. Da ich die Daten meiner Nextcloud auf einem SMB-Share von Hetzner liegen habe, konnte ich diesen einfach im Container mounten und schon lief alles.
Im Funktionsumfang sind unter anderem folgende Dinge enthalten:
- Individuelle Design-Anpassung
- Erstellen und Löschen von Ordnern sowie Dateien
- Integrierter Text-Editor und PDF-Viewer
Bitwarden: Passwort-Tresor mit App
Überall das gleiche Passwort verwenden, ist wohl der Kardinalfehler schlechthin. Obwohl immer wieder genau davor in den Medien gewarnt wird, macht man es Hackern als unbedarfter Bürger gerne sehr leicht. Dank Vaultwarden ist damit aber Schluss. Der kleine Docker-Container ist außerdem weit mehr als ein einfacher Passwort-Server mit eigener App und netten Browser-Plugin.
Unter dem Menüpunkt Berichte kann man sich beispielsweise anzeigen lassen, ob bestimmte Passwörter öfter als einmal benutzt werden oder es Zeit für komplexere Passwörter wird. Außerdem gibt es einen sehr informativen Datendiebstahl-Bericht auf Basis der renommierten Webseite haveibeenpwned.com Und zu guter Letzt kann man sich auch noch sichere Passwörter generieren lassen.
Noch erwähnen möchte ich an dieser Stelle, dass man bereits im Docker-Compose-File wichtige Einstellungen vornehmen kann. So lässt sich hier bereits die Registrierung von neuen Nutzern deaktivieren. Wer will, kann die Einstellungen aber auch grafisch im Admin-Panel vornehmen. Der vollständig mit Bitwarden kompatible Service ist mein persönliches Must-have!
Im Funktionsumfang sind unter anderem noch folgende Dinge enthalten:
- Zwei-Faktor-Authentifizierung via E-Mail, Duo, YubiKey und FIDO2-WebAuthn (inklusive Nitrokeys und Solokeys)
- Teilen von Passwörtern mit Zugangskontrolle
- Neben Passwörtern können auch Identitäten & Karten verwaltet werden
PiHole: Dein schwarzes Loch für Werbung
Die meiste Werbung auf Webseiten kann ganz schön nerven. Hier ein Banner, dort ein großes Pop-up-Fenster. Abhilfe schaffen hier nur lokal zu installierende und natürlich auch zu verwaltende Adblocker. Doch nicht immer hat man hierzu die Möglichkeit. Man denke nur an unzählige SmartHome-Geräte und deren Manager Amazon Alexa oder Google Assistant. Genau hier kommt PiHole ins Spiel.
Nicht nur lästige Werbung kann über blockierte DNS-Anfragen verschwinden. Auch das Auflösen von potenziell gefährlichen Domainnamen kann der kleine Container verhindern. Und als wäre das noch nicht genug, kann man auch die eigene Privatsphäre wieder ein Stück verbessern. Schließlich muss nicht jede DNS-Anfrage aufgelöst werden, um erfolgreich im Netz surfen zu können.
Mehr als ein Jahr lang habe ich PiHole auf einem Raspberry Pi eingesetzt und dabei kaum negative Erfahrungen gesammelt. Die Auswahl an Blocking-Listen ist gigantisch und es gibt sie noch dazu thematisch sortiert. Wer möchte, kann direkt im PiHole noch A-Records und Co. anlegen. Außerdem kann das Blocking vorübergehend deaktiviert werden, sollte es zu Problemen beim Surfen kommen.
Und wer es in puncto DNS bis an die Spitze des Möglichen treiben möchte, kann den PiHole noch mit Unbound für rekursive DNS-Anfragen kombinieren. Gemeint ist damit, dass nur der für die jeweilige Domain zuständige DNS-Server abgefragt wird. Außerdem hat man so noch einen normalen DNS-Dienst mit großem, lokalen Cache als Alternative in der Hinterhand.
Im PiHole-Funktionsumfang sind unter anderem noch folgende Dinge enthalten:
- Umfangreiche Statistiken zu DNS-Anfragen und Geräten
- Integrierter DHCP-Server mit vielen Features
- Detaillierte Einstellungsmöglichkeiten in allen Bereichen
WordPress: Webhosting in einfach & individuell
Viele meiner Leser werden es gar nicht wissen. Bis vor etwa 6 Jahren hatte ich noch eine kleine Online-Marketing-Agentur. Hauptsächlich habe ich dort kleine Affiliate-Seiten betrieben. Aber auch den ein oder anderen Blog hatte ich in meinem Portfolio. Bis in den Herbst dieses Jahres hinein hatte ich sogar noch 4 davon und generierte dadurch monatlich etwa 50 bis 70 k Seitenaufrufe.
Und egal wie groß oder klein der Besucheransturm der jeweiligen Website auch war, auf das Content-Management-System WordPress konnte ich mich stets verlassen. Inzwischen nutze ich das Open-Source-CMS mittels Docker-Stack. Dieser besteht aus einem WordPress- und einem MySQL-Container. Beide tuen ihren Dienst und das ganz ohne Murren. Ich bin einfach begeistert.
Wer WordPress noch nicht kennt, sollte nun aufpassen. Zwar handelt es sich hier nicht um einen Homepage-Baukasten im klassischen Sinne, aber arg groß ist der Unterschied auch nicht. Es muss allerdings jede gewünschte Funktionalität, die ganz grob gesagt über das Verwalten von Inhalten hinausgeht, mittels Plugin nachgerüstet werden.
Mit ein bisschen Aufwand lassen sich so aber einzigartige Webseiten erstellen. Möglich machen es die zahlreichen Homepage-Vorlagen, hier Themes genannt. Zusätzliche Funktionen wie etwa ein Cookie-Consent-Plugin, ein Backup-Job oder auch ein Brutforce-Schutz gegen Hacker lassen sich mit wenigen Klicks nachrüsten. Seit gut 9 Jahren bin ich ein großer Fan von WordPress.
Warum dem so ist? Hier habe ich noch ein paar Vorteile aufgelistet:
- Geringe System-Anforderungen: Man braucht keinen dedizierten Server, ein günstiges Shared-Hosting-Paket reicht meist locker aus.
- Große Community: Kein anderes CMS auf dem Markt ist so beliebt wie WordPress. Zahlreiche Entwickler, Designer und Blogger setzen auf WordPress.
- Einfache Administration: Das Aktualisieren geht dank der GUI recht einfach von statten und ich habe mir dabei noch nie eine Webseite zerschossen. Für Stabilität und Zuverlässigkeit ist also wirklich gesorgt.
Uptime-Kuma: Überwache deine Container
Wenn ein Dienst ausfällt, möchte man als Administrator natürlich sofort Bescheid bekommen. Deshalb hatte ich lange das Monitoring-Tool CheckMK im Einsatz. Dieses ist aber für den Betrieb von hunderten oder gar tausenden Servern ausgelegt und noch dazu sehr umfangreich in den Einstellungsmöglichkeiten. Es gibt eine schier gigantische Menge an vorgefertigten Checks und eine wirklich tolle API.
Eine Nummer kleiner geht es aber auch. Weiterhin ist es nämlich möglich, sogenannte lokale Checks zu benutzen. Mit einem einfachen Echo-Befehl kann man den CheckMK-Server über den Zustand eines selbst erstellten Service informieren. Aber all das brauche ich nicht, um meine Container im Homelab zu überwachen. Daher habe ich mir eine schmalere Lösung gesucht.
Gefunden habe ich dann das Tool Uptime Kuma. Hier gilt der Grundsatz, dass weniger manchmal mehr ist. Die Bedienung ist intuitiv und die Möglichkeiten in der Überwachung sind damit natürlich etwas begrenzt. Allerdings kann man im Handumdrehen eine öffentlich erreichbare Status-Page einrichten, um Freunde und Bekannte über den Zustand der selbst gehosteten Dienste zu informieren.
Sogar eine Wartungsnachricht kann man mit wenigen Klicks auf der Webseite einblenden lassen. Hier punktet Uptime-Kuma also schon mal ordentlich. Auch die angebotenen Checks gefallen mir sehr gut. Neben den Klassikern wie der Abfrage von bestimmten Ports oder einem einfachen Ping-Check, gibt es beispielsweise auch die Möglichkeit Docker-Container direkt abzufragen.
Weitere Möglichkeiten zur Abfrage wären dann noch DNS, MySQL, PostgreSQL, Radius, MQTT und viele weitere. Selbstverständlich kann man sich bei einem Ausfall auch benachrichtigen lassen. Die Auswahl an Diensten ist hier sehr groß. So funktioniert Uptime-Kuma mit diversen SMS-Dienstleistern oder auch Telegram. Weiterhin gibt es noch Webhooks oder Pushover.
Im Funktionsumfang sind unter anderem noch folgende Dinge enthalten:
- Zwei-Faktor-Authentifizierung zum Schutz des Administratorkontos
- Export & Import von Benachrichtigungs- und Überwachungsdaten
- Überwachung von Steam-Gamingservern
Gotify: Push-Messages auf dein Handy
Natürlich bringt einem die beste Monitoring-Lösung nichts, wenn man bei einem Ausfall gar nicht benachrichtigt wird. Deshalb möchte ich dir an dieser Stelle noch Gotify vorstellen. Hierbei handelt es sich um einen einfachen Server, der Nachrichten verschicken und empfangen kann. Selbstredend kann man sich auf einer Übersichtsseite einloggen und dort seine Nachrichten kontrollieren.
Weiterhin existiert aber auch eine App für Android-Geräte, damit du jederzeit eine Push-Benachrichtigung bekommen kannst. Gotify ist simpel gehalten und lässt sich daher intuitiv benutzen. Im Hintergrund werkelt hier still und leise eine Rest-API vor sich hin. Das bedeutet, dass man mithilfe von einfachen Shell-Skripten via Port 80 und 443 Nachrichten an den Server übermitteln kann.
Ich habe mir beispielsweise ein Skript geschrieben, dass die Anzahl der Updates und deren Art an einem Linux-Host abfragt und dann an Gotify übermittelt. Ebenfalls praktisch ist die direkte Integration in Watchtower. Damit lasse ich einmal am Tag vollautomatisch prüfen, ob es neue Images für meine Container gibt. Und bei Bedarf gibt es eine Push-Nachricht.
Im Funktionsumfang sind unter anderem noch folgende Dinge enthalten:
- Anlegen & Löschen von Nutzern, Anwendungen und Clients
- Optionales Kommandozeilenprogramm namens Gotify-CLI zum Nachrichtenversand an den Server.
Nginx-Proxy-Manager: Das Tor zum Hosting
Möchte man unter einer IP-Adresse und den Standard-Ports für den Webverkehr mehr als einen Service anbieten, braucht man zwingend einen Reverse-Proxy-Server. Genau hier kommt dieser Docker-Container mit seiner intuitiven Benutzeroberfläche ins Spiel. Mit wenigen Klicks kann man hier Proxy-Hosts samt passenden Let’s Encrypt Zertifikat anlegen.
Wer möchte, kann aber auch weit tiefer in die Materie einsteigen. So gibt es die Möglichkeit bekannte Angriffsmuster zu blockieren, den Websocket-Support zu aktivieren oder eine ACL zur Zugriffsteuerung anzulegen. Und richtige Poweruser können noch dazu alles Mögliche bis ins kleinste Detail einstellen. Selbstverständlich können daher auch eigene SSL-Zertifikate hinterlegt werden.
Im Funktionsumfang sind unter anderem noch folgende Dinge enthalten:
- Einfaches Anlegen von Redirections, Streams und 404 Hosts
- Nutzerverwaltung samt detaillierter Rechtevergabe und Logging
- Erstellen einer simplen HTTP Authentifizierung für deine Dienste