Dolibarr mit Nginx installieren
Dolibarr 24 mit Nginx, PHP-FPM und MariaDB auf Ubuntu oder Debian installieren, mit getesteter Konfiguration. Dazu, was das mitgelieferte Beispiel falsch macht: REST-API mit 404, Uploads ab 1 MB blockiert, Ordner nur unter Apache geschützt.
Soll jemand Ihre Instanz ansehen? Diagnose, Festpreis 90 €.
Was geprüft wurde (Versionen, Tests, gelesener Code)
Neuinstallationen am 02.11.2026 in Docker-Containern: Debian 13 (Nginx 1.26.3, PHP 8.4.27, MariaDB 11.8.6) mit den Befehlen dieser Seite unverändert ausgeführt (sudo beibehalten, service statt systemctl), Assistent bis zur Anmeldeseite durchlaufen, API-Modul aktiviert und mit Schlüssel aufgerufen, Rechnung freigegeben und PDF erzeugt, Upload von 5 MB vor und nach dem Dolibarr-Limit, Nginx-Log nach dem Durchklicken der Masken gelesen; Ubuntu 24.04 (Nginx 1.24.0, PHP 8.3.6, MariaDB 10.11.14) für die Schritte 1 bis 3 und die Prüfungen. Offizielles Beispiel aus dem Archiv 24.0.2 auf Debian 13 getestet.
Dolibarr ist vor allem für Apache dokumentiert. Mit Nginx läuft es genauso gut, wenn man drei Dinge übernimmt, die Apache stillschweigend erledigt hat. Diese Seite installiert Dolibarr 24 mit Nginx, PHP-FPM und MariaDB auf Debian 13 oder Ubuntu 24.04, mit einer getesteten Konfiguration.
Dolibarr liefert eine Beispielkonfiguration für Nginx mit (dev/setup/nginx/dolibarr im Archiv).
Wir haben sie auf einer Neuinstallation ausprobiert: Sie hat drei Fehler.
- Nginx startet nicht. Die Zeile
fastcgi_passendet mit einem Kommentar//, den es in der Nginx-Syntax nicht gibt:nginx -tmeldetunexpected "}". Der Socket-Pfad ist außerdem der von PHP 5. - Die REST-API antwortet mit 404. Ohne das
//liefert/api/index.php/statusdie Seite „404 Not Found“ von Nginx: Die Anfrage kommt nie bei Dolibarr an. - Der Ordner
confist aus dem Web lesbar. Dolibarr schützt ihn mit einer.htaccess-Datei, die Nginx ignoriert. In unserem Test erschien eine Sicherungskopieconf.php.bakals Klartext im Browser, samt Datenbankpasswort. Auch die PHP-Skripte der Bibliotheken inincludes, die Dolibarr nicht direkt aufrufen lässt, werden ausgeführt.
Dazu kommt ein eigenes Limit von Nginx: Uploads über 1 MB werden abgewiesen, bevor PHP oder Dolibarr sie überhaupt sehen. In unserem Test bekam eine 5-MB-Datei „413 Request Entity Too Large“.
Die Konfiguration unten behebt alle vier Punkte.
1. Nginx, PHP-FPM und MariaDB installieren
sudo apt update
sudo apt install -y nginx mariadb-server php-fpm php-mysql php-gd php-curl php-intl php-zip php-xml php-mbstring curl cron
Dieselben Erweiterungen wie bei Apache, mit php-fpm statt des Apache-Moduls.
2. Dolibarr herunterladen und die Datenbank anlegen
Beide Schritte sind dieselben wie bei Apache: Auf Debian und Ubuntu läuft auch PHP-FPM unter dem
Benutzer www-data.
cd /tmp
curl -fL -o dolibarr-24.0.2.tgz "https://sourceforge.net/projects/dolibarr/files/Dolibarr%20ERP-CRM/24.0.2/dolibarr-24.0.2.tgz/download"
sudo tar --no-same-owner -xzf /tmp/dolibarr-24.0.2.tgz -C /var/www
sudo mv /var/www/dolibarr-24.0.2 /var/www/dolibarr
sudo mkdir -p /var/lib/dolibarr/documents
sudo touch /var/www/dolibarr/htdocs/conf/conf.php
sudo chown www-data:www-data /var/www/dolibarr/htdocs/conf/conf.php
sudo chown -R www-data:www-data /var/lib/dolibarr/documents /var/www/dolibarr/htdocs/custom
DBPASS=$(tr -dc 'A-Za-z0-9' </dev/urandom | head -c 24); echo "Datenbankpasswort: $DBPASS"
sudo mariadb -e "CREATE DATABASE dolibarr CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'dolibarr'@'localhost' IDENTIFIED BY '$DBPASS';
GRANT ALL PRIVILEGES ON dolibarr.* TO 'dolibarr'@'localhost';"
Notieren Sie das angezeigte Passwort: Der Assistent fragt danach.
3. Die Nginx-Konfiguration
PHPV=$(php -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')
sudo tee /etc/nginx/sites-available/dolibarr > /dev/null <<CONF
server {
listen 80;
listen [::]:80;
server_name dolibarr.example.com;
root /var/www/dolibarr/htdocs;
index index.php;
# Nginx weist standardmäßig jeden Upload über 1 MB ab
client_max_body_size 20M;
access_log /var/log/nginx/dolibarr_access.log;
error_log /var/log/nginx/dolibarr_error.log;
location / {
try_files \$uri \$uri/ =404;
}
# Was die .htaccess-Dateien von Dolibarr unter Apache erledigen
location ^~ /conf/ {
deny all;
}
location ~ ^/includes/.+\.php$ {
deny all;
}
location ~ /\.(?!well-known) {
deny all;
}
location ~ [^/]\.php(/|$) {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php$PHPV-fpm.sock;
fastcgi_read_timeout 600;
}
}
CONF
sudo ln -s /etc/nginx/sites-available/dolibarr /etc/nginx/sites-enabled/dolibarr
sudo rm /etc/nginx/sites-enabled/default
sudo tee /etc/php/$PHPV/fpm/conf.d/99-dolibarr.ini /etc/php/$PHPV/cli/conf.d/99-dolibarr.ini > /dev/null <<'INI'
upload_max_filesize = 20M
post_max_size = 22M
date.timezone = Europe/Berlin
INI
sudo nginx -t
sudo systemctl reload nginx
sudo systemctl restart php$PHPV-fpm
Ersetzen Sie dolibarr.example.com durch den Namen Ihres Servers und Europe/Berlin bei Bedarf
durch Ihre Zeitzone.
Was sich gegenüber dem offiziellen Beispiel ändert:
snippets/fastcgi-php.conf, das mit dem Nginx-Paket von Debian und Ubuntu kommt, trennt den Skriptnamen vom Rest der Adresse und gibt den Rest an PHP weiter (PATH_INFO). Genau das braucht die REST-API. Das offizielle Beispiel prüft, ob die gesamte Adresse eine Datei ist (try_files $uri =404), und liefert deshalb 404 für/api/index.php/thirdparties.client_max_body_size 20Mgleicht Nginx an die 20 MB an, die PHP annimmt.- Die drei
deny-Blöcke ersetzen die.htaccess-Dateien: Der Ordnerconfist aus dem Web nicht mehr erreichbar, die PHP-Skripte der Bibliotheken inincludeslassen sich nicht mehr direkt aufrufen, und versteckte Dateien (.git,.htaccess…) werden nicht ausgeliefert. $PHPVwählt den richtigen Socket: PHP 8.4 auf Debian 13, PHP 8.3 auf Ubuntu 24.04.
sudo nginx -t muss vor dem Neuladen „syntax is ok“ und „test is successful“ melden.
4. Assistent, install.lock und das 2-MB-Limit
Der Rest ist derselbe wie bei Apache, ausführlich in Dolibarr auf Ubuntu oder Debian installieren:
- öffnen Sie
http://ihr-server/install/und ersetzen Sie auf der Konfigurationsseite den Dokumentenordner durch/var/lib/dolibarr/documents; - schließen Sie die Installation ab:
sudo touch /var/lib/dolibarr/documents/install.lock
sudo chmod 400 /var/www/dolibarr/htdocs/conf/conf.php
sudo find /var/www/dolibarr/htdocs -path /var/www/dolibarr/htdocs/custom -prune -o -exec chmod a-w {} +
- heben Sie das eigene Limit von Dolibarr (2.048 KB) unter Start › Einstellungen ›
Sicherheit › Dateien auf
20480an.
Die drei Limits gehören zusammen: Nginx (client_max_body_size), PHP (upload_max_filesize) und
Dolibarr. Das niedrigste weist die Datei ab.
5. Prüfen, ob alles stimmt
Auf dem Server:
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/conf/conf.php
curl -s -o /dev/null -w "%{http_code}\n" http://localhost/includes/sabre/autoload.php
curl -s http://localhost/api/index.php/status
Die ersten beiden Zeilen müssen 403 liefern: Der Ordner conf und die Skripte in includes
sind gesperrt.
Die dritte zeigt, dass die API bei Dolibarr ankommt. Nach der Installation ist das API-Modul
deaktiviert: Die Antwort meldet dann, dass das Modul Api aktiviert sein muss. Sobald das Modul
aktiviert ist (Start › Einstellungen › Module/Anwendungen), antwortet dieselbe Adresse ohne
Schlüssel mit 401 und mit Schlüssel mit der Dolibarr-Version. Erscheint die Seite „404 Not
Found“ von Nginx, kommt der Rest der Adresse (PATH_INFO) nicht bei PHP an: Prüfen Sie die Zeile
include snippets/fastcgi-php.conf.
Die deny-Blöcke stören die Oberfläche nicht: Keine Maske von Dolibarr ruft ein PHP-Skript aus
includes auf (im Code der 24.0.2 geprüft), und das Durchklicken von Partnern, Produkten,
Rechnungen, Terminen, TakePOS und Einstellungen hinterließ keinen 403-Fehler im Nginx-Log.
Bevor Sie den Server ins Internet stellen
Diese Konfiguration antwortet über HTTP. Bevor Sie sie ins Internet stellen, richten Sie ein
Zertifikat ein (Certbot kann eine Nginx-Konfiguration anpassen) und stellen die Adresse in der
Zeile $dolibarr_main_url_root von conf.php auf https:// um. Dieser Schritt braucht einen
echten Domainnamen: Wir haben ihn hier nicht getestet.
Danach
- Die REST-API von Dolibarr nutzen
- Eine gehostete Dolibarr-Instanz absichern
- Dolibarr sichern und wiederherstellen
Wenn Sie das lieber abgeben möchten: Das Paket Installation und Einrichtung geht von dieser Konfiguration aus.