[{"data":1,"prerenderedAt":208},["ShallowReactive",2],{"seo-verification":3,"blog-autoalojar-logto-en-un-vps-ma-es":6,"promo-bar-likely":207},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-autoalojar-logto-en-un-vps-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":137,"ctaBody":138,"ctaButton":139,"ctaUrl":140,"relatedPosts":141},226,"autoalojar-logto-en-un-vps",{"fr":12,"en":13,"ar":14,"es":10},"self-host-logto-vps","self-host-logto-on-a-vps-your-own-authentication-layer","استضافة-logto-على-خادم-افتراضي-طبقة-المصادقة-عندك","Alojar Logto en un VPS: su propia capa de autenticación","Despliegue Logto en su VPS ServOrbit: autenticación OIDC, inicio de sesión social, MFA y SDK — sin precio por usuario ni datos en manos de terceros.",10,1,false,"2026-08-05T00:00:00+00:00","2026-11-04T16:30:26+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},4,"Desarrollo","developpement","bg-warning\u002F10 text-warning","dev",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-logto-vps-poster.svg",{"categorySlug":34,"appSlug":35},"ciberseguridad-bastion","logto","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\u002FOAuth 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.",[38,42,45,48,58,80,95,98,101,131,134],{"type":39,"title":40,"body":41},"h2","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:\n\n- **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.\n- **Authentik** es un proveedor de identidad completo, para centralizar el inicio de sesión único de sus herramientas autoalojadas (Grafana, Gitea, Nextcloud).\n- **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.\n\nSi está construyendo un producto en el que los usuarios crean una cuenta, Logto es la herramienta adecuada.",{"type":39,"title":43,"body":44},"Requisitos previos","Antes de desplegar Logto 1.19+, verifique los siguientes puntos en su VPS ServOrbit:\n\n- **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.\n- **CPU**: 1 vCPU es suficiente para empezar, pero 2 vCPU evitan latencias de inicio de sesión bajo carga.\n- **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.\n- **Docker** ≥ 24.0 y **Docker Compose** ≥ 2.20 — preinstalados en todas las ofertas VPS de ServOrbit.\n- **PostgreSQL 17 como mínimo** (incluido en la imagen oficial de Logto) — las versiones anteriores no admiten las extensiones requeridas.\n- **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.",{"type":39,"title":46,"body":47},"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.",{"type":49,"title":50,"items":51},"ul","Lo que Logto aporta desde la instalación",[52,53,54,55,56,57],"**Tokens conformes a OIDC\u002FOAuth 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\u002FFIDO2 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.",{"type":59,"title":60,"steps":61},"steps","Despliegue Docker Compose paso a paso",[62,65,68,71,74,77],{"title":63,"body":64},"Crear el directorio de trabajo y el archivo Compose","Conéctese a su VPS por SSH y cree el directorio de trabajo:\n\n```\nmkdir -p \u002Fopt\u002Flogto && cd \u002Fopt\u002Flogto\n```\n\nCree 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.",{"title":66,"body":67},"Generar los secretos y crear el archivo .env","Genere una contraseña de base de datos y una clave AES-256 robustas:\n\n```bash\nDB_PASSWORD=$(openssl rand -hex 32)\nSECRET_VAULT_KEK=$(openssl rand -hex 32)\nprintf \"DB_PASSWORD=%s\\nSECRET_VAULT_KEK=%s\\n\" \"$DB_PASSWORD\" \"$SECRET_VAULT_KEK\" > .env\nchmod 600 .env\n```\n\nVerifique que `.env` contiene dos líneas no vacías antes de continuar.",{"title":69,"body":70},"Configurar nginx como proxy inverso","Cree el vhost en `\u002Fetc\u002Fnginx\u002Fsites-available\u002Flogto` y active el sitio:\n\n```bash\nln -s \u002Fetc\u002Fnginx\u002Fsites-available\u002Flogto \u002Fetc\u002Fnginx\u002Fsites-enabled\u002F\nnginx -t && systemctl reload nginx\n```",{"title":72,"body":73},"Iniciar la pila y verificar","Lance los dos contenedores:\n\n```bash\ndocker compose up -d\n```\n\nSiga 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:\u002F\u002Fauth.su-dominio.com`.",{"title":75,"body":76},"Verificar el documento de descubrimiento OIDC","Desde su equipo local, compruebe que el endpoint OIDC responde:\n\n```bash\ncurl -s https:\u002F\u002Fauth.su-dominio.com\u002F.well-known\u002Fopenid-configuration | python3 -m json.tool | head -10\n```\n\nLa 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.",{"title":78,"body":79},"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.",{"type":59,"title":81,"steps":82},"Conectarse por primera vez",[83,86,89,92],{"title":84,"body":85},"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:\n\n```bash\nssh -L 3002:127.0.0.1:3002 root@ip-de-su-vps\n```\n\nMantenga esta terminal abierta durante toda la sesión de administración.",{"title":87,"body":88},"Crear la cuenta de administrador","Abra `http:\u002F\u002Flocalhost: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.",{"title":90,"body":91},"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.",{"title":93,"body":94},"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.",{"type":39,"title":96,"body":97},"Integrar Logto en una aplicación Next.js","Instale el SDK con `npm install @logto\u002Fnext` 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`.\n\nPara proteger una ruta, llame a `getLogtoContext({ getAccessToken: true })` importado de `@logto\u002Fnext\u002Fserver-component`: devuelve `isAuthenticated` y los `claims` del usuario. Si `isAuthenticated` es falso, redirija a `\u002Fapi\u002Flogto\u002Fsign-in`; si no, sirva la página apoyándose en los claims recibidos.",{"type":39,"title":99,"body":100},"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:\u002F\u002Fauth.su-dominio.com\u002Fcallback\u002Fgoogle` y copie el identificador y el secreto de cliente.\n\nEn 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.",{"type":102,"title":103,"intro":104,"columns":105,"rows":110,"note":130},"comparison","Logto, Authentik, Authelia, Keycloak — ¿cuál elegir?","Cuatro soluciones open source para la autenticación autoalojada, con casos de uso distintos. La tabla compara los tres criterios que marcan la diferencia en la instalación.",[106,107,108,109],"Solución","Caso de uso principal","RAM mínima","Complejidad de integración SDK",[111,116,120,125],[112,113,114,115],"**Logto**","Autenticación para un producto que está desarrollando (registro, JWT, conectores sociales)","2 GB","Baja — SDK oficial en 15 líneas para React, Next.js, Python, Go, Flutter y más de 15 frameworks más",[117,118,114,119],"**Authentik**","SSO centralizado para sus herramientas autoalojadas (Grafana, Gitea, Nextcloud, Proxmox)","Media — configuración mediante Providers en la consola, sin SDK de aplicación",[121,122,123,124],"**Authelia**","MFA y portal de inicio de sesión delante de aplicaciones existentes, sin modificar su código","256 MB","Ninguna — delegación de autenticación por cabecera nginx, sin integración SDK",[126,127,128,129],"**Keycloak**","SSO empresarial, federación LDAP\u002FAD, escenarios multitenant avanzados","4 GB mínimo","Alta — 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.",{"type":39,"title":132,"body":133},"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.\n\n**La consola de administración no es accesible (puerto 3002)**\n\nEl puerto 3002 está vinculado intencionalmente a `127.0.0.1` — no es accesible directamente desde internet. Si `http:\u002F\u002Flocalhost: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`.\n\n**Error 502 en el descubrimiento OIDC**\n\nLogto 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.\n\n**Redirect URI mismatch**\n\nLogto 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:\u002F\u002F`) y la ruta exacta. Las URIs de desarrollo (`http:\u002F\u002Flocalhost:3000\u002F…`) deben añadirse por separado.\n\n**Fatal: cannot connect to db**\n\nSi 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.",{"type":39,"title":135,"body":136},"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.","Desplegar Logto","\u002Fapplications\u002Fciberseguridad-bastion\u002Flogto",[142,166,188],{"id":143,"slug":144,"slugs":145,"title":149,"excerpt":150,"readTime":151,"views":151,"isPinned":19,"noindex":19,"publishedAt":152,"updatedAt":153,"category":154,"categories":160,"featuredImage":30,"bgImage":31,"posterImage":162,"relatedSolution":163},111,"centralizar-autenticacion-con-authentik-en-vps",{"fr":146,"en":147,"ar":148,"es":144},"sso-authentik-vps","centralizing-authentication-with-authentik-on-vps","مركزة-المصادقة-باستخدام-authentik-على-خادم-vps","Centralizar la autenticación con Authentik en VPS","Centralice la autenticación de todas sus apps con Authentik autoalojado en un VPS: SSO, MFA y forward auth con Docker Compose.",9,"2026-03-01T00:00:00+00:00","2026-10-31T01:54:10+00:00",{"id":155,"name":156,"slug":157,"color":158,"icon":159},8,"Seguridad y monitorización","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[161],{"id":155,"name":156,"slug":157,"color":158,"icon":159},"\u002Fblog\u002Fcovers\u002Fsso-authentik-vps-poster.svg",{"categorySlug":164,"appSlug":165},"securite","authentik",{"id":167,"slug":168,"slugs":169,"title":173,"excerpt":174,"readTime":151,"views":18,"isPinned":19,"noindex":19,"publishedAt":175,"updatedAt":176,"category":177,"categories":183,"featuredImage":30,"bgImage":31,"posterImage":185,"relatedSolution":186},160,"como-autoalojar-infisical-en-un-vps",{"fr":170,"en":171,"ar":172,"es":168},"self-host-infisical-vps","how-to-self-host-infisical-on-a-vps","كيفية-استضافة-infisical-ذاتيا-على-خادم-vps","Cómo autoalojar Infisical en un VPS","Despliegue Infisical en su VPS en menos de 20 min: RBAC, rotación automática, integración con GitHub Actions y GitLab CI, y resolución de errores de Redis y TLS.","2026-07-02T00:00:00+00:00","2026-10-16T01:57:38+00:00",{"id":178,"name":179,"slug":180,"color":181,"icon":182},7,"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[184],{"id":178,"name":179,"slug":180,"color":181,"icon":182},"\u002Fblog\u002Fcovers\u002Fself-host-infisical-vps-poster.svg",{"categorySlug":34,"appSlug":187},"infisical",{"id":189,"slug":190,"slugs":191,"title":195,"excerpt":196,"readTime":197,"views":198,"isPinned":19,"noindex":19,"publishedAt":199,"updatedAt":200,"category":201,"categories":202,"featuredImage":30,"bgImage":31,"posterImage":204,"relatedSolution":205},131,"desplegar-vaultwarden-en-un-vps",{"fr":192,"en":193,"ar":194,"es":190},"deploy-vaultwarden-vps","self-host-your-password-manager-deploy-vaultwarden-on-vps","استضف-مدير-كلمات-المرور-بنفسك-انشر-vaultwarden-على-vps","Vaultwarden en VPS: gestor de contraseñas autoalojado","Autoaloja Vaultwarden en un VPS: contraseñas ilimitadas, compatibilidad con Bitwarden, bóvedas de equipo y TOTP, con coste mensual fijo y menos de 50 MB de RAM.",15,3,"2026-06-24T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":155,"name":156,"slug":157,"color":158,"icon":159},[203],{"id":155,"name":156,"slug":157,"color":158,"icon":159},"\u002Fblog\u002Fcovers\u002Fdeploy-vaultwarden-vps-poster.svg",{"categorySlug":159,"appSlug":206},"vaultwarden",true,1794270554253]