Guía de despliegue

Alojar Logto en un VPS: su propia capa de autenticación

Desplegar en un VPS Cloud →

Tutorial

Alojar Logto en un VPS: su propia capa de autenticación

Desarrollo10 min de lectura10 pasos

Los servicios de autenticación alojados facturan por usuario activo mensual y guardan los datos de inicio de sesión de sus usuarios en sus propios servidores. Logto es la alternativa open source: una plataforma de autenticación OIDC/OAuth 2.0 completa que usted despliega en su propio VPS y controla de principio a fin. Un archivo Docker Compose, dos contenedores (Logto y PostgreSQL 17), y sus aplicaciones disponen de una autenticación de producción — registro, inicio de sesión social, MFA, control de acceso por roles — sin coste por usuario.

Contenido· Qué es Logto, y qué no es1/11
  1. 01Qué es Logto, y qué no es
  2. 02Requisitos previos
  3. 03Cómo funciona Logto en producción
  4. 04Lo que Logto aporta desde la instalación
  5. 05Despliegue Docker Compose paso a paso
  6. 06Conectarse por primera vez
  7. 07Integrar Logto en una aplicación Next.js
  8. 08Activar el inicio de sesión con Google
  9. 09Logto, Authentik, Authelia, Keycloak — ¿cuál elegir?
  10. 10Solución de problemas frecuentes
  11. 11Estrategia de copias de seguridad

Qué es Logto, y qué no es

Logto es una plataforma de autenticación entregada como un SDK: usted la integra en el código de su aplicación en unas quince líneas, y se encarga de todo el ciclo de vida de las cuentas, en su propio servidor. Es distinto de las otras dos herramientas de autenticación del catálogo ServOrbit:

- Authelia añade MFA e inicio de sesión único *delante* de aplicaciones existentes, por delegación, sin tocar su código: protege aplicaciones que no tienen ninguna pantalla de inicio de sesión.
- Authentik es un proveedor de identidad completo, para centralizar el inicio de sesión único de sus herramientas autoalojadas (Grafana, Gitea, Nextcloud).
- Logto sustituye a un servicio de autenticación alojado: usted llama a su SDK desde su aplicación React, Python o Go, y él gestiona cuentas, sesiones, conectores sociales y tokens.

Si está construyendo un producto en el que los usuarios crean una cuenta, Logto es la herramienta adecuada.

Requisitos previos

Antes de desplegar Logto 1.19+, verifique los siguientes puntos en su VPS ServOrbit:

- RAM: al menos 2 GB (4 GB recomendados si espera más de 5 000 usuarios activos). Logto se ejecuta sobre Node.js 20 LTS y comparte la misma instancia que PostgreSQL 17.
- CPU: 1 vCPU es suficiente para empezar, pero 2 vCPU evitan latencias de inicio de sesión bajo carga.
- Disco: reserve al menos 10 GB libres — PostgreSQL asigna registros WAL y las sesiones activas se acumulan rápidamente con el registro de auditoría activado por defecto.
- Docker ≥ 24.0 y Docker Compose ≥ 2.20 — preinstalados en todas las ofertas VPS de ServOrbit.
- PostgreSQL 17 como mínimo (incluido en la imagen oficial de Logto) — las versiones anteriores no admiten las extensiones requeridas.
- Un nombre de dominio o subdominio apuntado a su VPS y resuelto públicamente: Logto inscribe ese dominio en cada token OIDC que emite. Debe estar definido antes del primer arranque y no puede cambiarse sin reinicializar todos los datos de usuario.

Cómo funciona Logto en producción

Logto arranca dos contenedores: db (PostgreSQL 17 para los usuarios, las aplicaciones, las sesiones y el registro de auditoría) y logto (Node.js, que sirve el punto de acceso OIDC en el puerto 3001 y la consola de administración en el puerto 3002). El proxy inverso nginx de su VPS transmite el tráfico HTTPS de su dominio hacia el puerto 3001 — es el punto de acceso ante el que se autentican sus aplicaciones. El puerto 3002 solo está vinculado al bucle local y únicamente es accesible por un túnel SSH, lo que mantiene la administración de su base de usuarios fuera de la internet pública.

Lo que Logto aporta desde la instalación

  • Tokens conformes a OIDC/OAuth 2.0 — JWT firmados que cualquier biblioteca estándar (passport.js, python-jose, go-oidc) verifica sin código específico.
  • Conectores de inicio de sesión social — active Google, GitHub, Apple, Microsoft, Discord y una treintena de proveedores más desde la consola, con un clic.
  • La autenticación sin contraseña — enlaces mágicos por correo electrónico o códigos de un solo uso por SMS (Twilio, SendGrid, Mailgun), sin mantener un servicio de notificación aparte.
  • La doble autenticación — TOTP (Google Authenticator, Authy), llaves físicas WebAuthn/FIDO2 y códigos de recuperación, impuestos por política desde la consola.
  • El control de acceso por roles — defina roles y permisos en la consola, recíbalos como claims scope del JWT y aplíquelos en su API con una línea de middleware.
  • SDK para más de 20 frameworks — React, Next.js, Vue, Angular, React Native, Flutter, Python, FastAPI, Go, PHP, Laravel, .NET, Java, Spring Boot y otros.

Despliegue Docker Compose paso a paso

  1. Crear el directorio de trabajo y el archivo Compose

    Conéctese a su VPS por SSH y cree el directorio de trabajo:

    mkdir -p /opt/logto && cd /opt/logto

    Cree el archivo docker-compose.yml con el contenido mostrado en la sección en francés, sustituyendo auth.votre-domaine.com por su propio dominio.

  2. Generar los secretos y crear el archivo .env

    Genere una contraseña de base de datos y una clave AES-256 robustas:

    DB_PASSWORD=$(openssl rand -hex 32)
    SECRET_VAULT_KEK=$(openssl rand -hex 32)
    printf "DB_PASSWORD=%s\nSECRET_VAULT_KEK=%s\n" "$DB_PASSWORD" "$SECRET_VAULT_KEK" > .env
    chmod 600 .env

    Verifique que .env contiene dos líneas no vacías antes de continuar.

  3. Configurar nginx como proxy inverso

    Cree el vhost en /etc/nginx/sites-available/logto y active el sitio:

    ln -s /etc/nginx/sites-available/logto /etc/nginx/sites-enabled/
    nginx -t && systemctl reload nginx
  4. Iniciar la pila y verificar

    Lance los dos contenedores:

    docker compose up -d

    Siga los logs durante 60 segundos para confirmar que PostgreSQL está listo y que Logto ha completado sus migraciones. Debe ver la línea App is running at https://auth.su-dominio.com.

  5. Verificar el documento de descubrimiento OIDC

    Desde su equipo local, compruebe que el endpoint OIDC responde:

    curl -s https://auth.su-dominio.com/.well-known/openid-configuration | python3 -m json.tool | head -10

    La respuesta debe contener issuer, authorization_endpoint y jwks_uri. Si el comando devuelve un error 502, Logto no ha completado aún sus migraciones — espere 30 segundos y vuelva a intentarlo.

  6. Configurar las copias de seguridad automáticas

    Añada una tarea cron para exportar la base de datos diariamente. Para copias de seguridad automatizadas, deduplicadas y cifradas hacia S3 o Backblaze B2, monte el volumen logto_db en una instancia Backrest disponible en el catálogo ServOrbit.

Conectarse por primera vez

  1. Abrir el túnel SSH hacia la consola de administración

    La consola de administración escucha en el puerto 3002, vinculado al bucle local por razones de seguridad. Desde su equipo, abra un túnel:

    ssh -L 3002:127.0.0.1:3002 root@ip-de-su-vps

    Mantenga esta terminal abierta durante toda la sesión de administración.

  2. Crear la cuenta de administrador

    Abra http://localhost:3002 en su navegador. Aparece el asistente de primer arranque — no existe ninguna credencial por defecto. Introduzca una dirección de correo y una contraseña robusta, luego haga clic en Create account. Guarde estas credenciales en un gestor de contraseñas.

  3. Explorar el panel de control

    Tras crear la cuenta, accede al panel de control de Logto. Desde aquí puede consultar el registro de auditoría, gestionar usuarios, configurar conectores sociales y crear Aplicaciones — la entidad Logto que representa uno de sus proyectos.

  4. Crear su primera Aplicación

    En la consola: Applications → Create application. Elija el tipo que corresponda a su proyecto (Traditional Web, Single Page App, Native o Machine-to-machine). Asígnele un nombre y rellene la Redirect URI — la URL a la que Logto redirige tras un inicio de sesión correcto. Logto genera entonces un App ID y un App Secret que usará en su SDK.

Integrar Logto en una aplicación Next.js

Instale el SDK con npm install @logto/next y cree un logto.ts que exporte un new LogtoClient({ … }) configurado con endpoint (la URL de su instancia Logto), appId y appSecret (obtenidos en la consola Logto), baseUrl (la URL de su aplicación), cookieSecret y cookieSecure.

Para proteger una ruta, llame a getLogtoContext({ getAccessToken: true }) importado de @logto/next/server-component: devuelve isAuthenticated y los claims del usuario. Si isAuthenticated es falso, redirija a /api/logto/sign-in; si no, sirva la página apoyándose en los claims recibidos.

Activar el inicio de sesión con Google

En la consola de Google Cloud, cree un identificador de cliente OAuth 2.0 de tipo aplicación web. Indique la URI de redirección autorizada https://auth.su-dominio.com/callback/google y copie el identificador y el secreto de cliente.

En la consola Logto → Conectores → Conectores sociales → Google → Activar. Pegue el identificador y el secreto, y guarde. Google aparece a partir de ese momento como opción de inicio de sesión en su página Logto, sin ninguna modificación de código en su aplicación.

Logto, Authentik, Authelia, Keycloak — ¿cuál elegir?

Desplace la tabla

SoluciónCaso de uso principalRAM mínimaComplejidad de integración SDK
**Logto**Autenticación para un producto que está desarrollando (registro, JWT, conectores sociales)2 GBBaja — SDK oficial en 15 líneas para React, Next.js, Python, Go, Flutter y más de 15 frameworks más
**Authentik**SSO centralizado para sus herramientas autoalojadas (Grafana, Gitea, Nextcloud, Proxmox)2 GBMedia — configuración mediante Providers en la consola, sin SDK de aplicación
**Authelia**MFA y portal de inicio de sesión delante de aplicaciones existentes, sin modificar su código256 MBNinguna — delegación de autenticación por cabecera nginx, sin integración SDK
**Keycloak**SSO empresarial, federación LDAP/AD, escenarios multitenant avanzados4 GB mínimoAlta — configuración OIDC manual, bibliotecas de cliente a configurar por framework

Para un producto SaaS en desarrollo, Logto es el punto de partida natural. Keycloak es adecuado para organizaciones que ya tienen un directorio empresarial que integrar. Authelia y Authentik responden a necesidades de infraestructura, no de aplicaciones.

Solución de problemas frecuentes

Estos son los cuatro problemas más comunes en una primera instalación de Logto en VPS y cómo resolverlos.

La consola de administración no es accesible (puerto 3002)

El puerto 3002 está vinculado intencionalmente a 127.0.0.1 — no es accesible directamente desde internet. Si http://localhost:3002 no responde, compruebe primero que su túnel SSH está abierto. Luego verifique que el contenedor Logto funciona: docker compose ps. Si el contenedor está en estado Exit, consulte los logs: docker compose logs logto --tail=50.

Error 502 en el descubrimiento OIDC

Logto ejecuta sus migraciones de base de datos en el primer arranque — esto tarda entre 30 y 90 segundos. Si el documento de descubrimiento devuelve 502, nginx está enviando peticiones antes de que Logto esté listo. Espere 90 segundos y vuelva a intentarlo.

Redirect URI mismatch

Logto valida estrictamente la URI de redirección: si la URI enviada por su aplicación no coincide exactamente con la declarada en la consola Logto (Application → Redirect URIs), el inicio de sesión falla con redirect_uri_mismatch. Verifique que ha registrado la URL completa, incluyendo el esquema (https://) y la ruta exacta. Las URIs de desarrollo (http://localhost:3000/…) deben añadirse por separado.

Fatal: cannot connect to db

Si los logs de Logto muestran Fatal: cannot connect to db, PostgreSQL no estaba listo cuando Logto intentó conectarse. Simplemente reinicie el contenedor Logto: docker compose restart logto. Se reconectará en cuanto PostgreSQL esté disponible.

Estrategia de copias de seguridad

Logto conserva todo su estado en el volumen PostgreSQL logto_db. Respáldelo con una tarea programada pg_dump, o monte el volumen en una instancia de Backrest (también en el catálogo ServOrbit) para obtener copias de seguridad automatizadas, deduplicadas y cifradas hacia S3, Backblaze B2 o SFTP. Perder el volumen logto_db es perder todas las cuentas de usuario, la configuración de las aplicaciones y el registro de auditoría — respáldelo antes de cualquier migración de VPS.

Su capa de autenticación, en su propio VPS

Despliegue Logto en un VPS ServOrbit: conserve los datos de autenticación de sus usuarios, salga de la facturación por usuario e integre los SDK de React, Next.js, Python, Go, Flutter y muchos más.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva