- Vaultwarden es un servidor no oficial compatible con los clientes de Bitwarden.
- La carpeta /data debe conservarse mediante un volumen persistente.
- El acceso desde otros dispositivos requiere una dirección HTTPS correctamente configurada.
- Desactiva los registros abiertos después de crear las cuentas necesarias.
Vaultwarden permite alojar un gestor de contraseñas compatible con los clientes de Bitwarden dentro de tu propio servidor. De esta forma, puedes decidir dónde se almacena la información, quién puede acceder al servicio y cómo se realizan las copias de seguridad.
Conviene aclarar desde el principio que Vaultwarden no es el servidor oficial de Bitwarden. Es una implementación independiente, comunitaria y escrita en Rust que reproduce buena parte de su API. Gracias a ello, puede utilizarse con las aplicaciones móviles, programas de escritorio y extensiones oficiales de Bitwarden.
Autoalojar el servicio proporciona más control, pero no garantiza automáticamente una mayor seguridad. A partir de ese momento eres responsable de instalar actualizaciones, proteger el acceso, revisar los registros, mantener HTTPS y comprobar que las copias puedan restaurarse.
Qué necesitas para instalar Vaultwarden con Docker

Antes de comenzar necesitas un sistema compatible con Docker que permanezca encendido cuando quieras sincronizar las contraseñas. Puede ser un servidor Linux, un NAS, un miniordenador o una Raspberry Pi con una arquitectura admitida por la imagen.
También necesitarás:
- Docker Engine instalado y funcionando.
- El complemento actual de Docker Compose.
- Una carpeta donde guardar permanentemente los datos.
- Acceso a una terminal con permisos para administrar Docker.
- Un método de acceso seguro si utilizarás el servicio desde otros dispositivos.
No existe una cifra universal de memoria o almacenamiento para todas las instalaciones. El consumo depende del número de usuarios, los archivos adjuntos, el tamaño del almacén y otros servicios ejecutados en el mismo equipo. Para un uso doméstico suele ser una aplicación ligera, pero debes reservar espacio suficiente para los datos y sus copias de seguridad.
Comprueba la instalación mediante:
docker --version
docker compose version
Si ambos comandos muestran una versión, puedes continuar.
Cómo instalar Vaultwarden con Docker Compose

Crea una carpeta dedicada y entra en ella:
mkdir vaultwarden
cd vaultwarden
Dentro de la carpeta, crea un archivo llamado compose.yml con esta configuración inicial:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
SIGNUPS_ALLOWED: "true"
volumes:
- ./vw-data:/data
ports:
- "127.0.0.1:8080:80"
El montaje ./vw-data:/data es imprescindible. La carpeta /data contiene la base de datos, los adjuntos, la configuración y las claves utilizadas por el servidor. Si eliminas el contenedor sin conservar esta carpeta, perderás la información almacenada.
La dirección 127.0.0.1 hace que esta instalación inicial solamente responda en el propio servidor. Es una configuración adecuada para probar Vaultwarden sin exponer todavía el puerto a la red.
Inicia el contenedor:
docker compose up -d
Comprueba su estado:
docker compose ps
docker compose logs --tail=100 vaultwarden
Desde el mismo equipo podrás abrir:
http://localhost:8080
El acceso mediante localhost sirve para completar la configuración inicial. Para conectarte desde otro ordenador, una aplicación móvil o una extensión necesitarás preparar una dirección segura mediante HTTPS.
Cómo crear la primera cuenta y cerrar el registro
Abre la interfaz web, crea la primera cuenta y comprueba que puedes iniciar sesión. Utiliza una contraseña maestra larga, única y fácil de recordar, ya que protege el acceso a todo el almacén.
Después de crear las cuentas necesarias, edita compose.yml y cambia:
SIGNUPS_ALLOWED: "true"
por:
SIGNUPS_ALLOWED: "false"
Aplica el cambio recreando el contenedor:
docker compose up -d
Vaultwarden permite por defecto que usuarios anónimos creen cuentas. Mantener el registro abierto innecesariamente facilita que terceras personas ocupen espacio o utilicen tu servidor sin permiso.
Si habilitas posteriormente el panel de administración, podrás enviar invitaciones incluso con el registro público desactivado.
Por qué Vaultwarden necesita HTTPS
El almacén web utiliza la Web Crypto API del navegador. Estas funciones criptográficas solamente están disponibles normalmente en contextos seguros, como HTTPS o localhost.
Por este motivo, abrir http://192.168.1.50:8080 desde otro ordenador puede mostrar errores aunque el contenedor esté funcionando. Publicar el puerto en la red no sustituye la configuración de HTTPS.
Existen tres formas habituales de utilizar Vaultwarden:
- Solamente en el servidor: acceso mediante
localhost, útil para pruebas. - En una red privada o VPN: acceso restringido, pero manteniendo un certificado HTTPS válido.
- Desde Internet: dominio, proxy inverso, certificado válido y firewall correctamente configurado.
No tienes que abrir Vaultwarden públicamente para utilizarlo fuera de casa. Una VPN puede limitar el acceso a tus dispositivos autorizados, aunque la dirección utilizada por los clientes debe seguir disponiendo de un certificado que estos reconozcan.
Cómo configurar HTTPS con Caddy

Caddy es una de las opciones más sencillas porque puede solicitar y renovar automáticamente certificados mediante ACME. Para utilizar un certificado público, el dominio debe resolver hacia tu servidor y los puertos necesarios deben ser accesibles.
Una configuración conjunta de Vaultwarden y Caddy puede utilizar este archivo compose.yml:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
DOMAIN: "https://vault.example.com"
SIGNUPS_ALLOWED: "false"
volumes:
- ./vw-data:/data
caddy:
image: caddy:2
container_name: vaultwarden-caddy
restart: unless-stopped
depends_on:
- vaultwarden
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy-data:/data
- ./caddy-config:/config
Sustituye vault.example.com por tu dominio real. Después crea un archivo llamado Caddyfile:
vault.example.com {
reverse_proxy vaultwarden:80 {
header_up X-Real-IP {remote_host}
}
}
Levanta los servicios:
docker compose up -d
Caddy enviará las peticiones al contenedor mediante la red interna creada por Compose. La configuración actual puede gestionar también las notificaciones WebSocket a través del mismo destino, por lo que no es necesario publicar otro puerto de Vaultwarden.
La variable DOMAIN debe contener la URL externa exacta, incluyendo https://. Una dirección incorrecta puede provocar fallos con archivos adjuntos, enlaces, autenticación o clientes.
Cómo conectar las aplicaciones oficiales de Bitwarden
En la pantalla de acceso de la extensión, la aplicación móvil o el programa de escritorio, abre el selector del servidor y elige la opción Self-hosted.
Introduce la dirección completa:
https://vault.example.com
Guarda la configuración antes de iniciar sesión. Cada cliente debe apuntar al mismo servidor para que los cambios se sincronicen correctamente.
Si utilizas un certificado emitido por una autoridad privada, tendrás que instalar y confiar correctamente en esa autoridad en todos los dispositivos. Para evitar problemas de compatibilidad, es preferible utilizar un certificado público válido o una solución privada cuya cadena de confianza controles correctamente.
Una vez conectado el cliente, puedes importar las contraseñas de Chrome a Vaultwarden y comprobar que aparecen en todos tus dispositivos.
Cómo proteger el panel de administración
Vaultwarden dispone de un panel opcional en /admin. Desde él se pueden revisar usuarios, organizaciones, diagnósticos y determinadas opciones del servidor.
Si no necesitas el panel, lo más seguro es dejarlo desactivado. Para habilitarlo debes configurar ADMIN_TOKEN. En lugar de guardar una contraseña en texto plano, genera un hash Argon2id:
docker run --rm -it vaultwarden/server /vaultwarden hash
El comando solicitará dos veces la contraseña y devolverá una cadena que comienza por $argon2id$.
Una forma cómoda de evitar problemas con los signos de dólar es guardarla en un archivo .env situado junto a compose.yml:
VAULTWARDEN_ADMIN_TOKEN='$argon2id$v=19$m=...'
Después añade al servicio:
environment:
ADMIN_TOKEN: "${VAULTWARDEN_ADMIN_TOKEN}"
Si escribes directamente el hash dentro de compose.yml, debes duplicar cada signo de dólar como $$ para impedir que Docker Compose intente interpretarlo como una variable.
Comprueba la configuración procesada mediante:
docker compose config
El panel debe utilizarse únicamente mediante HTTPS. Si es posible, restringe su ruta a la red local, una VPN o determinadas direcciones IP.
Ten en cuenta que, después de guardar opciones desde /admin, Vaultwarden crea config.json. Sus valores tienen prioridad sobre las variables de entorno equivalentes. Esta precedencia explica muchos casos en los que editar Compose parece no producir ningún cambio.
Medidas esenciales para proteger Vaultwarden
La seguridad no termina al activar HTTPS. Como mínimo, aplica estas medidas:
- Desactiva el registro abierto mediante
SIGNUPS_ALLOWED=false. - Utiliza una contraseña maestra única y resistente.
- Activa autenticación en dos pasos para todas las cuentas.
- Guarda el código de recuperación de la autenticación en otro lugar seguro.
- Actualiza regularmente la imagen y el sistema anfitrión.
- No montes dentro del contenedor carpetas innecesarias ni el socket de Docker.
- Limita mediante el firewall los puertos realmente necesarios.
- No expongas públicamente la base de datos ni la carpeta
vw-data.
Fail2ban puede bloquear direcciones que acumulen intentos de acceso fallidos, pero debe configurarse con cuidado cuando existe un proxy inverso. Caddy o Nginx deben transmitir la IP real; de lo contrario, Fail2ban podría bloquear la dirección del propio proxy.
También puedes desactivar la visualización de pistas de contraseñas. Estas pistas pueden facilitar ataques de adivinación cuando el servidor es accesible públicamente.
Para profundizar en estas prácticas puedes consultar cómo utilizar gestores de contraseñas de forma segura.
Cómo configurar las notificaciones por correo
La configuración SMTP permite enviar invitaciones, verificaciones y avisos. Necesitarás indicar el servidor, el remitente, el puerto, el método de seguridad y las credenciales proporcionadas por tu servicio de correo.
No confundas el correo SMTP con una copia del almacén. Tampoco debes confiar en él como única forma de recuperar una cuenta. Si olvidas la contraseña maestra y no dispones de otro método de recuperación previamente configurado, puedes perder el acceso a los datos cifrados.
Después de guardar la configuración, envía un mensaje de prueba y revisa los registros si no llega. Comprueba también las carpetas de correo no deseado y las restricciones del proveedor SMTP.
Cómo realizar una copia completa de Vaultwarden
La base de datos SQLite almacena usuarios, elementos, dispositivos y organizaciones, pero no contiene todos los archivos. Los adjuntos y determinados envíos se guardan en directorios separados.
Una copia completa debe considerar:
db.sqlite3o una copia consistente de la base de datos.- La carpeta
attachments. - La carpeta
sends, si quieres conservar esos archivos. - El archivo
config.json, si utilizas el panel. - Los archivos
rsa_key*. - Los archivos de Compose, Caddy y sus variables.
Para una copia sencilla y consistente puedes detener temporalmente Vaultwarden y archivar la carpeta:
docker compose stop vaultwarden
tar -czf vaultwarden-backup-$(date +%F).tar.gz vw-data compose.yml Caddyfile .env
docker compose start vaultwarden
El archivo puede contener el token de administración y credenciales SMTP. Cífralo antes de copiarlo a otro ordenador o almacenamiento remoto.
Si no quieres detener el servicio, Vaultwarden incluye un comando que utiliza el mecanismo de copia de SQLite:
docker exec vaultwarden /vaultwarden backup
Este comando protege la base de datos, pero todavía debes respaldar los adjuntos, la configuración y las claves. Automatiza las copias, conserva al menos una fuera del servidor y prueba periódicamente una restauración.
Cómo actualizar Vaultwarden con Docker
Crea una copia comprobada antes de actualizar. Después ejecuta:
docker compose pull
docker compose up -d
Comprueba el estado y los últimos mensajes:
docker compose ps
docker compose logs --tail=100 vaultwarden
Docker descargará la imagen y recreará el contenedor conservando vw-data. No utilices comandos de limpieza global sin revisar previamente qué contenedores, imágenes y redes eliminarán.
En instalaciones donde la estabilidad sea crítica, puedes fijar una versión concreta de la imagen en lugar de utilizar siempre latest. Así podrás revisar las notas de publicación y decidir cuándo aplicar cada actualización.
Errores frecuentes al instalar Vaultwarden con Docker

La interfaz funciona en localhost, pero no desde otro ordenador
El puerto está limitado a 127.0.0.1 o el navegador rechaza las funciones criptográficas al acceder mediante HTTP. Configura una dirección HTTPS antes de utilizar el servicio desde otros dispositivos.
El cliente oficial no conecta con el servidor
Selecciona el entorno Self-hosted e introduce la dirección exacta con https://. Comprueba el certificado, el DNS, el proxy y la variable DOMAIN.
El contenedor arranca, pero los datos desaparecen al recrearlo
El volumen no está montado correctamente. Verifica que ./vw-data:/data aparezca en la configuración y que estés ejecutando Compose desde la carpeta esperada.
No puedo crear otra cuenta
Si SIGNUPS_ALLOWED está en false, el comportamiento es correcto. Envía una invitación desde el panel o habilita temporalmente el registro solamente mientras creas la cuenta.
El hash de ADMIN_TOKEN no funciona
Revisa la interpolación de los signos $. Utiliza un archivo .env con comillas simples o duplica los signos si insertas la cadena directamente en Compose.
Las variables de entorno parecen ignorarse
Comprueba si existe vw-data/config.json. Las opciones guardadas desde el panel pueden prevalecer sobre las variables definidas en compose.yml.
Los certificados funcionan en el navegador, pero no en el móvil
El dispositivo puede no confiar en toda la cadena del certificado. Utiliza una autoridad reconocida o instala correctamente tu autoridad privada y sus certificados.
Los archivos adjuntos fallan
Comprueba que DOMAIN coincida con la dirección externa y que el proxy permita el tamaño de petición necesario. Revisa también el espacio disponible y los permisos de vw-data.
Vaultwarden no puede escribir dentro de vw-data
La carpeta del anfitrión tiene permisos incompatibles. Revisa el propietario y los permisos a partir del error mostrado en los registros. No utilices chmod 777 como solución permanente.
Fail2ban bloquea una dirección incorrecta
El proxy no está transmitiendo la IP real o Fail2ban está leyendo el campo equivocado. Configura correctamente X-Real-IP o la cabecera correspondiente a tu proxy.
La copia restaurada no contiene los adjuntos
Solamente se respaldó SQLite. Restaura también las carpetas attachments y sends, además de la configuración y las claves RSA.
Vaultwarden permite utilizar organizaciones y colecciones para compartir contraseñas familiares mediante los clientes compatibles. Antes de incorporar más usuarios, comprueba que HTTPS, la autenticación en dos pasos y las copias de seguridad funcionan correctamente.
El resultado puede ser un gestor de contraseñas rápido, privado y adaptable, pero su seguridad depende del mantenimiento. El control sobre el servidor solamente supone una ventaja cuando se acompaña de actualizaciones, acceso restringido y una estrategia de recuperación probada.
Soy un apasionado de la tecnología que ha convertido sus intereses «frikis» en profesión. Llevo más de 10 años de mi vida utilizando tecnología de vanguardia y trasteando todo tipo de programas por pura curiosidad. Ahora me he especializado en tecnología de ordenador y videojuegos. Esto es por que desde hace más de 5 años que trabajo redactando para varias webs en materia de tecnología y videojuegos, creando artículos que buscan darte la información que necesitas con un lenguaje entendible por todos.
Si tienes cualquier pregunta, mis conocimientos van desde todo lo relacionado con el sistema operativo Windows así como Android para móviles. Y es que mi compromiso es contigo, siempre estoy dispuesto a dedicarte unos minutos y ayudarte a resolver cualquier duda que tengas en este mundo de internet.