Skip to main content

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 passbolt con el usuario passbolt
  • 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.
  • Volúmenes:

    • gpg_volume y jwt_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


Referencias