Vaultwarden

Implementación alternativa de la API del servidor Bitwarden escrita en Rust y compatible con clientes Bitwarden, perfecta para implementaciones autohospedadas donde ejecutar el servicio oficial con muchos recursos puede no ser ideal.
Enlaces
Using Docker Compose · dani-garcia/vaultwarden Wiki · GitHub
Requisitos
- Docker instalado
- Portainer instalado
- Proxy Inverso Traefik o NGINX Proxy Manager. Opcional pero recomendado
Repositorio
Docker Hub: vaultwarden/server - Docker Image | Docker Hub
Portainer
Add a new stack – Portainer Documentation
Web editor
En Portainer «Stack» agregamos nuevo usando el editor WEB pegando el contenido del fichero «docker-compose.yml» y el contenido del fichero de variables
Variables
ADMIN_TOKEN=GeneraUnTokenComplicado # openssl rand -base64 48
docker-compose
services:
vaultwarden:
image: vaultwarden/server:testing
container_name: vaultwarden
env_file: stack.env
restart: unless-stopped
volumes:
- data:/data
networks:
- proxy
volumes:
data:
networks:
proxy:
external: true
Es importante publicar este contenedor detrás de Proxy para configurar SSL y que
Publicando detrás de un proxy
Crear registro DNS
En el proveedor que aloja el servidor DNS público, crear un registro DNS que resuelva la IP pública que llega al Proxy hacia un nombre del estilo "vaultwarden.domain.com"
NGINX proxy
Para publicar el contenedor detrás de NGINX proxy, como el stack está en la red proxy solo deberás crear un nuevo host
Crear un nuevo "proxy host"
Añade un nuevo proxy host con el nombre de dominio creado en el paso anterior redirigido hacia el nombre del contenedor y el puerto que use:

Traefik

Para publicar el contenedor detrás del proxy Traefik, deberás añadir al fichero docker-compose.yaml las siguientes etiquetas al servicio waltwarden
labels:
- traefik.enable=true
- traefik.http.routers.vaultwarden.tls=true
- traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt
- traefik.http.routers.vaultwarden.rule=Host(`vaultwarden.dominio.com`)
- traefik.http.services.vaultwarden.loadbalancer.server.port=80
Configuración
https://vaultwarden.dominio.com/admin para hacer cambios en la configuración. Usa el admin Token
En el primer acceso nos advierte de `ADMIN_TOKEN` inseguro que cambiaremos siguiendo: Enabling admin page · dani-garcia/vaultwarden Wiki · GitHub
Generamos un token mas seguro que el de texto plano generado anteriormente.
echo -n "MySecretPassword" | argon2 "$(openssl rand -base64 32)" -e -id -k 65540 -t 3 -p 4
# Output: $argon2id$v=19$m=65540,t=3,p=4$bXBGMENBZUVzT3VUSFErTzQzK25Jck1BN2Z0amFuWjdSdVlIQVZqYzAzYz0$T9m73OdD2mz9+aJKLuOAdbvoARdaKxtOZ+jZcSL9/N0
La salida del comando anterior la copiaremos en el valor de configuración General Admin/token/Argon2 PHC:
Después de guardar podremos acceder a la administración de Vaultwarden con la nueva contraseña "MySecretPassword"
NOTA: La configuración aquí descrita anula las variables de entorno. Una vez guardada, se recomienda eliminar las variables de entorno dejar de usarlas para evitar confusiones.
SSO
SSO solo está disponible en las images :testing. Las versiones estables aún NO lo soportan
Microsoft Entra ID
- Crea "App registration" en Entra ID siguiendo Identity | Applications | App registrations.
- Desde "Overview" de tu nueva App , se necesitará "Directory (tenant) ID" para
SSO_AUTHORITY, "Application (client) ID" para el valorSSO_CLIENT_ID - "Certificates & Secrets" crea un "App secret" , necesitaremos "Secret Value" para
SSO_CLIENT_SECRET - En "Authentication" añade
https://vault.example.org/identity/connect/oidc-signincomo "Web Redirect URI". - En "API Permissions" asegura tener
profile,emailyoffline_accessen "API / Permission name"
La configuración será:



