DevOps & Software Engineering – Meine aktuellen Projekte

Software Engineer transitioning to DevOps

Ich bringe langjährige Erfahrung in der Entwicklung von Enterprise-Anwendungen mit. Aktuell verbinde ich diese Erfahrung mit moderner Java-Entwicklung, Linux, Virtualisierung und ersten automatisierten Build- und Testprozessen.

Auf dieser Seite möchte ich zeigen, woran ich aktuell arbeite: eigene Software, selbst betriebene Dienste und ein Linux-Lab zum Ausprobieren und zur Fehleranalyse. Die Projekte entstehen aus tatsächlichem Bedarf und werden stetig weiterentwickelt.

Kontakt

01 · Eigene Software · Open-Source-Projekt

UTM Backup Manager

In meinem Linux-Lab wuchs die Zahl der VMs und damit der Zustände, die ich als Backup sichern wollte. Anfangs tat es ein komfortables Shellskript, das mir die Auswahl der zu sichernden VMs bot und den Kopiervorgang mit rsync startete, inklusive automatischer Kommentare und Speicherung einer Liste der Backups in einer Textdatei. Aber: Mit der Zeit verlor ich den Überblick. Welche Sicherungsstände gibt es für welche VM – und welche davon möchte ich dauerhaft behalten? Darum habe ich eine Webanwendung mit Java und Spring Boot entwickelt.

Die Anwendung liest vorhandene Backup-Verzeichnisse ein und stellt die Sicherungen nach VM und Datum dar. Kommentare und Stable-Markierungen werden in SQLite verwaltet. Als stabil markierte Backups sind vor dem Löschen über die Anwendung geschützt.

Screenshot der Web-Oberfläche des Backup-Managers. Je VM gibt es eine

Was habe ich gemacht?

  • Entwicklung der Webanwendung und Integration von Dateisystem, Backup-Metadaten und UTM command line interface.
  • Backup-Übersicht, Kommentare und Löschfunktionen mit Bestätigung und Schutz stabiler Sicherungsstände.
  • Automatisierte Unit- und Integrationstests
  • Code-Überprüfung mit SonarQube auf dedizierter VM
  • Gezielter Einsatz von Claude Code in einer weiteren dedizierten VM für phasenweises Refactoring zugunsten eines neuen Features
  • GitHub-Actions-Pipeline für Build und Tests.
  • Praktische Prüfung auf MacBook und iMac: Repository aktualisieren, Tests ausführen und Anwendung starten.

Eine konkrete Herausforderung

Für einen zuverlässigen CI-Lauf musste die Testkonfiguration zum Session-Verhalten der Anwendung passen. Nach der Anpassung der Test-Properties lief der Build erfolgreich durch. Damit werden Änderungen nicht nur lokal geprüft, sondern auch im GitHub-Workflow.

Technologien: IntelliJ Community Edition · Java 21 · Spring Boot · Maven · SQLite · HTML/CSS · Git · GitHub Actions · SonarQube · UTM/ utmctl

Status: Im eigenen Einsatz und aktiv weiterentwickelt. Die Liste der Feature-Ideen ist noch lang. 😊

Entwicklung mit Claude Code

Mit Version 1.5.0 habe ich das Projekt außerdem genutzt, um den praktischen Einsatz eines KI-gestützten Coding Agents kennenzulernen. Dafür habe ich Claude Code bewusst nicht auf meinem Entwicklungsrechner, sondern in meiner bereits vorhandenen DevSecOps-Ubuntu-VM eingerichtet.

Die Erweiterung des Backup Managers um eine Multi-Provider-Architektur und QEMU als zweiten Hypervisor habe ich gemeinsam mit Claude Code in zehn aufeinander aufbauende Entwicklungsphasen zerlegt. Architektur und Anforderungen habe ich dabei selbst vorgegeben und die einzelnen Aufgaben bewusst eng abgegrenzt. Claude Code übernahm anschließend Teile der Implementierung und der Tests.

Besonders wichtig war mir, die Arbeit des Coding Agents nicht ungeprüft zu übernehmen. Jede Phase wurde durch automatisierte Tests abgesichert, größere Zwischenschritte zusätzlich mit SonarQube analysiert und das Verhalten anschließend praktisch getestet. Commit, Merge und Release blieben ebenfalls bewusst außerhalb der automatisierten Claude-Code-Arbeit.

Dabei habe ich vor allem gelernt, dass der sinnvolle Einsatz eines Coding Agents weniger darin besteht, möglichst große Aufgaben auf einmal an eine KI zu delegieren. Gute Ergebnisse entstanden vielmehr durch klar formulierte Anforderungen, kleine überprüfbare Schritte, explizite Grenzen und ein vorhandenes technisches Sicherheitsnetz aus Tests und statischer Codeanalyse.

Ein anschauliches Beispiel war die QEMU-Integration: Obwohl die Implementierung zunächst alle Tests bestand, zeigte ein Test auf macOS einen sicherheitsrelevanten Sonderfall bei der Auflösung symbolischer Links in Verzeichnisnamen. Erst nach der Analyse und einem zusätzlichen Regressionstest wurde die Erkennung zur Laufzeit entsprechend korrigiert. Für mich war das eine gute praktische Erfahrung darin, KI-Unterstützung mit klassischer Software-Qualitätssicherung zu verbinden.

Vom eigenen Bedarf zum Projekt

Problem
Mehrere VMs und viele Sicherungsstände wurden unübersichtlich.

Umsetzung
Eine Weboberfläche verbindet Backup-Dateien, Metadaten und Verwaltungsfunktionen.

Validierung
Automatisierte Tests, CI, Code-Validierung mit SonarQube auf separater VM und praktische Tests auf mehreren Rechnern.

Screenshots

02 · Linux & Virtualisierung · Lernumgebung

Mein Linux-Lab – der „Maschinenzoo“

Es begann mit meinem Wunsch, von Windows loszukommen, weshalb ich auf meinem alten Acer Laptop von 2015 Anfang dieses Jahres (2026) Linux Mint 22.3 installiert habe. Damit das auch noch die vorher gesicherte Windows-Installation als VM betreiben kann, wurde der RAM von 8 auf 16 GB aufgerüstet. So habe ich noch Zugriff auf meine alten Daten. Der alte Laptop läuft mit Linux ganz brauchbar und lässt in gewissem Rahmen auch Entwicklungsarbeit mit einer IDE wie IntelliJ zu. Unter Windows war er unerträglich langsam.

Im Frühjahr 2026 bekam ich dann ein M2 Macbook Pro. Mit UTM betreibe ich darauf inzwischen verschiedene Linux-Distributionen als VMs. Die meisten sind Sandboxes: Ich lerne die Installation der Distributionen und Desktop-Umgebungen kennen, teste Konfigurationen und untersuche typische Fehler nach Updates. Die separate Ubuntu-Server-VM für Jitsi erfüllt dagegen tatsächlich einen produktiven Zweck.

Ubuntu

Server- und DevSecOps-Themen, Netzwerkverwaltung, SSH und systemd.

Linux Mint

Desktopbetrieb der Alpha-Version 23 mit Cinnamon und Fehlersuche bei Startproblemen.

Arch Linux

Paketmanagement, Plasma/Wayland und Integration mit dem Host.

AlmaLinux

Nutzung einer Enterprise-Linux-Distribution und ihrer Administration. Geplant für weitere Anwendungen.

Omarchy/Arch ARM

Hyprland, EFI-Boot und Integration von Shared Folder und Zwischenablage mit dem Host-System (macOS).

Praktische Fehleranalyse

Bootprobleme über die serielle Konsole eingrenzen, Dienste prüfen und Netzwerkkonfigurationen korrigieren.

Themen im Lab: Installation und Partitionierung · systemd · NetworkManager · SSH · EFI · Paketmanagement · Shared Folders · SPICE · Wayland · Backups

03 · Selbst betriebener Dienst · Seit September 2026

Privater Meeting-Server mit Jitsi

Für private Videokonferenzen habe ich Jitsi Meet auf einer Ubuntu-Server-VM eingerichtet. Die selbst betriebene Lösung ermöglicht mir, die eingesetzte Infrastruktur selbst zu verwalten und unabhängig von kommerziellen Meeting-Plattformen zu arbeiten.

Mehr als eine Standardinstallation

Eine eigene PHP-Oberfläche verwaltet Meetings und erzeugt zeitlich begrenzte Einladungen. JWT-Tokens unterscheiden zwischen Moderator und Teilnehmer. Nur autorisierte Personen dürfen neue Meetings anlegen; ungültige Aufrufe werden auf eine Landingpage umgeleitet.

Die wichtigste Herausforderung war das Zusammenspiel von Jitsi, Prosody und JWT: Teilnehmer sollen beitreten können, ohne unbeabsichtigt Moderatorrechte zu erhalten. Dafür habe ich Rollenvergabe, Raum-Erstellung und Authentifizierung aufeinander abgestimmt.

Technologien: Ubuntu Server 24.04 · UTM · Jitsi Meet · Prosody · PHP · JWT · Dynamic DNS

Status: Produktiv, Start des Servers nur bei Bedarf. Der Zugang erfolgt ausschließlich über gültige Einladungen; es gibt keine frei zugängliche Portfolio-Demo.

Screenshot des Anmeldebildschirms eines Jitsi-Meetings

Willkommensseite für den Beitritt zu einem Beispielmeeting

Landing-Page, auf die man nach Beendigung eines Meetings oder bei Aufruf eines ungültigen Meeting-Links umgeleitet wird.

Landing-Page, auf die man nach Beendigung eines Meetings oder bei Aufruf eines ungültigen Meeting-Links umgeleitet wird.

Screenshot der Übersichtsseite aller existierenden Meetings

Eigene Übersicht gespeicherter Meetings mit Status und Gültigkeit.

Eigener PHP-Generator für Moderator- und Teilnehmer-Einladungen. Die Namen sind erfunden, die JWT-Tokens in den Links geschwärzt.

04 · Hosting & Identity · Seit September 2026

Privater Dokumententransfer mit FileSender

Für den Austausch vertraulicher Dateien, z. B. mit Personalabteilungen, habe ich die Open-Source-Lösung „FileSender“ auf meinem Hosting bei all-inkl.com per SSH installiert. Datei-Empfänger erhalten einen Download-Link statt eines Anhangs und benötigen dafür kein eigenes Konto bei meinem Server.

Authentifizierung über ZITADEL

FileSender übernimmt Upload und Bereitstellung der Dateien. Die Anmeldung an die Administration läuft über OpenID Connect mit der Cloud-Lösung ZITADEL als Identity Provider. Der Upload-Bereich ist damit auf autorisierte Administratoren beschränkt; deren Anmeldung ist auf Passkeys eingerichtet.

Die Herausforderung lag in der Verbindung beider Systeme: OIDC-Client, Redirect-URIs, Scopes und Claims mussten zusammenpassen, damit FileSender die authentifizierten Benutzer korrekt zuordnet.

Technologien: FileSender 3.x · PHP · MariaDB · SSH · OpenID Connect · ZITADEL · Passkeys

Status: Produktiv auf Shared Hosting.

Screenshot der Übersichtsseite in FileSender mit den bisherigen Uploads und ihren Empfängern.

FileSender: Admin-Seite mit Übersicht der eigenen Transfers. Die Empfänger wurden geschwärzt.

05 · Support & Integration · Seit September 2026

Ticketsystem für Supportanfragen und Bug-Reports

Nachem ich den GitHub-Link zu meinem UTM Backup Manager in einer Linux-Community gepostet hatte, brauchte ich eine Möglichkeit, Anwenderfragen und Fehlerberichte strukturiert entgegenzunehmen. Dafür habe ich das Open-Source-Sysetm „osTicket“ per SSH auf meinem Hosting installiert und optisch an die Fjordkommission angepasst.

Eigentlich sollte zuerst Jira Service Management JSM zum Einsatz kommen, aber inzwischen gibt es keine Installationen zum selbst hosten mehr. So fiel die Wahl kurzfristig auf osTicket. Im Mittelpunkt standen Auswahl und Einrichtung einer passenden Open-Source-Lösung, eine deutsche Oberfläche sowie Logo- und zahlreiche Style-Anpassungen, um Zugehörigkeit zur Fjordkommission zu verdeutlichen.

Das Supportcenter stellt Ticket-Erstellung und Statusabfrage bereit. Die Subdomain heißt zwar jira.fjordkommission.de; eingesetzt wird aber osTicket.

Technologien: osTicket · PHP · Datenbank · SSH · CSS · Shared Hosting

Status: Produktiv.

Startseite des Ticketsystems auf https://jira.fjordkommission.de

Fjordkommission-Supportcenter auf Basis von osTicket.

Technologien in meiner aktuellen Praxis

Diese Werkzeuge kommen in den beschriebenen Projekten zum Einsatz.

Softwareentwicklung

Java 21 · Spring Boot · Maven · PHP · SQL

Build & Qualität

Git · GitHub · GitHub Actions · CI · automatisierte Tests

Linux & Virtualisierung

Ubuntu · Mint · Arch Linux · AlmaLinux · systemd · SSH · UTM · QEMU

Web & Identity

SQLite · MariaDB · JWT · OpenID Connect · ZITADEL

Was als Nächstes kommt

Auf Linux, Virtualisierung, Java/Spring Boot und erste CI-Prozesse möchte ich aufbauen: Containerisierung und Kubernetes sind meine nächsten Lernschwerpunkte. Kubernetes-Projekterfahrung gehört bislang noch nicht zu diesem Portfolio.

Über die Projekte ins Gespräch kommen

Einige dieser Projekte nutze ich im Alltag, andere dienen bewusst dem Lernen und Ausprobieren. Quellcode und Weiterentwicklung des Backup Managers sind auf GitHub zu finden. Für einen Austausch über die Projekte oder passende Aufgaben freue ich mich über eine Nachricht.

Stand: Oktober 2026

Kontakt