Repo-Aufbau¶
Diese Seite zeigt, wo im Repo was liegt, womit es ausgerollt wird und was davon von Hand übertragen wird. Sie ist eine Orientierung, keine vollständige Dateiliste; die findest du im Repo selbst.
So ist das Repo aufgebaut¶
| Ordner | Was dort liegt | Ausgerollt mit |
|---|---|---|
syslet/ |
Konfiguration der Hosts: alle Container, Volumes, Netzwerke und Secrets | syslet (cue cmd apply) |
desec/ |
DNS-Einträge unserer beiden Domains | desync (cue cmd apply) |
apps/ |
Begleitmaterial zu einzelnen Apps, darunter die Authentik-Konfiguration | je nach Inhalt: Terraform, von Hand oder gar nicht |
rootfs/ |
Dateien, die auf den Hosts außerhalb von syslet liegen | von Hand |
docs/ |
diese Doku | wird nicht ausgerollt, nur lokal gebaut |
cue.mod/ |
Einstellungen für CUE, unter anderem die syslet-Version | wird nicht ausgerollt |
syslet/, desec/ und die Terraform-Ordner unter apps/authentik/ werden von genau einem Werkzeug ausgerollt; wer eine Datei ändert, weiß am Ordner, womit die Änderung auf den Weg geht.
Im Hauptordner liegen außerdem das Makefile und zensical.toml zum Bauen der Doku.
Was auf den Hosts läuft, steht nur in syslet/<host>/
Nur die Dateien in syslet/werner/ und syslet/containerhost/ (zusammen mit den gemeinsamen Dateien direkt in syslet/) werden auf die Hosts ausgerollt.
Unter apps/ liegen ebenfalls CUE-Dateien, die wie Stack-Dateien aussehen: apps/opencloud/, apps/dokuwiki/stack-dokuwiki.cue und apps/authentik/hack/stack-authentik.cue.
Das sind frühere Proofs of Concept.
Sie werden nirgends ausgerollt; wer sie ändert, ändert nichts an den Servern.
Sie bleiben im Repo, damit ein späterer neuer Versuch darauf aufbauen kann.
Die Ordner im Einzelnen¶
syslet/¶
Direkt in syslet/ liegen die Dateien, die für alle Hosts gelten, darunter syslet/syslet.cue und die Verschlüsselungsregeln in syslet/.sops.yaml.
Darunter gibt es einen Ordner je Host mit seinen Stacks und Secrets, und den Ordner syslet/scripts/ mit Skripten für Backup und Restore, die syslet in die Container legt.
Ausgerollt wird je Host aus seinem Ordner heraus. Welche Datei wofür da ist, steht in syslet in diesem Repo.
desec/¶
Je Domain eine Datei mit allen DNS-Einträgen: desec/desec_garage_lab_de.cue und desec/desec_garage_lab_net.cue.
Die Dateien desync*.cue daneben verbinden diese Einträge mit desync und ändern sich so gut wie nie.
Nicht hier verwaltet wird die Registrierung der Domains; die liegt beim Webhoster und wird über seine Web-Oberfläche gepflegt (siehe DNS).
Mehr dazu: Verwaltung mit desync
apps/¶
Je App ein Ordner mit allem, was zu ihr gehört, aber nicht in eine Stack-Datei passt. So stören Notizen, Skripte und Vorlagen nicht beim Lesen der Stack-Dateien und sind trotzdem bei der App zu finden:
- Authentik: die Terraform-Konfiguration in
apps/authentik/tf-core/undapps/authentik/tf-groups/, ausgerollt mit Terraform; die Blueprints für die Anmelde- und Onboarding-Flows; Bilder für die Login-Seite inapps/authentik/media/, die von Hand auf das Webhosting kopiert werden (siehe Authentik) - E-Mail-Vorlagen des Membertools in
apps/membertool/ - Skripte für einmalige oder seltene Aufgaben, meist im Unterordner
hack/, zum Beispiel inapps/discourse/hack/; sie werden von Hand ausgeführt - Notizen zu Einrichtung und Migration einzelner Apps, meist als
.txt-Datei
Die CUE-Dateien unter apps/ sind Proofs of Concept, siehe oben.
rootfs/¶
Dateien, die auf den Hosts an einem festen Ort im Dateisystem liegen und nicht von syslet verwaltet werden, etwa die systemd-Timer für das Backup oder die Einstellungen für automatische Updates.
Je Host ein Ordner; der Pfad darunter entspricht dem Pfad auf dem Host, rootfs/werner/etc/dnf/automatic.conf liegt also auf werner unter /etc/dnf/automatic.conf.
Diese Dateien werden von Hand auf den Host kopiert. Warum das so ist und was dazugehört, steht in Statische Konfiguration.
docs/¶
Diese Doku.
Sie wird mit zensical gebaut (make docs) und vorerst nur lokal angesehen.
Daneben liegen noch einige ältere Seiten direkt in docs/, deren Inhalt nach und nach in die neue Struktur übernommen wird.
cue.mod/¶
cue.mod/module.cue legt fest, dass syslet/ und desec/ zu einem gemeinsamen CUE-Modul gehören, welche CUE-Version gilt und welche Version des CUE-Teils von syslet eingebunden ist.
Geändert wird die Datei nur, wenn wir auf eine neue syslet-Version wechseln.
Weiterlesen¶
- Lokales Tooling: welches Werkzeug welchen Ordner verwaltet
- syslet in diesem Repo: die Dateien unter
syslet/im Detail - Was wird wo verwaltet: auch alles, was nicht im Repo liegt