Vaultwarden, gestión de contraseñas de forma privada y segura

¿Te has preguntado alguna vez cómo gestionar tus contraseñas de forma segura, privada y sin depender de servicios en la nube de terceros? Si ya usas Bitwarden (el gestor de contraseñas favorito de muchos), o si buscas una alternativa selfhosted para tener control total sobre tus datos, Vaultwarden es la solución que necesitas conocer. En este post, te explico por qué este proyecto se ha vuelto imprescindible en mi homelab y cómo puedes implementarlo en minutos.
¿Qué es Vaultwarden?
Vaultwarden (antes conocido como bitwarden_rs) es una implementación ligera y autoalojable del servidor de Bitwarden, escrita en Rust. Su objetivo es ofrecer todas las funcionalidades premium de Bitwarden (como el envío de contraseñas, autenticación de dos factores o almacenamiento seguro de archivos) sin los requisitos elevados del servidor oficial.
¿Por qué usar Vaultwarden?
- Open Source: Código disponible en GitHub.
- Compatible al 100% con las apps móviles, extensiones y clientes oficiales de Bitwarden.
- Seguridad y privacidad: Tus datos están cifrados y nunca salen de tu servidor.
- Ahorro de recursos: Funciona hasta en una Raspberry Pi sin problemas.
- Fácil mantenimiento: Actualizaciones rápidas y compatibilidad con Docker.
Instalación de Vaultwarden
Requisitos
- Conocimiento básico de uso de la terminal.
- Conocimiento básico de gestión de contenedores Docker.
- Docker y Docker Compose: Para la ejecución de Vaultwarden. (guía de instalación aquí).
Proceso de instalación
Crea un directorio para almacenar los archivos de configuración de Vaultwarden y accede a él:
mkdir -p ~/containers/vaultwarden
cd ~/containers/vaultwarden
Opción 1: Generación del contenedor con Docker Compose
Crea un archivo docker-compose.yml
en el directorio ~/containers/vaultwarden
:
touch docker-compose.yml
Crea una carpeta para almacenar los datos de Vaultwarden:
mkdir vw-data # O el nombre que prefieras
Edita el archivo docker-compose.yml
con el siguiente contenido:
version: '3'
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
ports:
- '8080:80' # Cambia el puerto izquierdo (ej: 9000) si el 8080 está en uso.
volumes:
- ./vw-data:/data
environment:
DOMAIN: 'http://localhost:8080' # Usa tu dominio o IP (http/https según corresponda).
ADMIN_TOKEN: 'your-secret-token' # Opcional: para habilitar el panel de administración.
Finalmente, ejecuta el contenedor con Docker Compose:
docker-compose up -d
Opción 2: Utilizando Docker Run
docker run --detach --name vaultwarden \
--env DOMAIN="http://localhost:8080" \
--env ADMIN_TOKEN="tu_token_secreto" \
--volume $(pwd)/vw-data:/data \
--restart unless-stopped \
--publish 8080:80 \
vaultwarden/server:latest
Primeros pasos después de la instalación
- Accede a la interfaz web: Abre tu navegador en http://localhost:8080 (o el puerto que hayas configurado).
- Crea tu cuenta: El primer usuario registrado tendrá permisos de administrador (si no configuraste ADMIN_TOKEN).
- Configura tus dispositivos:
- En las apps de Bitwarden, ve a Ajustes > Servidor y define la URL de tu instancia (ej: http://tu-servidor:8080).
- Comienza con el registro de tus contraseñas y datos seguros.
Recomendaciones de seguridad
- Habilita HTTPS: Usa un proxy inverso como Nginx Proxy Manager con Let’s Encrypt.
- Restringe registros: Define
SIGNUPS_ALLOWED=false
en el entorno una vez creada tu cuenta. - Realiza backups: Copia periódicamente el directorio
vw-data
donde se almacenan tus datos cifrados.
Conclusión
Vaultwarden es la combinación perfecta entre la comodidad de Bitwarden y la libertad del selfhosting. Con solo unos comandos, tendrás un gestor de contraseñas robusto, privado y bajo tu control. Además, al ser compatible con todos los clientes oficiales, no notarás diferencia alguna en tu día a día.
Recursos adicionales
Etiquetas
Artículos relacionados

Docker, contenedores para tus aplicaciones
Si estás involucrado en el mundo del desarrollo de software, DevOps, self-hosting o domótica, es casi seguro que has oído hablar de Docker. En este post …