Autenticación de MongoDB
Configure la autenticación en su mongodb de Docker con el archivo docker-compose.override.yml
Esta guía demostrará cómo utilizar el archivo docker-compose.override.yml para permitirnos habilitar la autenticación explícita para MongoDB.
Para más información sobre el archivo de anulación, por favor consulte: Docker Compose Override
Notas:
- La configuración predeterminada es segura al bloquear el acceso a puertos externos, pero podemos ir un paso más allá con credenciales de acceso.
- Como señalan los propios desarrolladores de MongoDB, la autenticación en MongoDB es bastante compleja. Adoptaremos un enfoque sencillo que será suficiente para la mayoría de los casos, especialmente para las configuraciones existentes de LibreChat. Para obtener más información sobre cómo funciona la autenticación de mongodb con Docker, consulte aquí: https://hub.docker.com/_/mongo/
- Esta guía se centra exclusivamente en los procedimientos de configuración basados en terminal.
- Aunque los pasos descritos también pueden ser aplicables a entornos de Docker Desktop, o con configuraciones locales de MongoDB sin Docker u otras configuraciones de contenedores, no se proporcionan detalles específicos para esos escenarios.
Hay 3 pasos básicos:
- Cree un usuario administrador dentro de su contenedor mongodb
- Habilite la autenticación y cree un usuario "readWrite" para "LibreChat"
- Configure el MONGO_URI con el usuario recién creado
TL;DR
Estos son todos los comandos necesarios si deseas ejecutarlos rápidamente o como referencia:
Ejemplo
Ejemplo de archivo docker-compose.override.yml usando el archivo de configuración librechat.yaml, Autenticación de MongoDB y mongo-express para administrar su base de datos MongoDB:
Creación de un usuario administrador
Primero, debemos detener los contenedores predeterminados y ejecutar únicamente el contenedor de mongodb.
Nota: La bandera
-dsepara la instancia de terminal actual mientras el contenedor se ejecuta en segundo plano. Si desea ver los resultados del registro de mongodb, omítala y continúe en una terminal separada.
Una vez en ejecución, entraremos en la terminal del contenedor y ejecutaremos mongosh:
Deberías ver la siguiente salida:
Opcional: Ya que estamos aquí, podemos deshabilitar la telemetría para mongodb si se desea, la cual consiste en datos de uso anónimos recopilados y enviados a MongoDB periódicamente:
Ejecute el siguiente comando.
Notas:
- Todos los comandos subsiguientes deben ejecutarse en la sesión de terminal actual, independientemente del entorno (Docker, Linux,
mongosh, etc.)- Representaré la vista real de la terminal con # entrada/salida de ejemplo o simplemente mostrando la salida en algunos casos
Comando:
Ejemplo de entrada/salida:
Ahora, debemos acceder a la base de datos admin, la cual mongodb crea de forma predeterminada para crear nuestro usuario administrador:
cambiado a db admin
Reemplace las credenciales como desee y guárdelas en sus registros seguros para el resto de la guía.
Ejecute el comando para crear el usuario administrador:
Deberías ver una salida "ok".
También puedes confirmar que el administrador fue creado ejecutando show users:
:warning: Importante: si está utilizando mongo-express para gestionar su base de datos (guía aquí), necesita permisos adicionales para que el servicio mongo-express se ejecute correctamente:
Salga de la terminal de Mongosh/Container ejecutando exit:
Y detenga el contenedor en ejecución:
Habilitación de la autenticación y creación de un usuario con acceso readWrite
Ahora debemos crear/editar el archivo docker-compose.override.yml para habilitar la autenticación para nuestro contenedor de mongodb. Puede utilizar esta configuración para iniciar o como referencia:
Después de configurar el archivo de anulación como se indicó anteriormente, ejecute el contenedor de mongodb nuevamente:
Y accede a mongosh como el usuario administrador:
Confirme que está autenticado:
Cambiar a la base de datos "LibreChat"
Nota: Esta es la base de datos predeterminada a menos que la hayas cambiado a través de MONGO_URI; URI predeterminada:
MONGO_URI=mongodb://mongodb:27017/LibreChat
Ahora crearemos las credenciales reales que utilizará nuestra cadena de conexión de Mongo, las cuales estarán limitadas al acceso de lectura/escritura de la base de datos "LibreChat". Al igual que antes, reemplace el ejemplo con sus credenciales deseadas:
db.createUser({ user: 'user', pwd: 'userpasswd', roles: [ { role: "readWrite", db: "LibreChat" } ] });
Deberías ver una salida "ok" de nuevo.
Puedes verificar la creación del usuario con el comando show users.
Salga de nuevo de la terminal de Mongosh/Container con exit y detenga el contenedor:
Tuve un problema en el que el usuario recién creado no persistía después de su creación. Para resolver esto, simplemente repetí los pasos para asegurar que se creara correctamente. Aquí los tienes para tu comodidad:
Si aún no persiste, puedes intentar ejecutar los comandos con todos los contenedores en funcionamiento, pero ten en cuenta que el contenedor LibreChat estará en un estado de error/reintento.
Actualice la MONGO_URI para usar las nuevas credenciales
Finalmente, añadimos la nueva cadena de conexión con nuestras credenciales recién creadas a nuestro archivo docker-compose.override.yml bajo el servicio api:
Así que nuestro archivo de anulación se ve así ahora:
Ahora debería ejecutar docker compose up con la autenticación correcta y acceso de lectura/escritura a la base de datos de LibreChat
Ejemplo de conexión exitosa:
Si tienes errores de Authentication, ejecuta la última parte del Paso 2 nuevamente. No estoy seguro de por qué es tan caprichoso, pero funcionará después de algunos intentos.
¿Qué te parece esta guía?