Fertigstellung der Architektur & Implementierung eines privaten Rootservers „Heimdall“ mit zentraler Benutzerverwaltung & SSO

Artikelbild ist eine Kombination aus Server-multiple.svg und Heimdall.

Nach langer Konfiguration und Research ist die Aufgabe geschafft: Der Rootserver unter root.maximaximal.com ist nun voll funktionsfähig auf seiner ersten (neuen) Ausbaustufe! Diese Version heißt nun „Heimdall“, damit er etwas mehr Persönlichkeit bekommt als nur „der Root-Server“. Dieses Mal wurden Best-Practices befolgt, Konfiguration wurde per Ansible durchgeführt und alle Benutzerdaten werden zentral in einem LDAP Verzeichnis (per OpenLDAP) gespeichert. Auf diese Weise können alle Web-Anwendungen auf den zentralen Store zugreifen und nichts muss mehr eigene Benutzerauthentifizierung betreiben. Sogar Gruppen können nun abgebildet werden, wodurch sich automatisch Zugriffsrechte in Nextcloud verwalten lassen.

Ein weiteres nettes Feature ist der Support für Instant-Messaging über den XMPP Standard. Hierdurch kann man mit allen anderen Serverteilnehmern bequem Chatten (und sogar Bilder oder Dateien übertragen), ohne die Metadaten an Dritte weitergeben zu müssen. Durch die eigene Infrastruktur ist die Performance des Netzwerks auch hinreichend gut, dass man mit größeren Diensten wie beispielsweise WhatsApp im kleinen Kreis durchaus konkurrieren kann. Durch die Federation-Features von XMPP kann man sogar mit anderen Leuten auf anderen Servern chatten, wodurch man nicht mehr auf den einzelnen Server gebunden ist. Es gibt auch noch massenhaft Erweiterungen für größere Softwarepakete wie beispielsweise Jenkins (Jabber Plugin), welche Updates über XMPP verschicken können, wodurch Neuerungen ohne ständige E-Mail Flut übermittelt werden können.

Die größte Neuerung ist allerdings, dass nun durch die verbesserte (und formalisierte) Konfiguration des Servers neue Funktionen ohne viel Schwierigkeiten hinzugebaut werden können. Es ist nun jeder Dienst genauestens dokumentiert und Neuerungen lassen sich auf einfache Weise zur Konfiguration hinzu bauen. Egal ob Wikis, andere Websites, Bugtracking oder irgendwelche RSS-Reader – alles kann man jetzt leicht anbauen. Hierdurch wird der Root-Server besser verwendet, was den Kostenpunkt rechtfertigt.

Alles in Allem bin ich sehr zufrieden mit diesen Änderungen und werde auf dieser Version nun weiter aufbauen. Es hat einige Zeit gedauert bis das jetzt gemacht wurde, da die vollkommene Rekonfiguration natürlich viel Aufwand mit sich gebracht hat. Besonders die alte Installation zu löschen war eine Überwindung, aber am Ende konnten alle Sicherungen erfolgreich gemacht werden.

Viel Glück in euren Server-Setups und viel Spaß mit den Setups von anderen, damit ihr euch das nicht antun müsst! Im Idealfall ist das ganze Ding Setup-and-forget, aber ob das wirklich so gut funktioniert wird nur die Zeit zeigen.

LG,
Max

NixOS und Vergleiche zu Ansible mit OpenSUSE oder Debian

Ich stehe derzeit am Anfang einer eventuell kommenden, sehr großen Servermigration von OpenSUSE Leap 15 auf NixOS 18. Dieser Schritt ist am Anfang relativ hart, da bei NixOS sehr wenig so bleibt, wie es vorher war – lediglich einige wenige Konfigurationseinstellungen können übernommen werden (beispielsweise für den Apache oder einige Programme). Die meiste Arbeit liegt im Umbauen einer komplett organisch gewachsenen Konfiguration auf eine deklarative Umgebung, die stets einfach wiederhergestellt und vor allem gut verstanden werden kann.

Warum tue ich mir das an? Ich bin mit der Zeit immer unzufriedener mit dem typischen Ad-hoc Ansatz von Serverkonfiguration geworden bei meinen Geräten. Bei kurzen Problemen, für die keine Zeit zum korrekt lösen besteht, geht man gerade bei eigenen Servern manchmal Umwege, damit ein Dienst möglichst schnell wieder online ist. Hierdurch sammeln sich über die Zeit mehrere kleine Schnipsel an, die nirgends ordentlich dokumentiert sind und dennoch für den Betrieb notwendig. Wenn das System an sich einen zum deklarativen Ansatz zwingt und gleichzeitig das Testen neuer Änderungen besser möglich macht, sind die Chancen auf eine langfristig konsistente Serverkonfiguration höher und man kann mehr damit anstellen.

Als End-Game stelle ich mir viel mehr Dienste auf meinem Dedicated Root Server vor, damit man die Hardware besser auslasten kann. Um hier den Überblick nicht zu verlieren, ist ein derartig deklarativer und strukturierter Ansatz wirklich unabdingbar. Updates sollen sich nicht gefährlich anfühlen und Entwicklungsumgebungen für beispielsweise Jenkins Build-Slaves sollten sich einfach erstellen lassen, ohne stets auf Docker zurückgreifen zu müssen.

Alles in Allem bin ich sehr gespannt, wie die Umstellung wird. Mit Ansible wäre immer alles von einem Admin-Rechner abhängig und man könnte nicht mehr auf dem Server an sich arbeiten, was ich nicht besonders angenehm finde im Vergleich zu möglichen Änderungen an der Server-Konfiguration direkt auf der Maschine, falls sich etwas dringendes ergeben sollte. Wenn es mit NixOS möglich ist, diese beiden Ansätze zu kombinieren, würde ich mich sehr freuen und hätte eine neue Distribution für meine Server gefunden!

LG,
Max