Table of Contents
- Personalización
- 📧 Configurar SMTP
- 👤 Configuración de Usuarios
- Límite de Usuarios
- Dominio Permitido para Emails
- Verificación de Email Obligatoria
- Desactivar Registros pero Permitir Invitaciones
- 🎨 Personalización Visual
- 🔒 Seguridad Avanzada
- Session Timeout
- Restringir Creación de Organizaciones
- Limitar Adjuntos
- Deshabilitar Completamente el Registro
- 📊 Base de Datos
- 🔔 Notificaciones Push
- 🌍 Localización
- 🔧 Rendimiento
- 🔐 Yubico OTP (Yubikey)
- 🌐 Configuración de Red
- 📝 Ejemplo de Configuración
- 🔄 Aplicar Cambios
- 📖 Referencias
Personalización
Esta guía cubre opciones avanzadas de personalización para adaptar Vaultwarden a tus necesidades específicas.
📧 Configurar SMTP
SMTP permite a Vaultwarden enviar emails para:
- Verificación de cuentas nuevas
- Invitaciones a usuarios
- Códigos 2FA por email
- Notificaciones de seguridad
Variables SMTP
Añade estas variables de entorno a tu configuración:
# Servidor SMTP
SMTP_HOST=smtp.tudominio.com
SMTP_FROM=vaultwarden@tudominio.com
SMTP_PORT=587
SMTP_SECURITY=starttls
# Autenticación
SMTP_USERNAME=vaultwarden@tudominio.com
SMTP_PASSWORD=tu_password_smtp
# Opcional
SMTP_TIMEOUT=15
Configuración según Proveedor
📮 Gmail
⚠️ Requiere "App Password" (contraseña de aplicación):
- Ve a https://myaccount.google.com/security
- Activa verificación en 2 pasos
- Genera una App Password
- Usa estos valores:
SMTP_HOST=smtp.gmail.com
SMTP_FROM=tucuenta@gmail.com
SMTP_PORT=587
SMTP_SECURITY=starttls
SMTP_USERNAME=tucuenta@gmail.com
SMTP_PASSWORD=app_password_generada
📮 Outlook / Microsoft 365
SMTP_HOST=smtp.office365.com
SMTP_FROM=tucuenta@outlook.com
SMTP_PORT=587
SMTP_SECURITY=starttls
SMTP_USERNAME=tucuenta@outlook.com
SMTP_PASSWORD=tu_password
Para cuentas corporativas M365, usa:
SMTP_HOST=smtp.office365.com
SMTP_FROM=tucuenta@tuempresa.com
📮 Servidor SMTP Propio
SMTP_HOST=mail.tudominio.com
SMTP_FROM=noreply@tudominio.com
SMTP_PORT=587 # O 465 para SSL directo
SMTP_SECURITY=starttls # O 'ssl' para puerto 465
SMTP_USERNAME=usuario_smtp
SMTP_PASSWORD=password_smtp
Aplicar Configuración SMTP
Desde Portainer:
- Ve a tu stack
vaultwarden - Environment variables → Añade las variables SMTP
- Update the stack
Desde CLI:
- Edita
.envy añade las variables - Ejecuta:
docker compose up -d
Probar SMTP
- Ve a
/admin - General Settings → Scroll down
- Test SMTP → Introduce un email
- Haz clic en Send test email
- Verifica que recibiste el email
Si falla, revisa los logs:
docker compose logs vaultwarden | grep -i smtp
👤 Configuración de Usuarios
Límite de Usuarios
Para limitar el número de cuentas:
USER_LIMIT=50 # Máximo 50 usuarios
Cuando se alcance el límite:
- ❌ No se permiten más registros
- ❌ No se pueden enviar más invitaciones
- ✅ Los usuarios existentes siguen funcionando
Dominio Permitido para Emails
Restringir registros solo a ciertos dominios:
SIGNUPS_DOMAINS_WHITELIST=tuempresa.com,otrodominio.com
Solo emails con @tuempresa.com o @otrodominio.com podrán registrarse.
Verificación de Email Obligatoria
SIGNUPS_VERIFY=true
Los usuarios no podrán usar Vaultwarden hasta verificar su email (requiere SMTP).
Desactivar Registros pero Permitir Invitaciones
SIGNUPS_ALLOWED=false
INVITATIONS_ALLOWED=true
- ❌ No hay registro público
- ✅ Los admins pueden enviar invitaciones desde
/admin
🎨 Personalización Visual
Cambiar el Nombre
Por defecto muestra "Bitwarden". Para personalizarlo:
ORG_NAME=Mi Empresa IT
Aparecerá en:
- Título de la página
- Emails enviados
- Invitaciones
Favicon Personalizado
Vaultwarden usa el favicon de Bitwarden por defecto. Para cambiarlo:
- Monta un volumen con tu favicon:
volumes:
- vaultwarden_data:/data
- ./custom/favicon.ico:/web-vault/favicon.ico:ro
- Crea
./custom/favicon.icocon tu icono
Deshabilitar Iconos de Servicios
Por privacidad, puedes deshabilitar la descarga de iconos:
ICON_SERVICE=none
Ventajas:
- 🔒 No se hacen requests externos
- 🚀 Ligeramente más rápido
- 🔐 Más privacidad
Desventaja:
- No verás iconos bonitos de Google, GitHub, etc.
🔒 Seguridad Avanzada
Session Timeout
Controla cuánto tiempo permanecen activas las sesiones:
# Segundos antes de pedir re-autenticación
SESSION_TIMEOUT=3600 # 1 hora
# Segundos antes de cerrar sesión completamente
IDLE_TIMEOUT=7200 # 2 horas
Restringir Creación de Organizaciones
ORG_CREATION_USERS=admin@tudominio.com,manager@tudominio.com
Solo estos usuarios podrán crear organizaciones. Otros pueden unirse pero no crear.
Limitar Adjuntos
Los usuarios pueden adjuntar archivos a las contraseñas (ej: certificados, llaves SSH):
# Tamaño máximo por adjunto (en KB)
ATTACHMENT_LIMIT=10240 # 10 MB
# Tamaño total máximo para un usuario (en KB)
USER_ATTACHMENT_LIMIT=102400 # 100 MB
Deshabilitar Completamente el Registro
Incluso para admins:
SIGNUPS_ALLOWED=false
INVITATIONS_ALLOWED=false
Útil cuando ya tienes todas las cuentas creadas y quieres cerrar completamente el acceso.
📊 Base de Datos
SQLite (Por Defecto)
Vaultwarden usa SQLite, que es perfecto para la mayoría de casos:
- ✅ Sin configuración adicional
- ✅ Backups sencillos
- ✅ Eficiente para <1000 usuarios
- ✅ Todo en el volumen
/data
No requiere cambios, funciona out-of-the-box.
Migrar a PostgreSQL (Avanzado)
Para instalaciones muy grandes (>500 usuarios):
DATABASE_URL=postgresql://usuario:password@postgres:5432/vaultwarden
⚠️ Requiere:
- Contenedor PostgreSQL adicional
- Migración manual de datos
- Backups más complejos
No es necesario para la mayoría de despliegues.
Migrar a MySQL/MariaDB (Avanzado)
DATABASE_URL=mysql://usuario:password@mysql:3306/vaultwarden
Similar a PostgreSQL, solo para casos muy específicos.
🔔 Notificaciones Push
Vaultwarden puede enviar notificaciones push a dispositivos móviles:
PUSH_ENABLED=true
PUSH_INSTALLATION_ID=tu_id
PUSH_INSTALLATION_KEY=tu_key
⚠️ Limitaciones:
- Requiere registro en el servicio de Bitwarden
- Solo funciona con apps móviles oficiales
- La mayoría de usuarios no lo necesitan (WebSocket es suficiente)
Para la mayoría: déjalo desactivado y usa WebSocket.
🌍 Localización
Zona Horaria
TZ=Europe/Madrid # Ya configurado en el docker-compose
Otras opciones:
America/New_YorkAsia/TokyoUTC
Lista completa: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
Formato de Logs
LOG_TIMESTAMP_FORMAT=%Y-%m-%d %H:%M:%S
Personaliza cómo aparecen las fechas en los logs.
🔧 Rendimiento
Workers
Vaultwarden usa Rocket (framework web). Para mayor rendimiento:
ROCKET_WORKERS=10 # Por defecto: número de CPUs
Aumenta si tienes muchos usuarios concurrentes.
Database Pool
DATABASE_MAX_CONNS=10 # Conexiones simultáneas a la DB
Aumenta si ves errores de "database locked" con muchos usuarios.
Cache
Iconos de servicios se cachean automáticamente:
ICON_CACHE_TTL=2592000 # Segundos (30 días por defecto)
ICON_CACHE_NEGTTL=259200 # Cache para iconos no encontrados (3 días)
🔐 Yubico OTP (Yubikey)
Soporte para llaves de hardware Yubikey:
YUBICO_CLIENT_ID=tu_client_id
YUBICO_SECRET_KEY=tu_secret_key
Obtén credenciales en: https://upgrade.yubico.com/getapikey/
Los usuarios podrán usar sus Yubikeys para 2FA.
🌐 Configuración de Red
IP y Puerto Interno
Por defecto Vaultwarden escucha en 0.0.0.0:80:
ROCKET_ADDRESS=0.0.0.0
ROCKET_PORT=80
Generalmente no necesitas cambiar esto (el proxy se encarga del resto).
WebSocket en Puerto Diferente
Por defecto WebSocket usa el puerto 3012. Para cambiarlo:
WEBSOCKET_PORT=3012
Si cambias esto, actualiza también:
- Labels de Traefik (loadbalancer.server.port)
- Configuración de NPM
📝 Ejemplo de Configuración
Un archivo .env mínimo para producción:
# Obligatorio - Hash Argon2 (generado con: docker run --rm -it vaultwarden/server:latest /vaultwarden hash)
# IMPORTANTE: Usar comillas simples para evitar interpretación de $
ADMIN_TOKEN='$argon2id$v=19$m=65540,t=3,p=4$...'
# Para Traefik
DOMAIN_HOST=vaultwarden.empresa.com
Nota: El resto de opciones (SMTP, límites, restricciones, etc.) se configuran desde el panel de administración /admin después del despliegue. Esto permite:
- ✅ Cambios sin redesplegar contenedores
- ✅ Configuración más intuitiva desde GUI
- ✅ Menos variables de entorno que gestionar
Para opciones avanzadas que SÍ requieren variables de entorno, consulta las secciones específicas de esta página.
🔄 Aplicar Cambios
Después de cambiar variables de entorno:
Portainer:
- Stack → Environment variables → Editar
- Update the stack
CLI:
# Edita .env
nano .env
# Recrea el contenedor
docker compose up -d
Los cambios se aplican automáticamente al recrear el contenedor.
📖 Referencias
Última actualización: Diciembre 2025