// DevOps
Vaultwarden: autoalojamiento de un gestor de contraseñas en 30 minutos
Publicado el 02.06.2026
Vaultwarden — es una implementación ligera del servidor Bitwarden, escrita en Rust. Consume alrededor de 30 MB de RAM (en lugar de gigabytes con el servidor oficial), es compatible con todos los clientes oficiales de Bitwarden y ofrece acceso a gran parte de las funciones premium. Solución ideal para uso personal o un pequeño equipo.
Qué se necesitará
- VPS con Ubuntu 22.04/24.04 (suficiente 1 vCPU y 1 GB de RAM).
- Docker y Docker Compose instalados.
- Dominio con un registro A apuntando a la dirección IP de tu servidor.
- Servicio SMTP para enviar correos del sistema (invitaciones, confirmaciones de inicio de sesión).
1. Configuración de docker-compose.yaml
Desplegaremos una pila completamente aislada: Vaultwarden y Nginx con obtención automática de certificados Let’s Encrypt como proxy inverso.
Crea un directorio de trabajo y el archivo docker-compose.yaml:
services:
vaultwarden:
image: vaultwarden/server:latest
container_name: vaultwarden
restart: unless-stopped
environment:
- WEBSOCKET_ENABLED=true
- SIGNUPS_ALLOWED=${VAULTWARDEN_SIGNUPS_ALLOWED}
- ADMIN_TOKEN=${VAULTWARDEN_ADMIN_TOKEN}
volumes:
- ./vaultwarden-data:/data
nginx:
image: ${NGINX_IMAGE}
container_name: nginx-proxy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
environment:
- DOMAIN=${VAULTWARDEN_DOMAIN}
volumes:
- ./nginx-templates:/opt/nginx-templates:ro
- ./letsencrypt:/etc/letsencrypt
depends_on:
- vaultwardenImportante: La variable
ADMIN_TOKENabre el acceso al panel de administración web en/admin. Tras completar la configuración básica se recomienda eliminar este token de la configuración.
2. Variables de entorno (.env)
Junto a docker-compose.yaml crea el archivo .env:
# Ajustes básicos
VAULTWARDEN_DOMAIN=vault.yourdomain.com
NGINX_IMAGE=your-preferred-nginx-image:latest
# Ajustes de Vaultwarden
VAULTWARDEN_SIGNUPS_ALLOWED=false
VAULTWARDEN_ADMIN_TOKEN=your_secure_generated_tokenGenerar un token seguro para el administrador:
openssl rand -base64 483. Configuración de Nginx
Crea el directorio ./nginx-templates y dentro el archivo vaultwarden.conf.template:
server {
listen 443 ssl;
listen [::]:443 ssl;
http2 on;
server_name __VAULTWARDEN_DOMAIN__;
ssl_certificate /etc/letsencrypt/live/__VAULTWARDEN_DOMAIN__/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/__VAULTWARDEN_DOMAIN__/privkey.pem;
client_max_body_size 128m;
# WebSocket para live-sync (desde Vaultwarden 1.29+ utiliza el mismo puerto 80)
location /notifications/hub {
proxy_pass http://vaultwarden:80;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header 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:80;
proxy_http_version 1.1;
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;
proxy_read_timeout 3600;
proxy_send_timeout 3600;
}
}Si la imagen de Nginx no soporta la sustitución automática de variables — reemplaza __VAULTWARDEN_DOMAIN__ por el dominio real manualmente y renombra el archivo a .conf.
4. Ejecución
docker compose up -d5. Configuración SMTP
Vaultwarden guarda la configuración SMTP en el archivo data/config.json. Este archivo tiene prioridad sobre las variables de entorno en .env.
Para configurar rápidamente el correo:
python3 -c "
import json
with open('./vaultwarden-data/config.json') as f:
c = json.load(f)
c.update({
'smtp_host': 'mail.your-provider.com',
'smtp_port': 587,
'smtp_security': 'starttls',
'smtp_username': 'your-username',
'smtp_password': 'your-password',
'smtp_from': 'no-reply@yourdomain.com',
'smtp_from_name': 'Vaultwarden',
'_enable_smtp': True,
})
with open('./vaultwarden-data/config.json', 'w') as f:
json.dump(c, f, indent=2)
"Después de cambiar la configuración:
docker compose restart vaultwardenAdvertencia: Los puertos
25y587a menudo están bloqueados por los proveedores cloud. Si el correo no sale — prueba2525o8025.
6. Gestión de inscripciones
Por defecto la inscripción está desactivada (SIGNUPS_ALLOWED=false). Ábrela solo cuando necesites añadir un nuevo usuario:
# Abrir inscripciones
sed -i 's/VAULTWARDEN_SIGNUPS_ALLOWED=false/VAULTWARDEN_SIGNUPS_ALLOWED=true/' .env
docker compose up -d --force-recreate vaultwarden
# Cerrar después de que el usuario haya creado la cuenta
sed -i 's/VAULTWARDEN_SIGNUPS_ALLOWED=true/VAULTWARDEN_SIGNUPS_ALLOWED=false/' .env
docker compose up -d --force-recreate vaultwardenSi el registro no se activa vía
.env— verifica el valor de"signups_allowed"dentro deconfig.json: tiene prioridad.
7. ¿Qué respaldar?
| Archivo | Importancia | Descripción |
|---|---|---|
db.sqlite3 | Crítico | Base de datos principal con todas las contraseñas cifradas |
rsa_key.pem | Crítico | Claves de cifrado |
config.json | Importante | Configuración del servidor (SMTP y otros) |
attachments/ | Importante | Archivos adjuntos a las notas |
Nunca copies db.sqlite3 directamente mientras el servidor está en funcionamiento — usa el comando integrado:
sqlite3 ./vaultwarden-data/db.sqlite3 ".backup /backup/db.sqlite3"Clientes
Todos los clientes oficiales de Bitwarden funcionan con tu servidor. Al iniciar por primera vez, haz clic en el engranaje (configuración del servidor) y en el campo Self-hosted URL introduce https://vault.yourdomain.com.
Disponible para: Chrome, Firefox, Safari, iOS, Android, macOS, Windows, Linux y CLI.
Resumen
El despliegue de Vaultwarden no lleva más de media hora con recursos mínimos. Puntos clave: disponibilidad de los puertos SMTP, la prioridad de config.json sobre .env y que, a partir de la versión 1.29, WebSocket funciona en el puerto principal 80 en lugar del 3012 separado.
// Reviews
Reseñas relacionadas
La experiencia de colaboración dejó una impresión sumamente positiva, principalmente por el profesionalismo y el enfoque para resolver los problemas que surgieron.
La experiencia de colaboración dejó una impresión sumamente positiva, principalmente por el profesionalismo y el enfoque para resolver los problemas que surgieron.
Jitsi Meet: Zoom personal, configuración de Jitsi Meet en Docker y en VPS
11.11.2025 · ★ 5/5
Había que hacer funcionar n8n, Redis y la base de datos. Lo había encargado antes a otro proveedor; todo se rompía constantemente. Se lo encargué a Mijaíl y al día siguiente todo funcionó rápido, ¡como un reloj!
Había que poner en marcha n8n, redis y la base de datos. Contraté antes a otro proveedor, y todo se rompía constantemente. Lo encargué a Mikhail, y al día siguiente ¡todo empezó a funcionar rápido, como un reloj!
Instalación de n8n en su servidor VPS. Configuración de n8n, Docker, IA, Telegram
24.09.2025 · ★ 5/5
Gracias por el trabajo rápido y bien hecho. Todo se hizo de manera ágil y como debía ser!
Gracias por el trabajo rápido y bien hecho. Todo se hizo con prontitud y tal como se necesitaba!
Instalación de n8n en su servidor VPS. Configuración de n8n, Docker, IA, Telegram
06.09.2025 · ★ 5/5
Solución rápida al problema, ¡recomiendo a Mijaíl como profesional a todo el mundo! Intenté montar una configuración similar por mi cuenta y siguiendo consejos de IA, y acabé gastando mucho tiempo y dinero (por el tiempo de inactividad del servidor). Así que mi consejo final: acudan a profesionales, sale más barato =) Gracias a Mijaíl por su profesionalidad.
Solución rápida al problema, ¡recomiendo a Mikhail como profesional! Intenté montar una configuración similar por mi cuenta y siguiendo consejos de redes neuronales, y acabó siendo una pérdida de mucho esfuerzo y dinero …
Instalación de n8n en su servidor VPS. Configuración de n8n, Docker, IA, Telegram
25.08.2025 · ★ 5/5
Mijaíl configuró otro VPS. Rápida y profesionalmente sorteó ciertas limitaciones de los proveedores de hosting.
Mijaíl completó la configuración de otro VPS. De forma rápida y profesional, sorteando ciertas limitaciones impuestas por los proveedores de hosting.
Instalación de N8n en su servidor VPS. Configuración de n8n, Docker, IA, Telegram
12.08.2025 · ★ 5/5
¡Excelente trabajo, gracias! ¡Mijaíl es un profesional, lo recomiendo!
¡Excelente trabajo, gracias! Mikhail es un profesional en lo suyo, ¡lo recomiendo!
Instalación de n8n en su servidor VPS. Configuración de n8n, Docker, IA, Telegram
03.07.2025 · ★ 5/5
// Contact
¿Necesitas ayuda?
Escríbeme y te ayudaré a resolver el problema
Escribir en TelegramОтвечаю в течение рабочего дня (03:00–13:00 GMT)
Или оставьте заявку здесь:
// Related