Zum Inhalt
Getestet, wie es benutzt wird. Kastra ist nicht unter Produktionsbedingungen geprüft — auch der Kanal stabil nicht. Was das heißt.
test 26.10.28.2 stabil 26.10.12.1

Changelog · Fassung

26.10.23.3

Eingriff am Node Test

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.
  • Die PHP-Fassung des Webmails lässt sich im Bereich Mailserver eines Nodes einstellen, unabhängig von den Maildomains. Automatisch bleibt die Voreinstellung und wählt wie bisher die neueste Fassung bis 8.3. Fehlen der gewählten Fassung Erweiterungen, die Roundcube braucht, bleibt das Webmail auf der automatischen Wahl, und der Rollout nennt die fehlenden Pakete. Eine Fassung, auf der das Webmail eingestellt ist, lässt sich unter Laufzeiten nicht entfernen.

Geändert

  • Archiv erstellen im Dateimanager packt im Hintergrund: über der Liste und in der Leiste unten rechts steht, wie viel schon gepackt ist, und der Dateimanager bleibt währenddessen bedienbar — auch ein Seitenwechsel hält das Packen nicht an. Ein großes Archiv bricht nicht mehr nach fünf Minuten ab; die Grenze liegt jetzt bei einer Stunde.
  • 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 am Node

  • 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 anders

  • 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.

Alle Fassungen