eco Principiante Tutorial/Cómo hacer

*Option 1

calendar_month May 12, 2026 schedule 9 min de lectura visibility 47 vistas
Установка и настройка Vaultwarden на VPS: селф-хостинг менеджера паролей с Docker и SSL
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Instalación y configuración de Vaultwarden en un VPS: self-hosting de un gestor de contraseñas con Docker y SSL

TL;DR

En esta guía se analiza el proceso de despliegue de Vaultwarden (una implementación ligera de Bitwarden en Rust) en un servidor virtual con Ubuntu 24.04/26.04. Configuraremos contenedores Docker, aseguraremos la obtención automática de certificados SSL a través de Caddy y organizaremos un sistema de copias de seguridad periódicas. El resultado será un gestor de contraseñas totalmente privado y seguro, disponible en todos sus dispositivos sin cuotas de suscripción ni limitaciones de proveedores de la nube.

  • Stack: Docker, Docker Compose, Caddy (Reverse Proxy), Vaultwarden.
  • Seguridad: HTTPS automático (Let's Encrypt), Fail2ban, aislamiento de contenedores.
  • Dificultad: Media (se requieren habilidades básicas de terminal Linux).
  • Tiempo de ejecución: 30–45 minutos.
  • Resultado: Servidor de contraseñas propio con soporte para 2FA, archivos adjuntos y organización de grupos.

1. Qué estamos configurando y por qué

Esquema: 1. Qué estamos configurando y por qué
Esquema: 1. Qué estamos configurando y por qué

En 2026, la cuestión de la seguridad de los datos personales es más crítica que nunca. Los gestores de contraseñas en la nube populares (LastPass, 1Password, Bitwarden Cloud) siguen siendo objetivos de ataques de hackers a gran escala. El self-hosting es una forma de recuperar el control sobre sus secretos. Instalaremos Vaultwarden.

Vaultwarden es una implementación alternativa de la API de Bitwarden escrita en el lenguaje Rust. Es totalmente compatible con todas las aplicaciones oficiales de Bitwarden (iOS, Android, extensiones de navegador, escritorio), pero consume decenas de veces menos memoria RAM que el servidor original en .NET. Esto lo convierte en el candidato ideal para ejecutarse en un VPS económico.

Lo que obtendrá al final:

  • Control total sobre la base de datos de contraseñas.
  • Sin límites en el número de dispositivos y usuarios.
  • Soporte para funciones de la versión Premium de Bitwarden (2FA mediante YubiKey, generador TOTP, informes de seguridad) de forma totalmente gratuita.
  • Sincronización entre todos los dispositivos a través de su propio dominio.

La alternativa es utilizar Bitwarden Unified oficial o versiones en la nube, pero Vaultwarden gana por rendimiento y facilidad de mantenimiento en instalaciones pequeñas y medianas.

2. Qué configuración de VPS se necesita para esta tarea

Esquema: 2. Qué configuración de VPS se necesita para esta tarea
Esquema: 2. Qué configuración de VPS se necesita para esta tarea

Vaultwarden es extremadamente poco exigente con los recursos. La carga principal no la genera la aplicación en sí, sino los servicios asociados: el demonio de Docker y el Reverse Proxy. Para un funcionamiento cómodo del sistema para 5-10 usuarios, las características mínimas son suficientes.

Recurso Requisitos mínimos Requisitos recomendados
Procesador (CPU) 1 núcleo (Shared) 1-2 núcleos (Dedicated thread)
Memoria RAM 512 MB 1-2 GB (para estabilidad de Docker y caché)
Disco (SSD/NVMe) 10 GB 20 GB+ (considerando backups y logs)
SO Ubuntu 22.04 LTS Ubuntu 24.04 / 26.04 LTS o Debian 12

Si planea usar Vaultwarden solo para usted y su familia, puede contratar un VPS de nivel de entrada. Esto será más que suficiente para una respuesta instantánea de la interfaz. Si se prevé el almacenamiento de una gran cantidad de archivos adjuntos (escaneos de documentos, llaves), vale la pena prestar atención al espacio en disco o a la posibilidad de conectar un almacenamiento de objetos externo (S3).

Ubicación del servidor: Dado que la latencia es crítica para la sincronización de aplicaciones móviles, elija un centro de datos cercano a su lugar de residencia principal. Sin embargo, dado el pequeño volumen de datos transmitidos, incluso un servidor en otro continente funcionará de manera aceptable.

Dedicated vs VPS: Para un gestor de contraseñas, un servidor dedicado es excesivo, a menos que esté desplegando una infraestructura para cientos de empleados de una empresa con requisitos estrictos de aislamiento de recursos. Para el 99% de las tareas, la virtualización KVM en un VPS es suficiente.

3. Preparación del servidor

Esquema: 3. Preparación del servidor
Esquema: 3. Preparación del servidor

Antes de proceder con la instalación, es necesario proteger el servidor de forma básica. Suponemos que tiene una instalación limpia de Ubuntu 24.04/26.04.

En primer lugar, actualizaremos los índices de paquetes y el sistema en sí:


sudo apt update && sudo apt upgrade -y

Crearemos un nuevo usuario con privilegios sudo para no trabajar como root (reemplace user por su nombre):


adduser user
usermod -aG sudo user

Configuraremos el cortafuegos básico (UFW). Necesitamos abrir los puertos para SSH, HTTP y HTTPS:


sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

Instalaremos Fail2ban para proteger contra ataques de fuerza bruta en SSH:


sudo apt install fail2ban -y

La configuración por defecto ya protege el SSH, bloqueando las IP tras varios intentos fallidos de inicio de sesión. Esto es fundamental para un servidor donde se guardan sus contraseñas.

4. Instalación de Docker y utilidades necesarias

Esquema: 4. Instalación de Docker y utilidades necesarias
Esquema: 4. Instalación de Docker y utilidades necesarias

Vaultwarden se distribuye oficialmente como una imagen de Docker, lo que simplifica enormemente su despliegue y actualización. Utilizaremos el método de instalación moderno a través del repositorio oficial de Docker.

Eliminaremos las versiones antiguas si las hubiera:


for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

Instalaremos las dependencias y añadiremos la clave GPG de Docker:


sudo apt update
sudo apt install ca-certificates curl gnupg -y
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

Añadiremos el repositorio a las fuentes de apt:


echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

Ahora instalaremos el propio Docker y el plugin Docker Compose:


sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Añadiremos a nuestro usuario al grupo docker para ejecutar contenedores sin sudo (será necesario reiniciar la sesión):


sudo usermod -aG docker $USER

5. Despliegue de Vaultwarden mediante Docker Compose

Esquema: 5. Despliegue de Vaultwarden mediante Docker Compose
Esquema: 5. Despliegue de Vaultwarden mediante Docker Compose

Crearemos un directorio de trabajo para nuestro proyecto. Esto ayudará a mantener todas las configuraciones y datos en un solo lugar, lo que facilita las copias de seguridad.


mkdir ~/vaultwarden && cd ~/vaultwarden

Crearemos el archivo docker-compose.yml. En este archivo describiremos dos servicios: el propio Vaultwarden y Caddy, que actuará como servidor web y gestor de certificados SSL.


nano docker-compose.yml

Inserte el siguiente contenido (estudie atentamente los comentarios):


services:
  vaultwarden:
    image: vaultwarden/server:latest
    container_name: vaultwarden
    restart: always
    environment:
      - SIGNUPS_ALLOWED=true # Permitir registro (desactivar tras crear la cuenta)
      - ADMIN_TOKEN=your_strong_random_token # Token para acceder al panel de administración
      - DOMAIN=https://pass.yourdomain.com # Su dominio
    volumes:
      - ./vw-data:/data

  caddy:
    image: caddy:2-alpine
    container_name: caddy
    restart: always
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile
      - ./caddy-data:/data
      - ./caddy-config:/config
    depends_on:
      - vaultwarden
Importante: Reemplace your_strong_random_token por una cadena aleatoria larga. Puede generarla con el comando openssl rand -base64 32. Este token le permitirá entrar en el panel de control del servidor.

6. Configuración de Reverse Proxy y SSL a través de Caddy

Esquema: 6. Configuración de Reverse Proxy y SSL a través de Caddy
Esquema: 6. Configuración de Reverse Proxy y SSL a través de Caddy

Caddy es un servidor web moderno que obtiene y renueva automáticamente los certificados SSL de Let's Encrypt o ZeroSSL. Esto nos evita tener que configurar manualmente certbot y tareas cron.

Crearemos el archivo de configuración Caddyfile en el mismo directorio:


nano Caddyfile

Añada en él las siguientes líneas (reemplace pass.yourdomain.com por su dominio real):


pass.yourdomain.com {
    # Registro (opcional)
    log {
        output file /data/access.log
    }

    # Redirección de peticiones al contenedor Vaultwarden
    reverse_proxy vaultwarden:80 {
       # Configuración de cabeceras para el correcto funcionamiento de WebSocket (necesario para la sincronización instantánea)
       header_up X-Real-IP {remote_host}
    }
}

Antes de comenzar, asegúrese de que el registro A de su dominio en el panel de control de DNS apunte a la dirección IP de su VPS. Ahora iniciamos todo el conjunto:


docker compose up -d

Docker descargará las imágenes e iniciará los contenedores. Caddy se comunicará automáticamente con Let's Encrypt y emitirá el certificado. En 1-2 minutos, su gestor de contraseñas estará disponible en la dirección https://pass.yourdomain.com.

7. Configuración avanzada y panel de administración

Esquema: 7. Configuración avanzada y panel de administración
Esquema: 7. Configuración avanzada y panel de administración

Después del primer inicio de sesión y registro de su cuenta, se recomienda encarecidamente restringir el registro de nuevos usuarios para evitar que personas ajenas puedan utilizar su servidor.

Vaya al panel de administración en la dirección: https://pass.yourdomain.com/admin. Para entrar, utilice el ADMIN_TOKEN que especificó en docker-compose.yml.

Configuraciones recomendadas en el panel de administración:

  • General settings: Desactive "Allow new signups" si ya ha creado todas las cuentas necesarias.
  • SMTP Settings: Configure el envío de correos (por ejemplo, a través de SendGrid, Mailgun o un buzón de correo personal). Esto es necesario para la verificación de e-mail y la recepción de notificaciones sobre nuevos inicios de sesión.
  • Security settings: Active "Duo" o "YubiKey" si planea utilizar llaves de hardware.

Para que los cambios surtan efecto (si los cambia a través del archivo y no del panel de administración), debe reiniciar el contenedor:


docker compose up -d --force-recreate

8. Copias de seguridad y mantenimiento

Esquema: 8. Copias de seguridad y mantenimiento
Esquema: 8. Copias de seguridad y mantenimiento

La base de datos de Vaultwarden se almacena por defecto en SQLite (archivo db.sqlite3 en la carpeta vw-data). Esto es conveniente, ya que para realizar una copia de seguridad basta con copiar un solo archivo. Sin embargo, debe hacerse correctamente para evitar obtener una captura "corrupta" durante la escritura en la base de datos.

Script sencillo para copias de seguridad:

Crearemos el script backup.sh:


#!/bin/bash
BACKUP_DIR="/home/user/backups"
TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
SOURCE_DIR="/home/user/vaultwarden/vw-data"

mkdir -p $BACKUP_DIR

# Usamos sqlite3 .backup para copiar de forma segura la base de datos en ejecución
sqlite3 $SOURCE_DIR/db.sqlite3 ".backup '$BACKUP_DIR/db_$TIMESTAMP.sqlite3'"

# Archivamos los adjuntos y configuraciones
tar -czf $BACKUP_DIR/attachments_$TIMESTAMP.tar.gz $SOURCE_DIR/attachments

# Eliminamos las copias de seguridad antiguas (más de 30 días)
find $BACKUP_DIR -type f -mtime +30 -delete

No olvide instalar sqlite3 (sudo apt install sqlite3) y otorgar permisos de ejecución al script (chmod +x backup.sh). Configure la ejecución programada mediante crontab -e:


0 3   * /home/user/vaultwarden/backup.sh

Este cron realizará una copia de seguridad cada noche a las 3:00. Lo ideal es configurar el envío de estos archivos a otro almacenamiento (S3, Google Drive u otro VPS) utilizando rclone.

9. Troubleshooting + FAQ

Error de SSL: Caddy no puede obtener el certificado

Compruebe si los puertos 80 y 443 están abiertos en UFW (sudo ufw status). Asegúrese también de que el dominio esté correctamente delegado y que los registros DNS se hayan actualizado. En los registros de Caddy puede ver la causa exacta: docker logs caddy.

Vaultwarden consume demasiada memoria

Normalmente, Vaultwarden consume entre 50 y 100 MB de RAM. Si ve valores superiores a 500 MB, compruebe el número de conexiones WebSocket activas o los registros en busca de errores de reinicio cíclico. Para VPS pequeños, asegúrese de tener activado el archivo Swap.

¿Cómo actualizar Vaultwarden a la última versión?

La actualización se realiza con tres comandos:


docker compose pull
docker compose up -d
docker image prune -f

¿Qué configuración de VPS es el mínimo adecuado?

Un núcleo de CPU y 512 MB de RAM son suficientes como mínimo. Sin embargo, para un funcionamiento fluido de Ubuntu y Docker en 2026, se recomienda tener al menos 1 GB de memoria RAM. Esto evitará que se active el OOM Killer (Out of Memory) durante la actualización de paquetes u operaciones pesadas con la base de datos.

¿Qué elegir: VPS o dedicado para esta tarea?

Para el auto-alojamiento de un gestor de contraseñas, un VPS es la opción óptima. Obtiene flexibilidad, escalabilidad sencilla y la posibilidad de realizar instantáneas (snapshots) de todo el sistema. Un servidor dedicado solo es necesario si es paranoico respecto a la vecindad con otras máquinas virtuales en el mismo hipervisor o si el número de usuarios supera las 500 personas.

Olvidé la contraseña de administrador (Admin Token), ¿qué hacer?

Puede cambiarlo en docker-compose.yml en la sección environment y luego ejecutar docker compose up -d. Si ha perdido la contraseña maestra principal de la cuenta, es imposible recuperarla, ya que el servidor no la almacena en texto claro (zero-knowledge encryption). Solo queda la importación desde una copia de seguridad a una cuenta nueva.

¿Es posible ejecutar Vaultwarden sin un dominio?

Técnicamente sí, mediante la dirección IP. Pero los navegadores modernos y las aplicaciones de Bitwarden bloquean el funcionamiento de las API criptográficas (Web Crypto API) en conexiones no seguras (sin HTTPS). Por lo tanto, contar con un dominio y un certificado SSL es un requisito obligatorio.

10. Conclusiones y siguientes pasos

Hemos desplegado con éxito un gestor de contraseñas seguro y privado en nuestro propio servidor. Ahora dispone de una herramienta que no depende de las políticas de terceras empresas y que solo está disponible para usted. El uso de Docker y Caddy hace que esta instalación sea sumamente moderna y fácil de mantener.

Sus siguientes pasos:

  • Instale la extensión de Bitwarden en su navegador y la aplicación móvil en su smartphone. En la configuración de las aplicaciones, indique la dirección de su servidor (Self-hosted URL).
  • Active la autenticación de dos factores (2FA) para su cuenta principal.
  • Importe las contraseñas de su antiguo gestor (Vaultwarden admite la importación desde CSV/JSON de casi todos los servicios populares).
  • Configure la exportación de copias de seguridad a un almacenamiento en la nube para la máxima seguridad de los datos.

Recuerde que ahora la responsabilidad de la seguridad de los datos recae sobre usted: actualice el sistema regularmente (apt update && apt upgrade) y vigile la vigencia de las imágenes de Docker.

¿Te fue útil esta guía?

instalación y configuración de vaultwarden en vps: self-hosting de gestor de contraseñas con docker y ssl
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.