Einen Homeserver einrichten
VorWort
Wir leben in digitalen Zeiten, und im Zeitalter der externen Dienste, in denen wir alles auslagern. Wir verlieren so die Hoheit über unsere Daten: Alles liegt fragmentiert bei verschiedenen, fremden Dienstleistern. Dem möchte ich etwas entgegen wirken, und einen eigenen Server aufbauen. Welche Anwendungen / Dienste sollen darauf laufen?
- Allgemeine Dateiablage
- Verzeichnisse für Nutzer im Netzwerk verfügbar.
- Medienbibliothek
- Emby / Jellyfin fürs Streamen von Audio und Video
- Callibre-Web für eBooks / Audiobooks
- Timetracker
- Wakapi
- Notizen / TODO Listen / Recherchen
- Joplin. Der Joplin-Server sorgt dabei für die zentrale Datenhaltung. Die Notiz-App gibt es für jedes Betriebssystem.
- Webserver / Wordpress
- Ein Apache mit PHP und mySQL Datenbank.
- Spezielle Wordpress Instanzen
- Versionsverwaltung für Quellcodes und andere Dokumente
- GIT Repository
- Cloud?
- …
Dazu kommen noch für die Verwaltung:
- Docker, zum orchestrieren der Anwendungen.
- Evtl. weitere Tools zum administrieren.
- Absicherung des Systems…
- Eine Backup Strategie…
Die Hürden, um so ein Projekt um zu setzten sind relativ niedrig. Natürlich geht das nicht ganz ohne technisches Verständnis, aber es ist durch moderne Technologien wie Docker einfacher denn je. Was kommt, ist die Verantwortung und Aufwand für Betrieb - die Zeit fehlt dann für anderes.
Erste Schritte hatte ich bereits mit einem Raspberry-pi unternommen. Den möchte ich jetzt durch einen passiv gekühlten leistungsfähigeren Barebone ablösen, und um weitere Dienste ergänzen. Das ganze soll so minimalistisch und einfach wie möglich gehalten werden, und wann immer möglich und sinnvoll auf OpenSource basieren.
Der Server soll zunächst nur im Intranet laufen. Später aber auch insgesamt, oder in Teilen über die Fritz!Box im Internet zugänglich sein.
Die Hardware
Die Wahl fiel im Januar 2022 auf folgendes Gerät:
- ZOTAC ZBOX CI662 NANO , den ich ausstatte mit:
- Speicher: 2x16GB Kingston D4-266 KCP426 SD8/16
- Interne Festplatte: 1TB Samsung für das System.
- Externe USB Festplatten: 2x 3TB WD eine für Daten und eine als Backup
- und dazu demnächst noch ein kleines Raid…
Alternativen wären gewesen:
- …
Aktuellere Systeme mit mehr Leistung, aber auch deutlich teuerer:
- …
Betriebssystem OpenMedia Vault / Debian
Das wird die Basis des Servers. Kommt mit einem schlanken Debian Linux.
- Openmediavault ISO runterladen
- Balena Etcher -> USB Stick mit dem ISO flashen
- Needs privileged access -> Passwort eingeben
Danach kann der Stick nicht mehr vom Mac gelesen werden.
Das macht aber nix. Die Meldung einfach ignorieren, und den Stick vom Mac abziehen.
Tastatur und Bildschirm anschließen.
USB-Stick In den Server stecken und Gerät einschalten.
Setup durchlaufen.
SSH funktioniert oft of the Box, damit kann Tastatur und Monitor abgeklemmt werden.
server.local
User: root
Passwort: dasrootpasswort
Servername: server
Webzugang: http://server.local
user: admin
Passwort: openmediavault
Konfiguration…
- Allgemeine Einstellungen
- System -> Allgemeine Einstellungen
- Port: 81 (auf 80 möchte ich den Apache-Webserver legen)
- Automatische Abmeldung: 30 Minuten
- ssl kommt später
- Hier sollte auch das Passwort geändert werden.
- Speichern
Danach ist der Webzugang erreichbar über: http://server.local:81
- Zertifikate
- System -> Zertifikate -> hinzufügen
- Ein Zertifikat anlegen für sftp und https. Ich hab eine Gültigkeit von 10 Jahren festgelegt, das Zertifikat kann ich aber jederzeit austauschen. So ein Selbstzertifikat sorgt im Browser immer für doofe Meldungen. Man muss ihm Vertrauen, und es zu der Liste der vertrauenswürdigen Zertifikate hinzufügen. Danach lässt sich die Seite problemlos und ohne Sperre aufrufen.
- Wie bekommt man die weg? In dem man zum Beispiel Lets Encrypt Zertifikate verwendet.
- https://letsencrypt.org/de/getting-started/
- https://letsencrypt.org/de/notes/
- später.
- SFTP einrichten
- Über ein zusätzliches Plugin.
- SMB Zugriff
- …
- OMV Extras installieren
- Terminal des OMV-Rechners mit root-Rechten:
sudo wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash
Danach befindest sich ein neuer Menü-Eintrag in OMV: Systen -> OVM-Extras
- Systen -> OVM-Extras -> Reiter Docker -> Button Docker -> installieren
- Systen -> OVM-Extras -> Reiter Docker -> Button Portainer -> installieren
- Systen -> OVM-Extras -> Reiter Docker -> Button Yacht -> installieren
- Systen -> OVM-Extras -> Reiter Cockpit -> Button Cockpit -> installieren
Portainer / Yacht
Yacht ist eine Portainer Alternative. Ich kann so beide mal testen.
- Portainer ist jetzt aufrufbar unter:
- http://server.local:9000/
- user: admin
- Das vorher vergebene Initial-Passwort
- Yacht ist aufrufbar unter:
- http://server.local:8001/
- user: admin@yacht.local
- Passwort: pass
- User/Passwörter sollten nach der ersten Anmeldung geändert werden.
Cockpit
Ist eine Webschnittstelle, über die das Basis dienende Debian-Linux die bequem administriert werden kann. Zum Beispiel können Updates eingespielt werden, User angelegt, VMs eingerichtet werden, etc.
- http://server.local:9090/
- Anmelden mit dem Debian User / Passwort.
Freigabe einrichten
In OpenMediaVault muss eine Freigabe für das Verzeichnis angelegt werden in dem die Docker Container ihre Daten ablegen dürfen.
OMV -> Zugriffskontrolle -> Freigaben
Es reicht meist eine zentrale Freigabe auf das Root Verzeichnis der Docker-Daten. Bei mir ist das zB. der folgende absolute Pfad zu einer externen Festplatte mit dem schönen Namen MEDIA_LIB:
/srv/dev-disk-by-uuid-3be5a412-3266-4e6b-a816-3bcd77d4da1b/MEDIA_LIB/
Den Absoluten Pfad muss erst wie folgt angezeigt werden. Dann kann man ihn abtippen, oder etwas tricky mit Copy and Paste aus dem Quelltext entnehmen:
In OpenMediaFault den absoluten Pfad einer Freigabe ermitteln (Browser Safari).
Applikationen installieren
Das funktioniert schön bequem über Docker. Passwörter und Pfade in den Skripten müssen natürlich entsprechend angepasst werden.
Wakapi Time Tracking
Wakapi ist ein automatisiertes Timetracking Tool.
- github.com/muety/wakapi - Anleitung
Den Container bringe ich übers Terminal ans laufen:
- Danach ist der Server hier erreichbar: http://server.local:3000/
Emby / Jellyfin
Der Medienserver. Dazu hab ich hier schon einiges geschrieben als ich das auf dem Raspberry-Pi eingerichtet habe. UID und GID bestimme ich auf dem Server über das Terminal:
Bei den Volumes wieder darauf achten das eine Freigabe in OVM existiert.
Calibre-Web
eBook Management mit Calibre , und dazu eine schöne Weboberfläche mit Calibre-Web:
Die Anwendung des Docker Compose Skripts war problemslos. Im Verzeichnis /books/
wird die Callibre Datenbank abgelegt, daraus bedient sich dann das Web Frontend um die Webseite auf zu bauen.
Da die Calibre Datenbank noch lokal auf meinem Rechner liegt, sorge ich mit einem Hazel Kopier-Task dafür das Calibre-Web mit den Änderungen versorgt wird:
Joplin
Joplin ist eine leistungsfähige, Markdown basierte, OpenSource Notiz-App, mit einer freundlichen und regen Community. Die Apps sind nicht fertig und etwas ungeschliffen, das merkt man an jeder Ecke, der Server entsteht auch gerade erst. Das schränkt aber die generelle Brauchbarkeit nicht ein, und Hey: Ich bin wieder Herr über meine Daten! Das ist eh unbezahlbar. Wenn man von der hochpolierten Konkurrenz zB. Evernote kommt wird man vielleicht dezent enttäuscht sein, vor allem was das Thema Zusammenarbeit angeht. Meine persönlichen Notizen Todo-Listen wandern jetzt jedenfalls erst mal von der Mac App Notizen und dem hervorragenden Things nach Joplin.
- https://joplinapp.org
- https://hub.docker.com/r/joplin/server
- https://github.com/flosoft/docker-joplin-server
- https://hub.docker.com/r/florider89/joplin-server
Das Setup des Servers war mit dem Docker Compose Skript komplett problemlos. Der Pfad zu den Volums und die User und Passwörter müssen wieder natürlich individuell angepasst werden. Selbiges gilt evtl. für die Ports.
Er ist danach unter der Adresse erreichbar: http://server.local:22300/
und kann nach dem ersten Login mit admin@localhost
und dem Passwort admin
weiter konfiguriert, und weitere Nutzer eingerichtet werden.
Die Clients erfordern auch etwas Konfiguration. Es gibt eine große Anzahl an Plugins für die Desktop Apps, mit denen die Funktion erweitert werden kann. Diese stehen allerdings noch nicht auf den Smartphone Versionen zur Verfügung.
Schreiben und verwalten der Notizen ist am Desktop am komfortabelsten. unterwegs Notizen mit den anderen Apps erfassen, auch ohne Verbindung zum Server. zu Hause wird wieder synchronisiert. Nach ein paar Umbauten und neuer Strukturierung schaut das bei mir so aus:
Wer viel auf dem Desktop schreibt - als Autor oder Journalist zum Beispiel, dem empfehle ich dazu das ebenso kostenlose OpenSource Programm Zettlr . Es harmoniert super mit Joplin. Damit kann man störungsfrei schreiben, denn es hat einen Ablenkungsfreien Modus, sowie einen Schreibmaschinen Modus. Wie mächtig Zettl trotz Minimalismus ist, kann man der Anleitung entnehmen:
Der Web-Clipper für die Browser Mozilla und Chrome - leider (derzeit) nicht für Safari - hilft bei der Recherche bzw. dem Sammeln von Quellen. Das ganze funktioniert ein bisschen wie DevonThink “superlight”.
Apache / php / mySQL
Eine klassische Umgebung zum Entwickeln von Web-Anwendungen. Der Container läuft noch nicht ganz rund. Hier solle auch [diese meine Web(re)präsentation] eine zweite Heimat finden.
Beim Anmelden bei phpMyAdmim gibts noch eine Fehlermeldung zu Bewundern:
phpMyAdmin kann noch nicht mit der Datenbank reden, obwohl alle Container im selben Netzwerk laufen. Der Rest geht aber soweit. Das ganze muss jetzt noch weiter konfiguriert werden…
Wordpress
Ein isolierter Wordpress Container mit allem was nötig ist um mal schnell eine Wordpress-Instanz zu betreiben:
GIT Server
Das ist knifflig… Fortsetzung folgt…