Vaultwarden es una implementación alternativa de la API de Bitwarden, un gestor de contraseñas de código abierto.

Al estar escrita en Rust, necesita mucho menos recursos que la instalación de Bitwarden en Docker por lo que puede funcionar incluso en una Raspberry Pi 4.

La instalación de Vaultwarden en Docker se realiza usando la imagen vaultwarden/server.

La forma más sencilla de hacerlo es usando un fichero docker-compose.yml con el siguiente contenido:

version: '3'
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    environment:
      TZ: 'Europe/Madrid'
      DOMAIN: 'https://vault.mydomain.com/'
    volumes:
      - ~/volumes/vaultwarden:/data
    restart: unless-stopped
networks:
  default:
    external: true
    name: nginxpm_network

Nota: Nótese que no se expone ningún puerto al Docker host y que se utiliza la misma red que Nginx Proxy Manager.

Para iniciar el contenedor, se puede usar docker-compose up -d o usar el contenido del fichero anterior en Portainer.

Pre-requisitos

Antes de poder acceder a Vaultwarden para configurarlo es necesario:

DNS Type A

SSL Certificate

  • Crear un proxy host para el hostname anterior: vault.mydomain.comhttp://vaultwarden:80

Proxy host

Configuración

Una vez en marcha, se puede acceder a Vaultwarden a través de HTTPS usando Nginx Proxy Manager (en este ejemplo https://vault.mydomain.com/) y comenzar la configuración.

El primer paso consiste en crear una nueva cuenta de usuario para acceder al vault pulsando en el botón Create Account:

  • Email Address: vaultwarden@mydomain.com
  • Name: Manel
  • Master Password: *********
  • Re-type Master Password: *********
  • Master Password Hint (optional): Pista

Si el usuario se crea correctamente, se podrá iniciar sesión con el mismo y ver la siguiente pantalla:

Vaultwarden

Nota: Es aconsejable crear todos los usuarios que se necesiten en este momento y así se puede deshabilitar el registro de usuarios para aumentar la seguridad.

Habilitar Admin Panel

Para habilitar la página de administración hay que realizar lo siguiente:

  • Ejecutar el comando openssl rand -base64 48 para generar un token aleatorio:
U543Xx6Bhj+uiv9DhNDcAExM9Cef2C644CC7wwFGUh7Z4I6OvOEaYZaxjnrrKZYX
  • Agregar la variable ADMIN_TOKEN al fichero docker-compose.yml:
    environment:
      ADMIN_TOKEN: 'U543Xx6Bhj+uiv9DhNDcAExM9Cef2C644CC7wwFGUh7Z4I6OvOEaYZaxjnrrKZYX'
  • Acceder al Vaultwarden Admin Panel a través de https://vault.mydomain.com/admin:

Admin Panel

Nota: La primera vez que se guarde la configuración, se generará el fichero /data/config.json. Este fichero tiene preferencia sobre las variables indicadas en docker-compose.yml.

Nota: También se podría haber activado el Admin Panel creando o modificando el fichero /data/config.json añadiendo la variable admin_token tal como se muestra a continuación:

{
  "admin_token": "U543Xx6Bhj+uiv9DhNDcAExM9Cef2C644CC7wwFGUh7Z4I6OvOEaYZaxjnrrKZYX"
}

Algunos valores interesantes a configurar:

  • General settings
  • Advanced settings
  • Yubikey settings
  • Global Duo settings
  • SMTP Email Settings
  • Email 2FA Settings
  • Read-Only Config
  • Backup Database

Nota: Una vez se haya configurado el entorno, es recomendable deshabilitar el Admin Panel. Para ello hay que eliminar la variable de entorno ADMIN_TOKEN y asegurarse que no exista la variable admin_token en el fichero /data/config.json.

Actualizar

Si ya se había instalado Vaultwarden anteriormente, se puede actualizar de la siguiente manera:

docker stop vaultwarden
docker rm vaultwarden
docker rmi vaultwarden/server
docker-compose up -d

Soporte

Algunos comandos para gestionar la configuración del contenedor:

# Acceder al shell mientras el contenedor está ejecutándose
docker exec -it vaultwarden /bin/bash

# Monitorizar los logs del contenedor en tiempo real
docker logs -f vaultwarden

# Obtener la versión de Vaultwarden
docker exec vaultwarden /vaultwarden --version

Referencias