oLaF Logo

oLaF – Schülerforschungszentrum

At deleniti repellat expedita aspernatur ipsa qui doloremque facere. Eum enim velit rerum. Est dolorem voluptas iure. Fugiat excepturi sit suscipit. Neque est beatae est. Aut aliquid aut rerum.


Die große Nixifizierung

Wir migrieren unsere Serversoftware. Dabei haben wir uns für ein besonders Betriebssystem entschieden, hier ist wie und warum.

das einer Schneeflocke gleichende NixOS logo, weiß auf schwarzem grund, bestehend aus 0 und 1
künstlerisches NixOS Logo

Ausgangslage

Im oLaF haben wir einen Server, auf dem wir FOSS (free and open source software) Dienste hosten. Wir glauben daran, dass das notwendig ist um die Kontrolle über unsere Daten zu behalten, denn man kann den Internetgiganten nicht vertrauen. Diese Dienste können alle oLaFs nutzen, sie müssen nur einen der Admins ansprechen um ein Dienstübergreifendes Nutzerprofil zu bekommen. Welche Dienste im Moment betrieben werden und funktionieren kann man auf up.olaf.one sehen.

jetzt könnte es etwas technischer werden, denn es geht um die Serversoftware, mit der wir alles betreiben.

Als Betriebssystem haben wir aktuell Debian versuchen aber alle Dienste in Docker Containern zu isolieren um das System reproduzierbarer zu machen und die Konfigurationsdateien der Container nicht von systemweit installierten Programmen abhängig zu machen. Das funktioniert gut, aber es macht es schwer mit mehreren Leuten zusammen die Infrastruktur zu verändern, denn es gibt keinen zentralen Überblick, wer wann was verändert hat. Das versuchen wir zu lösen, aber dazu später mehr. Der Server, wir nennen ihn Tron, ist auch das Zentrum unserer IoT Infrastruktur, wie zum Beispiel die Türsteuerung.

Was ist Nix und warum sollte man es nutzen?

Nix ist mehrere Dinge, eine Programmiersprache, ein Paketverwalter und eine Sammlung aus Paketen. Es ermöglicht uns den Server mit Code, der dem Paketverwalter sagt, welche Pakete zu installieren sind und wie das System zu konfigurieren ist. Dadurch können wir Versionskontrollwerkzeuge, wie git verwenden, was uns ermöglicht sinnvoll und effizient zusammen an einem Projekt zu arbeiten. Es ist ein Vorreiter in Reproduzierbarkeit, da das gesamte System deklariert wird und nicht nur die Container. Da das System einer Einstellung folgt, sind die Ursachen für Probleme immer in der Konfigurationsdatei zu suchen, was einem herkömmlichen Code Projekt sehr ähnlich kommt und es daher ermöglicht gute Werkzeuge zu verwenden um den Prozess zu vereinfachen. Außerdem kann man auch nachschauen, wie die Dinge, die wir betreiben deklariert sind. Die technische Dokumentation schreibt sich ein Stück selber, nicht wie bei dem Aktuellen System, wo die Dateien veränderbar auf dem Server sind und Änderungen im Unwissen anderer getätigt werden, was zu Konflikten in der Logik führen kann.

Unser aktueller Ansatz ist das System auf Ada, einem unserer Rechner, neu aufzusetzen und nach und nach die Dienste von Tron weg migrieren und auf Ada mit nix neu zu machen. So wollen wir keine nennenswerte Downtime haben. Das Ziel ist dann, wenn alles von Tron weg migriert ist, auf ihm NixOS zu installieren, die Konfiguration von Ada zu Portieren und neu auf Tron zu aktivieren. Das ist möglich, weil Nix so viel Wert auf Reproduzierbarkeit legt.

Wir (Tom Cruz & pacman, die momentan die IT Infrastruktur unterhalten) erhoffen uns außerdem das wir, dadurch, dass alles in Code deklariert wird, die Infrastruktur besser aus der Entfernung weiterentwickeln können und andere schneller einarbeiten, indem wir den Nix Standards folgen. So erhoffen wir uns, dass die Entwicklung nicht durch unseren Studiumsbeginn verlangsamt wird.

Interessierte können gene den Quellcode und die (spärliche Dokumentation) lesen: ada-nixos - gitlab

- pacman 26.4.24