PassBolt: Gestor de contraseñas seguro y autoalojado
Introducción
PassBolt es un gestor de contraseñas centrado en la seguridad y diseñado especialmente para equipos. A diferencia de soluciones más comerciales, PassBolt apuesta por un enfoque robusto basado en cifrado GPG, autenticación fuerte y control total desde el servidor. Es open source, auditable y bastante flexible, lo que lo convierte en una opción ideal para quienes no quieren depender de servicios externos para gestionar contraseñas sensibles.
En esta guía muestro cómo desplegar PassBolt fácilmente usando Docker, con un docker-compose.yml funcional. Si ya usas Caddy, te enseño también cómo ponerlo delante como reverse proxy con HTTPS automático.
Características
- Usa MariaDB como backend.
- PassBolt CE (Community Edition), la versión gratuita.
- Persistencia de datos y claves GPG.
- Compatible con reverse proxies tipo Caddy o Traefik.
- Control total vía
docker-compose.
Instalación y explicación paso a paso
Primero, este es el contenido base del docker-compose.yml que vamos a usar:
services:
db:
image: mariadb:10.11
restart: unless-stopped
container_name: PassBoltDB
environment:
MYSQL_RANDOM_ROOT_PASSWORD: "true"
MYSQL_DATABASE: "passbolt"
MYSQL_USER: "passbolt"
MYSQL_PASSWORD: "TuPassw0rd"
volumes:
- ./database_volume:/var/lib/mysql
passbolt:
image: passbolt/passbolt:latest-ce
container_name: PassBolt
restart: unless-stopped
depends_on:
- db
environment:
APP_FULL_BASE_URL: https://passbolt.tudominio.es
DATASOURCES_DEFAULT_HOST: "db"
DATASOURCES_DEFAULT_USERNAME: "passbolt"
DATASOURCES_DEFAULT_PASSWORD: "TuPassw0rd"
DATASOURCES_DEFAULT_DATABASE: "passbolt"
volumes:
- gpg_volume:/etc/passbolt/gpg
- jwt_volume:/etc/passbolt/jwt
command:
["/usr/bin/wait-for.sh", "-t", "0", "db:3306", "--", "/docker-entrypoint.sh"]
ports:
- 803:80
- 423:443
volumes:
gpg_volume:
jwt_volume:
networks:
default:
name: PassBolt_NET
¿Qué hace cada bloque?
-
Base de datos (
db):- Usa MariaDB 10.11
- Contraseña root aleatoria (no se guarda, no la necesitas)
- Crea la base de datos
passboltcon el usuariopassbolt
-
Servicio
passbolt:- Usa la imagen oficial
passbolt/passbolt:latest-ce - Depende de la base de datos y espera a que esté lista (
wait-for.sh) - Configura el acceso a la base de datos con las mismas credenciales
- Expone puertos 803 (HTTP) y 423 (HTTPS). Puedes cambiarlos si ya usas esos puertos.
- Usa la imagen oficial
-
Volúmenes:
gpg_volumeyjwt_volume: necesarios para el cifrado y las sesiones.- No los montes desde el host directamente o tendrás errores de permisos.
-
Red personalizada:
PassBolt_NET: útil si luego quieres ponerle delante un proxy tipo Caddy.
Primer acceso y creación de usuario admin
Una vez el contenedor esté funcionando, necesitarás crear tu primer usuario manualmente con este comando:
➜ docker exec PassBolt su -m -c "/usr/share/php/passbolt/bin/cake \
passbolt register_user \
-u tucorreo@tudominio.es \
-f Juan \
-l Mengano \
-r admin" -s /bin/sh www-data
Cambia PassBolt por el nombre real de tu contenedor si usas otro, y Juan Mengano por tu nombre y apellido. Este usuario tendrá permisos de administrador.
Conclusión
Este docker-compose.yml es suficiente para tener PassBolt funcionando en minutos. Solo te queda completar la configuración desde el navegador, crear el admin y, si quieres, montar Caddy delante para SSL automático. No te olvides de apuntar tu dominio a la IP del servidor y ajustar puertos si hace falta.
¿Usas Caddy? Aquí va un ejemplo rápido para exponerlo:
# Passbolt
pb.tudominio.es {
reverse_proxy http://127.0.0.1:803 {
}
}
Con esto, Caddy se encargará del proxy y del certificado SSL sin que tú muevas un dedo.
Para entornos más grandes o empresariales, PassBolt es una opción muy recomendable. Pero en mi caso personal, sigo usando una combinación que me funciona de lujo: KeePassXC + Syncthing. Básicamente, sincronizo el archivo .kdbx generado por KeePass usando Syncthing entre mis dispositivos. Simple, seguro y sin complicaciones.
Puedes leer más sobre Syncthing en este artículo de la wiki: 👉 Syncthing: sincronización avanzada de archivos