Drei Dinge, die beim ersten Lauf des Installers auf einer Linux-Maschine
auffielen.
1. Die Release-Ablage wies Administratorkonten ab. ReleaseGuard nahm nur
die Rolle 'installer' in die .htpasswd auf, waehrend Installskripte und
Agent ausdruecklich sagten, ein Administratorkonto tue es auch:
Anmeldung und Katalog gelangen, erst der Download endete mit 401 - und
die Meldung sprach von abgelaufenen Lizenzen, die es bei einer
Erstinstallation gar nicht geben kann. Adminkonten zaehlen jetzt zu den
Installationskonten. FORMAT_VERSION auf 3, damit reconcile() die
Dateien sofort neu schreibt statt erst beim naechsten turnusmaessigen
Lauf; ein neu angelegtes Konto landet ausserdem unabhaengig von seiner
Rolle sofort darin. Bei einem 401 mit Benutzerzugangsdaten nennt der
Client jetzt Konto und zugangsberechtigte Rollen, und der Agent bricht
ab, statt ueber die API weiterzusuchen und dieselbe Meldung ein paar
Schritte spaeter ein zweites Mal zu zeigen.
2. Der Installer prueft die .NET-Laufzeit. Bisher endete eine gelungene
Installation auf einer Maschine ohne .NET mit einer Anwendung, die sich
nicht starten laesst - und die Fehlersuche begann beim
Deploymentcenter, weil das der letzte bewusste Schritt war. Gelesen
wird die runtimeconfig.json der Anwendung und mit "dotnet
--list-runtimes" verglichen; fehlt etwas, nennt der Installer den
Installationsbefehl fuer diese Plattform. Eigenstaendig
veroeffentlichte Pakete werden nicht bemaengelt, rollForward wird
beachtet.
3. Die Ueberwachung der Maschine entsteht im Installer. Zwei Fragen -
Name im Dashboard und ob eingeplant werden soll - statt fuenf Schritten
in der Oberflaeche an einem anderen Rechner. Monitor, Token mit genau
watchdog:ping, Skript, Dateirechte, ein Heartbeat zur Probe und der
Cron-Eintrag bzw. die geplante Aufgabe entstehen daraus. Fuer Maschinen
ohne Installation: --action monitor.
Die Agent-Skripte werden jetzt in src/Modules/Watchdog/AgentScript.php
erzeugt - von Oberflaeche und Installer gemeinsam - und melden Last,
Speicher, Plattenbelegung und Laufzeit mit, statt nur "status: ok". Beim
Ausfuehren fielen zwei Fehler auf, die dort behoben sind: df -P verrutscht
bei Geraetenamen mit Leerzeichen (gezaehlt wird jetzt von hinten), und
ohne LC_ALL=C erzeugt awk auf einem deutschen System "12,5" und damit
kaputtes JSON.
Neu: POST /api/setup/v1/agent. SDK 2.6.0 mit
SetupClient.RequestWatchdogAgentAsync().
Die OpenAPI-Beschreibung des neuen Endpunkts bleibt zunaechst aussen vor:
public/api/openapi.php traegt gerade auch fremde, noch nicht committete
Aenderungen aus einer parallel laufenden Arbeit.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>