Webserver configuration
TIP
Haben Sie genug von komplizierten Aufgaben rund um die Einrichtung, Konfiguration, Sicherung und Aktualisierung? Lassen Sie uns diese Dinge für Sie erledigen! 🚀
Der einfachste und oft auch kostengünstigste Weg, Zammad zu betreiben, ist unser Cloud-Dienst. Testen Sie es in einer kostenlosen Testinstanz!
Konfigurieren Sie Ihren Webserver so, dass er als Reverse-Proxy für den Zammad-Application-Server fungiert. Diese Anleitung behandelt die Beschaffung eines SSL-Zertifikats, die Anpassung der Beispielkonfiguration für Nginx und Apache 2 sowie das Neuladen des Webservers, um die Änderungen zu übernehmen.
Beispielkonfigurationsdateien für Ihren Webserver finden Sie im Verzeichnis contrib/ Ihrer Zammad-Installation. Pro Webserver sind zwei Beispieldateien vorhanden: zammad.conf (plain HTTP) und zammad_ssl.conf (HTTPS). Die Nicht-SSL-Datei ist ausschließlich für lokale Testzwecke vorgesehen und darf nicht in Produktivumgebungen verwendet werden. Bei einer Paketinstallation von Zammad kopiert das Paket automatisch die Nicht-SSL-Datei zammad.conf in das Konfigurationsverzeichnis Ihres Webservers. Für den produktiven Einsatz ersetzen Sie diese bitte durch zammad_ssl.conf und befolgen Sie die Schritte auf dieser Seite.
INFO
Benutzer von Docker Compose / Kubernetes:
Überspringen Sie diese Seite. Konfigurieren Sie den Webserver-Port, den Hostnamen und das Schema über die Variablen NGINX_* und ZAMMAD_RAILSSERVER_*, die Sie auf der Seite der Umgebungsvariablen finden können.
Obtain an SSL certificate
Zammad erfordert in HTTPS in einer produktiven Umgebung. Nutzen Sie eine der unten aufgeführten Optionen, um ein Zertifikat zu beziehen, bevor Sie mit der Konfiguration des Webservers fortfahren.
Commercial certificate authority
Erwerben Sie ein Jahreszertifikat bei einer beliebigen vertrauenswürdigen öffentlichen Zertifizierungsstelle (kurz CA, Certificate Authority). Zu den gängigen Anbietern zählen Sectigo, GlobalSign oder DigiCert. Installieren Sie das resultierende Zertifikat, den Schlüssel und die Zertifikatskette auf Ihrem Server wie bei jedem anderen HTTPS-Dienst und fahren Sie anschließend mit der unten beschriebenen Webserver-Konfiguration fort.
Let's Encrypt
Let’s Encrypt stellt kostenlose, automatisch verlängerbare Zertifikate aus. Zwei Clients werden dafür häufig verwendet.
Certbot ist der am häufigsten verwendete ACME-Client. Befolgen Sie die Certbot-Installationsanleitung, wählen Sie Ihre Distribution und das passende Webserver-Plugin in der Auswahl aus und schließen Sie die Installation ab. Nach der Installation fordern Sie ein Zertifikat an, indem Sie <WEBSERVER> durch nginx oder apache und zammad.example.com durch Ihre Subdomain ersetzen:
sh
sudo certbot --<WEBSERVER> -d zammad.example.comCertbot stellt das Zertifikat aus und fragt, ob HTTP auf HTTPS umgeleitet werden soll (wählen Sie [1] not redirect, wenn Sie die Zammad-Beispielkonfiguration verwenden möchten, die die Umleitung bereits übernimmt; andernfalls wählen Sie [2] redirect) und richten Sie die automatische Verlängerung ein, sobald das Zertifikat weniger als 30 Tage gültig ist.
Adjust the webserver configuration
Get the sample config into place
Copy the SSL sample configuration to your Nginx config directory:
sh
sudo cp /opt/zammad/contrib/nginx/zammad_ssl.conf \
/etc/nginx/sites-available/zammad.confMost common Nginx config directories:
/etc/nginx/conf.d//etc/nginx/vhosts.d//etc/nginx/sites-available/
Adjust server name and certificate paths
Adjust the just copied file with a text editor of your choice (e.g. vi or nano). Locate both server_name directives (one in the HTTP server block on port 80, one in the HTTPS server block on port 443) and adjust example.com to the subdomain you have chosen for your Zammad instance.
Now you'll need to adjust the path and file names for your SSL certificates you obtained on the prior steps. Adjust the following directives to match your setup:
ssl_certificate(your SSL certificate)ssl_certificate_key(the certificate's private key)ssl_trusted_certificate(the public CA certificate)
To improve HTTPS security, also configure a Diffie-Hellman parameter file and point ssl_dhparam at it:
sh
sudo openssl dhparam -out /etc/ssl/dhparam.pem 4096Reload and verify
Verify the configuration:
sh
sudo nginx -tReload Nginx:
sh
sudo systemctl reload nginxRufen Sie nun Ihre konfigurierte Zammad-Domain in einem Browser auf, um zur Zammad-Benutzeroberfläche zu gelangen. Falls der Zammad-Einrichtungsassistent oder die Zammad-Benutzeroberfläche überhaupt nicht angezeigt wird, lesen Sie bitte den Abschnitt Fehlerbehebung weiter unten.
Fehlerbehebung
Default landing page instead of Zammad
Falls Sie statt Zammad die Standard-Startseite des Webservers sehen, wird Ihre zammad.conf Datei möglicherweise durch eine andere Konfigurationsdatei überschrieben. Überprüfen Sie das vhust-Verzeichnis auf die Dateien 000-default.conf oder default.conf und deaktivieren Sie diese.
DNS not resolving
Sollte die Subdomain nicht aufgelöst werden, überprüfen Sie bitte noch einmal die DNS-Einträge Ihrer Domain und warten Sie, bis diese übernommen wurden. Ersetzen Sie im folgenden Befehl die Angaben zammad.example.com durch Ihre konfigurierte Zammad-Domain und überprüfen Sie, ob die Domain auf den richtigen Server verweist:
sh
host zammad.example.comCSRF token errors
Falls sich Benutzer aufgrund von CSRF-Token-Fehlern nicht anmelden können, gibt Ihre Webserver-Kette den ursprünglichen Verbindungstyp möglicherweise nicht an Zammad weiter. Weisen Sie den Proxy an, dass es sich um eine HTTPS-Verbindung handelt.
- Nginx
- Suchen Sie in Ihrer Virtual-Host-Konfiguration die Zeile
proxy_set_header X-Forwarded-Protound ersetzen Sie$schemedurchhttps. - Apache 2
Fügen Sie in Ihrer Virtual-Host-Konfiguration direkt über der ersten
ProxyPass-Direktive folgendes ein:apacheRequestHeader set X_FORWARDED_PROTO 'https' RequestHeader set X-Forwarded-Ssl on