2020-07-24 23:20
Mein Home-Server Setup
Svij, Dirk und andere haben in ihren Blogs ihr Homeserver-Setup vorgestellt. Das möchte ich hiermit ebenfalls tun.
Die Vorgeschichte
Als ich noch Student oder Mitarbeiter der Uni war, konnte ich jederzeit vor Ort oder von unterwegs mit Telnet und später SSH auf die Uni-Server zugreifen, um meine E-Mails mit mutt (und vorher elm) zu lesen.
Nach dem Wechsel in die Industrie im Jahr 2002 ging das nicht mehr. Um die gewohnte Arbeitsweise nicht aufgeben zu müssen, musste ein eigener Server her.
Ein eigener Homeserver…
Ich hatte mittlerweile einen DSL-Anschluss und entschied mich für einen selbst betriebenen Server im Flur meiner Wohnung. Dafür musste ein ausgedienter PC herhalten; diese Rolle nahm für kurze Zeit ein PC mit einem Intel Pentium 90 Prozesser und 32 MB RAM ein, der jedoch nach kurzer Zeit durch einen Pentium II mit 450 MHz und 128 MB RAM ersetzt wurde. Darauf lief Debian GNU/Linux in der damals aktuellen Version (müsste 2.2 gewesen sein). E-Mails wurden mit fetchmail von GMX abgeholt und mit Procmail in die Mailboxen sortiert. Gelesen wurden sie mit SSH-Login und mutt, dank DynDNS auch von unterwegs. Im Laufe der Zeit sammelten sich mehr Dienste auf dem Server, u.a. Fileservice mit NFS und Samba und ein Apache Webserver mit selbstprogrammierten CGI-Skripten.
Doch der Betrieb eines 24x7 laufenden Servers hatte auch Nachteile. Gelegentlich war der Server einfach nicht erreichbar, was abwechselnd auf Probleme mit der DSL-Verbindung, dem DynDNS oder dem heimischen Netzwerk zurückzuführen war. Daneben war der Energieverbrauch für einen 24x7 laufenden alten PC unvernünftig. Zudem deutete sich an, dass ich irgendwann mit meiner Freundin zusammenziehen würde und ein lärmender Homeserver im Flur nicht den nötigen WAF (women acceptance factor) hätte.
…oder ein Mietserver bei einem Provider…
2003 mietete ich meinen ersten virtuellen Server, eine Linux-VM mit einem GB RAM und 30 GB Plattenplatz unter der Virtualisierungstechnologie Xen. Darauf zog der E-Mail Betrieb und der Apache Webserver um. Anstatt die E-Mails periodisch abzuholen, leitete ich sie verzögerungsfrei von GMX an den Server weiter, auf dem ein Postfix lief. Der Server im Flur blieb dort bis zum Auszug 2005 stehen, wurde jedoch zum reinen Fileserver und lief nicht mehr 24h am Tag.
Nach dem Umzug in die gemeinsame Wohnung rüstete ich meinen Haupt-PC, ein AMD Athlon 3200+, soweit auf, dass er die Rolle des Fileservers mit übernehmen konnte. Der alte Server diente noch eine Weile als Backupserver, bis er schließlich ganz ausgemustert wurde. Einen dauerlaufenden Server gab es bei mir für längere Zeit nicht mehr.
Dem Mietserver-Setup bin ich bis heute treu geblieben. Zwar wechselten die Anbieter (dazu demnächst ein eigener Artikel) und die Technik von Zeit zu Zeit. Zwischendrin war es dedizierter Server auf Basis des Intel Celeron J1800 Prozessors, mittlerweile wieder ein virtueller mit KVM. Das Grundprinzip blieb jedoch erhalten: der Server hostete den E-Mail-Betrieb mit Postfix, Procmail, mutt und seit dem Aufkommen von Smartphones auch Dovecot als IMAP Server. Zeitweise lagen dort auch meine Webseiten wie dieses Blog, das jedoch Anfang dieses Jahres eine neue Heimat bei GitHub Pages gefunden hat.
…oder beides?
Im Laufe der Jahre wuchsen die Anforderungen an Serverdienste zum persönlichen Gebrauch. Ein dauerhaft laufender lärmender Alt-PC kam aber nicht mehr in Frage. Stattdessen schaute ich mich bei den damals aufkommenden Mini-PCs um, die eine geringe Leistungsaufnahme und einen lautlosen Betrieb versprachen.
2011 erstand ich ein ALIX-Board mit AMD Geode LX800 Prozessor und 256 MB RAM. Das Betriebssystem und die Daten lagen auf der Compact Flash Karte, die damals noch extrem wenige Schreibzugriffe zuließen, bevor der Flash Speicher kaputt ging. Daher konnte darauf kein normales Debian Linux laufen, sondern das Derivat Voyage Linux. Dabei wurden alle variablen und temporären Daten im RAM (tmpfs) gehalten und nur alle paar Stunden auf die CF-Karte synchronisiert. Updates und Konfigurationsänderungen waren dadurch ziemlich mühsam. Der Ansatz stellte sich schon bald als zu heftig und das Gerät als zu leistungsschwach heraus, so dass nie ernsthaft Serverdienste darauf betrieben wurden.
Einige Zeit später folgte ein neuer Versuch, wieder mit einem lüfterlosen System. Diesmal wurde es ein Shuttle DS47 Barebone mit Intel Celeron 847 CPU, dazu 8 GB RAM und eine SSD mit 120 GB. Das System ist für Dauerbetrieb zertifiziert; es kühlt sich lüfterlos nach dem Konvektionsprinzip, dazu muss es aufrecht stehend betrieben werden. Der Shuttle sollte den Mietserver nicht ablösen, sondern ergänzen. Er läuft normalerweise ständig, außer während ich auf größeren Reisen bin.
Mit dem Server habe ich die Möglichkeit, verschiedene Serverdienste bereit zu halten; wenn sie nicht genutzt werden, können sie auch schnell wieder eingestampft werden. Die Liste der Dienste ist daher als Momentaufnahme zu betrachten.
Serverdienste aus Debian 10 (stable)
- Postfix zum Mailversand über den Provider-Server
- Apache HTTPD hauptsächlich als Reverse Proxy vor den u.g. Webdiensten
- MariaDB als Backend für einige der u.g. webbasierten Dienste
- PostgreSQL
- OpenLDAP
- PowerDNS (Server und Resolver)
- InfluxDB
- Privoxy
- Icecast2
- Shell in a Box
Aus Debian testing/unstable/backports
- Prometheus
- Diverse Prometheus-Exporter, u.a. Node-Exporter, MySQL und Apache HTTPD
- Wireguard VPN
Aus eigenen Paketquellen
Als Docker Container
Alle genannten Dienste zusammen lasten den Shuttle DS47 bzgl. CPU zu etwa einem Drittel und RAM knapp zur Hälfte aus.
Ich finde es erstaunlich, wie weit man mit einem so kleinen und komplett geräuschlosem Gerät kommt. Jedoch gibt es auch Anwendungen, die die Möglichkeiten des Servers sprengen und die ich deshalb nach kurzer Zeit wieder deinstalliert habe. Dazu gehören GitLab, OpenProject, Rancher sowie libvirt mit eigener Kubernetes-VM unter minikube.
Die meisten der genannten webbasierten Dienste sind dank DynDNS und Port Forwarding am DSL Router prinzipiell von außen erreichbar. Jedoch betreibe ich hier nur Dienste für mich selber. Dienste, die auch von anderen Personen genutzt werden, laufen auf dem Mietserver beim Provider. Derzeit sind dies Mattermost und Mumble (murmurd) sowie eine MariaDB-Instanz für Mattermost.
Und in Zukunft?
Es ist schwer zu sagen, was in Zukunft kommt und/oder sich ändern wird. Grundsätzlich bin ich mit dem System derzeit zufrieden; abgesehen vom chronisch knappen Platz auf der SSD und dem einen oder anderen Leistungsengpaß gibt es keine konkreten Änderungswünsche. An Diensten wird sicherlich einiges hinzukommen oder verschwinden. Eventuell wird der Shuttle DS47 mal durch ein neueres System abgelöst, etwa eines der DS77U Baureihe, die bis zu 32 GB RAM unterstützt. Damit läuft dann vielleicht auch Kubernetes, zum Beispiel in den Varianten MicroK8s oder K3s.