Vaultwarden: Tu Gestor de Contraseñas Self-Hosted en Docker (Guía Completa 2025)

⏱️ Tiempo de lectura: 18 minutos | Nivel: Intermedio | Actualizado: Diciembre 2025

TL;DR

Vaultwarden es la alternativa self-hosted perfecta a Bitwarden que consume solo 10MB de RAM (vs 1GB+ del oficial). En esta guía aprenderás a instalarlo con Docker, configurar SSL automático con Traefik, habilitar 2FA, automatizar backups y migrar desde LastPass/1Password. Todo el código está disponible para copy-paste y funciona en cualquier homelab.

Tabla de Contenidos

  1. Introducción
  2. ¿Qué es Vaultwarden?
  3. Requisitos y Preparación
  4. Instalación con Docker Compose
  5. Configuración SSL con Traefik
  6. Seguridad Avanzada
  7. Migración desde Otros Gestores
  8. Clientes y Extensiones
  9. Backup y Recuperación
  10. Comparativa vs Alternativas
  11. Troubleshooting
  12. Preguntas Frecuentes
  13. Conclusión

Introducción

¿Cuántas contraseñas gestionas actualmente? Si eres como la mayoría de usuarios, probablemente tengas más de 100 cuentas repartidas entre servicios de trabajo, redes sociales, banca online, compras y entretenimiento. El problema es claro: gestionar tantas contraseñas de forma segura es imposible sin una herramienta dedicada.

Las soluciones cloud como LastPass ($36/año), 1Password ($36/año) o incluso Bitwarden Premium ($10/año) funcionan, pero tienen un problema fundamental: tus contraseñas están almacenadas en servidores de terceros. Y aunque prometen cifrado de extremo a extremo, la realidad es que confías en empresas externas para proteger tus credenciales más sensibles.

Vaultwarden resuelve este problema permitiéndote alojar tu propio gestor de contraseñas compatible con Bitwarden, con control total sobre tus datos y sin costes recurrentes.

En esta guía aprenderás:

  • Cómo instalar Vaultwarden con Docker en 5 minutos
  • Configurar SSL automático con Traefik o Nginx Proxy Manager
  • Habilitar 2FA y seguridad avanzada
  • Automatizar backups con scripts y n8n
  • Migrar todas tus contraseñas desde otros servicios

¿Qué es Vaultwarden?

Vaultwarden (anteriormente bitwarden_rs) es una implementación alternativa del servidor de Bitwarden escrita en Rust. Es 100% compatible con todos los clientes oficiales de Bitwarden, pero consume una fracción de los recursos.

Diferencias Clave con Bitwarden Oficial

CaracterísticaVaultwardenBitwarden Oficial
LenguajeRustC# (.NET)
Base de datosSQLiteSQL Server
RAM mínima~10MB~1GB+
Imagen Docker~100MB~1.5GB+
Funciones Premium✅ Gratis$10/año
2FA (TOTP)✅ IncluidoPremium
Compartir✅ IncluidoPremium
Vault attach✅ IncluidoPremium

¿Por Qué Elegir Vaultwarden?

  1. Eficiencia brutal: Funciona perfectamente en una Raspberry Pi con 10MB de RAM
  2. Control total: Tus contraseñas nunca salen de tu servidor
  3. Funciones premium gratis: 2FA, compartir, adjuntos, todo incluido
  4. Compatibilidad total: Usa las apps oficiales de Bitwarden sin cambios
  5. Mantenimiento activo: Comunidad muy activa con actualizaciones frecuentes

Arquitectura de Vaultwarden

TEXT
┌─────────────────────────────────────────────────────┐
│                    TU RED LOCAL                      │
├─────────────────────────────────────────────────────┤
│                                                      │
│   ┌──────────┐    ┌──────────┐    ┌──────────┐     │
│   │ Chrome   │    │ Firefox  │    │ Mobile   │     │
│   │Extension │    │Extension │    │ App      │     │
│   └────┬─────┘    └────┬─────┘    └────┬─────┘     │
│        │               │               │            │
│        └───────────────┼───────────────┘            │
│                        │                            │
│                        ▼                            │
│               ┌────────────────┐                    │
│               │  Traefik/NPM   │                    │
│               │  (SSL/HTTPS)   │                    │
│               └───────┬────────┘                    │
│                       │                             │
│                       ▼                             │
│               ┌────────────────┐                    │
│               │  Vaultwarden   │                    │
│               │   Container    │                    │
│               │   (10MB RAM)   │                    │
│               └───────┬────────┘                    │
│                       │                             │
│                       ▼                             │
│               ┌────────────────┐                    │
│               │    SQLite      │                    │
│               │   Database     │                    │
│               └────────────────┘                    │
│                                                      │
└─────────────────────────────────────────────────────┘

Imagen 1

Requisitos y Preparación

Hardware Mínimo

Vaultwarden es extremadamente ligero. Estos son los requisitos reales:

ComponenteMínimoRecomendado
CPU1 core2 cores
RAM256MB512MB
Almacenamiento1GB5GB
RedCualquieraGigabit

Funciona perfectamente en:

  • Raspberry Pi 3/4/5
  • VPS económico ($5/mes)
  • NAS con Docker (Synology, QNAP, TrueNAS)
  • Cualquier servidor con Docker

Software Necesario

  1. Docker y Docker Compose instalados
  2. Dominio apuntando a tu servidor (opcional pero recomendado para HTTPS)
  3. Reverse proxy para SSL (Traefik, Nginx Proxy Manager o Caddy)

Verificar Instalación de Docker

BASH
# Verificar Docker
docker --version
# Docker version 24.0.7, build afdd53b

# Verificar Docker Compose
docker compose version
# Docker Compose version v2.21.0

Si no tienes Docker instalado, consulta nuestra guía de Docker desde cero.

Instalación con Docker Compose

Paso 1: Crear Directorio de Trabajo

BASH
mkdir -p ~/vaultwarden
cd ~/vaultwarden

Paso 2: Crear docker-compose.yml

YAML
version: '3.8'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    volumes:
      - ./vw-data:/data
    environment:
      # Dominio (OBLIGATORIO para HTTPS)
      - DOMAIN=https://vault.tudominio.com
      
      # Seguridad
      - SIGNUPS_ALLOWED=false
      - INVITATIONS_ALLOWED=true
      - SHOW_PASSWORD_HINT=false
      
      # WebSocket (notificaciones en tiempo real)
      - WEBSOCKET_ENABLED=true
      
      # Admin panel (genera token con: openssl rand -base64 48)
      - ADMIN_TOKEN=${ADMIN_TOKEN:-}
    ports:
      - "8080:80"
      - "3012:3012"

Paso 3: Generar Token de Administración

BASH
# Generar token seguro
openssl rand -base64 48

# Ejemplo de salida:
# Ky8f9mJ2X5dH7gR4tP6wQ3nL0iY8vB1xC9zA2sE5oU7hN4kM3jF6dG0pW1rT

Paso 4: Configurar Variables de Entorno

BASH
# Crear archivo .env
cat > .env << 'EOF'
ADMIN_TOKEN=tu_token_generado_aqui
EOF

Paso 5: Iniciar Vaultwarden

BASH
docker compose up -d

Paso 6: Verificar Funcionamiento

BASH
# Ver logs
docker logs vaultwarden

# Verificar que responde
curl http://localhost:8080/alive
# Debería devolver: true

Acceder a Vaultwarden

Abre http://tu-ip:8080 en tu navegador. Verás la interfaz de Bitwarden lista para registrar tu primera cuenta.

⚠️ Importante: Sin HTTPS, los clientes oficiales de Bitwarden no funcionarán correctamente. Continúa con la siguiente sección para configurar SSL.

Configuración SSL con Traefik

Opción A: Docker Compose con Traefik

Si ya tienes Traefik funcionando en tu homelab, esta es la configuración óptima:

YAML
version: '3.8'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    volumes:
      - ./vw-data:/data
    environment:
      - DOMAIN=https://vault.tudominio.com
      - SIGNUPS_ALLOWED=false
      - WEBSOCKET_ENABLED=true
      - ADMIN_TOKEN=${ADMIN_TOKEN}
    labels:
      # Habilitar Traefik
      - "traefik.enable=true"
      
      # Router principal (UI Web)
      - "traefik.http.routers.vaultwarden-ui.rule=Host(`vault.tudominio.com`)"
      - "traefik.http.routers.vaultwarden-ui.entrypoints=websecure"
      - "traefik.http.routers.vaultwarden-ui.tls=true"
      - "traefik.http.routers.vaultwarden-ui.tls.certresolver=letsencrypt"
      - "traefik.http.routers.vaultwarden-ui.service=vaultwarden-ui"
      - "traefik.http.services.vaultwarden-ui.loadbalancer.server.port=80"
      
      # Router WebSocket (notificaciones en tiempo real)
      - "traefik.http.routers.vaultwarden-ws.rule=Host(`vault.tudominio.com`) && Path(`/notifications/hub`)"
      - "traefik.http.routers.vaultwarden-ws.entrypoints=websecure"
      - "traefik.http.routers.vaultwarden-ws.tls=true"
      - "traefik.http.routers.vaultwarden-ws.tls.certresolver=letsencrypt"
      - "traefik.http.routers.vaultwarden-ws.service=vaultwarden-ws"
      - "traefik.http.services.vaultwarden-ws.loadbalancer.server.port=3012"
    networks:
      - traefik-network

networks:
  traefik-network:
    external: true

Opción B: Nginx Proxy Manager

Si usas Nginx Proxy Manager, la configuración es más visual:

  1. Añade un nuevo Proxy Host
  2. Domain: vault.tudominio.com
  3. Scheme: http
  4. Forward Hostname: vaultwarden (nombre del container)
  5. Forward Port: 80
  6. Habilita SSL con Let’s Encrypt
  7. En Custom locations, añade:

– Location: /notifications/hub

– Scheme: http

– Forward: vaultwarden:3012

– Habilita WebSocket Support

Consulta nuestra guía de Nginx Proxy Manager para más detalles.

Seguridad Avanzada

Habilitar Autenticación de Dos Factores (2FA)

  1. Inicia sesión en Vaultwarden
  2. Ve a Settings > Two-step Login
  3. Elige tu método preferido:

Authenticator App (TOTP): Compatible con Google Authenticator, Authy, etc.

YubiKey OTP: Para llaves de seguridad físicas

Email: Código por email (requiere SMTP configurado)

Desactivar Registros Públicos

Una vez creada tu cuenta, desactiva los registros para evitar accesos no autorizados:

YAML
environment:
  - SIGNUPS_ALLOWED=false
  - INVITATIONS_ALLOWED=true  # Permite invitar usuarios por email

Configurar SMTP para Emails

YAML
environment:
  - SMTP_HOST=smtp.gmail.com
  - SMTP_PORT=587
  - SMTP_SECURITY=starttls
  - SMTP_USERNAME=tu@gmail.com
  - SMTP_PASSWORD=tu_app_password  # Usar App Password de Google
  - SMTP_FROM=tu@gmail.com
  - SMTP_FROM_NAME=Vaultwarden

Integración con Authelia (SSO)

Si usas Authelia para Single Sign-On en tu homelab, puedes añadir una capa extra de protección:

YAML
# En configuration.yml de Authelia
access_control:
  default_policy: deny
  rules:
    - domain: vault.tudominio.com
      policy: two_factor

Consulta nuestra guía de Authelia + LLDAP para configurar SSO completo.

Fail2ban para Vaultwarden

Protege contra ataques de fuerza bruta:

BASH
# /etc/fail2ban/filter.d/vaultwarden.conf
[Definition]
failregex = ^.*Username or password is incorrect\. Try again\. IP: <HOST>\..*$
ignoreregex =
BASH
# /etc/fail2ban/jail.d/vaultwarden.local
[vaultwarden]
enabled = true
port = http,https
filter = vaultwarden
logpath = /ruta/a/vw-data/vaultwarden.log
maxretry = 5
bantime = 3600
findtime = 600

Imagen 2

Migración desde Otros Gestores

Desde LastPass

  1. En LastPass: Account Settings > Advanced > Export
  2. Descarga el archivo CSV
  3. En Vaultwarden: Settings > Import Data
  4. Selecciona LastPass (csv)
  5. Sube el archivo

Desde 1Password

  1. En 1Password: File > Export > All Items
  2. Selecciona formato CSV
  3. En Vaultwarden: Settings > Import Data
  4. Selecciona 1Password (csv)

Desde Bitwarden Cloud

Si ya usas Bitwarden y quieres migrar a tu servidor:

  1. En Bitwarden: Tools > Export Vault
  2. Selecciona JSON (Encrypted) e introduce tu contraseña
  3. En Vaultwarden: Settings > Import Data
  4. Selecciona Bitwarden (json)

Tip: El export encriptado es más seguro que CSV ya que las contraseñas no quedan en texto plano.

Clientes y Extensiones

Una de las grandes ventajas de Vaultwarden es que puedes usar los clientes oficiales de Bitwarden sin modificaciones.

Extensiones de Navegador

NavegadorEnlace
ChromeChrome Web Store
FirefoxFirefox Add-ons
EdgeMicrosoft Store
SafariApp Store

Aplicaciones Móviles

PlataformaEnlace
AndroidGoogle Play
iOSApp Store

Configurar el Servidor

En cualquier cliente de Bitwarden:

  1. Abre la app/extensión
  2. Pulsa en el engranaje ⚙️ (Configuración)
  3. En Server URL, introduce: https://vault.tudominio.com
  4. Guarda y haz login normalmente

CLI de Bitwarden

Para automatizaciones y scripts:

BASH
# Instalar CLI
npm install -g @bitwarden/cli

# Configurar servidor
bw config server https://vault.tudominio.com

# Login
bw login tu@email.com

# Obtener contraseña
bw get password "GitHub"

Backup y Recuperación

Estructura de Datos

Todo lo que necesitas respaldar está en el volumen /data:

TEXT
vw-data/
├── db.sqlite3          # Base de datos principal
├── config.json         # Configuración
├── rsa_key.pem         # Clave RSA privada
├── rsa_key.pub.pem     # Clave RSA pública
├── attachments/        # Archivos adjuntos
└── sends/              # Envíos temporales

Script de Backup Automatizado

BASH
#!/bin/bash
# backup_vaultwarden.sh

BACKUP_DIR="/home/user/backups/vaultwarden"
DATA_DIR="/home/user/vaultwarden/vw-data"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/vaultwarden_backup_$DATE.tar.gz"

# Crear directorio si no existe
mkdir -p "$BACKUP_DIR"

# Detener contenedor para backup consistente
docker stop vaultwarden

# Crear backup
tar -czvf "$BACKUP_FILE" -C "$DATA_DIR" .

# Iniciar contenedor
docker start vaultwarden

# Eliminar backups antiguos (más de 30 días)
find "$BACKUP_DIR" -name "*.tar.gz" -mtime +30 -delete

echo "✅ Backup completado: $BACKUP_FILE"

Automatizar con Cron

BASH
# Editar crontab
crontab -e

# Añadir backup diario a las 3:00 AM
0 3 * * * /home/user/scripts/backup_vaultwarden.sh >> /var/log/vaultwarden-backup.log 2>&1

Restaurar Backup

BASH
# Detener Vaultwarden
docker stop vaultwarden

# Limpiar datos actuales
rm -rf ./vw-data/*

# Restaurar backup
tar -xzvf /ruta/al/backup.tar.gz -C ./vw-data

# Iniciar Vaultwarden
docker start vaultwarden

Imagen 3

Comparativa vs Alternativas

Tabla Comparativa Completa

CaracterísticaVaultwardenBitwarden Cloud1PasswordLastPass
Precio anual$0 (gratis)$10 (Premium)$36$36
Self-hosted✅ Sí❌ No❌ No❌ No
Código abierto✅ GPL-3.0Parcial❌ No❌ No
2FA incluido✅ GratisPremium✅ SíPremium
Compartir✅ GratisPremium✅ SíPremium
Adjuntos✅ GratisPremium✅ SíPremium
Control datosTotalNingunoNingunoNinguno
Brechas conocidas000Varias
RAM necesaria10MBN/AN/AN/A
Offline✅ Sí✅ Sí✅ Sí✅ Sí

¿Cuándo Elegir Cada Opción?

Elige Vaultwarden si:

  • Tienes un servidor o homelab
  • Valoras la privacidad total
  • No quieres pagar suscripciones
  • Quieres funciones premium gratis

Elige Bitwarden Cloud si:

  • No quieres gestionar infraestructura
  • Necesitas soporte oficial
  • Prefieres simplicidad sobre control

Elige 1Password si:

  • Necesitas compartir con familia/equipo
  • Valoras la UX pulida
  • El precio no es problema

Troubleshooting

Error: WebSocket connection failed

Síntoma: Las extensiones no sincronizan automáticamente.

Causa: WebSocket no configurado en el reverse proxy.

Solución para Nginx:

NGINX
location /notifications/hub {
    proxy_pass http://vaultwarden:3012;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

Error: Unauthorized al sincronizar

Síntoma: Los clientes no pueden conectar.

Solución:

  1. Verifica que DOMAIN coincida exactamente con tu URL
  2. Comprueba que el certificado SSL sea válido
  3. Cierra sesión y vuelve a iniciar

Container reinicia constantemente

Síntoma: Vaultwarden no arranca.

Causa: Permisos incorrectos en el volumen.

Solución:

BASH
sudo chown -R 1000:1000 ./vw-data

SMTP no envía emails

Síntoma: No llegan invitaciones ni verificaciones.

Solución:

  1. Usa App Password en lugar de contraseña normal (Gmail)
  2. Verifica puertos: 587 (TLS) o 465 (SSL)
  3. Habilita logs con LOG_LEVEL=debug

Error: «This browser requires HTTPS»

Síntoma: Los clientes no funcionan sin HTTPS.

Solución: Configura un reverse proxy con SSL (ver sección Configuración SSL).

Imagen 4

📦 Descargar Ejemplos

Todos los archivos de configuración están disponibles en nuestro repositorio:

🔗 github.com/ziruelen/learningaiagents/tree/main/homelab/vaultwarden

Incluye:

  • docker-compose.yml – Configuración básica
  • docker-compose-traefik.yml – Con Traefik
  • backup.sh – Script de backup automatizado
  • README.md – Documentación adicional

Preguntas Frecuentes

¿Es legal usar Vaultwarden?

Sí, Vaultwarden es completamente legal. Es software open source bajo licencia GPL-3.0 que implementa la API de Bitwarden de forma independiente.

¿Puedo usar los clientes oficiales de Bitwarden?

Sí, Vaultwarden es 100% compatible con todas las aplicaciones y extensiones oficiales de Bitwarden. Solo necesitas configurar la URL de tu servidor.

¿Cómo actualizo Vaultwarden?

BASH
docker compose pull
docker compose up -d

Vaultwarden mantiene compatibilidad hacia atrás, así que las actualizaciones son seguras.

¿Qué pasa si pierdo acceso al servidor?

Tus contraseñas están cacheadas localmente en cada cliente. Mientras tengas acceso a tu contraseña maestra y un backup del volumen /data, puedes restaurar todo.

¿Cuántos usuarios soporta?

No hay límite técnico. Para uso personal o familiar (1-10 usuarios), un servidor básico es más que suficiente. Para cientos de usuarios, considera PostgreSQL-guia-completa-tutorial-2025/)-mongodb-guia-completa-tutorial-2025/) en lugar de SQLite.

¿Es seguro exponer Vaultwarden a Internet?

Sí, siempre que uses HTTPS y sigas las prácticas de seguridad:

  • Desactiva registros públicos
  • Habilita 2FA
  • Usa contraseña maestra fuerte
  • Mantén actualizado

¿Vaultwarden tiene panel de administración?

Sí, accede a /admin con tu ADMIN_TOKEN. Desde ahí puedes:

  • Ver usuarios registrados
  • Invitar nuevos usuarios
  • Configurar SMTP
  • Ver diagnósticos

¿Cómo comparto contraseñas con mi familia?

  1. Crea una Organización en Vaultwarden
  2. Invita a los miembros por email
  3. Crea Colecciones para agrupar credenciales
  4. Asigna permisos (solo lectura, edición, etc.)

¿Funciona en Raspberry Pi?

Sí, Vaultwarden funciona perfectamente en Raspberry Pi 3, 4 y 5. Consume solo ~10MB de RAM, por lo que deja recursos de sobra para otros servicios.

¿Puedo usar Vaultwarden sin dominio propio?

Técnicamente sí, pero los clientes de Bitwarden requieren HTTPS. Opciones:

  • Usar Tailscale con MagicDNS
  • Certificado auto-firmado (no recomendado)
  • Dominio gratuito de DuckDNS

¿Hay aplicación de escritorio?

Sí, Bitwarden tiene apps para Windows, macOS y Linux. Todas funcionan con Vaultwarden configurando la URL del servidor.

¿Cómo hago backup de forma segura?

El script incluido en esta guía detiene el contenedor para garantizar consistencia. Para máxima seguridad:

  1. Backup diario automatizado
  2. Almacenar en ubicación externa (NAS, cloud cifrado)
  3. Probar restauración periódicamente

Conclusión

Vaultwarden es la solución perfecta para quienes quieren control total sobre sus contraseñas sin renunciar a la comodidad de los clientes de Bitwarden. Con solo 10MB de RAM, funciones premium gratuitas y compatibilidad total, no hay razón para seguir pagando suscripciones a gestores de contraseñas cloud.

Resumen de lo aprendido:

  • ✅ Instalación con Docker en 5 minutos
  • ✅ SSL automático con Traefik
  • ✅ Seguridad avanzada con 2FA y fail2ban
  • ✅ Migración desde otros gestores
  • ✅ Backup automatizado

Próximos Pasos

  1. Configura Traefik si aún no lo tienes
  2. Añade Authelia para SSO completo
  3. Automatiza backups con n8n para mayor tranquilidad

¿Tienes dudas? Únete a nuestra comunidad en Discord donde ayudamos con configuraciones de homelab y seguridad.

📚 Artículos Relacionados:

Por ziru

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
El Diario IA
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.