Funktionen
Was Kastra kann
69 Punkte in neun Bereichen. Jeder davon ist im Panel selbst erklärt — das Handbuch gehört zur Oberfläche, und der Bau bricht ab, wenn es einer Seite fehlt. Was hier steht, läuft auf der Testanlage; unter Produktionsbedingungen geprüft ist es nicht. Was das heißt.
Webhosting
Eine Domain, eine Laufzeitumgebung — PHP, Node.js, Container, WildFly oder ein freies Ziel. Und alles davon im Mischbetrieb auf einer Domain.
nginx und PHP-FPM 7.0 bis 8.4
Jede Domain hat ihren eigenen FPM-Pool mit eigener PHP-Fassung, eigenen Grenzen und open_basedir auf ihr Verzeichnis. Die Werte erben von einer allgemeinen PHP-Konfiguration; eine Domain setzt nur, was abweicht.
PHP allgemein und je Domain
Grenzen, Sitzungen, OPcache, FPM-Prozesse und freie php.ini-Zeilen einmal für alle Domains einstellen. Der Upload-Fortschritt ist ab Werk aus, die OPcache-Schnittstelle gesperrt, und je Domain gilt nur, was eine Anwendung auch über .user.ini setzen dürfte.
Apache als Backend
Wer .htaccess braucht, schaltet Apache hinter nginx. Module wählt der Node, configtest läuft vor jedem Reload.
Node.js-Anwendungen
Eine gehärtete systemd-Unit im Slice der Subscription, Port aus der zentralen Vergabe, Deploy mit vollständiger Ausgabe jedes Schritts.
Container je Domain
Eine Compose-Datei, Podman ohne Root, Routen auf den Container. Neu gestartet wird er nur, wenn sich seine Compose-Datei ändert. Läuft er nicht, nennt das Panel den Schritt, an dem es scheitert — Bauen, Starten oder die Gegenprobe —, zeigt die Ausgabe genau dieses Laufs und löst eine Startsperre mit einem Klick.
WildFly je Node
Ein Anwendungsserver je Node, Verwaltungskonsole durchgereicht, standalone.xml im Panel mit Fassungen und Sicherungen. Ein Wächter startet einen ausgefallenen oder hängenden WildFly neu, nennt je Ausfall die Ursache und meldet sich, wenn er nach fünf Neustarts aufgibt.
Mischbetrieb über Routen
Eine PHP-Domain gibt einzelne Pfade an Node.js, einen Container oder ein freies Ziel ab. Der Pfad / bleibt bei der Basislaufzeit.
Zusatzkonfiguration mit Editor
Fünf Einbindungspunkte für nginx und Apache, Monaco-Editor, Zeilenmarkierung bei Fehlern — und Rollback, wenn die Syntaxprüfung ablehnt.
Git-Repositories je Domain
Klonen, holen, ausrollen — mit GitHub-Konten, wechselbarem Branch und Stand prüfen, bevor etwas überschrieben wird. Bringt das Holen einen neuen Commit, wird eine Node.js-Anwendung neu deployt und ein laufender Container samt Bau neu gestartet. Je Subscription eine Übersicht aller Repositories, die zeigt, wo bei GitHub schon ein neuerer Stand liegt.
Composer und App-Installer
Composer je Domain, dazu WordPress, Nextcloud und Matomo mit festgelegten Fassungen und Erstkonto.
Fehlerseiten und Wartungsmodus
Eigene Fehlerseiten je Subscription und Domain, ein Wartungsschalter, der die Besucher freundlich abweist.
www gehört zur Domain
Jede Domain führt www von selbst mit: dauerhafte Umleitung und weiterer Name im Zertifikat, ohne Alias von Hand.
Healthcheck je Domain
Nach jedem Rollout ruft der Node die Domain lokal auf. Antwortet sie nicht, wird genau diese Domain zurückgenommen — nicht der ganze Node. Mehrere Domains werden gleichzeitig geprüft. Was nur halb gelang, steht als „Mit Warnungen“ in der Aufgabe.
Zertifikate
Let's Encrypt über HTTP-01 und DNS-01, Wildcards, eigene Zertifikate mit Prüfung — und das Panel selbst hat auch eines.
Let's Encrypt HTTP-01
Ausstellung und Erneuerung 30 Tage vor Ablauf. Ein Name, der nicht auf den Node zeigt, bleibt aus der Anfrage, statt die Ausstellung scheitern zu lassen.
DNS-01 und Wildcard
Über PowerDNS, Cloudflare, Hetzner, INWX und deSEC. Wildcard-Zertifikate inklusive.
ACME-DNS-Delegation
Ein fremder ACME-Client bekommt eine delegierte Zone bei Kastra und stellt dort seine Challenge — ohne Zugang zur eigentlichen Zone.
Eigene Zertifikate
Hochgeladene Zertifikate werden in der Control Plane geprüft: Schlüssel passt, Name passt, nicht abgelaufen. Erst dann geht es auf den Node.
Zertifikat des Panels
Die Oberfläche selbst holt ihr Zertifikat von Let's Encrypt oder nimmt ein eigenes entgegen. Passkeys brauchen eine sichere Herkunft.
Zertifikat für SMTP und IMAP
Je Mail-Node ein eigenes Zertifikat auf den Namen im SMTP-Gruß, damit kein Mailprogramm mehr warnt.
Datenbanken
MariaDB je Subscription, Rechte nur auf die eigene Datenbank, phpMyAdmin mit einem Klick.
MariaDB mit Domain-Zuweisung
Datenbanken und Benutzer je Subscription, Rechte nur auf die eigene Datenbank, Zuweisung an Domains.
phpMyAdmin je Datenbank
Ein Klick, kein Anmeldeformular: eine kurzlebige Sitzung mit eigenem Datenbankbenutzer und only_db.
Erreichbarkeit je Datenbank
Lokal, aus dem Container oder von außen — je Datenbank einstellbar, mit Firewall-Freigabe, die dazu passt.
Datenbank am Container
Ein Container bekommt seine Datenbank samt Zugangsdaten als Umgebung, ohne dass ein Passwort in einer Compose-Datei steht.
Redis je Subscription
Ein Objekt-Cache je Subscription, je Domain einschaltbar, im Slice der Subscription. Er übersteht jeden Rollout, der ihn nicht betrifft.
DNS
PowerDNS mit Zonenvorlage, Record-Editor mit Vorschau, DNSSEC und fremden Secondaries.
Zonen aus der Vorlage
Beim Anlegen einer Domain entsteht die Zone mit A, AAAA, MX, SPF, DKIM und NS — aus der veröffentlichten Adresse des Nodes.
Record-Editor mit Diff
Jede Änderung zeigt vorher, was sich in der Zone ändert. Verwaltete Einträge bleiben in der Pflege, eigene bleiben unangetastet.
DNSSEC je Zone
Ein Schalter je Zone; die DS-Einträge stehen im Panel zum Eintragen beim Registrar.
Befunde je Eintrag
Das Panel prüft die Zone von außen: Delegation, Adressen, www — und sagt, was fehlt, statt zu warnen.
Fremde Secondaries
Ein fremder Nameserver holt die Zonen per AXFR ab und wird bei jeder Änderung benachrichtigt.
Postfix, Dovecot und Rspamd, DKIM mit Rotation, Webmail — und die Übernahme eines Postfachs vom alten Anbieter.
Postfächer, Aliase, Catch-All
Virtuelle Postfächer mit Quota, Weiterleitungen mit mehreren Zielen, Abwesenheit und Sieve-Regeln im Panel.
Rspamd mit DKIM-Rotation
Signatur je Domain, Schlüsselwechsel mit Übergang, die Versandgrenze je Domain hält Ausreißer auf.
Spamfilter, der lernt
Spam landet im Junk-Ordner, eindeutiger Spam wird abgelehnt — Schwellen je Node einstellbar. Jede Maildomain führt eigene Listen für Absender, die nie oder immer Spam sind. Wer eine Mail in den Junk-Ordner verschiebt oder herausholt, lehrt den Filter.
Nur senden oder voll
Eine Domain, die nur versendet, steht nicht in den Postfachdomains. Eine volle Domain bekommt IMAP, LMTP und Milter.
Warteschlange und Protokoll
Was hängt, steht je Maildomain im Panel — auch für Kunden — und lässt sich einzeln, als Auswahl oder alle erneut versuchen oder löschen; im Protokoll nur die Sendungen, die zu dieser Domain gehören.
Mailstatistik
Heute, 7 und 30 Tage je Maildomain und Postfach: zugestellt, unzustellbar, abgewiesen, als Spam abgewiesen, was noch wartet — jede Zahl führt zur Liste der Sendungen dahinter, dazu Alarm bei Stau.
Wie gut der Spamfilter trifft
Was Rspamd sauber fand, vertagte, markierte und ablehnte, die Punkte jeder Mail, die Verteilung gegen die Schwellen — und wie oft Postfächer ihn korrigiert haben, mit Erkennungs- und Fehlalarmquote.
Webmail
Roundcube auf dem Panel-Host, Anmeldung mit dem Postfach, PHP-Fassung je Node wählbar.
Übernahme per IMAP
Ein Postfach wird vom bisherigen Anbieter geholt: Ordner, Flags, Fortschritt im Panel, wiederholbar bis zum Umzug.
Sicherheit
Passkeys statt Passwörter, ein Unix-Benutzer je Subscription, Firewall, CrowdSec, WAF, AppArmor und Virenscanner.
Passkeys und zweiter Faktor
WebAuthn mit erzwungener Benutzerprüfung, TOTP, zehn Wiederherstellungscodes, Notzugang über die Kommandozeile.
Zweiter Nachweis und getrennte Herkunft
Wer Passkeys, Zugänge oder die Paketquelle der Nodes ändert, weist sich ein zweites Mal aus. Die WildFly-Konsole läuft auf eigenem Port und kommt nicht an die Sitzung des Panels; private Schlüssel und Kennwörter liegen verschlüsselt in der Datenbank.
Isolation je Subscription
Ein Unix-Benutzer, ein systemd-Slice mit Grenzen, ein FPM-Pool je Domain, open_basedir, Quota. Nichts läuft außerhalb dieser Grenze.
Rollen und Audit-Log
Administrator, Reseller, Kunde, Nur-Lesen. Jede zustandsändernde Aktion steht im Audit-Log, das die Datenbank nur anhängen lässt.
nftables-Firewall
Eigene Tabelle, atomarer Load, Freigaben je Port und Quelle, Aussperrschutz, gestaffelte Sperren mit sichtbarem Auslöser.
CrowdSec und WAF
CrowdSec mit Bouncer in nftables, ModSecurity mit dem Core Rule Set je Domain, Sperren und Ausnahmen im Panel.
AppArmor und ClamAV
Profile für PHP-FPM, erst im Modus complain, dann enforce. Ein Virenscanner mit Quarantäne, Zeitplan und Zusatzsignaturen.
Sicherheitsupdates
Unbeaufsichtigte Updates der Distribution mit Zeitfenster und Neustart nur bei Bedarf.
Schwachstellen-Alarm
Jedes Paket auf jedem Node gegen die Lückenlisten von Debian, Ubuntu und CISA, dazu PHP, Node.js und die Web-Anwendungen, samt jeder Bibliothek, die WildFly, phpMyAdmin, Roundcube, Composer, WP-CLI und fremde Go-Programme mitbringen: welche Fassung, welche CVE, welcher Fix, welche Domains. Alarm bei Handlungsbedarf, Aktualisieren mit einem Klick, und was keine Quelle kennt, fällt auf.
Sicherung
restic mit Aufbewahrung nach Großvater-Vater-Sohn, Speicher lokal, per CIFS, NFS, SFTP oder S3 — und ein Probelauf der Wiederherstellung.
restic je Subscription
Dateien und Datenbankabzug in einem Snapshot, Aufbewahrung nach Tagen, Wochen und Monaten, Fortschritt während des Laufs.
Fünf Arten von Speicher
Lokal, CIFS, NFS4, SFTP und S3 — mit Verbindungstest je Art, Ablagepfad in geteilten Freigaben und WireGuard davor, wenn nötig.
Restore-Browser
Ein Verzeichnisbaum je Snapshot, gezieltes Zurückholen einzelner Dateien oder einer Datenbank.
Probelauf
Die Wiederherstellung wird probeweise in eine Sandbox gespielt und gegen den Snapshot gehalten. Eine Sicherung, die nie zurückkam, ist keine.
Ohne Panel wiederherstellbar
Das Repository-Kennwort lässt sich abrufen; restic öffnet das Repository auch ohne Kastra.
Betrieb
Dateimanager, Terminal, Protokolle, Cronjobs, Auslastung, Alarmierung — und ein Update, das vorher sagt, was es tut.
Dateimanager und Web-Terminal
Beides läuft als Unix-Benutzer der Subscription. Upload in Teilen, Archive mit Fortschritt im Hintergrund, Rechte-Editor, Papierkorb; eingegebene Befehle stehen im Audit-Log. Das Terminal zeichnet über die Grafikkarte.
SFTP und FTP
SFTP im Chroot ohne Shell, FTP mit virtuellen Benutzern und erzwungenem TLS — je Subscription oder je Domain.
Protokolle je Domain
Nur die Arten, die diese Domain wirklich schreibt: nginx, PHP samt langsamer Anfragen, Apache, Node.js, Container. Filter, Live-Ansicht, Download, Aufbewahrung je Node. Auch das Protokoll einer Aufgabe und eines Rollouts steht vollständig als Download bereit.
Cronjobs mit Vorschau
Crontab-Prüfung und die nächsten Ausführungen, bevor gespeichert wird. Das Ergebnis eines Laufs kommt auf Wunsch per Mail — nur bei Fehler, bei jeder Ausgabe oder nach jedem Lauf.
Traffic und Auslastung
Traffic je Domain und Tag gegen die Quota des Tarifs, Auslastung über 30 Tage mit Befund, ob mehr Leistung ansteht.
Alarmierung
Mail und Webhook mit Signatur, Entwarnung zu jedem Alarm: Node weg, Rollout gescheitert, Handpflege an einer verwalteten Datei, Platte voll, ein Prozess wegen Speichermangel beendet.
Speicher im Griff
Ein Node ohne Swap bekommt eine Swapdatei, die Control Plane eine feste Heap-Grenze statt eines Anteils am RAM. Beendet der Kernel trotzdem einen Prozess, sagt das Panel welchen — und ob der Node voll war oder nur eine Subscription an ihrer Grenze.
Update mit Bestätigung
Vor dem Einspielen steht der Changelog samt Eingriffen am Node. Erst die Zustimmung startet den Rollout, Node für Node, mit Rückfall.
Komponenten eines Nodes
Was auf einem Node fehlt, zeigt das Panel und richtet es auf Wunsch ein — Mailserver, DNS, WAF, Virenscanner, Podman, WildFly.
Abweichungen erkennen
Alle fünf Minuten vergleicht der Agent Prüfsummen. Eine von Hand geänderte Datei wird überschrieben und gemeldet; kommt die Abweichung immer wieder, wird sie nicht im Minutentakt überschrieben.
Große Anlagen
Ein Rollout schreibt, sichert und startet nur neu, was sich geändert hat. Lange Listen laden seitenweise, Übersicht und Statusseite holen alle Nodes in einer Anfrage, und ein Tab im Hintergrund fragt nicht nach.
Mehrere Instanzen
Zwei Control Planes vor derselben Datenbank, genau eine führt, Übernahme nach Ausfall.
Handbuch im Panel
Jede Seite, jedes Feld, jede Aktion ist im Panel selbst erklärt — und die Prüfung im Bau verlangt, dass es so bleibt.
Mandanten
Kunden, Reseller, Subscriptions und Tarife — oder nichts davon, wenn ein Rechner nur einem gehört.
Kunden und Reseller
Ein Reseller verwaltet seine Kunden, ein Kunde seine Subscriptions, jeder sieht nur, was ihm gehört.
Tarife
Speicher, Traffic, Domains, Postfächer und Datenbanken je Tarif, mit Grenzen, die der Node durchsetzt.
Domains umziehen
Eine Domain wechselt die Subscription — zu einem anderen Kunden oder auf einen anderen Node. Subdomains, Datenbanken, Cronjobs, Mail und DNS ziehen mit, WildFly samt jeder Domain, die darauf zeigt, ebenso. Vorher sagt die Vorprüfung, ob der Ziel-Node alles hat, was die Domains brauchen. Eine Subdomain kann auch allein umziehen und wird im Ziel zur eigenen Domain, ohne dass sich ihr Pfad unter der Subscription ändert; die Hauptdomain bleibt und kann später nachziehen.
Betriebsmodi
Kunden, Reseller, Subscriptions und Nodes lassen sich ausblenden. Ein Rechner für eine Person braucht keine Mandantenverwaltung zu sehen.
Was Kastra nicht ist
Kein Windows-Server, kein Billing, kein Kubernetes, keine Domain-Registrierung, kein eigener Spamfilter jenseits von Rspamd. Und kein Produkt mit Support: Fehler werden behoben, wenn sie auffallen, und der Changelog sagt, wann.