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
| Herramienta | Modelo | Autoalojamiento | Precio indicativo | Característica destacada |
|---|---|---|---|---|
| **Infisical** | Open source (MIT) | Sí — Docker Compose, 4 GB RAM | Gratuito (self-hosted) | RBAC nativo, rotación automática, SDK multi-lenguaje |
| HashiCorp Vault | BSL (fuente disponible) | Sí — complejo de operar | Gratuito (community) | Secret engines avanzados, PKI, transit encryption |
| Doppler | SaaS propietario | No | $6/dev/mes | UX cuidada, sync CI/CD sin servidor |
| Bitwarden Secrets | Open source (AGPL) | Sí — servidor Bitwarden | Gratuito (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
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 unAUTH_SECRET(cadena aleatoria:openssl rand -base64 32) para firmar los tokens JWT. Guarde ambos en un archivo.envjunto a su archivo Compose: no suba nunca ese archivo al control de versiones.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) einfisical/infisical:latest(la aplicación, puerto 8080). IndiqueDB_CONNECTION_URI,REDIS_URL,SITE_URL(su dominio,https://secrets.su-dominio.com) y los dos secretos. Arranque la stack condocker compose up -d.Para fijar una versión estable en lugar de
latest, consulte las releases en GitHub y useinfisical/infisical:v0.91.1(versión actual en octubre de 2026).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/Caddyfileconsecrets.su-dominio.com { reverse_proxy localhost:8080 }. Caddy aprovisiona automáticamente un certificado Let's Encrypt. Recargue consystemctl 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ñadaproxy_set_header Host $host;yproxy_set_header X-Real-IP $remote_addr;para que los registros de auditoría registren la IP real del cliente, no127.0.0.1.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.Integrar con sus aplicaciones y su CI
Instale la CLI de Infisical (
npm install -g @infisical/cli) o un SDK en su proyecto. Ejecuteinfisical run -- node server.jspara inyectar los secretos en tiempo de ejecución: su aplicación leeprocess.env.MY_SECRETcomo 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.Conectarse por primera vez
Abra la dirección
/admin/signupde 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_SECRETDocker 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.