Froxlor ist ein Open-Source-Serverpanel für Shared-Hosting-Szenarien, eine quelloffene
Alternative zu Plesk oder cPanel, allerdings mit anderem Funktionsumfang und ohne kommerziellen
Support. Auf Debian und Ubuntu wird Froxlor offiziell als APT-Paket gepflegt; Updates laufen
damit über den normalen Distributions-Mechanismus mit (manuell per apt upgrade oder
automatisiert über unattended-upgrades). Dieser Beitrag geht den Installationsweg
Schritt für Schritt durch, orientiert an der offiziellen Froxlor-Dokumentation und ohne
Abkürzungen, die später Probleme machen.
Voraussetzungen
Laut offizieller Doku braucht Froxlor in der aktuellen Generation:
- Betriebssystem: Debian oder Ubuntu (offiziell unterstützte LTS-Versionen)
- PHP: Doku-Spannweite 7.4 bis 8.5, praktisch für Neu-Installationen mindestens PHP 8.2, weil 7.4 seit November 2022 und 8.0/8.1 seit Ende 2023/2024 End-of-Life sind und keine Sicherheits-Updates mehr erhalten.
- Datenbank: Offiziell getestet mit MySQL 8.4 oder MariaDB 11.7. In der Praxis läuft Froxlor auch mit dem, was die Distribution mitbringt: Debian 12 liefert MariaDB 10.11 (LTS-Branch), Ubuntu 24.04 ebenfalls. Für eine Neuinstallation aus den Distro-Quellen also völlig ausreichend.
- Webserver: Apache 2 oder nginx
-
PHP-Erweiterungen:
session,ctype,xml,filter,posix,mbstring,curl,gmp,json - Backup: Auch wenn dieser Beitrag von einem frischen Server ausgeht, kostet ein Snapshot oder Image vor der Installation nichts und spart bei Fehlkonfigurationen viel Zeit.
Wer Froxlor frisch aufsetzt, fährt mit einem minimalen Debian 12 (Bookworm) oder Ubuntu 24.04 LTS am unkompliziertesten, weil die nötigen Pakete in beiden Repos in passenden Versionen vorliegen.
Hinweis: Froxlor übernimmt nach der Installation einen erheblichen Teil der Serverkonfiguration, von Apache/nginx über Postfix/Dovecot bis zu PHP-FPM-Pools. Auf produktiven Systemen mit bestehender Konfiguration ist das problematisch. Empfehlung: Froxlor immer auf einem frischen Server installieren, nicht auf einen produktiven aufpfropfen.
Schritt 1: Repository und GPG-Key hinzufügen
Die offizielle Froxlor-Doku empfiehlt die Installation über das eigene APT-Repository, weil Updates so über den normalen Paketlauf mitkommen. Vorab die Grundpakete für Repository-Handling:
apt -y install apt-transport-https lsb-release ca-certificates curl gnupg
Anschließend den GPG-Key herunterladen, mit dem das Repository signiert ist:
curl -sSLo /usr/share/keyrings/deb.froxlor.org-froxlor.gpg https://deb.froxlor.org/froxlor.gpg
Jetzt die Repository-Quelle eintragen, abhängig davon, ob Debian oder Ubuntu läuft:
Variante Debian
sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.froxlor.org-froxlor.gpg] https://deb.froxlor.org/debian $(lsb_release -sc) main" > /etc/apt/sources.list.d/froxlor.list'
Variante Ubuntu
sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.froxlor.org-froxlor.gpg] https://deb.froxlor.org/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/froxlor.list'
$(lsb_release -sc) setzt automatisch den passenden Codenamen ein, also
bookworm auf Debian 12, noble auf Ubuntu 24.04 usw. (Das Paket
lsb-release wurde im ersten Schritt bereits installiert.)
Schritt 2: Paketquellen aktualisieren und Froxlor installieren
apt update
apt install froxlor
Das Paket nutzt in Debian-typischer Manier Alternativ-Abhängigkeiten
(apache2 | lighttpd | nginx, mariadb-server | default-mysql-server),
d. h. Apache wird als Standard installiert, sofern kein anderer Webserver bereits
vorhanden ist. Wer nginx möchte, installiert ihn vor Froxlor; dann erkennt der
Alternative-Mechanismus das und überspringt Apache. Mit installiert werden außerdem MariaDB-Server
und die geforderten PHP-Pakete in der Version der Distribution. Die Verzeichnisstruktur landet
unter /var/www/froxlor/.
Schritt 3: Privilegierten Datenbank-Nutzer anlegen
Froxlor braucht für den Web-Installer einen privilegierten MySQL/MariaDB-User, der später
Datenbanken und Benutzer für Kundenkonten anlegen darf. Den unprivilegierten Anwender (Standardname
froxlor) erstellt der Installer selbst; der hier angelegte „froxroot" ist nur das
Werkzeug dafür.
Im MariaDB-/MySQL-Client als root einloggen und ausführen:
CREATE USER 'froxroot'@'localhost' IDENTIFIED BY 'CHANGEM3';
GRANT ALL PRIVILEGES ON *.* TO 'froxroot'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
Das Passwort CHANGEM3 ist nur ein Platzhalter und durch ein
eigenes, ausreichend langes zu ersetzen. Wichtig laut Froxlor-Doku: keine Leerzeichen oder
Anführungszeichen verwenden, weil diese später in Konfigurationsdateien Probleme machen können.
Schritt 4: Web-Installer aufrufen
Der eigentliche Installer ist eine geführte Browser-Oberfläche. Aufruf im Browser:
http://<ip-oder-hostname>/froxlor
Hier werden in mehreren Schritten abgefragt:
- Zugangsdaten des privilegierten DB-Users (oben angelegt)
- Name und Passwort des unprivilegierten DB-Users, den Froxlor sich selbst anlegen soll
- Daten des Admin-Accounts für das Froxlor-Webinterface
- Systemeinstellungen wie Hostname und Server-IP
Nach Abschluss leitet der Installer auf den Login-Bildschirm weiter. Anmeldung mit den Admin-Daten aus Schritt 4.
Hinweis zu HTTPS: Der Erstaufruf über http:// ist für die reine
Installation in Ordnung, weil das System noch im Aufbau ist. Sobald die erste echte Domain hinter
dem Panel hängt, sollte das Froxlor-Webinterface zwingend per TLS abgesichert werden, entweder
über die in Froxlor integrierte Let's-Encrypt-Anbindung oder ein selbst gepflegtes Zertifikat.
Admin-Logins über Klartext-HTTP sind in Produktion nicht akzeptabel.
Schritt 5: Cronjob einrichten
Ohne Froxlor-Cron passiert nichts Sichtbares: Neu angelegte Kunden, Domains oder Mailpostfächer existieren zwar in der Datenbank, werden aber erst durch den Cron-Lauf in echte Webserver-Configs und Mail-Accounts übersetzt. Die Doku formuliert das eindeutig: „running the commands for Other (system) → Cronjob for froxlor is required in order for froxlor to work".
Im Froxlor-Backend unter System → Cronjob wird die nötige Crontab-Zeile angezeigt. Eintragen in die System-Crontab über:
crontab -e
Die Standardzeile ruft das Froxlor-CLI minütlich auf, etwa:
* * * * * /usr/bin/php /var/www/froxlor/bin/froxlor-cli froxlor:cron
Der genaue Pfad zum CLI-Skript wird vom Backend ausgegeben. Bitte den dort genannten Pfad verwenden, nicht den hier abgedruckten, falls die Installation in ein anderes Verzeichnis gelegt wurde.
Schritt 6: Dienste konfigurieren (config-services)
Damit Apache/nginx, Postfix, Dovecot und PHP-FPM die richtigen Konfigurationsdateien bekommen, liefert Froxlor ein Setup-Skript mit, das Distribution-typische Templates schreibt:
cd /var/www/froxlor/
bin/froxlor-cli froxlor:config-services --create
Der Befehl ist interaktiv und fragt Punkt für Punkt durch, welche Dienste konfiguriert werden sollen. Laut Froxlor-Doku müssen für moderne Setups beim System-Abschnitt mindestens zwei Optionen aktiviert sein:
libnssextrausers: damit Froxlor Webserver- und Mail-Nutzer ohne MySQL-Lookup auflösen kann (deutlich performanter als das altelibnss-mysql).php-fpm: PHP-FPM als PHP-Handler (per-vHost konfigurierbar, klare Prozesstrennung pro Kunde).
Bei nginx-Setups wird stattdessen nginx ausgewählt, ansonsten bleibt der Ablauf identisch. Die Templates erzeugen passende Apache-, nginx-, Postfix- und Dovecot-Konfigurationen auf Basis der in Froxlor gespeicherten Einstellungen.
Schritt 7: System-Einstellungen aktivieren und Configs neu bauen lassen
Im Froxlor-Webinterface unter System → Einstellungen müssen passend zur Schritt-6-Auswahl die folgenden Schalter umgelegt werden (Doku-Zitat: „at least the following options must be selected"):
- PHP-FPM Enabled: Yes
- Froxlor VirtualHost settings → Use PHP-FPM in froxlor host: Yes
- System settings → Use libnss-extrausers instead of libnss-mysql: Yes
Anschließend wird unter System → Configfiles neu bauen ein Rebuild angestoßen, und beim nächsten Cron-Lauf werden die produktiven Konfigurationsdateien geschrieben.
Schritt 8: Erste Domain anlegen und prüfen, ob alles greift
Als Schnelltest: Im Froxlor-Backend einen Kunden anlegen, eine Test-Domain dazu, eine kurze
index.html ins Kunden-Webroot ablegen und im Browser aufrufen. Erfolgt der Aufruf
sauber über die richtige IP und das richtige PHP-FPM-Pool, sind Cron + Service-Templates korrekt
durchgelaufen.
Wenn nichts erscheint, hilft fast immer: einmal den Cron manuell auslösen und auf Fehler achten:
/usr/bin/php /var/www/froxlor/bin/froxlor-cli froxlor:cron --debug
Häufige Stolpersteine
1. „Es passiert nichts nach dem Anlegen einer Domain". Erste Diagnose: läuft der
Cron? Ist die Crontab-Zeile aus Schritt 5 wirklich im richtigen User-Crontab? Der Froxlor-Cron
muss als root laufen, denn er schreibt in /etc/apache2/,
/etc/nginx/, /etc/postfix/, /etc/dovecot/ und triggert
Service-Reloads. Ein User-Cron im Home eines unprivilegierten Accounts hat hier zwangsläufig keine
Schreibrechte.
2. Webinstaller hängt auf Schritt 1 fest. Fast immer: privilegierter DB-User hat
kein GRANT OPTION, oder das Passwort enthält Sonderzeichen, die in den generierten
PHP-Configs Probleme machen. Lösung: mit dem CREATE-USER-Block aus Schritt 3 neu anlegen.
3. „libnss-extrausers wirkt nicht." Die Distro muss das Paket installiert haben
(libnss-extrausers), und in /etc/nsswitch.conf muss extrausers
in den passwd:/group:/shadow:-Zeilen eingetragen sein. Das
Setup-Skript aus Schritt 6 schreibt das normalerweise mit, sollte aber nach dem Rebuild geprüft
werden.
4. PHP-Version passt nicht. Die offiziell unterstützte Spanne ist PHP 7.4 bis 8.5, sicherheitsmäßig sinnvoll ist heute nur noch PHP 8.2 oder neuer (alles darunter ist End-of-Life). Wer auf einer alten Distribution mit PHP 7.0/7.2 hängt, bindet das Sury-PHP-Repository ein oder aktualisiert die Distribution. Keine Froxlor-Installation auf PHP-Versionen ohne Sicherheits-Patches.
5. Firewall vergessen. Froxlor selbst öffnet keine Ports im Kernel-Filter. Vor dem Live-Schalten müssen mindestens 80/443 (Web), 25/465/587 (SMTP), 143/993 (IMAP), 110/995 (POP3) und der SSH-Port konfiguriert sein. ManageSieve (4190) und MySQL (3306) sollten nicht öffentlich offen sein.
Updates: warum die APT-Variante sich lohnt
Bei der Tarball-Installation müssen Updates manuell heruntergeladen, ersetzt und ggf. Migrationen ausgeführt werden. Über das APT-Repository übernimmt das der normale Distro-Mechanismus:
apt update && apt upgrade
Froxlor wird wie jedes andere Paket aktualisiert; nach größeren Versionssprüngen prüft das Paket selbst, ob Datenbankmigrationen nötig sind. Für produktive Systeme ist das eine spürbare Vereinfachung und zugleich ein Sicherheitsgewinn, weil Patches schneller ankommen.
Zu unattended-upgrades: Sicherheits-Updates der Distribution sollten
automatisch laufen, das Froxlor-Repository dagegen würde ich nicht in die unbeaufsichtigte
Aktualisierung aufnehmen. Major-Versionssprünge können Datenbankmigrationen oder Anpassungen an den
generierten Service-Templates auslösen, die man sich besser vor dem
apt upgrade kurz ansieht.
Fazit
Froxlor lässt sich auf Debian und Ubuntu in unter einer Stunde komplett aufsetzen: APT-Paket,
privilegierter DB-User, Web-Installer, Cron, config-services, Rebuild. Wer diese
Reihenfolge einhält und vor allem den Cron vor der ersten Domain einrichtet, hat
anschließend ein wartbares Panel, das sich über den normalen apt-Lauf aktuell hält.
Wirklich kritisch ist nur ein Punkt: Frischer Server, nichts darauf. Froxlor will
Webserver, Mail-Setup und PHP-FPM selbst konfigurieren, und das verträgt sich nicht mit
existierenden Installationen.
Quellen
- Froxlor-Doku: Install froxlor on Debian/Ubuntu using apt
- Froxlor-Doku: General installation (Systemanforderungen)
- Froxlor-Doku: Tarball-Installation (DB-User, Web-Installer)
- Froxlor-Doku: CLI-Skripte (config-services, cron)
- Froxlor-Doku: Apache2/Nginx mit PHP-FPM konfigurieren
- Froxlor-Download-Seite (offizielle Quellen)
Froxlor sauber aufgesetzt, von Anfang an?
Ob Erstinstallation, Migration eines bestehenden Plesk- oder ISPConfig-Setups oder Hardening eines bereits laufenden Froxlor-Servers: Ich unterstütze bei Einrichtung, Konfiguration und Betrieb.
Anfrage senden