NGINX
Guida passo dopo passo per proteggere il tuo deployment di LibreChat con Nginx come reverse proxy e HTTPS
Questa guida copre i passaggi essenziali per proteggere la tua distribuzione LibreChat con un certificato SSL/TLS per HTTPS, configurare Nginx come reverse proxy e impostare il tuo dominio.
Prerequisiti
- Un server cloud (ad esempio, AWS, Google Cloud, Azure, Digital Ocean).
- Un nome di dominio registrato.
- Accesso al terminale del tuo server cloud.
- Node.js
v24.16.0e npmv11.16.0se esegui LibreChat direttamente sull'host.
Configurazione iniziale
Puntare il proprio dominio al server
Prima di procedere con l'acquisizione del certificato, punta il tuo dominio all'indirizzo IP del tuo server cloud. Questo passaggio è fondamentale e deve precedere la configurazione del certificato SSL a causa del tempo necessario affinché i record DNS si propaghino a livello globale.
- Accedi al pannello di controllo del tuo registrar di dominio.
- Passa alle impostazioni DNS.
- Crea un
A recordche punti il tuo dominio all'indirizzo IP del tuo cloud server. - Attendi che le modifiche DNS si propaghino a livello globale (puoi verificarlo eseguendo il ping del tuo dominio:
ping your_domain.com).
Ottenere un certificato SSL/TLS
Per proteggere la tua applicazione LibreChat con HTTPS, avrai bisogno di un certificato SSL/TLS. Let's Encrypt offre certificati gratuiti:
-
Installa Certbot:
- Per Ubuntu:
sudo apt-get install certbot python3-certbot-nginx - Per CentOS:
sudo yum install certbot python2-certbot-nginx
- Per Ubuntu:
-
Ottieni il certificato:
- Esegui
sudo certbot --nginxper ottenere e installare automaticamente il certificato per Nginx. - Segui le istruzioni a schermo. Certbot richiederà alcune informazioni e completerà il processo di convalida.
- Una volta completata l'operazione, Certbot memorizzerà i file del tuo certificato.
- Esegui
Configurare Nginx come Reverse Proxy
Nginx funge da reverse proxy, inoltrando le richieste dei client alla tua applicazione LibreChat. Esistono due opzioni di distribuzione:
Opzione A: Utilizzo di deploy-compose.yml Docker Compose (Consigliato)
Il file deploy-compose.yml include un container Nginx e utilizza il file client/nginx.conf per la configurazione di Nginx. Tuttavia, poiché sudo certbot --nginx estrae il certificato nella configurazione dell'host, è necessario duplicare il certificato nei container Docker.
- Aggiorna
client/nginx.confcon il tuo dominio e i percorsi dei certificati. - Aggiorna
deploy-compose.ymlnella sezioneclientper montare i file del certificato dall'host:
client:
# ...
volumes:
- ./client/nginx.conf:/etc/nginx/conf.d/default.conf
- /etc/letsencrypt/live/<your-domain>:/etc/letsencrypt/live/<your-domain>
- /etc/letsencrypt/archive/<your-domain>:/etc/letsencrypt/archive/<your-domain>
- /etc/letsencrypt/options-ssl-nginx.conf:/etc/letsencrypt/options-ssl-nginx.conf
- /etc/letsencrypt/ssl-dhparams.pem:/etc/letsencrypt/ssl-dhparams.pem- Arresta qualsiasi istanza in esecuzione:
npm run stop:deployed - Esegui il commit delle modifiche su un nuovo branch Git.
- Esegui il rebase dell'istanza distribuita:
npm run rebase:deployed
Opzione B: Distribuzione basata su host senza Docker
Se non stai utilizzando Docker, puoi installare e configurare Nginx direttamente sull'host:
-
Installa Nginx:
- Ubuntu:
sudo apt-get install nginx - CentOS:
sudo yum install nginx
- Ubuntu:
-
Avvia Nginx:
sudo systemctl start nginx -
Apri il file di configurazione di Nginx:
sudo nano /etc/nginx/sites-available/default -
Sostituisci il contenuto del file con il seguente, assicurandoti di sostituire
your_domain.comcon il tuo dominio eapp_portcon la porta della tua applicazione:
server {
listen 80;
server_name your_domain.com;
location / {
proxy_pass http://localhost:app_port;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}- Controlla la configurazione di Nginx:
sudo nginx -t - Ricarica Nginx:
sudo systemctl reload nginx
Eseguire l'applicazione
- Passa alla directory della tua applicazione:
cd LibreChat- Avvia la tua applicazione utilizzando Docker Compose:
sudo docker compose -f ./deploy-compose.yml up -dRinnovo dei certificati quando si utilizza nginx
Se hai configurato nginx utilizzando l'Opzione A consigliata sopra, segui questi passaggi per rinnovare i certificati:
- Naviga verso la directory della tua applicazione
cd LibreChat- Arresta i tuoi container Docker in esecuzione
sudo docker compose -f ./deploy-compose.yml down -d- rinnova certificati
sudo certbot renew- Riavvia la tua applicazione
sudo docker compose -f ./deploy-compose.yml up -dNota: certbot potrebbe riavviare l'nginx dell'host. Puoi terminarlo con sudo pkill nginx
Web Application Firewall
Nginx può essere configurato per agire come un web application firewall (WAF) sfruttando l'OWASP Core Rule Set (CRS), che fornisce un solido insieme di regole per proteggere dalle vulnerabilità e dagli attacchi comuni alle applicazioni web. L'utilizzo di OWASP CRS con Nginx può migliorare la sicurezza della tua distribuzione LibreChat aggiungendo un ulteriore livello di protezione.
-
Installa OWASP CRS:
- Ubuntu:
sudo apt-get install nginx-modsecurity-crs
- Ubuntu:
-
Abilita ModSecurity in Nginx:
-
Apri il tuo file di configurazione Nginx (ad esempio,
/etc/nginx/nginx.conf). -
Aggiungi le seguenti righe all'interno del blocco
http:modsecurity on; modsecurity_rules_file /usr/share/nginx/modsecurity-crs/nginx-modsecurity.conf;
-
-
Configura OWASP CRS:
- Il pacchetto OWASP CRS include solitamente un file di configurazione (ad esempio,
/etc/nginx/modsecurity.d/nginx-modsecurity.conf) in cui è possibile regolare varie impostazioni e set di regole in base ai propri requisiti.
- Il pacchetto OWASP CRS include solitamente un file di configurazione (ad esempio,
-
Ricarica Nginx:
sudo systemctl reload nginx
Abilitando OWASP CRS nella tua configurazione Nginx, puoi sfruttare il set completo di regole fornito dal progetto per rilevare e mitigare diverse vulnerabilità e attacchi alle applicazioni web, come SQL injection, cross-site scripting (XSS), remote file inclusion e altro ancora.
Caching e compressione dei file statici
LibreChat ora supporta nativamente la memorizzazione nella cache e la compressione dei file statici. Se utilizzi NGINX per gestire la compressione, dovresti disabilitare la compressione in LibreChat per evitare elaborazioni ridondanti. Puoi farlo impostando la variabile d'ambiente DISABLE_COMPRESSION su true nella tua configurazione di LibreChat.
# .env file
DISABLE_COMPRESSION=trueCiò impedirà a LibreChat di comprimere i file statici, consentendo a NGINX di gestire la compressione in modo più efficiente.
Per ulteriori informazioni sulla gestione dei file statici in LibreChat, incluse le opzioni di caching, fare riferimento alla documentazione Static File Handling.
Com’è questa guida?