NGINX
Guia passo a passo para proteger sua implantação do LibreChat com Nginx como proxy reverso e HTTPS
Este guia cobre os passos essenciais para proteger sua implantação do LibreChat com um certificado SSL/TLS para HTTPS, configurar o Nginx como um proxy reverso e configurar seu domínio.
Pré-requisitos
- Um servidor em nuvem (por exemplo, AWS, Google Cloud, Azure, Digital Ocean).
- Um nome de domínio registrado.
- Acesso via terminal ao seu servidor na nuvem.
- Node.js
v24.16.0e npmv11.16.0se você executar o LibreChat diretamente no host.
Configuração Inicial
Apontando seu domínio para seu servidor
Antes de prosseguir com a aquisição do certificado, aponte seu domínio para o endereço IP do seu servidor na nuvem. Esta etapa é fundamental e deve preceder a configuração do certificado SSL devido ao tempo que os registros DNS podem levar para se propagar globalmente.
- Faça login no painel de controle do seu registrador de domínio.
- Navegue até as configurações de DNS.
- Crie um
A recordapontando seu domínio para o endereço IP do seu servidor em nuvem. - Aguarde a propagação global das alterações de DNS (você pode verificar fazendo um ping no seu domínio:
ping your_domain.com).
Obter um certificado SSL/TLS
Para proteger sua aplicação LibreChat com HTTPS, você precisará de um certificado SSL/TLS. O Let's Encrypt oferece certificados gratuitos:
-
Instale o Certbot:
- Para Ubuntu:
sudo apt-get install certbot python3-certbot-nginx - Para CentOS:
sudo yum install certbot python2-certbot-nginx
- Para Ubuntu:
-
Obtenha o Certificado:
- Execute
sudo certbot --nginxpara obter e instalar o certificado automaticamente para o Nginx. - Siga as instruções na tela. O Certbot solicitará informações e concluirá o processo de validação.
- Assim que for bem-sucedido, o Certbot armazenará seus arquivos de certificado.
- Execute
Configurar o Nginx como um Reverse Proxy
O Nginx atua como um proxy reverso, encaminhando as solicitações do cliente para sua aplicação LibreChat. Existem duas opções de implantação:
Opção A: Usando o deploy-compose.yml Docker Compose (Recomendado)
O arquivo deploy-compose.yml inclui um container Nginx e utiliza o arquivo client/nginx.conf para a configuração do Nginx. No entanto, como o sudo certbot --nginx extrai o certificado para a configuração do host, você precisa duplicar o certificado para os containers Docker.
- Atualize o
client/nginx.confcom o seu domínio e os caminhos dos certificados. - Atualize o
deploy-compose.ymlna seçãoclientpara montar os arquivos de certificado a partir do 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- Pare qualquer instância em execução:
npm run stop:deployed - Faça o commit das alterações em uma nova branch do Git.
- Faça o rebase da instância implantada:
npm run rebase:deployed
Opção B: Implantação baseada em host sem Docker
Se você não estiver usando Docker, você pode instalar e configurar o Nginx diretamente no host:
-
Instalar o Nginx:
- Ubuntu:
sudo apt-get install nginx - CentOS:
sudo yum install nginx
- Ubuntu:
-
Inicie o Nginx:
sudo systemctl start nginx -
Abra o arquivo de configuração do Nginx:
sudo nano /etc/nginx/sites-available/default -
Substitua o conteúdo do arquivo pelo seguinte, garantindo a substituição de
your_domain.compelo seu domínio eapp_portpela porta da sua aplicação:
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;
}
}- Verifique a configuração do Nginx:
sudo nginx -t - Recarregar o Nginx:
sudo systemctl reload nginx
Executar a Aplicação
- Navegue até o diretório da sua aplicação:
cd LibreChat- Inicie sua aplicação usando Docker Compose:
sudo docker compose -f ./deploy-compose.yml up -dRenovando certificados ao usar nginx
Se você configurou o nginx usando a Opção A recomendada acima, siga estas etapas para renovar os certificados:
- Navegue até o diretório da sua aplicação
cd LibreChat- Pare seus containers Docker em execução
sudo docker compose -f ./deploy-compose.yml down -d- renovar certificados
sudo certbot renew- Reinicie sua aplicação
sudo docker compose -f ./deploy-compose.yml up -dNota: o certbot pode reiniciar o nginx do host. Você pode encerrá-lo com sudo pkill nginx
Web Application Firewall
O Nginx pode ser configurado para atuar como um web application firewall (WAF) aproveitando o OWASP Core Rule Set (CRS), que fornece um conjunto robusto de regras para proteger contra vulnerabilidades e ataques comuns a aplicações web. Usar o OWASP CRS com o Nginx pode aumentar a segurança da sua implementação do LibreChat, adicionando uma camada extra de proteção.
-
Instalar o OWASP CRS:
- Ubuntu:
sudo apt-get install nginx-modsecurity-crs
- Ubuntu:
-
Habilitar o ModSecurity no Nginx:
-
Abra seu arquivo de configuração do Nginx (por exemplo,
/etc/nginx/nginx.conf). -
Adicione as seguintes linhas dentro do bloco
http:modsecurity on; modsecurity_rules_file /usr/share/nginx/modsecurity-crs/nginx-modsecurity.conf;
-
-
Configure o OWASP CRS:
- O pacote OWASP CRS normalmente inclui um arquivo de configuração (por exemplo,
/etc/nginx/modsecurity.d/nginx-modsecurity.conf) onde você pode ajustar várias configurações e conjuntos de regras com base em seus requisitos.
- O pacote OWASP CRS normalmente inclui um arquivo de configuração (por exemplo,
-
Recarregar Nginx:
sudo systemctl reload nginx
Ao habilitar o OWASP CRS em sua configuração do Nginx, você pode aproveitar o conjunto abrangente de regras fornecido pelo projeto para detectar e mitigar diversas vulnerabilidades e ataques a aplicações web, como SQL injection, cross-site scripting (XSS), inclusão remota de arquivos e muito mais.
Cache e Compressão de Arquivos Estáticos
O LibreChat agora oferece suporte nativo a cache e compressão de arquivos estáticos. Se você estiver usando NGINX para lidar com a compressão, deve desativar a compressão no LibreChat para evitar processamento redundante. Você pode fazer isso definindo a variável de ambiente DISABLE_COMPRESSION como true na sua configuração do LibreChat.
# .env file
DISABLE_COMPRESSION=trueIsso impedirá que o LibreChat comprima arquivos estáticos, permitindo que o NGINX gerencie a compressão de forma mais eficiente.
Para mais informações sobre o tratamento de arquivos estáticos no LibreChat, incluindo opções de cache, consulte a documentação de Static File Handling.
Como está este guia?