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
Necesita un VPS ServOrbit con al menos 2 GB de RAM: Logto (Node.js) y PostgreSQL 17 comparten la misma instancia. Docker y Docker Compose vienen preinstalados en todas las ofertas VPS de ServOrbit. También necesita un nombre de dominio, o un subdominio, apuntado a su VPS: Logto inscribe el dominio público en cada token OIDC que emite. Por eso el dominio debe quedar definido antes del primer despliegue, 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; cada uno exige un registro OAuth de unos minutos del lado del proveedor.
- 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
scopedel 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 con un clic con ServOrbit
Desde su espacio ServOrbit: Marketplace → Cybersecurity & Bastion → Logto → Desplegar. Elija el tamaño del VPS (2 GB de RAM como mínimo), asigne un dominio y lance el despliegue. ServOrbit aprovisiona el VPS, configura el vhost nginx de su dominio, genera las credenciales de base de datos y la clave SECRET_VAULT_KEK (AES-256, para el almacenamiento cifrado de los campos sensibles), y arranca la pila de dos contenedores. El documento de descubrimiento OIDC responde en https://su-dominio/.well-known/openid-configuration en menos de un minuto.
Primera administración por túnel SSH
La consola de administración escucha en el puerto 3002, vinculado al bucle local por razones de seguridad. Abra un túnel SSH desde su equipo con ssh -L 3002:127.0.0.1:3002 root@ip-de-su-vps.
Abra después http://localhost:3002/console en su navegador. El asistente de primer arranque pide la dirección y la contraseña del administrador, y luego lo lleva al panel de control. Es una operación única: después solo abrirá el túnel para gestionar sus aplicaciones o sus usuarios.
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.
Esa es toda la integración: unas quince líneas de configuración, un import, una guarda.
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://su-dominio-logto.com/callback/google y copie después 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.
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.
Conectarse por primera vez
Conectarse por primera vez
La consola de administración no está publicada en Internet: abra primero un túnel SSH (ssh -L 3002:127.0.0.1:3002 root@<IP>) y luego vaya a http://localhost:3002. Haga clic en «Create account»: no existe ninguna credencial por defecto.