Webserver-Konfiguration
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.
Beziehen Sie ein SSL-Zertifikat
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.
Kommerzielle Zertifizierungsstelle
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.
Anpassen der Webserver-Konfiguration
Platzieren Sie die Beispielkonfiguration
Kopieren Sie die SSL-Beispielkonfiguration in Ihr Nginx-Konfigurationsverzeichnis:
sh
sudo cp /opt/zammad/contrib/nginx/zammad_ssl.conf \
/etc/nginx/sites-available/zammad.confDie gängigsten Nginx-Konfigurationsverzeichnisse:
/etc/nginx/conf.d//etc/nginx/vhosts.d//etc/nginx/sites-available/
Passen Sie den Servernamen und die Zertifikatspfade an
Bearbeiten Sie die soeben kopierte Datei mit einem Texteditor Ihrer Wahl (z.B. vi oder nano). Suchen Sie die beiden server_name Direktiven (eine im HTTP- Serverblock auf Port 80, eine im HTTPS-Serverblock auf Port 443) und passen Sie example.com an die von Ihnen gewählte Subdomain an.
Nun müssen Sie den Pfad und die Dateinamen für Ihre SSL-Zertifikate anpassen, die Sie in den vorherigen Schritten erhalten haben. Passen Sie die folgenden Anweisungen entsprechend Ihrer Konfiguration an:
ssl_certificate(Ihr SSL-Zertifikat)ssl_certificate_key(der private Schlüssel des Zertifikats)ssl_trusted_certificate(das öffentliche CA-Zertifikat)
Um die SSL-Sicherheit zu verbessern, konfigurieren Sie außerdem eine Diffie-Hellman-Parameterdatei und verweisen Sie ssl_dhparam darauf:
sh
sudo openssl dhparam -out /etc/ssl/dhparam.pem 4096Neu laden und prüfen
Überprüfen Sie die Konfiguration:
sh
sudo nginx -tLaden Sie Nginx neu:
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
Standard Landing-Page anstelle von 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-Auflösung fehlgeschlagen
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-Fehler
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