NGINX
Schritt-für-Schritt-Anleitung zur Absicherung Ihrer LibreChat-Bereitstellung mit Nginx als Reverse Proxy und HTTPS
Dieser Leitfaden behandelt die wesentlichen Schritte zur Absicherung Ihrer LibreChat-Bereitstellung mit einem SSL/TLS-Zertifikat für HTTPS, zur Einrichtung von Nginx als Reverse Proxy und zur Konfiguration Ihrer Domain.
Voraussetzungen
- Ein Cloud-Server (z. B. AWS, Google Cloud, Azure, Digital Ocean).
- Ein registrierter Domainname.
- Terminalzugriff auf Ihren Cloud-Server.
- Node.js
v24.16.0und npmv11.16.0, wenn Sie LibreChat direkt auf dem Host ausführen.
Ersteinrichtung
Ihre Domain auf Ihren Server verweisen
Bevor Sie mit der Zertifikatsbeschaffung fortfahren, leiten Sie Ihre Domain auf die IP-Adresse Ihres Cloud-Servers um. Dieser Schritt ist grundlegend und muss vor der Einrichtung des SSL-Zertifikats erfolgen, da die globale Verbreitung von DNS-Einträgen einige Zeit in Anspruch nehmen kann.
- Melden Sie sich im Kontrollzentrum Ihres Domain-Registrars an.
- Navigieren Sie zu den DNS-Einstellungen.
- Erstellen Sie einen
A record, der Ihre Domain auf die IP-Adresse Ihres Cloud-Servers verweist. - Warten Sie, bis sich die DNS-Änderungen global verbreitet haben (Sie können dies überprüfen, indem Sie Ihre Domain anpingen:
ping your_domain.com).
Ein SSL/TLS-Zertifikat erhalten
Um Ihre LibreChat-Anwendung mit HTTPS abzusichern, benötigen Sie ein SSL/TLS-Zertifikat. Let's Encrypt bietet kostenlose Zertifikate an:
-
Certbot installieren:
- Für Ubuntu:
sudo apt-get install certbot python3-certbot-nginx - Für CentOS:
sudo yum install certbot python2-certbot-nginx
- Für Ubuntu:
-
Zertifikat erhalten:
- Führen Sie
sudo certbot --nginxaus, um das Zertifikat automatisch für Nginx abzurufen und zu installieren. - Befolgen Sie die Anweisungen auf dem Bildschirm. Certbot wird Sie nach Informationen fragen und den Validierungsprozess abschließen.
- Nach erfolgreichem Abschluss speichert Certbot Ihre Zertifikatsdateien.
- Führen Sie
Nginx als Reverse Proxy einrichten
Nginx fungiert als Reverse-Proxy, der Client-Anfragen an Ihre LibreChat-Anwendung weiterleitet. Es gibt zwei Bereitstellungsoptionen:
Option A: Verwendung der deploy-compose.yml Docker Compose (Empfohlen)
Die deploy-compose.yml Datei enthält einen Nginx-Container und verwendet die client/nginx.conf Datei für die Nginx-Konfiguration. Da sudo certbot --nginx das Zertifikat jedoch in die Host-Konfiguration extrahiert, müssen Sie das Zertifikat in die Docker-Container duplizieren.
- Aktualisieren Sie
client/nginx.confmit Ihren Domain- und Zertifikatspfaden. - Aktualisieren Sie
deploy-compose.ymlim Abschnittclient, um die Zertifikatsdateien vom Host einzubinden:
- Stoppen Sie jede laufende Instanz:
npm run stop:deployed - Übertrage die Änderungen in einen neuen Git-Branch.
- Rebase der bereitgestellten Instanz:
npm run rebase:deployed
Option B: Host-basiertes Deployment ohne Docker
Wenn Sie kein Docker verwenden, können Sie Nginx direkt auf dem Host installieren und konfigurieren:
-
Nginx installieren:
- Ubuntu:
sudo apt-get install nginx - CentOS:
sudo yum install nginx
- Ubuntu:
-
Nginx starten:
sudo systemctl start nginx -
Öffnen Sie die Nginx-Konfigurationsdatei:
sudo nano /etc/nginx/sites-available/default -
Ersetzen Sie den Dateiinhalt durch den folgenden und stellen Sie sicher, dass Sie
your_domain.comdurch Ihre Domain undapp_portdurch den Port Ihrer Anwendung ersetzen:
- Überprüfen Sie die Nginx-Konfiguration:
sudo nginx -t - Nginx neu laden:
sudo systemctl reload nginx
Die Anwendung ausführen
- Navigieren Sie zum Verzeichnis Ihrer Anwendung:
- Starten Sie Ihre Anwendung mit Docker Compose:
Erneuern von Zertifikaten bei der Verwendung von nginx
Wenn Sie nginx mithilfe der oben empfohlenen Option A eingerichtet haben, führen Sie diese Schritte aus, um die Zertifikate zu erneuern:
- Navigieren Sie zum Verzeichnis Ihrer Anwendung
- Stoppen Sie Ihre laufenden Docker-Container
- Zertifikate erneuern
- Starten Sie Ihre Anwendung neu
Hinweis: certbot startet möglicherweise den nginx des Hosts neu. Sie können ihn mit sudo pkill nginx beenden.
Web Application Firewall
Nginx kann so konfiguriert werden, dass es als Web Application Firewall (WAF) fungiert, indem das OWASP Core Rule Set (CRS) genutzt wird. Dieses bietet einen robusten Regelsatz zum Schutz vor gängigen Schwachstellen und Angriffen auf Webanwendungen. Die Verwendung von OWASP CRS mit Nginx kann die Sicherheit Ihrer LibreChat-Bereitstellung durch eine zusätzliche Schutzebene erhöhen.
-
OWASP CRS installieren:
- Ubuntu:
sudo apt-get install nginx-modsecurity-crs
- Ubuntu:
-
ModSecurity in Nginx aktivieren:
-
Öffnen Sie Ihre Nginx-Konfigurationsdatei (z. B.
/etc/nginx/nginx.conf). -
Fügen Sie die folgenden Zeilen innerhalb des
http-Blocks hinzu:
-
-
OWASP CRS konfigurieren:
- Das OWASP CRS-Paket enthält normalerweise eine Konfigurationsdatei (z. B.
/etc/nginx/modsecurity.d/nginx-modsecurity.conf), in der Sie verschiedene Einstellungen und Regelsätze basierend auf Ihren Anforderungen anpassen können.
- Das OWASP CRS-Paket enthält normalerweise eine Konfigurationsdatei (z. B.
-
Nginx neu laden:
sudo systemctl reload nginx
Durch die Aktivierung von OWASP CRS in Ihrer Nginx-Konfiguration können Sie den umfassenden Regelsatz des Projekts nutzen, um verschiedene Schwachstellen und Angriffe auf Webanwendungen zu erkennen und abzuwehren, wie z. B. SQL-Injection, Cross-Site Scripting (XSS), Remote File Inclusion und mehr.
Statisches Datei-Caching und Komprimierung
LibreChat unterstützt jetzt nativ das Caching und die Komprimierung statischer Dateien. Wenn Sie NGINX zur Handhabung der Komprimierung verwenden, sollten Sie die Komprimierung in LibreChat deaktivieren, um redundante Verarbeitung zu vermeiden. Sie können dies tun, indem Sie die Umgebungsvariable DISABLE_COMPRESSION in Ihrer LibreChat-Konfiguration auf true setzen.
Dies verhindert, dass LibreChat statische Dateien komprimiert, wodurch NGINX die Komprimierung effizienter handhaben kann.
Weitere Informationen zur Handhabung statischer Dateien in LibreChat, einschließlich Caching-Optionen, finden Sie in der Dokumentation zu Static File Handling.
Wie finden Sie diese Anleitung?