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

Docker (Linux remoto)

Estas instrucciones están diseñadas para alguien que comienza desde cero para una instalación de Docker en un servidor Ubuntu remoto

Para utilizar esta guía, necesitas una computadora remota o una VM desplegada. Aunque puedes usar esta guía con una instalación local, ten en cuenta que fue escrita originalmente para despliegue en la nube.

⚠️ Esta guía fue diseñada originalmente para Digital Ocean, por lo que es posible que deba modificar las instrucciones para otras plataformas, pero la idea principal permanece sin cambios.

Parte I: Instalación de Docker y otras dependencias:

Existen muchas formas de configurar Docker en sistemas Linux. Te guiaré a través de la mejor y más recomendada forma basada en esta guía.

Tenga en cuenta que la "mejor" forma para la instalación de Docker en Ubuntu no significa la "más rápida" o la "más fácil". Significa la mejor manera de instalarlo para obtener beneficios a largo plazo (es decir, actualizaciones más rápidas, parches de seguridad, etc.).

1. Actualizar e instalar dependencias de Docker

Primero, actualicemos nuestra lista de paquetes e instalemos las dependencias de Docker requeridas.

sudo apt update

Luego, utiliza el siguiente comando para instalar las dependencias o los paquetes de requisitos previos.

sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

Notas de instalación

  • Introduzca "Y" para todos los avisos de terminal [Y/n] (sí/no) a lo largo de toda esta guía.
  • Después del primer prompt [Y/n], obtendrás la primera de unas cuantas pantallas moradas solicitando reiniciar los servicios.
    • Cada vez que esto suceda, puede presionar ENTER de forma segura para seleccionar las opciones predeterminadas que ya están seleccionadas:

image

  • Si en algún momento la consola de tu droplet se desconecta, haz lo siguiente y luego continúa desde donde te quedaste:
    • Acceda a la consola de nuevo como se indica arriba
    • Cambia al usuario que creaste con su - <yourusername>

2. Agregar el repositorio de Docker a las fuentes de APT

Aunque instalar Docker Engine desde los repositorios de Ubuntu es más sencillo, añadir el repositorio oficial de docker le proporciona actualizaciones más rápidas. Por esta razón, este es el método recomendado.

Primero, obtengamos la clave GPG que es necesaria para conectarse al repositorio de Docker. Para ello, utilice el siguiente comando.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

A continuación, añade el repositorio a la lista de fuentes. Aunque también puedes añadirlo manualmente, el siguiente comando lo hará automáticamente por ti.

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

El comando anterior completará automáticamente su nombre en clave de lanzamiento (jammy para 22.04, focal para 20.04 y bionic para 18.04).

Finalmente, actualiza tus paquetes de nuevo.

sudo apt update

Si olvidas añadir la clave GPG, el paso anterior fallará con un mensaje de error. De lo contrario, continuemos con la instalación de Docker en Ubuntu.

3. Instalar Docker

¿Cuál es la diferencia entre docker.io y docker-ce?

docker.io es el paquete de docker que ofrecen algunas distribuciones populares de Linux (por ejemplo, Ubuntu/Debian). docker-ce, por otro lado, es el paquete de docker del repositorio oficial de Docker. Por lo general, docker-ce está más actualizado y es el preferido.

Ahora instalaremos docker-ce (y no el paquete docker.io)

sudo apt install docker-ce

La pantalla morada significa presionar ENTER. :)

Recomendado: debes asegurarte de que el usuario creado se añada al grupo docker para un uso fluido de los comandos:

sudo usermod -aG docker $USER

Ahora reiniciemos el sistema para asegurarnos de que todo esté bien.

sudo reboot

Después de reiniciar, si utiliza la consola del droplet del navegador, puede hacer clic en recargar y esperar para volver a entrar en la consola.

image

Recordatorio: Cada vez que reinicie con sudo reboot, debe cambiar al usuario que configuró anteriormente con su - <yourusername>.

4. Verificar que Docker se está ejecutando en Ubuntu

Hay muchas formas de comprobar si Docker se está ejecutando en Ubuntu. Una forma es utilizar el siguiente comando:

sudo systemctl status docker

Deberías ver una salida que indique active (running) en el estado.

image

Salga de este registro presionando CTRL (o CMD) + C.

5. Instalar Docker Compose

Como ya añadimos el repositorio oficial de Docker en el paso 2, instalar Docker Compose es sencillo utilizando el plugin oficial de Compose:

sudo apt install docker-compose-plugin

Verificar la instalación:

docker compose version

Nota: Docker Compose v2 utiliza el comando docker compose (sin guion) en lugar del antiguo docker-compose. Todos los comandos en esta guía utilizan la sintaxis moderna.

6. Como parte de esta guía, te recomiendo tener instalados git y npm:

Aunque no es técnicamente obligatorio, tener git y npm hará que la instalación/actualización sea muy sencilla:

sudo apt install git nodejs npm

Prepara las líneas de la matriz.

Puedes confirmar que estos paquetes se instalaron correctamente con lo siguiente:

git --version
node -v
npm -v

image

Nota: esto puede instalar versiones antiguas de Node.js y npm. Si ejecuta LibreChat directamente en el host, utilice Node.js v24.16.0 con npm v11.16.0. Para esta guía basada en Docker, la versión de Node.js del host no importa porque LibreChat se ejecuta dentro de contenedores.

Ok, ahora que has configurado el Droplet, procederás a configurar la aplicación en sí


Parte II: Configuración de LibreChat

1. Clonar el repositorio

Desde la línea de comandos del droplet (como tu usuario, no como root):

# clone down the repository
git clone https://github.com/danny-avila/LibreChat.git
 
# enter the project directory
cd LibreChat/

2. Crear los archivos de configuración y entorno de LibreChat

Archivo de configuración (librechat.yaml)

A continuación, creamos el archivo de configuración de LibreChat, también conocido como librechat.yaml, que permite la personalización de los ajustes de la aplicación, así como endpoints personalizados.

Independientemente de si desea personalizar la aplicación aún más, es necesario para el archivo deploy-compose.yml que estamos utilizando, por lo que podemos crear uno con el valor mínimo indispensable para comenzar:

nano librechat.yaml

Entrarás en la pantalla del editor y podrás pegar lo siguiente:

# For more information, see the Configuration Guide:
# https://www.librechat.ai/docs/configuration/librechat_yaml
 
# Configuration version (required)
version: 1.3.5
# This setting caches the config file for faster loading across app lifecycle
cache: true

Salga del editor con CTRL + X, luego Y para guardar y ENTER para confirmar.

Validación de configuración

LibreChat se cerrará con un error (código de salida 1) si su archivo librechat.yaml contiene errores de validación. Este comportamiento de fallo rápido (fail-fast) asegura que los problemas de configuración se detecten a tiempo durante el despliegue.

Antes de implementar, valide su configuración utilizando el YAML Validator. Si su pipeline de CI/CD inicia el servidor, este fallará rápidamente ante una configuración no válida, evitando implementaciones con ajustes mal configurados.

Archivo de entorno (.env)

Los valores predeterminados son suficientes para comenzar y ejecutar la aplicación, lo que le permite proporcionar sus credenciales desde la aplicación web.

# Copies the example file as your global env file
cp .env.example .env

Sin embargo, es altamente recomendable que ajustes los valores "secret" de sus valores predeterminados para mayor seguridad. Los registros de inicio de la API te advertirán si no lo haces.

Para mayor comodidad, puedes ejecutar esto para generar tus propios valores:

https://www.librechat.ai/toolkit/creds_generator

nano .env
 
# FIND THESE VARIABLES AND REPLACE THEIR DEFAULT VALUES!
 
# Must be a 16-byte IV (32 characters in hex)
 
CREDS_IV=e2341419ec3dd3d19b13a1a87fafcbfb
 
# Must be 32-byte keys (64 characters in hex)
 
CREDS_KEY=f34be427ebb29de8d88c107a71546019685ed8b241d8f2ed00c3df97ad2566f0
JWT_SECRET=16f8c0ef4a5d391b26034086c628469d3f9f497f08163ab9b40137092f2909ef
JWT_REFRESH_SECRET=eaa5191f2914e30b9387fd84e254e4ba6fc51b4654968a9b0803b456a54b8418

Si deseas proporcionar credenciales para que todos los usuarios de tu instancia las utilicen, debes añadirlas mientras aún estás editando este archivo:

OPENAI_API_KEY=sk-yourKey

Como antes, salga del editor con CTRL + X, luego Y para guardar y ENTER para confirmar.

¡Eso es todo!

Para una configuración exhaustiva, sin embargo, debes editar tu archivo .env según sea necesario, y asegúrate de leer los comentarios en el archivo y los recursos a continuación.

# if editing the .env file
nano .env

Esta es una de esas variables de entorno que hay que tener en cuenta. Esto deshabilita los registros externos, en caso de que desees configurarlo después de haber creado tu cuenta.

ALLOW_REGISTRATION=false

Recursos:

3. Iniciar Docker

# should already be running, but just to be safe
sudo systemctl start docker
 
# confirm docker is running
docker info

Ahora podemos iniciar el contenedor de la aplicación. Por primera vez, usaremos el comando completo y más adelante podremos usar un comando abreviado.

sudo docker compose -f ./deploy-compose.yml up -d

image

Es seguro cerrar la terminal si lo desea; la aplicación Docker continuará ejecutándose.

Nota: esto utiliza un archivo compose especial optimizado para este entorno desplegado. Si desea más configuración aquí, debe inspeccionar los archivos deploy-compose.yml y Dockerfile.multi para ver cómo están configurados. No estamos compilando la imagen en este entorno, ya que no hay suficiente RAM para hacerlo correctamente. En su lugar, extraemos la última imagen dev-api de LibreChat, la cual se compila automáticamente después de cada push a main.

Si está configurando un dominio para usarlo con LibreChat, este archivo compose utiliza el archivo nginx ubicado en client/nginx.conf. A continuación, en la parte V, encontrará las instrucciones al respecto.

4. Una vez que la aplicación esté en ejecución, puede acceder a ella en http://yourserverip

Regresa a la página del droplet para obtener la IP de tu servidor, cópiala y pégala en tu navegador.

image

Regístrate, inicia sesión y disfruta de tu propio LibreChat alojado de forma privada y remota :)

image

image

Parte III: Actualización de LibreChat

He hecho que este paso sea bastante sencillo, siempre y cuando todo lo anterior se haya instalado correctamente y no hayas editado el historial de git.

Nota: Si está trabajando en una rama editada, con sus propias confirmaciones (commits), por ejemplo, con ediciones en client/nginx.conf, debe inspeccionar config/deployed-update.js para ejecutar algunos de los comandos manualmente según lo considere oportuno. Consulte la parte V para obtener más información al respecto.

Ejecute lo siguiente para una actualización automática

npm run update:deployed

Detener el contenedor Docker

npm run stop:deployed

Esto simplemente ejecuta docker compose -f ./deploy-compose.yml down

Iniciando el contenedor Docker

npm run start:deployed

Esto simplemente ejecuta docker compose -f ./deploy-compose.yml up -d

Comprobar contenedores Docker activos

docker ps

Puede actualizar manualmente sin los scripts si encuentra problemas.

docker compose -f ./deploy-compose.yml down
# Linux/Mac
docker images -a | grep "librechat" | awk '{print $3}' | xargs docker rmi
 
# Windows (PowerShell)
docker images -a --filter "reference=registry.librechat.ai/danny-avila/librechat*" --format "{{.ID}}" | ForEach-Object { docker rmi $_ }
docker images -a --filter "reference=ghcr.io/danny-avila/librechat*" --format "{{.ID}}" | ForEach-Object { docker rmi $_ }
git pull
docker compose -f ./deploy-compose.yml pull
docker compose -f ./deploy-compose.yml up

Parte IV: Edición del archivo NGINX (para dominios personalizados y configuraciones avanzadas)

En caso de que desee editar el archivo NGINX por cualquier motivo, como apuntar su servidor a un dominio personalizado, utilice lo siguiente:

npm run stop:deployed
nano client/nginx.conf

No te guiaré a través de la configuración de dominios personalizados ni de ningún otro cambio en NGINX; puedes consultar la guía de Cloudflare, la guía de Traefik o la guía de NGINX para comenzar con dominios personalizados.

Sin embargo, te mostraré qué editar en el lado de LibreChat para un dominio personalizado con esta configuración.

Dado que NGINX se utiliza como proxy pass de forma predeterminada, solo edito lo siguiente:

# before
server_name localhost;
 
# after
server_name custom.domain.com;

Nota: esto funciona porque el archivo deploy-compose.yml utiliza NGINX de forma predeterminada, a diferencia del archivo docker-compose.yml principal. Como siempre, puede configurar los archivos compose según lo necesite.

Ahora confirma estos cambios en una rama separada:

# create a new branch
# example: git checkout -b edit
git checkout -b <branchname>
 
# stage all file changes
git add .

Para confirmar cambios en una rama de git, necesitará identificarse en git. Estos pueden ser valores ficticios, pero si desea que se sincronicen con GitHub, en caso de que envíe esta rama a un repositorio bifurcado de LibreChat, utilice su correo electrónico de GitHub.

# these values will work if you don't care what they are
git config --global user.email "[email protected]"
git config --global user.name "Your Name"
 
# Now you can commit the change
git commit -m "edited nginx.conf"

La actualización en una rama editada funcionará de manera un poco diferente ahora

npm run rebase:deployed

¡Ya debería estar todo listo!

Advertencia Experimentará conflictos de fusión si comienza a editar significativamente la rama y esto no se recomienda a menos que sepa lo que está haciendo

Tenga en cuenta que cualquier cambio en el código en este entorno no se verá reflejado porque el archivo compose está extrayendo las imágenes de Docker creadas automáticamente por GitHub.

Parte V: Utilice la última versión estable en lugar de la última rama principal

De forma predeterminada, esta configuración obtendrá las últimas actualizaciones de la rama principal de LibreChat. Si prefiere tener la última versión "estable", la cual se define mediante los latest tags, deberá editar deploy-compose.yml y confirmar sus cambios exactamente como se indica arriba en la Parte V. Tenga en cuenta que, si lo hace, no se beneficiará de las funciones más recientes tan pronto como estén disponibles.

Editemos deploy-compose.yml:

nano deploy-compose.yml

Cambie librechat-dev-api a librechat-api:

image: registry.librechat.ai/danny-avila/librechat-api:latest

Prepara (stage) y confirma (commit) los cambios como en la Parte V, ¡y listo!

¿Qué te parece esta guía?