Cómo instalar Vaultwarden con Docker: Guía completa para auto-hospedar tus contraseñas

Última actualización: 31/08/2026

  • 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.
Cómo instalar Vaultwarden con Docker Compose

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.

Related article:
Los mejores gestores de contraseñas

Qué necesitas para instalar Vaultwarden con Docker

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

Cómo instalar Vaultwarden con Docker

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.

Contenido exclusivo - Clic Aquí  ¿Cómo cambio mis configuraciones para evitar la conexión con desconocidos en TikTok Global?

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

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.

Contenido exclusivo - Clic Aquí  One UI no muestra notificaciones: causas, fallos y soluciones

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.sqlite3 o 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.

Contenido exclusivo - Clic Aquí  Cómo conectar Dify con Google Sheets y Google Drive

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

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.

Cómo compartir contraseñas de forma segura en tu familia sin enviar archivos
Related article:
Cómo compartir contraseñas de forma segura en tu familia sin enviar archivos