Vaultwarden frente a Bitwarden self-hosted: cuál elegir
Bitwarden self-hosted requiere unos 12 contenedores y 2 GB de RAM; Vaultwarden ofrece la misma API en uno. Compara recursos, funciones y copias de seguridad.
Qué son realmente Vaultwarden y Bitwarden self-hosted
Vaultwarden frente a Bitwarden self-hosted es una elección entre dos servidores que hablan la misma API de cliente, no entre dos gestores de contraseñas. La propia pila de Bitwarden ejecuta aproximadamente una docena de contenedores detrás de nginx, almacena todo en Microsoft SQL Server y está vinculada a un ID de instalación que se registra con una dirección de correo electrónico. Vaultwarden es una reimplementación no oficial de la API de cliente de Bitwarden, escrita en Rust, que se ejecuta como un solo contenedor y utiliza un único archivo SQLite. La extensión del navegador y el teléfono no pueden distinguirlos, porque ambos responden a los mismos endpoints.
El cifrado es idéntico en ambos casos. Los clientes de Bitwarden cifran el almacén antes de que salga del dispositivo, por lo que el servidor almacena datos binarios que no puede leer, y el formato del almacén pertenece a Bitwarden en los dos casos. Lo que cambia es cuánta máquina se necesita alquilar, quién mantiene el código, qué funciones tienen coste y qué datos hay que incluir en las copias de seguridad.
El README de Vaultwarden es claro sobre su estado: "This project is not associated with Bitwarden or Bitwarden, Inc." Es un proyecto mantenido por voluntarios, sin servicio de soporte ni garantía. Uno de los mantenedores activos trabaja en Bitwarden y contribuye en su tiempo personal, lo que es una cortesía, no una aprobación oficial.
Las tres pilas que puede instalar
La mayoría de las comparaciones omiten que Bitwarden distribuye dos productos distintos para instalaciones autogestionadas.
Bitwarden estándar. La implementación del proveedor, controlada mediante un script de shell.
curl -Lso bitwarden.sh "https://func.bitwarden.com/api/dl/?app=self-host&platform=linux" \
&& chmod 700 bitwarden.sh
./bitwarden.sh installEl instalador solicita el dominio, si debe solicitar un certificado de Let's Encrypt, el nombre de la base de datos y un ID y una clave de instalación que obtiene de https://bitwarden.com/host al introducir una dirección de correo electrónico. ./bitwarden.sh start descarga las imágenes y levanta la pila. Bitwarden documenta 2 GB de RAM y 12 GB de almacenamiento como requisitos mínimos, y 4 GB y 25 GB como valores recomendados, además de Docker Engine 26 o una versión posterior con el complemento Compose. La base de datos es una imagen de MSSQL Express. Esa edición limita la base de datos relacional a 10 GB, a menos que dirija la implementación a una base de datos externa.
Bitwarden lite. Esta es la implementación que antes se llamaba Bitwarden Unified. Salió de la fase beta y cambió de nombre en diciembre de 2025. Consta de un contenedor de aplicación y una base de datos a su elección:
services:
bitwarden:
depends_on:
- db
env_file:
- settings.env
image: ghcr.io/bitwarden/lite
restart: always
ports:
- "80:8080"
volumes:
- bitwarden:/etc/bitwarden
db:
environment:
MARIADB_USER: "bitwarden"
MARIADB_PASSWORD: "super_strong_password"
MARIADB_DATABASE: "bitwarden_vault"
MARIADB_RANDOM_ROOT_PASSWORD: "true"
image: mariadb:10
restart: always
volumes:
- data:/var/lib/mysql
volumes:
bitwarden:
data:Acepta MariaDB o MySQL, PostgreSQL, SQLite y MSSQL, y requiere 200 MB de RAM y 1 GB de almacenamiento. La documentación de Bitwarden incluye dos advertencias. Está documentado para uso personal y laboratorios domésticos, no para entornos empresariales. Además, no realiza copias de seguridad automáticas de la base de datos, por lo que usted debe encargarse por completo de esa tarea.
Vaultwarden. Un contenedor, directamente desde el README del proyecto:
docker run --detach --name vaultwarden \
--env DOMAIN="https://vw.domain.tld" \
--volume /vw-data/:/data/ \
--restart unless-stopped \
--publish 127.0.0.1:8000:80 \
vaultwarden/server:latestLa línea de publicación enlaza el puerto 8000 sólo con loopback, y es una decisión intencionada. Vaultwarden sirve HTTP sin cifrar y espera que un reverse proxy termine TLS (seguridad de la capa de transporte) delante de él. TLS es obligatorio en este caso: el vault web realiza el cifrado mediante la API WebCrypto del navegador, que los navegadores sólo exponen en un contexto seguro. Por tanto, mediante http sin cifrar, la página de inicio de sesión falla en el navegador antes de que se solicite nada al servidor. El tutorial completo de instalación de Vaultwarden explica la configuración del proxy y del certificado.
¿Cuánta RAM usa Vaultwarden frente a Bitwarden autohospedado?
Los mínimos del proveedor indican con qué recursos el instalador se niega a ejecutarse, no cuánto consume realmente el software. Las filas siguientes proceden de docker stats --no-stream en instalaciones inactivas, con un usuario cada una, una bóveda pequeña y sin archivos adjuntos, en un equipo con Ubuntu 24.04 y 4 GB de RAM. El espacio en disco incluye las imágenes y el directorio de datos después del primer arranque correcto.
The data behind this chart
[
{
"label": "Vaultwarden (SQLite)",
"idle_ram_mb": 58,
"containers": 1,
"disk_gb": 0.4
},
{
"label": "Bitwarden lite + MariaDB",
"idle_ram_mb": 470,
"containers": 2,
"disk_gb": 1.6
},
{
"label": "Bitwarden standard (MSSQL)",
"idle_ram_mb": "2,400",
"containers": 12,
"disk_gb": 6.5
}
]Vaultwarden se mantuvo inactivo en 58 MB en un único contenedor. La pila estándar de Bitwarden se mantuvo cerca de 2,400 MB distribuidos entre 12 contenedores, y el contenedor MSSQL concentra la mayor parte de ese consumo. Bitwarden lite quedó entre ambos, con 470 MB junto con su contenedor MariaDB. Ejecute el mismo comando en su propio equipo antes de dar por válidas estas cifras, porque varían según el número de usuarios, los archivos adjuntos y el tráfico de sincronización, y MSSQL aumenta su conjunto de trabajo cuanto más tiempo permanece en ejecución.
La interpretación práctica para un VPS pequeño es la siguiente: Vaultwarden con SQLite funciona bien en un plan de 1 GB, y la pila estándar de Bitwarden no arrancará allí. En un plan de 2 GB, la pila estándar cumple el mínimo documentado y deja muy pocos recursos para el sistema operativo, por lo que el asesino de procesos por falta de memoria del kernel se convierte en un evento real. Cuando se activa, dmesg muestra una línea con el proceso que terminó y, en esta pila, normalmente se trata de sqlservr. Asigne 4 GB a la implementación estándar. Si el mismo VPS debe alojar algo más que una bóveda, calcule los mínimos de los demás servicios antes de elegir el plan, porque un servidor de fotos como PhotoPrism o Immich necesita mucha más memoria que Vaultwarden. Sin embargo, no todos los servicios vecinos consumen tantos recursos: algo como Halcyon, que presenta una biblioteca de Jellyfin como un videoclub de los años 90 es un frontend web que depende del servidor multimedia al que apunta, en lugar de incorporar su propia base de datos. La memoria tampoco es el único mínimo que conviene comprobar, porque un relay de RustDesk para sesiones de escritorio remoto apenas aparece en docker stats y después consume la cuota de ancho de banda del plan.
¿Qué funciones de pago son gratuitas en Vaultwarden?
Ejecutar el servidor de Bitwarden no tiene coste, pero las funciones de pago permanecen bloqueadas hasta que se carga un archivo de licencia. Las cuentas individuales Premium y todos los niveles de organizaciones de pago (Families, Teams, Enterprise) necesitan uno. Puede descargarlo desde la bóveda web en la nube, en Settings y después en Subscription para una cuenta individual, o desde la Admin Console, en Billing y después en Subscription, para una organización, y cargarlo en su propia instancia. Las licencias de organización se emiten para el ID de instalación almacenado en ./bwdata/env/global.override.env. Por tanto, una organización autoalojada sigue teniendo una suscripción de pago y sigue conectándose a la nube de Bitwarden para la facturación.
Vaultwarden activa estas mismas funciones sin licencia ni suscripción. La wiki del proyecto las enumera:
- organizaciones, colecciones y grupos
- archivos adjuntos
- inicio de sesión en dos pasos con correo electrónico, Duo, YubiKey y FIDO2
- Emergency Access
- Bitwarden Send
- claves API personales
- SSO mediante OpenID Connect
SSO es la función más reciente de esta lista y se configura con SSO_ENABLED, SSO_AUTHORITY, SSO_CLIENT_ID y SSO_CLIENT_SECRET. Sólo autentica el inicio de sesión. La wiki indica explícitamente que sigue siendo necesaria una contraseña maestra y que el proveedor de identidad no la controla, porque esa contraseña genera la clave que descifra la bóveda. Apunte SSO_AUTHORITY al emisor de descubrimiento de un proveedor de identidad Authentik autoalojado para que los usuarios inicien sesión allí y después desbloqueen la bóveda con su contraseña maestra. El valor debe coincidir con el campo issuer que devuelve el endpoint de descubrimiento, sin el sufijo /.well-known/openid-configuration final.
Lo que no obtiene con Vaultwarden es un proveedor. Bitwarden cuenta con las certificaciones SOC 2 Type 2 e ISO 27001, publica informes de auditoría de terceros y gestiona un programa privado de recompensas por errores en HackerOne. Estas garantías cubren el código y el servicio de Bitwarden, no el servidor que usted instaló, pero si un auditor exige un proveedor identificado detrás del gestor de contraseñas, una reimplementación mantenida por voluntarios plantea una situación difícil.
¿Las aplicaciones oficiales de Bitwarden funcionan con Vaultwarden?
Sí. Vaultwarden implementa la API del cliente, por lo que las extensiones del navegador, las aplicaciones de escritorio, las aplicaciones móviles y el vault web incluido funcionan con él. En cada cliente, establezca la URL del servidor autohospedado en la pantalla de entorno antes de iniciar sesión, no después.
Una función requiere configuración adicional: las notificaciones push para las aplicaciones móviles. Sin ellas, la aplicación se sincroniza cuando la abre o según su propio temporizador. Por eso, una contraseña cambiada en el portátil no aparece en el teléfono hasta que lo consulta. Vaultwarden puede usar el relé push de Bitwarden y necesita un ID y una clave de instalación de la misma página https://bitwarden.com/host que usa el instalador oficial.
PUSH_ENABLED=true
PUSH_INSTALLATION_ID=<your installation id>
PUSH_INSTALLATION_KEY=<your installation key>Los servidores de la región de la UE también necesitan PUSH_RELAY_URI=https://api.bitwarden.eu y PUSH_IDENTITY_URI=https://identity.bitwarden.eu. La wiki documenta dos problemas que conviene conocer antes de dedicar una hora a depurarlos. Una aplicación instalada desde F-Droid o Neo Store no tiene compatibilidad con Firebase y nunca recibirá notificaciones push, independientemente de la configuración del servidor. Una aplicación que se conectó antes de Vaultwarden 1.30.2 debe borrar sus datos para registrar un token push.
¿Qué seguridad ofrece una reimplementación?
El historial de auditorías de Bitwarden es extenso y público. Cure53 lo revisó en 2018, 2021, 2022 y 2023. IOActive y Mandiant revisaron los clientes en 2024, Fracture Labs realizó evaluaciones web y de red durante 2024 y 2025, Unit 42 evaluó las aplicaciones móviles en 2025 y el Applied Cryptography Group de ETH Zurich revisó la criptografía en 2025.
Vaultwarden también ha sido examinado por terceros, aunque sorprenda a quienes suponen que nadie lo revisa. La Oficina Federal de Seguridad de la Información de Alemania (BSI) encargó a mgm security partners que lo evaluara entre febrero y mayo de 2024, dentro del proyecto de análisis de código Caos 3.0, y esa revisión clasificó dos hallazgos como de gravedad alta. Por separado, ERNW informó de una omisión de autenticación que afectaba a las versiones anteriores a 1.32.5 (CVE-2024-55225), corregida en noviembre de 2024. La versión 1.37.0, publicada en julio de 2026, incluía correcciones para SSRF (server side request forgery) a través del endpoint de iconos, el acceso a cifrados entre organizaciones y una omisión de la política de una organización al importar directorios.
Este historial muestra un proyecto con un proceso de divulgación operativo. También señala la superficie que aparece repetidamente: la página de administración. Trate esa página como lo que es: un componente sensible. Permanece desactivada salvo que se establezca ADMIN_TOKEN, y debería almacenar un hash en lugar del token en texto plano.
docker run --rm -it vaultwarden/server /vaultwarden hashEsto muestra una cadena PHC de Argon2 (password hashing competition format) que debe copiarse en ADMIN_TOKEN. Habilite HTTPS antes de habilitar la página de administración, porque el token se envía en la solicitud y cualquier elemento situado en la ruta puede leer un token en texto plano transmitido por una conexión HTTP sin cifrar. El riesgo práctico se concentra en ese token y en el archivo de copia de seguridad, no en la criptografía, y una revisión de hardening de una instancia en ejecución cubre ambos aspectos. Mantenga /admin fuera de Internet pública siempre que sea posible y combínelo con medidas habituales de hardening del host, como restringir el acceso SSH al servidor.
Qué falla cuando cambia la API oficial
Este es el riesgo que se suele subestimar. Bitwarden publica los clientes, y esos clientes se actualizan automáticamente desde las tiendas de aplicaciones durante la noche. Vaultwarden tiene que mantenerse compatible. Cuando una versión del cliente cambia el contrato de la API, un Vaultwarden sin actualizar recibe a un cliente que ya ha cambiado, y el inicio de sesión o la sincronización empiezan a fallar en dispositivos que usted no ha modificado.
Las notas de la versión incluyen un ejemplo concreto. Vaultwarden 1.37.0 indica: "This update is required for support with clients with version 2026.7.0+, please update before reporting any issues with them." En agosto de 2026, la versión actual es 1.37.1, publicada el 29 de julio de 2026.
Dos prácticas evitan que esto se convierta en un problema recurrente. Fije una etiqueta de imagen específica en lugar de latest para que una descarga desatendida no actualice el servidor a las 3 de la madrugada. Después, supervise el feed de versiones y actualice de forma deliberada. Lea primero las notas, porque los cambios incompatibles aparecen allí y en ningún otro sitio. Por ejemplo, la versión 1.35.5 invalidó durante la actualización todos los tokens existentes de recuerdo de la autenticación de dos factores. Esto cerró la sesión de los usuarios después de un paso que creían haber guardado.
La implementación estándar de Bitwarden presenta el problema inverso. Las actualizaciones se ejecutan mediante ./bitwarden.sh updateself y ./bitwarden.sh update, y la actualización aplica migraciones de base de datos. Una copia de seguridad creada antes de la migración no permite revertir el esquema posterior a ella. Por tanto, cree la copia de seguridad y anote la versión en la que la realizó.
Copias de seguridad: aquí es donde realmente se pierden las bóvedas
El directorio de datos de Vaultwarden es el servidor. Conserve lo siguiente:
db.sqlite3- todos los archivos
rsa_key*, incluidosrsa_key.pemyrsa_key.der attachments/config.jsonsends/
No copie db.sqlite3 con cp mientras el contenedor esté en ejecución. SQLite puede estar escribiendo en ese momento, por lo que la copia puede ser una base de datos dañada que parece correcta hasta que se restaura. Use la API de copias de seguridad en línea:
sqlite3 data/db.sqlite3 ".backup '/path/to/backups/db-$(date '+%Y%m%d-%H%M').sqlite3'"Desde 1.32.1, la imagen también incluye el comando /vaultwarden backup. En cualquier caso, la instantánea permanece en el mismo disco que el original hasta que la mueve. Por tanto, envíela fuera del servidor mediante instantáneas de restic en almacenamiento externo según una programación. Un trabajo de copias de seguridad que deja de ejecutarse sin avisar parece exactamente uno que nunca existió. Haga que el temporizador informe de sus propios fallos en algún lugar donde pueda detectarlos. Para eso sirve un servidor ntfy autohospedado conectado a una unidad systemd OnFailure. Los archivos rsa_key son tan importantes como la base de datos. El servidor firma sus tokens de sesión con esa clave. Por tanto, restaurar una base de datos junto a una clave recién generada cierra la sesión de todos los usuarios y rompe las invitaciones a organizaciones que estaban en curso.
Bitwarden standard hace copias de seguridad de una mayor parte de sus datos. El contenedor mssql escribe copias de seguridad nocturnas de la base de datos en ./bwdata/mssql/backups y conserva 30 días de copias, siempre que el contenedor esté en ejecución. También puede forzar una copia:
docker exec -i bitwarden-mssql /backup-db.shLos directorios que debe conservar son ./bwdata/env (variables de entorno, incluidas las contraseñas de la base de datos y de los certificados), ./bwdata/core/attachments, ./bwdata/mssql/data y ./bwdata/core/aspnet-dataprotection. El último es el que más se olvida. Contiene datos de protección de datos del framework, incluidos tokens de autenticación y algunas columnas de la base de datos. Por tanto, restaurar la base de datos sin ese directorio deja ilegibles las columnas que protege. Bitwarden lite no realiza copias de seguridad automáticas. Elegir lite implica encargarse de una programación de volcados, exactamente igual que con Vaultwarden.
Migrar en cualquier dirección
La migración se realiza mediante los clientes, no mediante los servidores, porque las funciones de exportación e importación pertenecen al cliente. Por eso, ambas direcciones siguen el mismo procedimiento.
Cada usuario exporta los datos desde la bóveda web o la aplicación de escritorio, crea una cuenta en el servidor nuevo e importa los datos. Los formatos son texto sin formato .json, texto sin formato .csv, cifrado .json y un .zip que contiene el JSON y los archivos adjuntos de las bóvedas individuales. Las tarjetas, identidades, passkeys almacenadas y claves SSH sólo se conservan en los formatos JSON, por lo que una migración mediante CSV las descarta silenciosamente. Ningún formato de exportación incluye elementos de la papelera ni Sends, y los datos propiedad de una organización no forman parte de una exportación individual.
Trate una exportación en texto sin formato como un secreto activo, porque eso es exactamente lo que contiene: toda su bóveda en texto claro almacenada en disco. Expórtela, impórtela y elimínela en la misma sesión. Nunca la envíe por correo electrónico ni por chat.
Hay un problema que suele aparecer durante la migración. Una exportación cifrada vinculada a su cuenta no se puede importar en otra cuenta, y cambiar de servidor implica usar otra cuenta por definición. Seleccione en su lugar la opción de exportación protegida con contraseña, que sí es portable.
La migración de Vaultwarden a Bitwarden estándar es más compleja, porque la estructura de la organización no se incluye en una exportación. Debe recrear la organización en el servidor nuevo, invitar de nuevo a los usuarios y hacer que cada usuario importe su propia bóveda. Planifique una ventana de mantenimiento para esta tarea, en lugar de descubrirlo el mismo día.
¿Cuál debería ejecutar?
Ejecute Vaultwarden si lo va a utilizar una sola persona, una familia o un laboratorio doméstico en un VPS de 1 GB o 2 GB. Organisations, Emergency Access y Send se incluyen sin coste, el consumo de memoria en reposo equivale aproximadamente al de una pestaña del navegador y la copia de seguridad consta de un archivo SQLite y un directorio pequeño. Esta combinación explica por qué domina la gestión de contraseñas autoalojada.
Ejecute el servidor propio de Bitwarden cuando otras personas dependan de él con fines profesionales: una empresa que necesite un contrato de soporte, un requisito de cumplimiento que especifique el proveedor o funciones empresariales que ya pague. Asigne 4 GB a la implementación estándar y trate el archivo de licencia y el ID de instalación como parte de la implementación, no como simple documentación administrativa.
Bitwarden lite ocupa una posición intermedia poco clara. Es código del proveedor con una fracción del consumo, lo que resulta realmente atractivo, pero Bitwarden lo documenta para uso personal y laboratorios domésticos, y no tiene copias de seguridad automáticas. Usted asume la carga operativa de Vaultwarden sin su conjunto de funciones gratuitas. Elíjalo cuando el código del proveedor le importe más que las funciones y acepte administrar la base de datos por su cuenta.
Si todavía está decidiendo qué otros servicios alojará el servidor, la lista más amplia de servicios autoalojados sitúa esta elección junto a los demás servicios que compiten por la misma RAM.
FAQ
¿Vaultwarden es lo bastante seguro para usarlo como gestor de contraseñas real?
Para uso personal y familiar, sí, con ciertas condiciones. Los clientes cifran la bóveda antes de enviarla al servidor, por lo que Vaultwarden nunca ve la contraseña maestra ni datos en texto plano. El producto ha sido revisado externamente: BSI encargó a mgm security partners una evaluación entre febrero y mayo de 2024, y ERNW informó de una omisión de autenticación que se corrigió en 1.32.5. Mantenga la versión actualizada, desactive la página de administración o protéjala con un ADMIN_TOKEN con hash Argon2, y sírvala sólo mediante HTTPS. Una empresa que necesite soporte del proveedor o documentación de auditoría debería ejecutar el servidor propio de Bitwarden.
¿Cuánta RAM necesita Vaultwarden en comparación con Bitwarden autohospedado?
En instalaciones inactivas medidas con docker stats --no-stream, Vaultwarden con SQLite usó aproximadamente 58 MB en un contenedor, mientras que la implementación estándar de Bitwarden usó cerca de 2,400 MB distribuidos entre 12 contenedores, la mayor parte correspondiente a la base de datos MSSQL. Bitwarden documenta 2 GB como mínimo y 4 GB como cantidad recomendada para la pila estándar, y 200 MB para Bitwarden lite. Vaultwarden funciona en un VPS de 1 GB con margen suficiente.
¿Necesito una licencia de Bitwarden para autohospedarlo?
No para una bóveda individual gratuita. Ejecutar el servidor es gratis. Se necesita un archivo de licencia para desbloquear las funciones premium individuales y cualquier plan de organización de pago, incluidos Families, Teams y Enterprise. Descargue el archivo desde la bóveda web en la nube y súbalo a su instancia. Las licencias de organización se emiten para el ID de instalación almacenado en ./bwdata/env/global.override.env. Vaultwarden no necesita licencia y habilita directamente las funciones de organización.
¿Puedo pasar de Vaultwarden a Bitwarden más adelante, o volver atrás?
Sí, en ambas direcciones, mediante los clientes. Cada usuario exporta su bóveda desde la bóveda web o la aplicación de escritorio y la importa en el nuevo servidor después de crear allí una cuenta. La exportación .zip incluye los archivos adjuntos de las bóvedas individuales, y los formatos JSON incluyen tarjetas, identidades, claves de acceso y claves SSH. Los elementos de la papelera y los Sends no están incluidos en ningún formato de exportación. Los elementos propiedad de una organización deben ser exportados por separado por un propietario. Por tanto, debe prever recrear la organización y volver a invitar a los usuarios en el nuevo servidor.