jlkDEs Blog

Serversetup

12 Dec 2021 - jlkDE

Dieses Blog läuft ebenso wie der Rest meiner Software in meinem Wohnzimmer. Mir ist es wichtig, die Verfügungsgewalt über meinen Besitz zu behalten und mich nicht wider besserer Möglichkeiten in Unmündigkeit zu begeben, daher versuche ich, meine digitale Identität selbst zu unterhalten.

Wie man mit normaler Endverbrauchertechnik und wenig Mehraufwand eigene Hardware online betreiben kann möchte ich im folgenden gern erläutern. Dabei nehme ich im Besonderen Bezug auf meinen eigenen Lösungsweg und weniger auf Alternativen, die sich jedoch mit gegebenen Informationen leicht für den eigenen Anwendungsfall finden lassen sollten.

Hardware

Das Kernstück des Setups stellt der Server selbst dar. In die zu betreibende Hardware sollte vor Anschaffung auch die meiste Planung fließen, da im sich Nachhinein gegebenenfalls nicht mehr genug Gestaltungsspielraum bietet. Folgende Punkte haben meine Entscheidung vorrangig beeinflusst:

  1. Betriebskosten/-aufwand
  2. Anschaffungskosten
  3. Softwareunterstützung
  4. Erweiterbarkeit

Ich hatte nicht vor, ressourcenintensive Prozesse auf dem Server laufen zu lassen, daher war die Performance für mich nur nachrangig wichtig. Als Desktopuser ist man gern auch überrascht, wie wenig Last kleinere Dienste am Ende verursachen - Einen groben Überblick liefere ich am Ende des Artikels.

Bei den nicht zu vernachlässigenden Energiekosten unserer Breitengerade beeinflusst, sofern man nicht selbst produziert,1 gerade der Strompreis die laufenden Kosten eines eigenen Servers. Je nach Standort sind aber auch weitere Faktoren relevant - In meinem Fall steht der Server im Wohnraum direkt beim Router, daher sollte auch Lärm und Abwärme minimiert werden. Auch Zeitaufwand und Betriebsfunktionen kann man unter dem Punkt Betriebsaufwand subsummieren. Mittelfristig gleicht ein geringer Pflegeaufwand einen hohen Einrichtungsaufwand mehr als aus, das sollte man bei unfreien Appliances im Gedächtnis behalten.

Die Anschaffungskosten sollten dabei auch in Relation gesehen werden, dazu lässt sich mithilfe eines passenden Stromkostenrechners der voraussichtseiche Zeitwert bestimmen.

Letztlich fiel meine Wahl auf einen Single Board Computer (SBC), deren prominentestes Beispiel wohl der Raspberry Pi ist. Passiv gekühlt belasten diese Boards ihr Umfeld kaum und arbeiten für gewöhnlich zulasten der in meinem Fall weniger maßgeblichen Performance effizienter. Hier sollte die Softwareunterstützung allerdings im Vorfeld berücksichtigt werden: Vorrangig erhältliche Prozessorarchitektur ist ARM (32 oder 64 Bit) und oft laufen auch Mainline-Kernel nicht ohne weiteres. Dafür bieten SBCs oft gute Schnittstellen zur Erweiterung, sei es an normalen Konnektoren oder auch geräteabhängigen Modulen.

Seit 2 Jahren nun habe ich daher den Hardkernel Odroid N2 im Einsatz, der in seiner Ausstattung ein deutlich besseres Preis-Leistungsverhältnis als die meisten x86-Lösungen bietet und mit 80€ Anschaffungskosten sehr moderat ausfiel.

Anbindung

Die Grundidee mag noch aus früheren Tagen des Internets kommen: Auch als privater Netzteilnehmer kann ich meinen Anschluss zur allgemeinen Erreichbarkeit im Weltnetz nutzen. Bei konkreter Umsetzung wird einem jedoch schnell bewusst, wie sehr Endkundenanschlüsse vom Anbieter mittlerweile reglementiert werden. Im schlimmsten Fall ist dadurch die Grundidee schon gescheitert und man muss kreativ werden.

Im Idealfall sähe der Weg nicht anders als bei klassischen Serverstandorten aus: Dauerhafte feste IP, vollumfängliche Anbindung und dann die vollen Möglichkeiten an DNS, Firewall, DMZ, … In der Realität werden statische IPs bei Privatkundenverträgen aber nahezu gar nicht angeboten. Die Lösung also: Erreichbarkeit auf anderen Wegen schaffen - DynDNS und CNAME funktionieren auch, wie man sieht. Ich selbst nutze den MyFRITZ!-Internetzugriff zusammen mit einer Portfreigabe, um nur den Server für externe Zugriffe freizuschalten. Als großer Vorteil benötigt des Setup dabei keine weiteren Komponenten und der Hauptteil an Logik muss von mir nicht gewartet werden. Zusammen mit einem einfachen CNAME sollte man damit in wenigen Minuten online gehen können.

Sollte keine passende Fritzbox zur Verfügung stehen kann man es natürlich mit einem beliebigen DynDNS-Anbieter versuchen oder sich nach einem Kit zur Erlangung einer statischen IP umsehen. Im Hinterkopf sollte man aber behalten, dass diese Art von Setup gegen die Nutzungsbedingungen des Internetvertrags verstoßen kann.

Aktuelle Dienste & Auslastung (Stand 122021)

Im beschriebenen Setup sind der Auswahl an möglicher Dienste kaum Grenzen gesetzt. Ein sinnvoller erster Schritt kann sein, die genutzten Drittanbieterdienste auf selbstbetreibbare Alternativen zu prüfen: Ganz vorn dabei sind Kalender-, Kontakt- und Dateisynchronisation, Homepage, Kollaborationssoftware und Dienste für Freunde & Verwandte.

Da ich mich bei Endgeräten auf Linux-Desktops und Android-Mobilgeräte beschränke habe ich mich hinsichtlich der Anbindung an diesen beiden Plattformen orientiert. Derzeit laufen bei mir dadurch einige Dienste parallel bei sehr moderaten Anforderungen, konkret sind das:

  • Infrastruktur
    • Traefik als Reverse Proxy
    • Pi-hole als DNS-Adblocker und lokales DNS
    • Prometheus & Grafana
      • Exporter: Node, cAdvisor, Fritzbox, Pi-hole, Speedtest
      • Nativ angebunden: Traefik, Docker, Grafana/Prometheus selbst
    • Goaccess
  • Synchronisation
    • Ein eigener Firefox Sync Server
    • Etesync für Kalender, Kontakte und Aufgaben
    • Miniflux für RSS
    • Wallabag für Artikel
    • Syncthing für Dateien
  • Digitale Identität
    • Dieses Blog :)
    • 2x Shaarli als Linklisten
    • Ein einfacher Fileserver
  • Weiteres
    • Kanboard zur Aufgabenverwaltung

Dabei ist der Server mit einer Grundlast von ~30% in Betrieb, genauer sieht man das hier im Verlauf der letzten zwei Wochen:

Serverauslastung

Ich setze dabei ausschließlich auf Docker Compose, zukünftig plane ich, auf Podman umzusteigen.

Zur Recherche nach geeigneten Lösungen bieten sich kuratierte Listen an, ich selbst schaue gern hier:


  1. Ein Beispiel dafür: Das LOW←TECH MAGAZINE [return]