{
  "kanal": "test",
  "version": "26.10.21.1",
  "veroeffentlicht": "2026-10-21T13:53:33Z",
  "mindestversion": "",
  "hinweise": "https://getkastra.de/aenderungen/26.10.21.1/",
  "aenderungen": {
    "art": "eingriff",
    "neu": ["Bringt das Holen eines Repositories einen neuen Commit, startet Kastra die Anwendung der Domain danach selbst neu: eine Node.js-Anwendung wird deployt (Abhängigkeiten, Bau, Neustart), ein laufender Container samt Bau neu gestartet. Ein angehaltener Container bleibt angehalten. Der Schalter *Anwendung nach einem neuen Stand neu starten* am Repository ist für neue und vorhandene Repositories eingeschaltet.", "Beendet der Kernel einen Prozess, weil der Arbeitsspeicher nicht reicht, meldet Kastra das als neue Alarmart `OOM_KILL` — mit dem Namen des Prozesses und den Zeilen des Kernels. Kritisch, wenn der ganze Node voll war; eine Warnung, wenn nur eine Subscription an die Speichergrenze ihres Tarifs gestoßen ist. Bisher fiel ein solcher Abbruch niemandem auf.", "Die Übersicht eines Nodes zeigt unter *Fakten*, wie viel Swap er hat, und weist darauf hin, wenn er keinen hat.", "Unter *Einstellungen › PHP* gibt es eine allgemeine PHP-Konfiguration für alle Nodes und alle PHP-Fassungen: Grenzen, Fehler und Regionales, Sitzungen, OPcache, FPM-Prozesse und freie `php.ini`-Zeilen. Jede Domain erbt, was sie nicht selbst setzt; bei jedem Feld steht, wie viele Domains abweichen. Nur für Administratoren.", "Der Bereich *PHP* einer Domain zeigt bei jedem Feld, ob der Wert eigen ist oder *wie allgemein*; ein leeres Feld oder *Alles wie allgemein* setzt ihn zurück. Neu dort: Sitzungs-Cookies (nur über HTTPS, HttpOnly, SameSite, nur bekannte Kennungen), das OPcache-Prüfintervall, freie `php.ini`-Zeilen und — für Administratoren — die FPM-Prozesse samt harter Zeitgrenze und Protokoll langsamer Anfragen.", "Dauert eine PHP-Anfrage länger als eingestellt, steht ihr Aufrufstapel im neuen Protokoll *Langsame PHP-Anfragen* der Domain."],
    "geaendert": ["Die Control Plane nimmt sich höchstens 1,5 GB Heap statt bis zu 70 % des Arbeitsspeichers. Auf einem Host, den sie mit Datenbanken und Kundenanwendungen teilt, durfte sie sich bisher fast alles nehmen. Reicht der Heap nicht, beendet sie sich und wird neu gestartet, statt halb lebendig weiterzulaufen. Eine andere Grenze steht als `KASTRA_JAVA_OPTS` in `/etc/kastra/control-plane.env`.", "Der Upload-Fortschritt in PHP-Sitzungen (`session.upload_progress.enabled`) ist auf jeder Domain **aus** und lässt sich je Domain nicht wieder einschalten, auch nicht über eine `.user.ini`. Braucht eine Anwendung ihn, schaltet ihn ein Administrator unter *Einstellungen › PHP* ein. Anlass ist die für den 21. Oktober 2026 angekündigte PHP-Sicherheitslücke in diesem Handler.", "`opcache_get_status()` und `opcache_reset()` sind für jede Domain gesperrt, und PHP prüft bei jedem Treffer im OPcache, ob der Benutzer die Datei lesen darf. Bisher sah jede Domain die Dateipfade aller anderen Domains derselben PHP-Fassung, und *Cache leeren* in einer Anwendung leerte ihn allen.", "PHP-Werte einer Domain, die genau auf der bisherigen Vorgabe standen (etwa `memory_limit = 256M`), gelten nach dem Update als *wie allgemein* und folgen künftig der allgemeinen Konfiguration. Auf dem Node ändert sich dadurch nichts; eine Domain, die einen solchen Wert bewusst eingetragen hatte, trägt ihn bei Bedarf neu ein.", "Freie `php.ini`-Zeilen je Domain nehmen nur Direktiven an, die eine Anwendung auch selbst über `.user.ini` oder `ini_set()` setzen dürfte. Eine Zeile wie `sendmail_path` hätte im FPM-Pool sonst einen beliebigen Befehl erlaubt."],
    "behoben": ["Eine Einzelseitenanwendung (Flutter, Angular, React) lässt sich über die Zusatzkonfiguration einrichten: ein eigenes `try_files` im `location`-Kontext ersetzt das von Kastra erzeugte. Bisher standen dann zwei nebeneinander, und der Rollout scheiterte mit `NGINX_CONFIG_INVALID`.", "Setzt die Zusatzkonfiguration im `location`-Kontext ein eigenes `add_header`, etwa `Cache-Control`, behält die Domain trotzdem HSTS und ihre Sicherheits-Header. Bisher fielen beide dabei still weg.", "Ein gekürzter Hinweis unter einem Eingabefeld zeigt beim Überfahren überall seinen vollen Text, etwa im Formular *Tarif bearbeiten*. Bisher tat er das nur auf wenigen Seiten.", "Die Protokolle einer Domain füllen ihren Kasten sofort ganz. Bisher erschien bei einem langen Protokoll nur der obere Teil, der Rest erst beim Rollen."],
    "eingriffe": ["W-003-swapdatei — legt auf einem Node **ohne** Swap die Swapdatei `/kastra.swap` an (ein Viertel des Arbeitsspeichers, mindestens 1 GiB, höchstens 4 GiB), trägt sie in `/etc/fstab` ein und setzt über `/etc/sysctl.d/90-kastra-swap.conf` `vm.swappiness = 10`. Ein Node, der schon Swap hat, in einem Container läuft, nicht auf ext4 oder xfs liegt oder weniger als das Vierfache der Dateigröße frei hat, bleibt unverändert; die Ausgabe sagt, warum. Läuft je Node einmal, auf einem neu installierten Node gleich bei der Installation. Zurücknehmbar: `swapoff /kastra.swap`, die Zeile aus `/etc/fstab` nehmen, `/kastra.swap` und `/etc/sysctl.d/90-kastra-swap.conf` löschen."],
    "rendert": ["fpm-confd — neu je PHP-Fassung: `/etc/php/<fassung>/fpm/conf.d/99-kastra.ini` mit `opcache.validate_permission = 1`, `opcache.restrict_api` und `session.upload_progress.enabled = 0`, dazu, was unter *Einstellungen › PHP* allgemein steht. Alle FPM-Fassungen werden dafür einmal neu geladen. Die Datei gehört ab jetzt Kastra; eine von Hand dort abgelegte Datei mit anderem Namen bleibt unberührt. Eine Notfalldatei wie `99-notfall.ini` kann nach dem Update weg.", "fpm-pool — jeder Pool trägt `php_admin_flag[session.upload_progress.enabled] = off`. Weitere neue Zeilen (Sitzungs-Cookies, OPcache, Zeitgrenze, Slowlog, allgemeine freie Zeilen) erscheinen nur, wenn jemand einen Wert einstellt.", "apparmor-php — das Profil von PHP-FPM erlaubt das Schreiben unter `/var/log/kastra/subscriptions/` und das Mitlesen eines langsamen Workers für das Protokoll langsamer Anfragen.", "logrotate — `php-slow.log` wird mit `php-error.log` gedreht."]
  },
  "pakete": ["kastra-agent", "kastra-control-plane", "kastra-ui"]
}
