Table of Contents
- Software- & Service-Übersicht
- Connector-Dienste (blunix)
- VPN & Networking
- Reverse Proxy
- Authentifizierung & Identität
- Sicherheit
- Webdienste
- Kommunikation
- KI-Agent
- Backup & Remote-Builds
- Worker-Dienste (pinix)
- Entwicklung & Versionskontrolle
- Kommunikation
- Fediverse
- Backup-Lösungen
- Produktivitätswerkzeuge
- Dateidienste
- Webdienste (pinix)
- Builder-Dienste (tnix)
- Systemverwaltung
- Backup-Orchestrierung
- Display-Manager
- Storage-Management
- Batterie-Überwachung
- Schriftarten
- nixbuild.net-Anbindung (tnix)
- Eingabe & Interface
- Synchronisationsdienste
- Spezialisierte Software
- Entwicklungswerkzeuge
Software- & Service-Übersicht
Dieses Dokument beschreibt den Software-Stack und die Dienste, die über
die Drei-Maschinen-Infrastruktur verteilt laufen. Jeder Eintrag verlinkt
die tatsächliche Nix-Konfiguration im Hauptrepo (Branch dev).
Connector-Dienste (blunix)
Der Connector-Host betreibt Netzwerk, Authentifizierung, Routing — und seit 29.07.2026 zusätzlich die beiden statisch gehosteten Sites, damit sie unabhängig von pinix erreichbar bleiben.
VPN & Networking
Headscale
- Website: headscale.net
- Zweck: selbst gehosteter Tailscale-Control-Server
- Konfiguration: headscale.nix
⚠️ Wichtig: Traefik und Headscale müssen getrennt neu gebaut werden. Erst Traefik bauen, um den Domain-Anker zu setzen, dann Headscale.
Tailscale
- Website: tailscale.com
- Zweck: Mesh-VPN-Client
- Konfiguration: tailscale.nix
AdGuard Home
- Website: adguard.com
- Zweck: DNS-Resolver für den Tailnet, inkl. Rewrites, die interne
Hostnamen (z. B.
dash,calendar) auf die Tailnet-IP von blunix statt auf die öffentliche Adresse auflösen - Konfiguration: adguard.nix
Reverse Proxy
Traefik
- Website: doc.traefik.io
- Zweck: HTTP-Reverse-Proxy und Load Balancer mit automatischem SSL
- Konfigurationsdateien (seit 31.07.2026 im
traefik/-Unterordner):
Authentifizierung & Identität
LLDAP
- Website: github.com/lldap/lldap
- Zweck: leichtgewichtiger LDAP-Server für Nutzerverwaltung
- Konfiguration: lldap.nix
Dex
- Website: dexidp.io
- Zweck: OIDC-Provider, authentifiziert gegen LLDAP; die meisten Dienste (Forgejo, GoToSocial, Vikunja, Audiobookshelf, Quantum, Trek …) hängen hier als Static Client dran
- Konfiguration: dex.nix
- Hinweis: nutzt seit 31.07.2026 das reine NixOS-Upstream-Modul (kein
disabledModulesmehr) — das LDAP-Bind-Passwort läuft über Dex' eigene$VAR_NAME-Expansion statt eines eigenen Moduls, siehe dex-ldap-env.service
oauth2-proxy
- Website: github.com/oauth2-proxy
- Zweck: OIDC-Gate vor der
launcher-Site (0ff.space) - Konfiguration: oauth2-proxy.nix
- Status: Dienst läuft, der Schutz selbst ist seit 29.07.2026 auf
Nutzerwunsch deaktiviert (
0ff.spaceist offen erreichbar)
Sicherheit
fail2ban
- Zweck: Brute-Force-Schutz für SSH und weitere Dienste
- Konfiguration: fail2ban.nix
Webdienste
Launcher
- Zweck: öffentliche Hauptwebsite und Landingpage (
0ff.space) — seit 29.07.2026 auf blunix statt pinix, damit sie bei einem pinix-Ausfall erreichbar bleibt - Konfiguration: launcher.nix
- Inhalt: eigenes Repo
launcher
Website (lukasrosier.com)
- Zweck: privates Portfolio, ebenfalls seit 29.07.2026 auf blunix
- Konfiguration: website.nix
- Inhalt: eigenes Repo
website(Branchesdev/production/bak/main) - Nicht zu verwechseln mit: der gleichnamigen Dev-Preview auf pinix, siehe dort
WordPress (hdm)
- Zweck: WordPress-Instanz unter
hdm.0ff.space - Konfiguration: wordpress.nix
Dateiserver (extern)
- Zweck: öffentlicher Datei-Mirror (
data.0ff.space) — ebenfalls seit 29.07.2026 auf blunix - Konfiguration: fileserver-external.nix
Auto-Pull-Webhook
- Zweck: zieht bei Forgejo-Push automatisch
website/launcherneu (Tailnet-only, Port 9000) - Konfiguration: webhook.nix
Kommunikation
Prosody-Datei-Uploads (Routing)
- Zweck: Traefik-Routing für Prosodys HTTP-File-Upload
(
upload.0ff.space), Prosody selbst läuft auf pinix - Konfiguration: upload-prosody.nix
KI-Agent
agent-codex
- Zweck: XMPP-erreichbarer Codex-Agent in zwei Rollen — Agent
(
agent@bot.0ff.space, read-only, für alle 0ff.space-Nutzer) und Builder (builder@bot.0ff.space, kann Dateien ändern und committen/pushen, nur im Direktdialog mit lukas oder per freigegebenem Handoff vom Agent) - Konfiguration: agent-codex.nix, Skripte und Rollen-Prompts im
agent-codex/-Ordner und im Repo-Root unteragents/
Backup & Remote-Builds
Restic (blunix)
- Zweck: verschlüsselte, deduplizierte Backups des Connector-Hosts
- Konfiguration: restic.nix
nixbuild.net-Anbindung (blunix)
- Zweck: registriert
eu.nixbuild.netals expliziten Opt-in-Remote-Store für aarch64-Builds (pinix) — niemals automatischer Builder - Konfiguration: nixbuild.nix
Worker-Dienste (pinix)
Der Worker-Host übernimmt Kommunikations-, Backup- und Produktivitätsdienste. Schwache Hardware — wird nie lokal gebaut, immer remote über nixbuild.net.
Entwicklung & Versionskontrolle
Git-Server (Forgejo)
- Software: Forgejo
- Zweck: selbst gehostetes Git-Repository-Management mit LFS-Unterstützung
- Konfiguration: forgejo.nix
- Merkmale: OAuth2-Integration, SSH-Server auf Port 2222 (nur im Tailnet erreichbar), PWA-Unterstützung
Webhooks (pinix)
- Integration: internes Webhook-System über services.webhook, u. a.
Chat-Benachrichtigungen bei Forgejo-Push und der
calendar-web-Auto-Pull - Konfiguration: webhook.nix
Webhook-Beispiel
Vikunja-Task-Änderung löst Webhook aus → JSON-Payload an services.webhook gesendet → Skript verarbeitet den Payload → Nachricht über go-sendxmpp an XMPP-Gruppenkanal gesendet → Änderung in XMPP-Clients sichtbar
Kommunikation
XMPP-Server (Prosody)
- Website: prosody.im
- Zweck: interner Chat und Messaging
- Konfiguration: setup-prosody.nix
- Setup: 2 virtuelle Hosts
- einer für Menschen
- einer für Bots (
bot.0ff.space)
XMPP-Web-Client
- Software: xmpp-web
- Zweck: browserbasierter, anonymer Gast-Zugang zur öffentlichen
Lobby (
chat.0ff.space) - Konfiguration: xmpp-web.nix
XMPP-Client (Monal)
- Zweck: empfohlener nativer XMPP-Client für Endnutzer (iOS-App, nicht Teil dieses Repos)
Fediverse
GoToSocial
- Zweck: ActivityPub-Social-Media-Server
- Konfiguration: gotosocial.nix
- Merkmale: PostgreSQL-Backend, OIDC-Integration mit Dex
- Port: 8020
Phanpy
- Zweck: moderner Web-Client fürs Fediverse/Mastodon
- Konfiguration: phanpy.nix
- Port: 8004
Backup-Lösungen
Restic (pinix)
- Zweck: verschlüsselte, deduplizierte Backups
- Konfiguration: restic.nix
Produktivitätswerkzeuge
Vikunja
- Zweck: Aufgaben- und Projektorganisation
- Status: seit 29.07.2026 deaktiviert (in
default.nixauskommentiert), abgelöst durch dasagent@-XMPP-Postfach; Daten bleiben auf der Platte, jederzeit reaktivierbar - Konfiguration (nicht importiert): vikunja.nix
Kalenderdienst
- Protokoll: CalDAV via Radicale, plus ein read-only Web-Frontend
- Konfiguration: radicale.nix, web.nix — Details in calendar/README.md
- Frontend-Inhalt: eigenes Repo
calendar-web - Merkmale:
- persönliche Kalender-Namensräume für jeden LLDAP-Nutzer
- eine geteilte
calendar/public-Sammlung, die alle authentifizierten Nutzer bearbeiten können - öffentlicher Read-only-Feed auf
cal.0ff.space(webcal://-Abo)
- Authentifizierung: über die normalen LLDAP-Zugangsdaten
Dateidienste
Dateiserver (intern)
- Zweck: interne Dateifreigabe und -speicherung
- Konfiguration: fileserver-internal.nix
- Port: 8010
WebDAV + SMB
- Zweck: Dateizugriff für Remote-Geräte — WebDAV (Port 8012) für kompatible Apps, zusätzlich SMB3 (Port 445, nur Tailnet) für die iOS/iPadOS-Dateien-App
- Konfiguration: webdav.nix
Webdienste (pinix)
Dashboard
- Zweck: internes Dashboard und Service-Launcher (
dash.0ff.space) - Konfiguration: dashboard.nix
- Port: 8002
- Inhalt: eigenes Repo
dashboard
Desk
- Zweck: interner Arbeitsbereich (
desk.0ff.space) - Konfiguration: desk.nix
- Port: 8005
Website-Vorschau (Dev-Preview)
- Zweck: Ad-hoc-Vorschauserver für den
website-Repo-Checkout auf pinix — nicht die Produktions-Website (die läuft auf blunix, siehe Connector-Dienste oben) - Konfiguration: website.nix
- Port: 8003
Builder-Dienste (tnix)
Der Builder-Host dient als Orchestrator und primäre Entwicklungsmaschine — nicht immer online, sicherer Kanarienvogel für riskante Änderungen.
Systemverwaltung
Backup-Orchestrierung
- Zweck: zentrales Backup-Management für alle Hosts
- Konfiguration: backup.nix
- Dienste:
backup-srv: Backup des pinix-/srv/-Verzeichnissesbackup-pi: Backup des pinix-/backup/-Verzeichnissesbackup-vps: Backup des blunix-/backup/-Verzeichnisses- passende Restore-Dienste für jedes Backup-Ziel
- Methode: rsync über SSH mit Key-basierter Authentifizierung
Display-Manager
- Software: Ly
- Zweck: leichtgewichtiger TUI-Display-Manager
- Konfiguration: ly.nix
Storage-Management
- Dienst: udisks2
- Zweck: automatisches Einbinden und Verwalten von Wechseldatenträgern
- Konfiguration: udisks2.nix
Batterie-Überwachung
- Zweck: Hyprland-Notifications bei niedrigem Akkustand
- Konfiguration: battery-monitor.nix
Schriftarten
- Zweck: systemweite Font-Pakete (aktuell Fira Code)
- Konfiguration: fonts.nix
nixbuild.net-Anbindung (tnix)
- Zweck: registriert
eu.nixbuild.netals expliziten Opt-in-Remote-Store, gleiches Muster wie auf blunix - Konfiguration: nixbuild.nix
Eingabe & Interface
Tastatur-Remapping
- Software: keyd
- Zweck: systemweites Key-Remapping und Shortcuts
- Konfiguration: keyd.nix
- Merkmale:
- Caps Lock als Control/Escape-Overlay
- Control+H für Backspace
- Control+O für Enter
Synchronisationsdienste
Kalender-/Kontakt-Sync
- Software: vdirsyncer
- Zweck: Kalender und Kontakte mit einem Remote-CalDAV synchronisieren
- Konfiguration: vdirsyncer.nix
- Merkmale: bidirektionale Sync zwischen lokalem Dateisystem und Remote-CalDAV-Server
- Status: aktuell in
default.nixdeaktiviert
Spezialisierte Software
Dokumentenverarbeitung
- TeX Live Full: vollständige LaTeX-Distribution für Textsatz
- Pandoc: universeller Dokumentkonverter
- Zweck: professionelle Dokumenterstellung und -konvertierung
Hardware-Tools
- Raspberry Pi Imager: SD-Karten-Imaging-Tool fürs Pi-Deployment
- AusweisApp: deutsche eID-Anwendung
Networking
- Tailscale: VPN-Mesh-Client für sichere Konnektivität
- Konfiguration: tailscale.nix
Entwicklungswerkzeuge
Kernsystem
- OS: NixOS (deklaratives Konfigurationsmanagement)
- Versionskontrolle: Git
Editor & IDE
- Editor: Neovim
- Konfiguration: nixvim
- Setup: Neovim mit Plugins als primäre IDE
Kommandozeilen-Werkzeuge
grep— Textsucheawk— Textverarbeitung- weitere Standard-Linux-Utilities