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

Traefik

Aprenda a utilizar Traefik como proxy inverso y balanceador de carga para exponer su instancia de LibreChat de forma segura mediante HTTPS con gestión automática de certificados SSL/TLS.

Traefik es un proxy inverso HTTP y balanceador de carga moderno que facilita la implementación y gestión de sus servicios. Si está ejecutando LibreChat en Docker, puede utilizar Traefik para exponer su instancia de forma segura a través de HTTPS con gestión automática de certificados SSL.

Requisitos previos

  • Docker y Docker Compose instalados en su sistema
  • Un nombre de dominio que apunte a la dirección IP de su servidor

Configuración

Configurar Traefik y LibreChat

En su archivo docker-compose.override.yml, añada la siguiente configuración:

version: '3'
 
services:
    api:
      labels:
        - "traefik.enable=true"
        - "traefik.http.routers.librechat.rule=Host(`your.domain.name`)"
        - "traefik.http.routers.librechat.entrypoints=websecure"
        - "traefik.http.routers.librechat.tls.certresolver=leresolver"
        - "traefik.http.services.librechat.loadbalancer.server.port=3080"
      networks:
        - librechat_default
      volumes:
        - ./librechat.yaml:/app/librechat.yaml
  
    traefik:
      image: traefik:v3.6
      ports:
        - "80:80"
        - "443:443"
      volumes:
        - "/var/run/docker.sock:/var/run/docker.sock:ro"
        - "./letsencrypt:/letsencrypt"
      networks:
        - librechat_default
      command:
        - "--log.level=DEBUG"
        - "--api.insecure=true"
        - "--providers.docker=true"
        - "--providers.docker.exposedbydefault=false"
        - "--entrypoints.web.address=:80"
        - "--entrypoints.websecure.address=:443"
        - "--certificatesresolvers.leresolver.acme.tlschallenge=true"
        - "[email protected]"
        - "--certificatesresolvers.leresolver.acme.storage=/letsencrypt/acme.json"
 
# other configs here #
 
# NOTE: This needs to be at the bottom of your docker-compose.override.yml
networks:
  librechat_default:
    external: true

Reemplace [email protected] con su dirección de correo electrónico para las notificaciones de certificados de Let's Encrypt.

consulta: Docker Override para más información.

Iniciar los contenedores

docker compose up -d

Esto iniciará los contenedores de Traefik y LibreChat. Traefik obtendrá automáticamente un certificado SSL/TLS de Let's Encrypt y expondrá su instancia de LibreChat de forma segura a través de HTTPS.

Ahora puede acceder a su instancia de LibreChat en https://your.domain.name. Traefik se encargará de la terminación SSL/TLS y de realizar el proxy inverso de las solicitudes a su contenedor de LibreChat.

Notas adicionales

  • La configuración de Traefik escucha en los puertos 80 y 443 para tráfico HTTP y HTTPS, respectivamente. Asegúrese de que estos puertos estén abiertos en el firewall de su servidor.
  • Traefik almacena los certificados SSL/TLS en el directorio ./letsencrypt en su máquina host. Es posible que desee realizar copias de seguridad de este directorio periódicamente.
  • Para opciones de configuración más avanzadas, consulte la documentación oficial de Traefik: https://doc.traefik.io/

Almacenamiento en caché y compresión de archivos estáticos

LibreChat ahora admite el almacenamiento en caché y la compresión de archivos estáticos de forma nativa. Si utiliza Traefik para gestionar la compresión, debe desactivar la compresión en LibreChat para evitar un procesamiento redundante. Puede hacerlo configurando la variable de entorno DISABLE_COMPRESSION en true en su configuración de LibreChat.

# .env file
DISABLE_COMPRESSION=true

Esto evitará que LibreChat comprima los archivos estáticos, permitiendo que Traefik gestione la compresión de manera más eficiente.

Para obtener más información sobre el manejo de archivos estáticos en LibreChat, incluyendo las opciones de caché, consulte la documentación de Static File Handling.

¿Qué te parece esta guía?