Durante años usé 1Password. Buena app, buen diseño, funciona en todas partes. Pero tiene un precio que sube cada año, y con el tiempo me fui incomodando con la idea de que mis contraseñas viven en los servidores de otra empresa. No porque desconfíe de 1Password en particular, sino porque prefiero no depender de servicios externos para algo tan crítico.
Vaultwarden lleva dos años en mi homelab y no ha fallado una sola vez.
Qué es Vaultwarden#
Bitwarden es un gestor de contraseñas open source con apps para todas las plataformas, extensiones de navegador, apps móviles. El servidor oficial de Bitwarden está disponible para self-hosting, pero requiere bastante RAM y varios contenedores. En un servidor pequeño o en una Raspberry Pi, eso no va bien.
Vaultwarden es una implementación alternativa del servidor de Bitwarden en Rust. Es compatible con todos los clientes oficiales de Bitwarden (extensiones de navegador, apps móviles, app de escritorio), pero consume muchísimos menos recursos. En mi servidor ocupa unos 20MB de RAM en reposo.
La distinción importante: Vaultwarden no es Bitwarden. Es una reimplementación no oficial que implementa la misma API. Funciona perfectamente con todos los clientes de Bitwarden, pero no tiene soporte oficial de la empresa Bitwarden. Para uso personal en homelab, eso no importa. Para uso empresarial con requisitos de soporte, sí hay que considerarlo.
El setup con Docker Compose#
Necesitas un servidor con Docker, un nombre de dominio, y HTTPS. Sin HTTPS, las extensiones de navegador y apps móviles no van a funcionar correctamente.
Mi docker-compose.yml:
| |
Yo pongo SIGNUPS_ALLOWED: "false" desde el primer día. No quiero que nadie más pueda crear una cuenta en mi servidor de contraseñas. Para añadir usuarios nuevos (si quieres compartir con familia), vas al panel de administración.
El SMTP es para enviar emails de verificación y alertas. Sin él funciona, pero perderías las notificaciones de nuevos dispositivos y la verificación en dos pasos por email.
Para el HTTPS uso Nginx Proxy Manager apuntando a este contenedor. El proceso es el mismo que con cualquier otro servicio: crear un proxy host, poner tu dominio, activar Let’s Encrypt. En cinco minutos tienes HTTPS válido.
El panel de administración#
Accedes a él en https://tu-dominio.com/admin. Necesitas el token que definiste en ADMIN_TOKEN.
Desde ahí puedes invitar usuarios, ver diagnósticos, configurar opciones que no están disponibles como variables de entorno. Te recomiendo que lo explores la primera vez pero que no dejes la URL pública sin protección adicional. Yo tengo el panel de administración bloqueado por IP: solo accede desde la red local o desde Tailscale.
Migrar desde 1Password (o cualquier otro gestor)#
1Password y la mayoría de gestores permiten exportar a CSV o JSON. Bitwarden tiene una herramienta de importación que acepta los formatos de los principales gestores.
Para migrar desde 1Password:
- En 1Password exportas a CSV (o al formato 1PIF)
- En Bitwarden web vault, vas a Tools > Import Data
- Seleccionas “1Password (1PIF)” o “1Password (CSV)” según lo que hayas exportado
- Subes el archivo
En mi caso tardé menos de diez minutos en importar varios cientos de entradas. El proceso fue limpio, sin errores, y las URLs y notas de cada entrada llegaron bien.
Lo que sí tuve que revisar manualmente fue las contraseñas de aplicaciones y las notas con formatos especiales. No es un problema de Vaultwarden, es simplemente que cada gestor tiene sus propias categorías y no todas se mapean perfectamente.
Configurar las extensiones de navegador#
Las extensiones oficiales de Bitwarden están en todas las tiendas. La clave es apuntarlas a tu servidor en vez de al de Bitwarden.
Al instalar la extensión o en ajustes, hay una opción “Server URL” o “Self-hosted environment”. Introduces tu dominio (con HTTPS) y ya conecta con tu Vaultwarden.
En iOS y Android igual: en los ajustes de la app hay una opción para cambiar el servidor. Introduces la URL y listo.
Esto es lo que hace que Vaultwarden sea tan cómodo: los clientes oficiales de Bitwarden están muy bien hechos. La extensión de Chrome/Firefox es de las mejores del mercado. El autocompletado en móvil funciona bien con la integración de autocompletado del sistema operativo.
Verificación en dos pasos#
Actívala. No es opcional si tienes contraseñas importantes ahí.
Vaultwarden soporta TOTP (el código de seis dígitos de apps como Aegis, Raivo o el propio Bitwarden Authenticator), Duo, y YubiKey. Yo uso TOTP con Aegis en el móvil.
Para activarlo: en la app web de Bitwarden (tu servidor), vas a Configuración de cuenta, Seguridad, Autenticación en dos pasos. Sigues el proceso con tu app de autenticación preferida.
Una vez activado, cada vez que inicias sesión en un dispositivo nuevo, necesitas el código además de la contraseña. Sesiones ya autenticadas no te piden el código de nuevo.
Backups: lo más importante que puedes hacer#
Tus contraseñas son datos críticos. Un backup en el mismo servidor no sirve de nada si el servidor muere. Necesitas copias en otro sitio.
La base de datos de Vaultwarden es un archivo SQLite en la carpeta data/db.sqlite3. Hacer backup es tan simple como copiar ese archivo.
Mi setup de backup:
| |
Ese script corre con cron cada hora. Además, los backups diarios se sincronizan con un servidor externo usando Restic. El archivo de la base de datos es pequeño (el mío ocupa menos de 5MB para cientos de entradas), así que el coste en almacenamiento y tiempo es mínimo.
Si usas Proxmox, también puedes hacer snapshots de la VM donde corre Vaultwarden. No es sustituto de un backup del archivo de base de datos, pero añade una capa más.
Compartir contraseñas con familia#
Vaultwarden soporta organizaciones, igual que Bitwarden. Puedes crear una organización, invitar a tu familia, y compartir colecciones de contraseñas con ellos.
El proceso: creas una organización desde el panel web, invitas por email a los usuarios (necesitas que tengan cuenta en tu servidor), y compartes las colecciones que quieras.
Cada usuario tiene su propio vault personal más acceso a las colecciones compartidas. Puedes controlar los permisos: solo lectura, edición, gestión.
Antes de activar esto para la familia, piensa bien en los permisos. Dar acceso de escritura a cuentas compartidas implica que si alguien borra algo por error, lo pierdes. Yo puse a mi familia como “solo lectura” en las colecciones compartidas, así pueden usar las contraseñas pero no pueden modificar nada.
El panel de emergencia#
Hay una función poco conocida que me parece útil: el acceso de emergencia. Puedes designar a alguien de confianza que, tras un período de espera que tú defines, puede acceder a tu vault si algo te pasa.
No lo he necesitado nunca y espero no necesitarlo, pero me parece que tiene sentido configurarlo. La persona designada tiene que tener cuenta en tu Vaultwarden, y el acceso no es inmediato: tú recibes una notificación y tienes tiempo para rechazarlo si la solicitud no es legítima.
Recursos que consume#
En mi servidor, un nodo con 2 vCPUs y 4GB de RAM compartido con otros servicios:
- RAM en reposo: 15-25MB
- CPU en reposo: prácticamente cero
- Picos al sincronizar un cliente: breves, menos de 5% de CPU
- Almacenamiento: menos de 100MB incluyendo archivos adjuntos
Eso significa que puedes correr Vaultwarden en una Raspberry Pi 3 sin problemas. En un servidor más serio, ni lo notarás.
Lo que no hace#
No tiene la integración con passkeys que tiene el Bitwarden oficial todavía. Vaultwarden va añadiendo funciones con el tiempo, pero hay cierto desfase con la implementación oficial.
La app de escritorio de Bitwarden funciona con Vaultwarden, pero hay algunos reportes de comportamientos extraños en versiones muy recientes de la app. La extensión de navegador es más estable. En mi experiencia la app de escritorio funciona bien, pero es un punto a vigilar cuando actualices.
El soporte si algo falla lo tienes en la comunidad (GitHub, foros). No hay empresa detrás que te responda. Para contraseñas personales en homelab, eso está bien. Para contraseñas de empresa con datos críticos de negocio, vale la pena pensar si prefieres pagar por soporte profesional.
Comparando con las alternativas#
Bitwarden oficial self-hosted tiene soporte de la empresa y todas las funciones, pero requiere bastante más recursos y la configuración es más compleja.
KeePass no tiene servidor, es solo un archivo que sincronizas tú. Más control, pero sin acceso web ni sincronización automática entre dispositivos.
1Password / Dashlane / LastPass son servicios gestionados. Menos trabajo, más coste, tus datos en sus servidores.
Para homelab, Vaultwarden es el punto de equilibrio correcto: funcionalidad completa, clientes excelentes, consumo mínimo de recursos, y tus datos en tu servidor.
Después de dos años#
No he tenido ni un solo problema de pérdida de datos. Los backups automáticos me han dado tranquilidad. La extensión de navegador funciona tan bien como cualquier gestor comercial, y en algunos aspectos mejor porque tengo control total sobre qué datos están donde.
El coste es básicamente cero más allá de la electricidad del servidor que ya tenía. El tiempo de mantenimiento es mínimo: actualizaciones ocasionales del contenedor y revisar que los backups se están generando.
Si tienes un homelab y usas un gestor de contraseñas de pago, Vaultwarden es una de las migraciones más justificadas que puedes hacer. Baja la dependencia de servicios externos, reduces costes, y los clientes de Bitwarden son lo suficientemente buenos como para que no eches de menos lo que tenías.
