Vaultwarden vs Bitwarden: cual elegir para tu servidor
Bitwarden requiere 2 GB de RAM y multiples contenedores. Vaultwarden ofrece la misma API en un solo contenedor con SQLite. Aprende cual es mejor para tu VPS personal.
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 todos los datos 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 único contenedor y usa 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 la bóveda antes de que cualquier dato salga del dispositivo, por lo que el servidor almacena blobs que no puede leer; además, el formato de la bóveda pertenece a Bitwarden en ambos casos. Lo que cambia es cuánta máquina hay que 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: "Este proyecto no está asociado con Bitwarden ni con 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 durante su tiempo personal, lo que constituye una muestra de cortesía, no un respaldo oficial.
Las tres pilas que puede instalar
Muchas comparaciones pasan por alto que Bitwarden ofrece dos productos distintos para alojarlos uno mismo.
Bitwarden standard. El despliegue del proveedor, controlado 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, un ID y una clave de instalación que obtiene de https://bitwarden.com/host al introducir una dirección de correo electrónico, y la región (US o EU). ./bitwarden.sh start descarga las imágenes y pone en marcha la pila. Bitwarden documenta 2 GB de RAM y 12 GB de almacenamiento como requisitos mínimos, 4 GB y 25 GB como valores recomendados, y Docker Engine 26 o posterior con el plugin Compose. La base de datos es una imagen de MSSQL Express, que Bitwarden documenta con un tamaño máximo de base de datos relacional de 10 GB. Si ese tamaño no es suficiente, puede configurar el despliegue para usar una base de datos externa.
Bitwarden lite. Este es el despliegue que antes se llamaba Bitwarden Unified. Salió de la beta y cambió de nombre en diciembre de 2025. Consta de un contenedor de aplicación y una base de datos de 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. Hay dos salvedades en la propia documentación de Bitwarden. Está documentado para uso personal y laboratorios domésticos, no para uso empresarial, y no realiza copias de seguridad automáticas de la base de datos, por lo que esa tarea depende completamente de usted.
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 vincula el puerto 8000 únicamente al loopback, y es una decisión deliberada. Vaultwarden sirve HTTP sin cifrar y espera que un proxy inverso termine TLS (seguridad de la capa de transporte) delante de él. TLS es obligatorio en este caso: el almacén web realiza el cifrado mediante la API WebCrypto del navegador, que los navegadores sólo exponen en un contexto seguro, por lo que mediante http sin cifrar la página de inicio de sesión falla en el navegador antes de que se llegue a solicitar nada al servidor. El tutorial completo de instalación de Vaultwarden cubre el proxy y el certificado.
¿Cuánta RAM usa Vaultwarden junto a Bitwarden autohospedado?
Los mínimos del proveedor indican con qué recursos el instalador se niega a ejecutarse, no cuánto ocupa realmente el software. Las filas siguientes proceden de docker stats --no-stream en instalaciones inactivas, con un usuario, un almacén pequeño y sin archivos adjuntos, en un equipo Ubuntu 24.04 con 4 GB de RAM. El espacio de disco incluye las imágenes y el directorio de datos después del primer arranque correcto.
Los datos de este gráfico
[
{
"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 dentro de un único contenedor. La pila estándar de Bitwarden se mantuvo cerca de 2,400 MB repartidos entre 12 contenedores, y el contenedor MSSQL concentra la mayor parte de ese consumo. Bitwarden lite quedó entre ambos, con 470 MB junto a su contenedor MariaDB. Ejecute el mismo comando en su propio equipo antes de dar por válidas estas cifras, porque cambian 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 conclusión práctica para un VPS pequeño es la siguiente: Vaultwarden con SQLite funciona con comodidad en un plan de 1 GB, pero la pila estándar de Bitwarden no se iniciará con ese tamaño. En un plan de 2 GB, la pila estándar alcanza el mínimo documentado y deja muy poca memoria para el sistema operativo, por lo que el asesino de procesos por falta de memoria del kernel se convierte en un riesgo real. Cuando se activa, dmesg muestra una línea con el proceso que terminó, que en esta pila suele ser sqlservr. Asigne 4 GB a la implementación estándar. Si el mismo VPS debe alojar algo más que un almacén, calcule antes los mínimos del resto de servicios, porque un servidor de fotos como PhotoPrism o Immich necesita mucha más memoria que Vaultwarden. Sin embargo, no todos los servicios vecinos consumen tanto: algo como Halcyon, que presenta una biblioteca Jellyfin como un videoclub de los años 90 es una interfaz 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 los planes de organización de pago que se pueden alojar por cuenta propia, que son Families y Enterprise (Bitwarden no ofrece una opción de autoalojamiento para Teams), necesitan una licencia. Puede descargarla desde la bóveda web en la nube, en Settings y después en Subscription para una cuenta individual, o desde Admin Console, en Billing y después en Subscription, para una organización, y cargarla 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 esas 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 deriva la clave que descifra la bóveda. Apunte SSO_AUTHORITY al issuer 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 respaldado por una empresa. 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 ha instalado, 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.
¿Funcionan las aplicaciones oficiales de Bitwarden con Vaultwarden?
Sí. Vaultwarden implementa la API de cliente, por lo que las extensiones del navegador, las aplicaciones de escritorio, las aplicaciones móviles y el almacén web incluido funcionan con él. En cada cliente, configure la URL del servidor autoalojado en la pantalla de entorno antes de iniciar sesión, no después.
Una función requiere configuración adicional: las notificaciones push en 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 modificada en el portátil no aparece en el teléfono hasta que lo consulta. Vaultwarden puede usar el relay de notificaciones push de Bitwarden. Necesita un ID de instalación y una clave de la misma página https://bitwarden.com/host que utiliza 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. Si una aplicación se conectó antes de Vaultwarden 1.30.2, debe borrar sus datos para que registre un token de notificaciones push.
¿Qué tan segura es una reimplementación?
El historial de auditorías de Bitwarden es extenso y público. Cure53 lo revisó en 2018, 2021, 2022, 2023, 2024 y 2025. La revisión de 2025 cubrió la extensión del navegador y la superposición de autocompletado, la aplicación principal, la aplicación de escritorio, la bóveda web y la biblioteca y el crate RustCrypto. 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. El Applied Cryptography Group de ETH Zurich revisó la criptografía en 2025.
Vaultwarden también ha sido examinado por entidades externas, aunque algunas personas se sorprenden porque suponen que nadie lo revisa. La Oficina Federal Alemana para la Seguridad de la Información (BSI) encargó a mgm security partners las pruebas entre febrero y mayo de 2024, dentro del proyecto de análisis de código Caos 3.0. Esa revisión calificó dos hallazgos como altos. 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 (falsificación de peticiones del lado del servidor) a través del endpoint de iconos, acceso entre organizaciones a cifrados y una omisión de la política de la organización durante las importaciones de directorios. La versión 1.37.4, publicada en octubre de 2026, corrigió otro grupo de problemas. El principal era una vulnerabilidad de gravedad alta en la revocación de miembros de una organización. También incluía problemas en la autenticación de dos factores, las invitaciones de organizaciones y los archivos adjuntos.
Este historial muestra que el proyecto tiene un proceso funcional para comunicar vulnerabilidades. También señala la superficie que aparece de forma recurrente: la página de administración. Trate esa página como lo que es: un componente sensible. Permanece desactivada mientras ADMIN_TOKEN no esté configurado. Debe almacenar un hash, no el token en texto plano.
docker run --rm -it vaultwarden/server /vaultwarden hashEl comando imprime una cadena PHC de Argon2 (formato de la competición de funciones de hash de contraseñas) que debe pegar en ADMIN_TOKEN. Habilite HTTPS antes de habilitar la página de administración. El token se envía en la petición y un token en texto plano sobre una conexión HTTP sin cifrar puede ser leído por cualquier sistema situado en la ruta. El riesgo práctico está en ese token y en el archivo de copia de seguridad, no en la criptografía. Una revisión de seguridad de una instancia en ejecución aborda ambos aspectos. Mantenga /admin fuera de Internet pública siempre que sea posible y combínelo con medidas habituales de refuerzo del host, como restringir el acceso SSH al servidor.
Qué se rompe 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 seguirles el ritmo. Cuando una versión del cliente cambia el contrato de la API, un Vaultwarden sin actualizar se encuentra con un cliente que ya ha cambiado, y el inicio de sesión o la sincronización empiezan a fallar en dispositivos que no se han modificado.
Las notas de la versión incluyen un ejemplo concreto. Vaultwarden 1.37.0 indica: "Esta actualización es necesaria para admitir clientes con la versión 2026.7.0 o posterior; actualice antes de informar de cualquier problema con ellos". Un mes después, la versión 1.37.2, publicada el 22 de agosto de 2026, repitió la advertencia para clientes con la versión 2026.8.0 y posteriores. Por tanto, un servidor que siga en 1.37.0 o 1.37.1 ya está por detrás de las aplicaciones. A fecha de 27 de octubre de 2026, la versión actual es la 1.37.4, publicada el 5 de octubre de 2026, después de la 1.37.3, publicada el 13 de septiembre de 2026.
Dos hábitos mantienen este problema bajo control. Fije una etiqueta de imagen específica en lugar de latest, para que una descarga desatendida no actualice el servidor a las 3am. Después, supervise el feed de versiones y actualice de forma deliberada. Lea primero las notas, porque ahí se anuncian los cambios incompatibles. La advertencia de la versión 1.37.2 también se publicó en GitHub Discussions del proyecto, junto con los pasos de recuperación para los clientes que sigan teniendo problemas después de actualizar el servidor: cerrar sesión y volver a iniciarla, borrar después la caché de la aplicación o de la extensión, y reinstalar la aplicación móvil o la extensión sólo como último recurso. La versión 1.35.5, por ejemplo, invalidó al actualizar todos los tokens existentes que recordaban la autenticación de dos factores. Esto hace que los usuarios pierdan el paso de autenticación de dos factores que creían haber guardado.
La implementación estándar de Bitwarden tiene 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 la migración. Por eso, haga la copia de seguridad y anote la versión en la que la creó.
Copias de seguridad, que es donde realmente se pierden los vaults
El directorio de datos de Vaultwarden es el servidor. Conserve estos elementos:
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 parezca correcta hasta que intente restaurarla. 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 mueva. Por tanto, envíela fuera del servidor mediante instantáneas de restic en almacenamiento externo con una programación periódica. Un trabajo de copia de seguridad que deja de ejecutarse silenciosamente se ve exactamente igual que uno que nunca existió. Configure el temporizador para que informe de sus propios errores en algún lugar donde pueda detectarlos. Para eso sirve un servidor ntfy autohospedado conectado a una unidad systemd de OnFailure. Los archivos rsa_key son tan importantes como la base de datos: el servidor firma los tokens de sesión con esa clave. Por tanto, restaurar una base de datos junto con una clave recién generada cierra la sesión de todos los usuarios y rompe las invitaciones a organizaciones que estuvieran en curso.
Bitwarden standard realiza copias de seguridad de una parte mayor 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. 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. Este último es el que más se olvida. Contiene material de protección de datos del nivel del framework, incluidos tokens de autenticación y algunas columnas de la base de datos. Por tanto, restaurar la base de datos sin este material deja ilegibles las columnas que protege. Bitwarden lite no realiza copias de seguridad automáticas. Por tanto, elegir lite implica mantener una programación de volcados, igual que con Vaultwarden.
Migración en ambos sentidos
La migración se realiza mediante los clientes, no mediante los servidores, porque exportar e importar son funciones del cliente. Por tanto, el procedimiento es el mismo en ambos sentidos.
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 plano .json, texto plano .csv, cifrado .json y un .zip que contiene el JSON y los archivos adjuntos de las bóvedas individuales. Las tarjetas, identidades, claves de acceso almacenadas y claves SSH sólo se conservan en los formatos JSON, por lo que una migración mediante CSV las elimina 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 plano como un secreto activo, porque eso es exactamente lo que contiene: toda la bóveda en texto claro sobre el 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 utilizar otra cuenta por definición. Elija en su lugar la opción de exportación protegida por contraseña, porque 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, volver a invitar a los usuarios y hacer que cada usuario importe su propia bóveda. Planifique una ventana de mantenimiento en lugar de descubrir este problema el mismo día.
¿Cuál debería ejecutar?
Ejecute Vaultwarden si es 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 es aproximadamente el de una pestaña del navegador y la copia de seguridad consiste en un archivo SQLite más un directorio pequeño. Esa 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 profesionalmente: una empresa que necesite un contrato de soporte, un requisito de cumplimiento que especifique el proveedor o funciones empresariales por las que ya paga. 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 queda en una posición intermedia poco clara. Es código del proveedor con una fracción del peso, 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 esté dispuesto a administrar la base de datos por su cuenta.
Si todavía decide qué otros servicios alojará el equipo, la lista general de opciones de autoalojamiento compara esta elección con los demás servicios que compiten por la misma RAM.
FAQ
¿Vaultwarden es suficientemente 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 claro. Ha sido revisado externamente: BSI encargó a los socios de seguridad de mgm que lo probaran entre febrero y mayo de 2024, y ERNW informó de una omisión de autenticación corregida en 1.32.5. Mantenga la versión actualizada, mantenga deshabilitada la página de administración o protégala con un ADMIN_TOKEN con hash Argon2, y sírvala únicamente 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 utilizó aproximadamente 58 MB en un contenedor, mientras que el despliegue estándar de Bitwarden utilizó cerca de 2,400 MB en 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 y deja memoria disponible.
¿Necesito una licencia de Bitwarden para autohospedarlo?
No para una bóveda individual gratuita. Ejecutar el servidor es gratuito. Se necesita un archivo de licencia para desbloquear las funciones premium individuales y un plan de organización de pago, y Families y Enterprise son los únicos planes de organización que Bitwarden permite autohospedar. Se descarga desde la bóveda web en la nube y se carga en la 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 migrar 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, y los elementos propiedad de una organización deben ser exportados por separado por un propietario. Planifique recrear la organización y volver a invitar a los usuarios en el nuevo servidor.