Alojar Vaultwarden en un VPS administrado: sus contraseñas en su servidor

Alojar Vaultwarden en un VPS administrado significa guardar sus contraseñas y las de su equipo en una máquina propia, que nuestros equipos mantienen actualizada y supervisan día y noche. Vaultwarden es software libre con licencia AGPL-3.0. Esta guía sigue su documentación oficial: la instalación con Docker Compose, HTTPS, el cierre de los registros, el token de administración, lo que protege la caja fuerte, la base de datos, los correos electrónicos, las copias de seguridad y las actualizaciones.

Simon Vasconcelos Lee Por Publicado el 8 de noviembre de 202615 minutos de lectura

Todas las guías

Lo esencial

  1. La licencia AGPL-3.0 permite ejecutar Vaultwarden libremente, en una empresa o en cualquier otro ámbito; si lo modifica, ofrece el código de su versión a quienes la usan.
  2. Instálelo con Docker Compose: una imagen, un puerto publicado en local y una carpeta de datos, detrás de un proxy inverso.
  3. HTTPS es indispensable para la caja fuerte web: sirva Vaultwarden con su propio nombre de dominio e indique ese nombre en DOMAIN.
  4. Cree su cuenta y cierre después los registros con SIGNUPS_ALLOWED: por defecto, cualquier persona que llegue a la instancia puede registrarse. Una contraseña maestra sólida y la doble autenticación protegen después la caja fuerte.
  5. Haga copia cada día de la base y de los archivos adjuntos, pruebe la restauración y actualice con docker compose pull.

Qué hace Vaultwarden

Vaultwarden es un servidor de gestión de contraseñas escrito en Rust, pensado para el autoalojamiento. Su wiki lo destina a particulares, familias y organizaciones de tamaño humano. La caja fuerte web se entrega dentro de sus imágenes Docker.

Implementa una API compatible con los clientes oficiales de Bitwarden, en el navegador, el ordenador y el teléfono. El README precisa que el proyecto no está asociado a Bitwarden ni a Bitwarden, Inc., y pide comunicarle directamente cualquier problema, sea cual sea el cliente utilizado, en lugar de dirigirse a los canales de asistencia oficiales.

El wiki enumera también lo que falta respecto al servidor oficial, como el inicio de sesión con clave de acceso, los roles personalizados y algunas políticas de empresa. Precisa que las funciones útiles sobre todo para las grandes organizaciones no son una prioridad del proyecto: lea esa lista si las necesita.

Lo que permite la licencia AGPL-3.0

Vaultwarden se publica bajo la GNU Affero General Public License, versión 3. El texto afirma un permiso ilimitado para ejecutar el programa sin modificar. Puede, por tanto, usar la imagen publicada por el proyecto para su empresa y su equipo, sin ninguna licencia que comprar.

El artículo 13 añade una condición propia de la AGPL: si modifica el programa, su versión debe ofrecer a todos los que la usan a distancia, por la red, el modo de obtener gratuitamente su código fuente.

La instalación con Docker Compose

El README recomienda las imágenes de contenedor. En un servidor con Docker instalado, cree una carpeta y coloque en ella este compose.yaml, tomado del README y del wiki:

compose.yaml
services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: unless-stopped
    environment:
      DOMAIN: "https://vault.example.com"
      SIGNUPS_ALLOWED: "true"
    volumes:
      - ./vw-data/:/data/
    ports:
      - 127.0.0.1:8000:80
Terminal
docker compose up -d

Su nombre de dominio apunta al servidor con registros A y AAAA, y los visitantes llegan por los puertos 80 y 443. Mientras el proxy inverso no esté en su sitio, la caja fuerte web sigue siendo inutilizable: pase directamente a la sección siguiente.

El proyecto no cifra ni la memoria ni el procesador; se presenta solo como una solución para los casos en que el servicio oficial, exigente en recursos, no conviene. El tamaño depende del número de cuentas y del volumen de los archivos adjuntos. En un VPS administrado, descríbanos su uso y le recomendamos el tamaño adecuado.

HTTPS y WebSocket: el proxy inverso

La caja fuerte web se apoya en la API Web Crypto, que los navegadores reservan a los contextos seguros: el README indica que solo funciona una vez activado HTTPS, y el wiki considera HTTPS «pretty much required», es decir, casi obligatorio. El proyecto recomienda un proxy inverso delante de Vaultwarden y desaconseja el TLS integrado en su framework Rocket.

Use un certificado reconocido, como los de Let’s Encrypt, que recomienda el wiki: con un certificado autofirmado, algunas plataformas rechazan la conexión. El certificado debe incluir su cadena completa, sin lo cual los dispositivos Android no se conectan.

Las notificaciones WebSocket, activas por defecto, avisan al navegador, a la aplicación de escritorio y a la extensión de que una entrada ha cambiado. Pasan por el puerto HTTP principal, y el proxy debe transmitir las cabeceras Upgrade y Connection. Las aplicaciones móviles usan las notificaciones nativas de su sistema, que se configuran aparte.

Con Caddy

El wiki aconseja mirar primero Caddy si no tiene preferencia: activa HTTPS por sí mismo, obtiene el certificado de Let’s Encrypt y admite WebSocket. El ajuste del wiki transmite además a Vaultwarden la dirección real del visitante, para sus registros:

Caddyfile
vault.example.com {
  reverse_proxy 127.0.0.1:8000 {
    header_up X-Real-IP {remote_host}
  }
}

Con Nginx y Certbot

Este bloque recoge el ejemplo de Nginx del wiki, reducido al puerto 80 para dejar que Certbot instale HTTPS:

Bloque Nginx
upstream vaultwarden-default {
  zone vaultwarden-default 64k;
  server 127.0.0.1:8000;
  keepalive 2;
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    ''      "";
}

server {
    listen 80;
    listen [::]:80;
    server_name vault.example.com;

    client_max_body_size 525M;

    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection $connection_upgrade;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    location / {
      proxy_pass http://vaultwarden-default;
    }
}

Certbot instala después el certificado y se encarga de renovarlo:

Terminal
sudo certbot --nginx

Comprobar WebSocket

Abra las herramientas de desarrollo del navegador, pestaña de red, filtro WS, y vuelva a conectarse a la caja fuerte: una respuesta 101 en /notifications/hub confirma la conexión. Otra prueba del wiki: abra la caja fuerte en dos navegadores, cambie el nombre de una entrada en uno y el cambio aparece enseguida en el otro.

Cerrar los registros

Por defecto, cualquier persona que llegue a su instancia puede crear en ella una cuenta. Es útil para su primera cuenta, y el wiki recomienda cerrar después los registros, para impedir que un atacante cree una.

  1. Abra su dirección HTTPS y cree su cuenta; después, conecte sus aplicaciones a esa dirección.
  2. Cambie SIGNUPS_ALLOWED a "false" en compose.yaml.
  3. Reinicie con docker compose up -d: una variable de entorno está ligada al contenedor, que debe recrearse para tenerla en cuenta.
compose.yaml, dentro de environment
SIGNUPS_ALLOWED: "false"

En cuanto guarda la configuración desde la página de administración, nace un archivo config.json en la carpeta de datos y prevalece sobre las variables de entorno. Los ajustes afectados se cambian entonces desde esa página: modificar compose.yaml ya no basta.

La página de administración y su token

La página /admin sirve para configurar Vaultwarden, ver y eliminar las cuentas y las organizaciones, retirar la doble autenticación de un usuario, invitar y leer el diagnóstico. Sin ADMIN_TOKEN, permanece desactivada: si no la necesita, déjela así.

El wiki recomienda encarecidamente activar HTTPS antes de usar esta página. El token hace de contraseña, y puede guardarse en forma de hash, en argon2id, en lugar de en claro en la configuración. Vaultwarden proporciona el comando: pide la contraseña dos veces y devuelve una cadena PHC.

Terminal
docker run --rm -it vaultwarden/server /vaultwarden hash

Coloque esa cadena en un archivo .env, junto a compose.yaml, entre comillas simples, y llámela después desde el servicio:

.env
VAULTWARDEN_ADMIN_TOKEN='$argon2id$...'
compose.yaml, dentro de environment
ADMIN_TOKEN: ${VAULTWARDEN_ADMIN_TOKEN}

Compruebe el resultado, reinicie y conéctese después a /admin con su contraseña, y no con la cadena PHC:

Terminal
docker compose config
docker compose up -d

Lo que protege la caja fuerte

La primera protección es la contraseña maestra. Los datos de la caja fuerte se cifran con claves personales o de organización: quien obtiene una copia de la base o fuerza una sesión debe aún descifrar esa contraseña para leerlos. Su solidez cuenta, por tanto, ante todo. Una sesión de administración permite por sí sola eliminar una cuenta o retirar una doble autenticación, sin dar acceso a los datos de la caja fuerte.

ProtecciónLo que aportaDónde se ajusta
Contraseña maestraMantiene los datos cifrados, aunque circule una copia de la baseCada usuario la elige, larga y exclusiva de esta caja fuerte
Doble autenticaciónSin ella, el wiki recuerda que adivinar una contraseña por fuerza bruta sigue siendo posible en teoríaEn cada cuenta; una política de organización puede exigirla
HTTPSCifra el trayecto entre el cliente y el servidorEl proxy inverso
Registros cerradosImpide que un desconocido se cree una cuentaSIGNUPS_ALLOWED
Pistas de contraseñaMostradas en la página, ayudarían a adivinar una contraseña; la versión 1.37.5 las mantiene ocultas por defectoDeje SHOW_PASSWORD_HINT en false; PASSWORD_HINTS_ALLOWED las elimina por completo
Límite de intentosFrena los intentos desde una misma dirección, en el inicio de sesión y en /adminLOGIN_RATELIMIT_SECONDS y ADMIN_RATELIMIT_SECONDS
Fail2banBloquea las direcciones tras demasiados fallos, algo que el wiki considera especialmente importante para una instancia públicaEn el servidor, a partir de un registro LOG_FILE

Prepare el olvido de la contraseña maestra antes de que ocurra: active el acceso de emergencia de su cuenta y, en una organización, la recuperación de cuenta, que requiere el correo electrónico configurado.

Tres ajustes más, tomados de la guía de refuerzo

SQLite, MariaDB o PostgreSQL

La misma imagen admite las tres bases de datos. El wiki describe SQLite como la más usada y la más probada, y la recomienda para la mayoría de los usos, salvo que necesite otra por una razón concreta.

BasePuesta en marchaCopia de seguridad
SQLiteNinguna: un archivo, vw-data/db.sqlite3El comando /vaultwarden backup, o la copia de la carpeta, con el servicio detenido
MariaDB o MySQLSu servidor de base de datos, y DATABASE_URL en mysql://Una exportación de la base, además de la carpeta vw-data
PostgreSQLSu servidor de base de datos, y DATABASE_URL en postgresql://Una exportación de la base, además de la carpeta vw-data
compose.yaml, dentro de environment (PostgreSQL)
DATABASE_URL: "postgresql://user_name:user_password@db_host:5432/vaultwarden"

Cree una base vacía y su usuario: al arrancar, Vaultwarden crea en ella su propio esquema. Una contraseña con caracteres especiales se escribe con codificación porcentual en esta dirección.

Tome esta decisión antes de llenar la caja fuerte. El wiki describe un paso de SQLite a PostgreSQL con pgloader, precisando que el proyecto no admite esa vía, que se hace bajo su responsabilidad y que empieza por una copia de seguridad.

Los correos electrónicos: la configuración SMTP

Vaultwarden arranca sin correo electrónico, pero varias funciones dependen de él: las invitaciones, la verificación de las direcciones, el envío de las pistas de contraseña, la doble autenticación por correo y la recuperación de cuenta.

En un VPS de Simafri, el envío pasa por un relé SMTP autenticado, en el puerto 587: la dirección de una cuenta de correo que ya tenga, o Simafri Suite. La contraseña se coloca en el archivo .env, como el token de administración:

compose.yaml, dentro de environment
SMTP_HOST: "smtp.example.com"
SMTP_FROM: "vault@example.com"
SMTP_PORT: "587"
SMTP_SECURITY: "starttls"
SMTP_USERNAME: "vault@example.com"
SMTP_PASSWORD: ${VAULTWARDEN_SMTP_PASSWORD}

Si no sale nada, el wiki propone probar la conexión al relé desde el servidor. El comando devuelve 0 cuando el relé responde:

Terminal
timeout 5 bash -c 'cat < /dev/null > /dev/tcp/smtp.example.com/587'; echo $?

Las copias de seguridad

El README recuerda que el proyecto no puede responsabilizarse de una pérdida de datos y recomienda encarecidamente copias de seguridad periódicas. El wiki las aconseja automáticas, con al menos una copia en otro lugar. Esto es lo que contiene la carpeta de datos con SQLite:

ElementoLo que guardaQué copiar
db.sqlite3Casi todos los datos: cuentas, organizaciones, cajas fuertesObligatorio
attachments/Los archivos adjuntos, almacenados fuera de la baseObligatorio
config.jsonLa configuración de la página de administración, con datos sensibles en claroRecomendado, cifrado
rsa_key*Las claves que firman las sesiones; perderlas desconecta a los usuariosRecomendado, cifrado
sends/Los archivos enviados con Send, efímeros por naturalezaOpcional
icon_cache/Los iconos de los sitios, que se descargan de nuevo cuando hace faltaOpcional

La base, con el servicio en marcha

Desde la versión 1.32.1, Vaultwarden sabe copiar él mismo su base SQLite, sin detener el servicio:

Terminal
docker exec -it vaultwarden /vaultwarden backup

El comando escribe un archivo db_AAAAMMJJ_HHMMSS.sqlite3 junto a la base, en vw-data. La imagen no contiene ni sqlite3 ni cron: el wiki aconseja programar la tarea en el servidor, al menos una vez al día. Quite entonces -it, porque una tarea programada no tiene terminal, y haga limpieza entre esos archivos, que se acumulan.

Toda la carpeta, con el servicio detenido

Cuando la base no se está usando, basta una simple copia de todos sus archivos. Es el método con el servicio detenido que el wiki da como ejemplo para Docker, y se lleva también los archivos adjuntos:

Terminal, en la carpeta del compose.yaml
docker compose down
tar -czf vaultwarden-$(date +%F).tar.gz vw-data
docker compose up -d

El wiki considera útil una capa de cifrado, sobre todo cuando la copia contiene el token de administración y los accesos SMTP, y cita rclone, restic y rustic para enviar las copias lejos. Con MariaDB o PostgreSQL, añada una exportación de la base a la carpeta vw-data.

El wiki pide no confiar únicamente en las instantáneas de disco, más delicadas de restaurar. Conserve, por tanto, estas copias propias de la aplicación: colocadas en el disco del servidor, entran también en sus copias de seguridad nocturnas.

Restaurar

  1. Detenga Vaultwarden.
  2. Sustituya cada archivo o carpeta de vw-data por su versión guardada.
  3. Si la base procede de /vaultwarden backup, llámela db.sqlite3 y elimine antes cualquier archivo db.sqlite3-wal existente: un registro que no corresponda puede corromper la base. Si procede de una copia directa, restaure juntos db.sqlite3 y su db.sqlite3-wal.
  4. Reinicie y compruebe que puede abrir la caja fuerte.

El wiki aconseja repetir este ejercicio de vez en cuando, conservando una copia de los datos en su sitio: así comprueba que una copia de seguridad funciona.

Las actualizaciones

El wiki da dos comandos, desde la carpeta del compose.yaml. La carpeta de datos se queda en su sitio:

Terminal
docker compose pull
docker compose up -d

Estas actualizaciones cuentan más que en otros casos. Las aplicaciones móviles y las extensiones del navegador se actualizan por sí solas, y el wiki advierte de que una diferencia de versión con el servidor puede provocar fallos repentinos. La caja fuerte web, entregada en la imagen, siempre queda acorde con su servidor.

El proyecto no tiene calendario de versiones: siga sus notas de versión y haga una copia de seguridad justo antes de cada actualización. Algunas incluyen correcciones de seguridad, como la 1.37.5 del 1 de noviembre de 2026, cuyas notas recomiendan actualizar cuanto antes. Esas notas advierten además de que, desde la 1.37.5, un valor de configuración no válido impide que Vaultwarden se inicie: revise su archivo de entorno antes de actualizar. La página de diagnóstico de /admin indica si existe una versión más reciente.

Quién hace qué en un VPS administrado

El autoalojamiento exige mantener el servidor además de la aplicación. En un VPS administrado, nuestros equipos se encargan del servidor y siguen su instancia de forma proactiva; Vaultwarden sigue siendo su software, con sus ajustes y sus datos.

TemaNuestros equiposUsted
El servidorActualizaciones del sistema y de seguridad, con intervenciones en el servidor incluidasEl momento que mejor convenga a su actividad
La supervisiónServidor vigilado las 24 horas del día, los 7 días de la semana, con intervención sin esperar su llamadaLa lectura de los registros de su instancia
VaultwardenSeguimiento proactivo: errores, lentitud y espacio en disco detectados, corrección recomendadaSu instalación, sus actualizaciones y sus ajustes, que aplica usted o su asistente de IA
Las cuentas y la caja fuerteEl servidor que las soporta, vigilado y con copias de seguridadLos usuarios, las invitaciones, las contraseñas maestras y la doble autenticación
Las copias de seguridadCada noche, cifradas y guardadas fuera de la máquina; restauración incluidaLas copias propias de Vaultwarden, y la petición de restauración, cuando la necesite
La migraciónSu servidor actual migrado, gratisEl momento del cambio

Si prefiere que nuestros equipos intervengan en la propia aplicación, ese servicio se factura por horas o a precio cerrado, con un presupuesto comunicado antes de la intervención.

Vaultwarden, en un servidor que cuidamos por usted

Con un VPS administrado de Simafri, nuestros equipos mantienen actualizado el servidor de su instancia de Vaultwarden, lo vigilan día y noche e intervienen sin esperar su llamada; también siguen su instancia de forma proactiva y le recomiendan las correcciones útiles, que aplica usted o su asistente de IA. Las copias de seguridad se cifran cada noche y se guardan fuera de la máquina, su restauración está incluida, y la migración de su servidor actual es gratuita.

Descubrir los VPS administrados

Preguntas frecuentes

¿Vaultwarden es gratuito para una empresa?

Sí. Vaultwarden tiene licencia AGPL-3.0: puede ejecutarlo en su empresa sin ninguna licencia que comprar. Si lo modifica, su versión debe ofrecer su código fuente a quienes la usan por la red. Queda el coste del servidor que lo ejecuta.

¿Vaultwarden funciona con las aplicaciones de Bitwarden?

Sí. El README presenta Vaultwarden como compatible con los clientes oficiales de Bitwarden, precisando a la vez que el proyecto no está asociado a Bitwarden ni a Bitwarden, Inc. Un problema se comunica, por tanto, al proyecto Vaultwarden, sea cual sea el cliente utilizado.

¿Cómo instalar Vaultwarden con Docker Compose?

Cree un compose.yaml con la imagen vaultwarden/server, una carpeta de datos y el puerto publicado en 127.0.0.1, y ejecute docker compose up -d. Coloque después delante un proxy inverso en HTTPS: sin HTTPS, la caja fuerte web no funciona. Indique también su dirección en DOMAIN.

¿Cómo desactivar los registros en Vaultwarden?

Una vez creada su cuenta, cambie SIGNUPS_ALLOWED a false en compose.yaml y reinicie con docker compose up -d. Las organizaciones aún pueden invitar: INVITATIONS_ALLOWED en false retira esa posibilidad. Si la página de administración ya ha guardado su configuración, haga este ajuste desde ella.

¿Cómo configurar el token de administración de Vaultwarden?

Ejecute el comando vaultwarden hash, que devuelve una cadena argon2id, y colóquela en ADMIN_TOKEN, desde un archivo .env con Docker Compose. Después se conecta a /admin con su contraseña. Sin ADMIN_TOKEN, la página permanece desactivada.

¿Qué protege una caja fuerte de Vaultwarden?

Primero, la contraseña maestra: los datos están cifrados, y una copia de la base solo se lee si se descifra esa contraseña. A ella se suman la doble autenticación, HTTPS, los registros cerrados, un token de administración con hash y copias de seguridad cifradas.

¿Cómo hacer copia de seguridad de Vaultwarden?

Con SQLite, ejecute cada día el comando /vaultwarden backup en el contenedor, y copie también la carpeta attachments, config.json y los archivos rsa_key. Con MariaDB o PostgreSQL, añada una exportación de la base. Pruebe la restauración con regularidad.

¿Un VPS administrado cubre Vaultwarden?

Un VPS administrado cubre el servidor: sistema, seguridad, supervisión y copias de seguridad. Nuestros equipos siguen también su instancia de forma proactiva y le recomiendan las correcciones útiles, que aplica usted. Una intervención en la aplicación se factura por horas o a precio cerrado.

Fuentes y documentación oficial

Contáctenos