🔐 Guía punk: Monta tu propio servidor de contraseñas seguro y autoalojado (Vaultwarden/Bitwarden)

Robot punk guardando contraseñas en servidor Vaultwarden Bitwarden autoalojado seguro 2025

Vaultwarden: Tu Servidor de Contraseñas Autoalojado y Seguro 2025

¿Cansado de no recordar la clave del WiFi, de compartir contraseñas por Telegram o de depender de servicios en la nube que pueden cambiar sus normas cuando menos te lo esperas? Con Vaultwarden (la versión ligera y open source de Bitwarden) puedes tener tu propio servidor de contraseñas en casa, accesible desde el móvil y el navegador, con backups automáticos y control total.

En esta guía aprenderás:

  • Qué es Vaultwarden y diferencias con Bitwarden oficial
  • Instalación con Docker Compose (3 métodos)
  • Configuración del panel de admin
  • Acceso desde móvil, navegador y escritorio
  • Backups automáticos y restauración
  • Seguridad avanzada (2FA, HTTPS, fail2ban)
  • Migración desde LastPass/1Password/Bitwarden Cloud

🤔 ¿Qué es Vaultwarden?

Vaultwarden es una reimplementación open-source del servidor de Bitwarden escrita en Rust, diseñada específicamente para ser ultraligera y perfecta para autoalojar en casa.

Diferencias clave con Bitwarden oficial:

Característica Vaultwarden Bitwarden Oficial (self-hosted)
Contenedores Docker 1 contenedor 11 contenedores
RAM mínima 50 MB (idle) 2 GB+
Tiempo instalación 5 minutos 30-60 minutos
Features Premium gratis ✅ Todas (organizaciones, TOTP, archivos adjuntos) ❌ Requieren licencia de pago
Hardware requerido Raspberry Pi 3+ / VPS $5 Servidor potente / VPS $20+
Database SQLite (default) o PostgreSQL PostgreSQL/MySQL obligatorio
Soporte oficial Comunidad Empresa Bitwarden
Auditorías seguridad No (código open source revisable) Sí (auditorías de terceros)

¿Vaultwarden es compatible con apps de Bitwarden? SÍ, 100%. Usas las apps oficiales de Bitwarden (móvil, navegador, escritorio) pero apuntando a tu servidor Vaultwarden.

📋 Requisitos Previos

Hardware mínimo:

  • Raspberry Pi 3 o superior (512 MB RAM suficiente)
  • NAS Synology/QNAP
  • VPS básico ($5/mes: Hetzner, DigitalOcean, Contabo)
  • PC viejo reconvertido en servidor casero

Software:

  • Docker y Docker Compose instalados
  • Dominio propio o DynDNS (opcional, solo para acceso externo)
  • Certificado SSL: Let’s Encrypt, Cloudflare Tunnel, o self-signed

⚠️ Importante: Vaultwarden requiere HTTPS obligatorio para usar Web Crypto API (excepto en http://localhost). Sin HTTPS, las apps no funcionarán.

🚀 Método 1: Instalación Básica (Solo Local)

Perfecto para probar o usar solo en tu red local.

Paso 1: Crear carpeta y docker-compose.yml

mkdir ~/vaultwarden && cd ~/vaultwarden
nano docker-compose.yml

docker-compose.yml básico:

version: '3.8'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      # Deshabilitar registro público (CRÍTICO)
      SIGNUPS_ALLOWED: 'false'
      # Token admin (genera uno único: openssl rand -base64 48)
      ADMIN_TOKEN: 'TU_TOKEN_UNICO_AQUI'
      # Domain (solo si tienes dominio)
      # DOMAIN: 'https://vault.tudominio.com'
    volumes:
      - ./vw-data:/data
    ports:
      - "8800:80"

Paso 2: Generar token admin único

openssl rand -base64 48

Copia el resultado y pégalo en ADMIN_TOKEN del docker-compose.yml

Paso 3: Arrancar Vaultwarden

docker compose up -d
docker compose logs -f

Espera a ver: "Rocket has launched from http://0.0.0.0:80"

Paso 4: Acceder y crear tu cuenta

1. Abre navegador: http://TU_IP_LOCAL:8800

2. Haz clic en «Create account»

3. Email + contraseña maestra (APÚNTALA EN PAPEL, es irrecuperable)

4. ¡Primera cuenta creada! (Ahora nadie más puede registrarse porque SIGNUPS_ALLOWED=false)

Paso 5: Acceder al panel de admin

1. Ve a: http://TU_IP_LOCAL:8800/admin

2. Pega el token admin que generaste

3. Configura: desactivar registros, habilitar invitaciones solo por admin, configurar SMTP (opcional)

🔒 Método 2: Instalación con HTTPS (Caddy Reverse Proxy)

Para producción o acceso desde internet. Caddy obtiene certificados Let’s Encrypt automáticamente.

docker-compose.yml completo:

version: '3.8'

services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      DOMAIN: 'https://vault.tudominio.com'
      SIGNUPS_ALLOWED: 'false'
      ADMIN_TOKEN: 'TU_TOKEN_UNICO'
      WEBSOCKET_ENABLED: 'true'
      SMTP_HOST: 'smtp.gmail.com'
      SMTP_FROM: 'tu@email.com'
      SMTP_PORT: '587'
      SMTP_SECURITY: 'starttls'
      SMTP_USERNAME: 'tu@email.com'
      SMTP_PASSWORD: 'tu_password_smtp'
    volumes:
      - ./vw-data:/data
    networks:
      - vaultwarden

  caddy:
    image: caddy:latest
    container_name: caddy
    restart: always
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./caddy-data:/data
      - ./caddy-config:/config
    networks:
      - vaultwarden

networks:
  vaultwarden:
    driver: bridge

Caddyfile:

vault.tudominio.com {
    reverse_proxy vaultwarden:80 {
        header_up X-Real-IP {remote_host}
    }
}

Configurar DNS:

En tu proveedor DNS (Cloudflare, Namecheap, etc), crea registro A:

vault.tudominio.com → TU_IP_PUBLICA

Arrancar:

docker compose up -d

Caddy obtiene certificado SSL automáticamente. Accede vía: https://vault.tudominio.com

🗄️ Método 3: Instalación con PostgreSQL (Producción)

Para equipos, empresas, o si quieres máxima performance y backups avanzados.

version: '3.8'

services:
  db:
    image: postgres:16-alpine
    container_name: vaultwarden_db
    restart: always
    environment:
      POSTGRES_USER: vaultwarden
      POSTGRES_PASSWORD: password_seguro_aqui
      POSTGRES_DB: vaultwarden
    volumes:
      - ./db-data:/var/lib/postgresql/data
    networks:
      - vaultwarden

  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    depends_on:
      - db
    environment:
      DATABASE_URL: 'postgresql://vaultwarden:password_seguro_aqui@db:5432/vaultwarden'
      DOMAIN: 'https://vault.tudominio.com'
      SIGNUPS_ALLOWED: 'false'
      ADMIN_TOKEN: 'TU_TOKEN_UNICO'
      WEBSOCKET_ENABLED: 'true'
    volumes:
      - ./vw-data:/data
    networks:
      - vaultwarden
    ports:
      - "8800:80"

networks:
  vaultwarden:
    driver: bridge

Ventajas PostgreSQL vs SQLite:

  • ✅ Mejor performance con 100+ usuarios concurrentes
  • ✅ Backups online sin parar el servicio (pg_dump)
  • ✅ Replicación y alta disponibilidad
  • ❌ Más complejo de configurar
  • ❌ Consume más RAM (100-200 MB adicionales)

Para equipos pequeños (1-10 usuarios): SQLite es suficiente. PostgreSQL solo si tienes necesidades avanzadas.

📱 Acceso desde Móvil, Navegador y Escritorio

Móvil (iOS/Android)

1. Descarga app oficial: Bitwarden (App Store / Google Play)

2. Abre app → Botón ⚙️ arriba izquierda

3. Server URL → Introduce tu URL:

http://192.168.1.100:8800  (red local)
https://vault.tudominio.com  (internet)

4. Login con tu email + contraseña maestra

5. ¡Listo! Sincronización automática

⚠️ iOS: Si usas solo red local, ve a Ajustes → Bitwarden → Red Local → Permitir

Navegador (Extensión)

1. Instala extensión: Bitwarden Extension (Chrome, Firefox, Edge, Safari)

2. Haz clic en icono Bitwarden → ⚙️ Settings

3. Self-hosted → Introduce tu URL

4. Login

5. Autocompletar contraseñas funciona automáticamente

Escritorio (Windows/Mac/Linux)

1. Descarga: Bitwarden Desktop

2. Settings → Self-hosted → URL

3. Login

💾 Backups Automáticos: 3 Estrategias

Estrategia 1: Backup Manual Simple

Tus datos están en la carpeta vw-data/. Copia esa carpeta = backup completo.

# Parar Vaultwarden
docker stop vaultwarden

# Crear backup
tar -czvf vaultwarden-backup-$(date +%F).tar.gz vw-data/

# Reiniciar
docker start vaultwarden

# Subir a tu sitio seguro (USB, NAS, Nextcloud, etc)

Estrategia 2: Backup Automático con Script + Cron

Crear script: ~/vaultwarden/backup.sh

#!/bin/bash
BACKUP_DIR="/home/user/backups/vaultwarden"
VW_DIR="/home/user/vaultwarden"
DATE=$(date +%Y-%m-%d_%H-%M-%S)

# Crear carpeta backups
mkdir -p "$BACKUP_DIR"

# Parar contenedor
docker stop vaultwarden

# Backup de data + docker-compose.yml
tar -czf "$BACKUP_DIR/vaultwarden-$DATE.tar.gz" \
  -C "$VW_DIR" vw-data docker-compose.yml

# Reiniciar contenedor
docker start vaultwarden

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

echo "Backup completado: vaultwarden-$DATE.tar.gz"

Dar permisos:

chmod +x ~/vaultwarden/backup.sh

Programar backup diario a las 3am:

crontab -e

# Añadir línea:
0 3 * * * /home/user/vaultwarden/backup.sh >> /home/user/vaultwarden/backup.log 2>&1

Estrategia 3: Backup Online con PostgreSQL (Sin Downtime)

Si usas PostgreSQL, puedes hacer backup SIN parar el servicio:

#!/bin/bash
BACKUP_DIR="/home/user/backups/vaultwarden"
DATE=$(date +%Y-%m-%d_%H-%M-%S)

mkdir -p "$BACKUP_DIR"

# Backup PostgreSQL (sin parar contenedor)
docker exec vaultwarden_db pg_dump -U vaultwarden vaultwarden | \
  gzip > "$BACKUP_DIR/vaultwarden-db-$DATE.sql.gz"

# Backup archivos adjuntos
tar -czf "$BACKUP_DIR/vaultwarden-files-$DATE.tar.gz" \
  -C /home/user/vaultwarden vw-data/attachments vw-data/sends

# Limpiar antiguos
find "$BACKUP_DIR" -name "vaultwarden-*" -mtime +30 -delete

echo "Backup sin downtime completado"

Restaurar desde Backup

# Parar Vaultwarden
docker compose down

# Restaurar archivos
tar -xzf vaultwarden-backup-2025-11-01.tar.gz

# Reiniciar
docker compose up -d

⚠️ Probar restauración: Cada 3-6 meses, restaura un backup en otra máquina para verificar que funciona. Los backups que nunca pruebas = no existen.

🔐 Seguridad Avanzada

1. Habilitar 2FA (Autenticación Dos Factores)

1. Login web → Settings → Two-step Login

2. Opciones disponibles (GRATIS en Vaultwarden):

  • Authenticator App: Google Authenticator, Authy (recomendado)
  • Email: Código por email (requiere SMTP configurado)
  • YubiKey: Llave física USB/NFC
  • FIDO2: Passkeys (iPhone Face ID, Windows Hello)
  • Duo: Push notifications

3. Recovery codes: GUÁRDALOS EN PAPEL. Si pierdes 2FA, son tu única salvación.

2. Fail2ban: Bloquear Ataques de Fuerza Bruta

Si tu Vaultwarden está expuesto a internet, instala fail2ban para bloquear IPs que intenten contraseñas incorrectas múltiples veces.

Crear filtro: /etc/fail2ban/filter.d/vaultwarden.conf

[Definition]
failregex = ^.*Username or password is incorrect\. Try again\. IP: <ADDR>\. Username:.*$
ignoreregex =

Crear jail: /etc/fail2ban/jail.d/vaultwarden.conf

[vaultwarden]
enabled = true
port = 80,443
filter = vaultwarden
action = iptables-allports[name=vaultwarden]
logpath = /home/user/vaultwarden/vw-data/vaultwarden.log
maxretry = 3
bantime = 86400
findtime = 3600

Reiniciar fail2ban:

sudo systemctl restart fail2ban
sudo fail2ban-client status vaultwarden

3. HTTPS Obligatorio (Producción)

Opciones:

  • Caddy: Certificados Let’s Encrypt automáticos (visto arriba)
  • Cloudflare Tunnel: Sin abrir puertos, gratis, fácil
  • Nginx Proxy Manager: UI gráfica para certificados
  • Tailscale: VPN privada, sin exponer a internet

4. Deshabilitar Registros Públicos

CRÍTICO: SIGNUPS_ALLOWED: 'false' en docker-compose.yml

Para invitar usuarios (familia, equipo):

1. Panel admin: http://tu-vaultwarden:8800/admin

2. Invite User → Email del usuario

3. Usuario recibe email con link de registro único

5. Contraseña Maestra Fuerte

Usa generador de passphrases:

Ejemplo: "Caballo-Azul-Montaña-82-Fuego"
(5 palabras aleatorias + números = 90 bits entropía)

NO uses: Vaultwarden2025! (débil, diccionario)

usa: Trueno-Gato-87-Reloj-Fuego (fuerte, memorable)

🔄 Migrar desde Otros Gestores

Desde LastPass

1. LastPass: More Options → Advanced → Export → Download CSV

2. Vaultwarden web: Settings → Import Data → LastPass (csv)

3. Upload CSV → Import

4. Borrar CSV del disco (seguridad)

Desde 1Password

1. 1Password: File → Export → All Items → 1Password Interchange Format (.1pif)

2. Vaultwarden: Settings → Import Data → 1Password (1pif)

3. Upload → Import

Desde Bitwarden Cloud

1. Bitwarden Cloud: Tools → Export Vault → JSON format

2. Vaultwarden: Settings → Import Data → Bitwarden (json)

3. Upload → Import

4. Verificar que todo importó correctamente

5. Cancelar suscripción Bitwarden Cloud (ahora eres libre)

🔧 Troubleshooting: Problemas Comunes

Error: «Vault is locked»

Causa: Sesión expirada

Solución: Re-login con contraseña maestra

Error: «Could not connect to server»

Causas posibles:

  • URL incorrecta (http vs https, puerto incorrecto)
  • Vaultwarden no arrancó: docker compose logs -f
  • Firewall bloqueando puerto 8800

App móvil no conecta en red local

iOS: Ajustes → App Bitwarden → Red Local → Permitir

Android: Verificar que IP local es accesible desde navegador móvil primero

Olvidé contraseña maestra

Solución: NO hay recuperación. Por eso existen los backups.

Prevención: Apunta contraseña maestra en papel guardado en sitio seguro físico

Consumo RAM alto

Vaultwarden usa ~50 MB idle, ~100-150 MB con actividad.

Si ves 500+ MB: problema con logs. Limpiar logs:

docker exec vaultwarden sh -c "echo '' > /data/vaultwarden.log"

📊 Comparativa: Vaultwarden vs Alternativas

Gestor Open Source Self-Hosted RAM Setup Apps Gratuito
Vaultwarden 50 MB 5 min ✅ Oficiales Bitwarden ✅ Todo gratis
Bitwarden Official 2 GB+ 60 min ⚠️ Premium requiere pago
KeePass ✅ Archivo local 30 MB 2 min ❌ Apps terceros
LastPass N/A N/A ⚠️ Limitado gratis
1Password N/A N/A ❌ $2.99+/mes
Passbolt 300 MB 30 min ⚠️ Básicas ✅ Community

Vaultwarden gana en: Ligereza, facilidad setup, features gratis, compatibilidad apps oficiales Bitwarden.

🎯 Casos de Uso Reales

Caso 1: Familia (4 personas)

Setup: Raspberry Pi 4 (4 GB RAM) + Vaultwarden en red local + Tailscale para acceso remoto

Resultado: $0/mes, contraseñas compartidas vía Organizations, cada uno con su bóveda personal

Caso 2: Pequeña Empresa (15 empleados)

Setup: VPS Hetzner €5/mes + Vaultwarden + PostgreSQL + Caddy HTTPS + fail2ban

Resultado: Contraseñas corporativas compartidas por departamento (Collections), 2FA obligatorio, backups diarios a S3

Caso 3: Usuario Solo (Ultra-Paranoico)

Setup: Vaultwarden en Raspberry Pi sin internet + acceso solo vía cable ethernet local

Resultado: Máxima seguridad (air-gapped), sincronización manual exportando/importando JSON

🔗 Recursos Adicionales

❓ Preguntas Frecuentes

¿Vaultwarden es legal? ¿Bitwarden oficial lo permite?

Sí, es 100% legal. Vaultwarden es una reimplementación independiente compatible con el protocolo Bitwarden (que es open source). No viola ninguna licencia ni patente. Bitwarden oficial lo conoce y no tiene problema, aunque no lo soportan oficialmente.

¿Qué pasa si olvido mi contraseña maestra?

NO hay recuperación posible. La contraseña maestra es la clave de cifrado de todos tus datos. Ni siquiera el administrador del servidor puede recuperarla. Por eso es crítico: 1) Usar contraseña memorable pero fuerte, 2) Apuntarla en papel en sitio seguro físico, 3) Tener backups regulares.

¿Puedo usar Vaultwarden sin internet?

Sí, perfectamente. Las apps de Bitwarden cachean tu bóveda localmente. Puedes acceder a tus contraseñas offline. Solo necesitas conexión para sincronizar cambios entre dispositivos. Si montas Vaultwarden en tu red local, funciona sin internet exterior.

¿Cómo actualizar Vaultwarden a nueva versión?

Super fácil con Docker:

cd ~/vaultwarden
docker compose pull
docker compose down
docker compose up -d

Esto descarga la imagen más reciente y reinicia el contenedor. Tus datos persisten en el volumen vw-data/. Recomendado: hacer backup antes de actualizar.

¿Vaultwarden es más seguro que Bitwarden Cloud?

Depende. Ventajas Vaultwarden: Control total, tus datos nunca salen de tu servidor, no dependes de empresa tercera. Ventajas Bitwarden Cloud: Auditorías de seguridad profesionales, equipo dedicado, infraestructura redundante. Para máxima seguridad: Vaultwarden en servidor propio con buenas prácticas (HTTPS, 2FA, backups, fail2ban).

¿Puedo tener múltiples usuarios/familia en Vaultwarden?

Sí, gratis e ilimitado. Cada persona tiene su cuenta con email+contraseña maestra propia. Puedes crear Organizations para compartir contraseñas (ej: WiFi familiar, Netflix, cuentas bancarias compartidas) usando Collections. En Bitwarden oficial esto requiere plan de pago, en Vaultwarden es gratis.

¿Qué pasa con mis contraseñas si mi servidor Vaultwarden se rompe?

Si tienes backups: restauras en otro servidor en minutos y sigues. Si NO tienes backups: pierdes todo acceso permanente (por eso backups automáticos son críticos). Las apps móvil/navegador tienen caché local de tus contraseñas, así que puedes ver (pero no editar) temporalmente mientras restauras servidor.

¿Vaultwarden soporta autofill (autocompletar) en navegador y móvil?

Sí, 100%. Usa las apps oficiales de Bitwarden que tienen autofill nativo para iOS, Android, Chrome, Firefox, Edge, Safari. Funciona igual que Bitwarden Cloud. El navegador detecta campos de login/password y ofrece autocompletar desde tu Vaultwarden.

¿Puedo migrar de Vaultwarden de vuelta a Bitwarden Cloud?

Sí, fácil. Exportas tus datos desde Vaultwarden (Settings → Export Vault → JSON), luego importas ese JSON en Bitwarden Cloud. Migración inversa también funciona. No hay lock-in, puedes cambiar cuando quieras.

¿Necesito dominio propio para usar Vaultwarden?

No obligatorio. Opciones: 1) Red local solo: http://192.168.x.x:8800 (sin dominio, sin internet), 2) DynDNS gratis: noip.com, duckdns.org, 3) Cloudflare Tunnel: sin abrir puertos, sin dominio propio necesario, 4) Dominio propio: mejor para producción/empresa (~$10/año).

¿Vaultwarden consume muchos recursos en Raspberry Pi?

No, es ultraligero. Raspberry Pi 3+ (1 GB RAM) es suficiente. Vaultwarden idle usa ~50 MB RAM. Con 5-10 usuarios activos: ~100-150 MB. CPU casi 0% en idle, picos de 5-10% durante sync. Raspberry Pi 4 (2-4 GB) es ideal para familia o pequeña empresa (hasta 20-30 usuarios).

¿Cómo habilitar SMTP para notificaciones por email?

En docker-compose.yml añade variables de entorno:

SMTP_HOST: 'smtp.gmail.com'
SMTP_FROM: 'tu@email.com'
SMTP_PORT: '587'
SMTP_SECURITY: 'starttls'
SMTP_USERNAME: 'tu@email.com'
SMTP_PASSWORD: 'tu_app_password'

Gmail requiere «App Password» (no tu contraseña normal). Otras opciones: SendGrid, Mailgun, SMTP de tu hosting. Esto habilita: verificación email, invitaciones usuarios, 2FA por email, notificaciones seguridad.

💡 Conclusión

Vaultwarden es la mejor opción para autoalojar tu gestor de contraseñas: ligero, gratis, compatible con apps oficiales Bitwarden, y todas las features premium sin pagar.

Recomendación según caso:

  • 🏠 Usuario solo/familia pequeña: Raspberry Pi + Vaultwarden local + Tailscale para acceso remoto
  • 🏢 Pequeña empresa (5-20 personas): VPS €5/mes + PostgreSQL + Caddy HTTPS + fail2ban
  • 🔒 Ultra-paranoico: Vaultwarden en servidor sin internet (air-gapped) + sincronización manual JSON
  • Solo quiero probar rápido: Docker básico en PC + acceso local http://localhost:8800

Próximos pasos:

  1. Montar Vaultwarden con método 1 (básico) para probar
  2. Migrar tus contraseñas actuales (LastPass/1Password/Chrome)
  3. Configurar apps en móvil + navegador + escritorio
  4. Setup backup automático (script + cron)
  5. Habilitar 2FA en tu cuenta
  6. Si funciona bien → migrar a método 2 (HTTPS producción)

¿Ya tienes tu Vaultwarden funcionando? Comparte tu experiencia en los comentarios.

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.