Skip to main content
LibreChat is joining ClickHouse to power the open-source Agentic Data Stack 🎉 Learn more
LibreChat

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

  1. Um servidor em nuvem (por exemplo, AWS, Google Cloud, Azure, Digital Ocean).
  2. Um nome de domínio registrado.
  3. Acesso via terminal ao seu servidor na nuvem.
  4. Node.js v24.16.0 e npm v11.16.0 se 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.

  1. Faça login no painel de controle do seu registrador de domínio.
  2. Navegue até as configurações de DNS.
  3. Crie um A record apontando seu domínio para o endereço IP do seu servidor em nuvem.
  4. 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:

  1. Instale o Certbot:

    • Para Ubuntu: sudo apt-get install certbot python3-certbot-nginx
    • Para CentOS: sudo yum install certbot python2-certbot-nginx
  2. Obtenha o Certificado:

    • Execute sudo certbot --nginx para 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.

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:

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.

  1. Atualize o client/nginx.conf com o seu domínio e os caminhos dos certificados.
  2. Atualize o deploy-compose.yml na seção client para 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
  1. Pare qualquer instância em execução: npm run stop:deployed
  2. Faça o commit das alterações em uma nova branch do Git.
  3. 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:

  1. Instalar o Nginx:

    • Ubuntu: sudo apt-get install nginx
    • CentOS: sudo yum install nginx
  2. Inicie o Nginx: sudo systemctl start nginx

  3. Abra o arquivo de configuração do Nginx: sudo nano /etc/nginx/sites-available/default

  4. Substitua o conteúdo do arquivo pelo seguinte, garantindo a substituição de your_domain.com pelo seu domínio e app_port pela 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;
    }
}
  1. Verifique a configuração do Nginx: sudo nginx -t
  2. Recarregar o Nginx: sudo systemctl reload nginx

Executar a Aplicação

  1. Navegue até o diretório da sua aplicação:
cd LibreChat
  1. Inicie sua aplicação usando Docker Compose:
sudo docker compose -f ./deploy-compose.yml up -d

Renovando certificados ao usar nginx

Se você configurou o nginx usando a Opção A recomendada acima, siga estas etapas para renovar os certificados:

  1. Navegue até o diretório da sua aplicação
cd LibreChat
  1. Pare seus containers Docker em execução
sudo docker compose -f ./deploy-compose.yml down -d
  1. renovar certificados
sudo certbot renew
  1. Reinicie sua aplicação
sudo docker compose -f ./deploy-compose.yml up -d

Nota: 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.

  1. Instalar o OWASP CRS:

    • Ubuntu: sudo apt-get install nginx-modsecurity-crs
  2. 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;
  3. 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.
  4. 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=true

Isso 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?