Guía de despliegue

Cómo autoalojar Infisical en un VPS

Desplegar en un VPS Cloud →

Tutorial

Cómo autoalojar Infisical en un VPS

Autoalojamiento9 min de lectura6 pasos

Codificar secretos a fuego en archivos .env y rotarlos a mano de un entorno a otro es un incidente de seguridad en potencia. Infisical es un gestor de secretos open source (licencia MIT, 27 600 estrellas en GitHub en octubre de 2026) que centraliza cada clave de API, contraseña de base de datos y certificado en una única caja fuerte autoalojada, sincronizada automáticamente hacia sus aplicaciones, sus pipelines de CI y su equipo. Le explicamos cómo desplegarlo en un VPS en menos de 20 minutos, con RBAC, rotación automática e integraciones CI/CD.

Contenido· Por qué autoalojar su gestor de secretos1/10
  1. 01Por qué autoalojar su gestor de secretos
  2. 02Lo que le aporta Infisical autoalojado
  3. 03Infisical vs Vault vs Doppler vs Bitwarden Secrets
  4. 04Requisitos
  5. 05Desplegar Infisical con Docker Compose
  6. 06Configuración avanzada: RBAC, políticas de secretos y rotación automática
  7. 07Integración CI/CD: GitHub Actions, GitLab CI, Docker Compose
  8. 08Resolución de problemas: errores frecuentes
  9. 09Copias de seguridad y actualizaciones
  10. 10Bloquee su instancia de Infisical inmediatamente después de la instalación

Por qué autoalojar su gestor de secretos

Almacenar los secretos en una caja fuerte SaaS supone hacer transitar sus credenciales más sensibles por el servidor de un tercero. Autoalojar Infisical mantiene cada secreto en su propia infraestructura, bajo sus propios controles de acceso y registros de auditoría. También elimina una suscripción SaaS recurrente: Infisical está bajo licencia MIT, es gratuito de autoalojar y sustituye directamente a herramientas de pago como Doppler (6 $/desarrollador/mes) o a la complejidad de HashiCorp Vault. Con un solo VPS y un nombre de dominio, todo su equipo y cada uno de sus pipelines de CI pueden recuperar los secretos por programación: se acabaron los archivos .env subidos por accidente.

Lo que le aporta Infisical autoalojado

  • Una caja fuerte centralizada para cada entorno (dev, staging, prod) con políticas de acceso por entorno.
  • SDK nativos para Node.js, Python, Go, Java, Ruby y otros: inyecte los secretos en tiempo de ejecución, en lugar de mediante archivos .env.
  • Integraciones con GitHub Actions, GitLab CI, CircleCI y Jenkins: los secretos se sincronizan automáticamente hacia sus pipelines.
  • Un control de acceso basado en roles, tokens de servicio e identidades de máquina, sin credenciales root compartidas.
  • Un registro de auditoría completo: cada lectura, escritura y rotación queda registrada con el usuario, la IP y la marca de tiempo.
  • Rotación y versionado de los secretos: vuelva a una versión anterior de un secreto con un solo clic si una credencial queda comprometida.

Infisical vs Vault vs Doppler vs Bitwarden Secrets

Desplace la tabla

HerramientaModeloAutoalojamientoPrecio indicativoCaracterística destacada
**Infisical**Open source (MIT)Sí — Docker Compose, 4 GB RAMGratuito (self-hosted)RBAC nativo, rotación automática, SDK multi-lenguaje
HashiCorp VaultBSL (fuente disponible)Sí — complejo de operarGratuito (community)Secret engines avanzados, PKI, transit encryption
DopplerSaaS propietarioNo$6/dev/mesUX cuidada, sync CI/CD sin servidor
Bitwarden SecretsOpen source (AGPL)Sí — servidor BitwardenGratuito (self-hosted)Integrado con el gestor de contraseñas Bitwarden

Requisitos

Un VPS con al menos 2 vCPU y 4 GB de RAM bajo Ubuntu 22.04 — PostgreSQL y Node.js consumen mucha memoria cuando procesan peticiones concurrentes; por debajo de 4 GB, Infisical se reinicia bajo carga. Al menos 20 GB de disco para los registros de auditoría a largo plazo. Docker y Docker Compose instalados (docker compose version debe devolver v2.x). Un nombre de dominio que apunte a su VPS: Infisical exige una URL pública para las redirecciones OAuth, los enlaces de invitación por correo electrónico y el modelo de seguridad del navegador (SITE_URL no es opcional). Un registro DNS A o CNAME ya propagado antes de iniciar Caddy o nginx para la emisión del certificado Let's Encrypt.

Desplegar Infisical con Docker Compose

  1. Generar los secretos

    Infisical necesita dos secretos independientes: una ENCRYPTION_KEY (hex de 16 bytes: openssl rand -hex 16) para cifrar en reposo los datos de la caja fuerte, y un AUTH_SECRET (cadena aleatoria: openssl rand -base64 32) para firmar los tokens JWT. Guarde ambos en un archivo .env junto a su archivo Compose: no suba nunca ese archivo al control de versiones.

  2. Redactar el archivo Compose

    La stack consta de tres servicios: postgres:14-alpine (el almacén de secretos), redis:alpine (tareas en segundo plano y caché de sesión) e infisical/infisical:latest (la aplicación, puerto 8080). Indique DB_CONNECTION_URI, REDIS_URL, SITE_URL (su dominio, https://secrets.su-dominio.com) y los dos secretos. Arranque la stack con docker compose up -d.

    Para fijar una versión estable en lugar de latest, consulte las releases en GitHub y use infisical/infisical:v0.91.1 (versión actual en octubre de 2026).

  3. Configurar el reverse proxy con nginx o Caddy

    Infisical exige HTTPS: sin un certificado TLS válido, el navegador bloquea los flujos OAuth.

    Caddy (recomendado): cree /etc/caddy/Caddyfile con secrets.su-dominio.com { reverse_proxy localhost:8080 }. Caddy aprovisiona automáticamente un certificado Let's Encrypt. Recargue con systemctl reload caddy.

    nginx: cree un vhost con proxy_pass http://127.0.0.1:8080;, luego emita el certificado mediante Certbot (certbot --nginx -d secrets.su-dominio.com). Añada proxy_set_header Host $host; y proxy_set_header X-Real-IP $remote_addr; para que los registros de auditoría registren la IP real del cliente, no 127.0.0.1.

  4. Crear la primera cuenta de administrador

    Abra su dominio en un navegador y vaya a /admin/signup — es el asistente de un solo uso que crea la cuenta de Super Admin y su organización. El primero que llegue a esa pantalla se convierte en administrador de la instancia. Cree después su primer proyecto (un espacio de nombres lógico para secretos relacionados), añada entornos (dev, staging, prod) e invite a los miembros de su equipo.

  5. Integrar con sus aplicaciones y su CI

    Instale la CLI de Infisical (npm install -g @infisical/cli) o un SDK en su proyecto. Ejecute infisical run -- node server.js para inyectar los secretos en tiempo de ejecución: su aplicación lee process.env.MY_SECRET como si procediera de un .env local, pero el valor viene de la caja fuerte. Para GitHub Actions, instale la action oficial de Infisical y añada un token de servicio como secreto del repositorio.

  6. Conectarse por primera vez

    Abra la dirección /admin/signup de su instancia cuanto antes: es el asistente de un solo uso que crea la cuenta de Super Admin y luego su organización. El primero que llegue a esa pantalla se convierte en administrador de la instancia.

Configuración avanzada: RBAC, políticas de secretos y rotación automática

Una vez en marcha la instancia, tres funciones avanzadas refuerzan la seguridad operativa.

RBAC (control de acceso basado en roles): Infisical distingue cuatro roles predefinidos — owner, admin, developer, viewer. Asigne el rol viewer a los pipelines CI que sólo necesitan leer, developer a los desarrolladores y admin a los responsables de proyecto. Las Machine Identities permiten asociar un rol directamente a una aplicación sin un token de servicio manual: se autentican mediante AWS IAM, Azure AD o un token de Kubernetes.

Políticas de secretos: en Settings → Project → Secret Protection, active las aprobaciones antes de sobrescribir un secreto de producción. Un segundo administrador deberá validar cada modificación — útil para equipos sujetos a SOC 2 o ISO 27001.

Rotación automática: Infisical incluye plantillas de rotación nativas para PostgreSQL, MySQL, AWS IAM y GitHub. En la pestaña Rotation de su proyecto, cree un trabajo de rotación con la frecuencia deseada (p. ej., cada 30 días para una contraseña de base de datos). Infisical genera el nuevo valor, lo envía a la caja fuerte y notifica a las aplicaciones mediante webhook — sin intervención manual.

Integración CI/CD: GitHub Actions, GitLab CI, Docker Compose

GitHub Actions: añada la action oficial a su workflow y pase un token de servicio como secreto del repositorio (INFISICAL_TOKEN). Los secretos se inyectan como variables de entorno antes de cada job.

- uses: Infisical/secrets-action@v1
  with:
    token: ${{ secrets.INFISICAL_TOKEN }}
    project-id: "<su-project-id>"
    environment: "prod"

GitLab CI: use la CLI de Infisical en un before_script. Añada INFISICAL_TOKEN en las variables CI/CD del repositorio.

before_script:
  - infisical run --env prod -- env | grep MY_SECRET

Docker Compose (runtime): la CLI de Infisical puede generar un archivo .env al vuelo antes de lanzar Compose, o inyectar directamente mediante infisical run -- docker compose up -d. Evite almacenar un .env generado dentro de una imagen — prefiera la inyección en tiempo de ejecución para no serializar un secreto en una capa Docker.

Resolución de problemas: errores frecuentes

Error: connect ECONNREFUSED 127.0.0.1:6379 (Redis) — Redis no está iniciado o el servicio infisical arranca antes de que Redis esté listo. Añada depends_on: redis en su docker-compose.yml y compruebe que el contenedor Redis está healthy con docker compose ps. Si Redis funciona pero el error persiste, confirme que REDIS_URL es redis://redis:6379 (nombre del servicio en Compose, no localhost).

Error: unable to verify the first certificate (TLS) — el certificado Let's Encrypt aún no se ha emitido (propagación DNS incompleta) o Caddy/nginx no puede alcanzar el endpoint ACME challenge. Verifique que el puerto 80 está abierto en su firewall (ufw allow 80) — Caddy lo necesita para el challenge HTTP-01 en la emisión inicial.

docker compose up falla con Bind for 0.0.0.0:8080 failed: port is already allocated — otro proceso está escuchando en el puerto 8080. Cambie el mapeo de puertos en Compose (8081:8080) y actualice la configuración del reverse proxy.

La página /admin/signup no es accesible tras el primer inicio de sesión — es el comportamiento esperado: el asistente sólo aparece una vez. Si necesita reproducirlo (instancia de prueba), elimine la tabla Organization y reinicie Infisical.

Los secretos no se inyectan en GitHub Actions — compruebe que el environment pasado a la action coincide exactamente con el nombre del entorno creado en Infisical (sensible a mayúsculas: prod ≠ Prod).

Copias de seguridad y actualizaciones

Copias de seguridad de PostgreSQL: los secretos cifrados residen en PostgreSQL. Programe un pg_dump diario con docker exec infisical_postgres pg_dump -U infisical infisical > backup-$(date +%Y%m%d).sql. Cifre la copia antes de transferirla fuera del sitio — contiene secretos cifrados en reposo, pero una filtración de la base de datos combinada con una filtración de ENCRYPTION_KEY expone toda la caja fuerte.

Actualizar Infisical: la imagen infisical/infisical:latest se actualiza con cada nuevo tag. Para una actualización controlada, fije la versión (v0.91.1), revise el changelog de GitHub antes de cada actualización (algunas versiones incluyen migraciones de base de datos) y siga este orden:
1. docker compose pull para descargar la nueva imagen.
2. docker compose up -d — Docker Compose sólo recrea los contenedores cuya imagen ha cambiado.
3. Verifique que la página de inicio de sesión responde y que los registros no muestran errores de migración.

Monitorización: exponga el endpoint /healthcheck de Infisical en su herramienta de supervisión (Uptime Kuma, Gatus) para recibir alertas ante interrupciones. Una caja fuerte de secretos inaccesible bloquea todos los despliegues que dependen de ella.

Bloquee su instancia de Infisical inmediatamente después de la instalación

Antes de invitar a su equipo, desactive la página de registro público en Settings → Authentication → Allow signups. Infisical solo acepta entonces a los usuarios invitados por un administrador. Active también la verificación por correo electrónico y, si su equipo usa OAuth de GitHub o de Google, configure esos proveedores en Settings → SSO: son más seguros que un inicio de sesión con contraseña únicamente.

Despliegue Infisical en su VPS con un solo clic

No deje que sus secretos sigan filtrándose por archivos .env y mensajes de Slack. ServOrbit aprovisiona una instancia de Infisical lista para usar en un VPS — PostgreSQL, Redis y HTTPS incluidos.

¿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