diff --git a/Actualización.md b/Actualización.md
new file mode 100644
index 0000000..f809520
--- /dev/null
+++ b/Actualización.md
@@ -0,0 +1,430 @@
+# Actualización
+
+Mantener Vaultwarden actualizado es importante para seguridad y nuevas funcionalidades.
+
+## 🔄 Estrategia de Actualización
+
+### Frecuencia Recomendada
+
+- **Actualizaciones de seguridad**: Inmediatamente
+- **Versiones estables**: Cada 1-2 meses
+- **Versiones beta**: Solo en entornos de testing
+
+### Antes de Actualizar
+
+**SIEMPRE** haz un backup antes de actualizar:
+
+```bash
+# Backup rápido
+docker compose stop vaultwarden
+docker run --rm \
+ -v vaultwarden_data:/data \
+ -v ~/backups:/backup \
+ alpine tar czf /backup/pre-update-$(date +%Y%m%d).tar.gz -C /data .
+docker compose start vaultwarden
+```
+
+Ver detalles completos en **[Backup y Restauración](Backup-y-Restauración)**.
+
+## 🚀 Actualización desde Portainer (Git Repository)
+
+La forma más sencilla si usaste el método Git Repository.
+
+### 1. Actualizar desde Portainer
+
+1. Ve a **Stacks** → `vaultwarden`
+2. Haz clic en **Editor** (o **Git Repository**)
+3. Haz clic en **Pull and redeploy**
+
+Portainer automáticamente:
+- ✅ Descarga la última imagen Docker
+- ✅ Recrea el contenedor
+- ✅ Conserva tus datos (volúmenes)
+- ✅ Mantiene las variables de entorno
+
+### 2. Verificar la Actualización
+
+```bash
+# Ver versión actual
+docker inspect vaultwarden | grep -i version
+
+# Ver logs del proceso
+docker compose logs -f vaultwarden
+
+# Verificar que funciona
+curl -I https://vaultwarden.tudominio.com
+```
+
+### 3. Probar Acceso
+
+1. Abre `https://vaultwarden.tudominio.com`
+2. Inicia sesión con tu cuenta
+3. Verifica que puedes ver tus contraseñas
+4. Prueba crear/editar una entrada
+5. Verifica sincronización en otro dispositivo
+
+## 🖥️ Actualización desde CLI
+
+### Método Estándar
+
+```bash
+cd /ruta/a/vaultwarden
+
+# 1. Backup (crítico)
+bash ~/scripts/backup-vaultwarden.sh
+
+# 2. Descargar nueva imagen
+docker compose pull
+
+# 3. Recrear contenedor con nueva imagen
+docker compose up -d
+
+# 4. Verificar logs
+docker compose logs -f vaultwarden
+```
+
+### Verificar Nueva Versión
+
+Antes de actualizar, verifica la versión disponible:
+
+```bash
+# Ver versión actual
+docker inspect vaultwarden --format '{{.Config.Image}}'
+
+# Ver versión disponible
+docker pull vaultwarden/server:latest
+docker inspect vaultwarden/server:latest | grep -i version
+```
+
+## 📌 Actualización a Versión Específica
+
+Por defecto usamos `latest`, pero puedes fijar una versión:
+
+### 1. Modificar docker-compose.yml
+
+```yaml
+services:
+ vaultwarden:
+ image: vaultwarden/server:1.30.5 # Versión específica
+ # ...resto de la config
+```
+
+### 2. Actualizar
+
+```bash
+docker compose pull
+docker compose up -d
+```
+
+### Ventajas y Desventajas
+
+**Versión específica** (ej: `1.30.5`):
+- ✅ Control total sobre cuándo actualizar
+- ✅ Evita sorpresas de breaking changes
+- ❌ Debes actualizar manualmente
+- ❌ Puedes perderte parches de seguridad
+
+**latest**:
+- ✅ Siempre la última versión
+- ✅ Actualizaciones de seguridad automáticas
+- ⚠️ Puede introducir bugs en raras ocasiones
+
+**Recomendación**: Usa `latest` y actualiza periódicamente con backups previos.
+
+## 🔔 Monitorizar Nuevas Versiones
+
+### Opción 1: Watchtower (Automático)
+
+Watchtower actualiza contenedores automáticamente:
+
+```yaml
+services:
+ watchtower:
+ image: containrrr/watchtower
+ restart: unless-stopped
+ environment:
+ WATCHTOWER_CLEANUP: true
+ WATCHTOWER_SCHEDULE: "0 0 3 * * *" # 3 AM diario
+ WATCHTOWER_INCLUDE_STOPPED: false
+ volumes:
+ - /var/run/docker.sock:/var/run/docker.sock
+```
+
+⚠️ **Advertencia**: Actualiza sin intervención. Solo recomendado si:
+- ✅ Tienes backups automáticos
+- ✅ Confías en la estabilidad de `latest`
+- ✅ Monitoreas logs regularmente
+
+### Opción 2: GitHub Watch (Manual)
+
+1. Ve a https://github.com/dani-garcia/vaultwarden
+2. Haz clic en **Watch** → **Custom** → **Releases**
+3. Recibirás notificaciones de nuevas versiones
+
+### Opción 3: Script de Verificación
+
+```bash
+#!/bin/bash
+# check-vaultwarden-updates.sh
+
+CURRENT=$(docker inspect vaultwarden --format '{{.Image}}')
+docker pull vaultwarden/server:latest > /dev/null 2>&1
+LATEST=$(docker inspect vaultwarden/server:latest --format '{{.Id}}')
+
+if [ "$CURRENT" != "$LATEST" ]; then
+ echo "🔔 Nueva versión de Vaultwarden disponible"
+ echo "Actual: $CURRENT"
+ echo "Nueva: $LATEST"
+ exit 1
+else
+ echo "✅ Vaultwarden está actualizado"
+ exit 0
+fi
+```
+
+Ejecuta semanalmente con cron:
+```bash
+0 9 * * 1 /home/usuario/scripts/check-vaultwarden-updates.sh | mail -s "Vaultwarden Update Check" tu@email.com
+```
+
+## 📝 Changelog y Notas de Versión
+
+Antes de actualizar, revisa el changelog:
+
+- **GitHub Releases**: https://github.com/dani-garcia/vaultwarden/releases
+- **Wiki de cambios**: https://github.com/dani-garcia/vaultwarden/wiki
+
+Busca:
+- 🔒 **Security fixes**: Actualiza inmediatamente
+- ⚠️ **Breaking changes**: Requieren cambios en configuración
+- ✨ **New features**: Funcionalidades nuevas
+- 🐛 **Bug fixes**: Correcciones de errores
+
+## 🔧 Actualización del Stack Completo
+
+Si también usas Traefik o NPM, actualízalos periódicamente:
+
+### Actualizar Todo
+
+```bash
+# Traefik
+docker compose -f /ruta/a/traefik/docker-compose.yml pull
+docker compose -f /ruta/a/traefik/docker-compose.yml up -d
+
+# Nginx Proxy Manager
+docker compose -f /ruta/a/npm/docker-compose.yml pull
+docker compose -f /ruta/a/npm/docker-compose.yml up -d
+
+# Vaultwarden
+docker compose -f /ruta/a/vaultwarden/docker-compose.yml pull
+docker compose -f /ruta/a/vaultwarden/docker-compose.yml up -d
+```
+
+### Orden Recomendado
+
+1. **Primero**: Actualiza el proxy (Traefik/NPM)
+2. **Espera**: Verifica que el proxy funciona
+3. **Segundo**: Actualiza Vaultwarden
+4. **Prueba**: Verifica acceso completo
+
+## 🛠️ Migración de Versiones Antiguas
+
+### Desde Bitwarden_RS (Nombre Antiguo)
+
+Si tienes el proyecto con su nombre antiguo `bitwarden_rs`:
+
+1. Es el mismo proyecto, solo cambió de nombre
+2. Actualiza la imagen:
+ ```yaml
+ # Antiguo
+ image: bitwardenrs/server:latest
+
+ # Nuevo
+ image: vaultwarden/server:latest
+ ```
+3. Actualiza normalmente: `docker compose pull && docker compose up -d`
+4. Los datos se conservan automáticamente
+
+### Desde Versiones Muy Antiguas (<1.0)
+
+Si llevas años sin actualizar:
+
+1. **NO actualices directamente a latest**
+2. Actualiza incrementalmente:
+ - 0.x → 1.0
+ - 1.0 → 1.20
+ - 1.20 → latest
+3. Lee el changelog de cada versión mayor
+4. Haz backups entre cada actualización
+
+## ⚠️ Rollback (Revertir Actualización)
+
+Si algo sale mal después de actualizar:
+
+### Método 1: Volver a Versión Anterior
+
+```bash
+# 1. Detener versión nueva
+docker compose down
+
+# 2. Cambiar a versión anterior
+docker compose pull vaultwarden/server:1.29.0 # Versión que funcionaba
+
+# 3. Modificar docker-compose.yml
+# image: vaultwarden/server:1.29.0
+
+# 4. Iniciar con versión antigua
+docker compose up -d
+```
+
+### Método 2: Restaurar desde Backup
+
+Si los datos se corrompieron:
+
+```bash
+# 1. Detener Vaultwarden
+docker compose stop vaultwarden
+
+# 2. Restaurar backup pre-actualización
+docker run --rm \
+ -v vaultwarden_data:/data \
+ -v ~/backups:/backup \
+ alpine sh -c "cd /data && rm -rf * && tar xzf /backup/pre-update-YYYYMMDD.tar.gz"
+
+# 3. Volver a versión anterior (ver Método 1)
+
+# 4. Reiniciar
+docker compose start vaultwarden
+```
+
+## 📊 Post-Actualización
+
+### Checklist de Verificación
+
+Después de cada actualización, verifica:
+
+- [ ] El contenedor está corriendo: `docker compose ps`
+- [ ] No hay errores en logs: `docker compose logs vaultwarden`
+- [ ] Acceso web funciona: https://vaultwarden.tudominio.com
+- [ ] Puedes hacer login
+- [ ] Puedes ver tus contraseñas
+- [ ] WebSocket funciona (sincronización en tiempo real)
+- [ ] Panel de administración accesible: `/admin`
+- [ ] Extensión del navegador sigue conectada
+- [ ] App móvil sincroniza correctamente
+
+### Ver Logs Post-Actualización
+
+```bash
+# Logs en tiempo real
+docker compose logs -f vaultwarden
+
+# Solo errores
+docker compose logs vaultwarden | grep -i error
+
+# Últimas 50 líneas
+docker compose logs --tail=50 vaultwarden
+```
+
+### Verificar Versión Instalada
+
+```bash
+# Inspeccionar contenedor
+docker inspect vaultwarden | grep -i image
+
+# Ver en el log de inicio
+docker compose logs vaultwarden | grep -i "vaultwarden"
+```
+
+## 🔐 Actualización de Clientes
+
+No olvides actualizar también los clientes de Bitwarden:
+
+### Extensiones de Navegador
+
+Se actualizan automáticamente desde las stores:
+- Chrome Web Store
+- Firefox Add-ons
+- Edge Add-ons
+
+Verifica manualmente: **Extensiones** → **Administrar extensiones** → **Actualizar**
+
+### Aplicaciones de Escritorio
+
+Descarga la última versión de: https://bitwarden.com/download/
+
+Recomendado actualizar cada 3-6 meses.
+
+### Aplicaciones Móviles
+
+Se actualizan desde:
+- **iOS**: App Store
+- **Android**: Google Play Store
+
+Habilita actualizaciones automáticas en la configuración de la store.
+
+### CLI de Bitwarden
+
+```bash
+# Ver versión actual
+bw --version
+
+# Actualizar (con npm)
+npm update -g @bitwarden/cli
+
+# Verificar nueva versión
+bw --version
+```
+
+## 📅 Calendario de Actualización Recomendado
+
+| Componente | Frecuencia | Método |
+|------------|------------|--------|
+| **Vaultwarden** | Mensual | Manual con backup |
+| **Proxy (Traefik/NPM)** | Trimestral | Manual |
+| **Clientes (extensión, apps)** | Automático | Auto-update |
+| **Sistema Operativo** | Mensual | `apt update && apt upgrade` |
+| **Docker** | Semestral | Según distro |
+
+## 🆘 Problemas Comunes Post-Actualización
+
+### No arranca después de actualizar
+
+**Solución**:
+```bash
+# Ver error exacto
+docker compose logs vaultwarden
+
+# Probar versión anterior
+docker compose down
+# Cambiar imagen a versión anterior
+docker compose up -d
+```
+
+### Database migration failed
+
+**Síntoma**: Error sobre migración de base de datos
+
+**Solución**:
+1. Restaurar backup pre-actualización
+2. Revisar changelog de breaking changes
+3. Actualizar incrementalmente
+
+### WebSocket deja de funcionar
+
+**Síntoma**: Sincronización lenta después de actualizar
+
+**Solución**:
+```bash
+# Verificar puerto 3012
+docker compose logs vaultwarden | grep websocket
+
+# Recrear contenedor
+docker compose down && docker compose up -d
+```
+
+---
+
+**Última actualización**: Diciembre 2025
+
+💡 **Buena práctica**: Actualiza en viernes por la tarde, así tienes el fin de semana para resolver problemas si aparecen.
\ No newline at end of file
diff --git a/Backup-y-Restauración.md b/Backup-y-Restauración.md
new file mode 100644
index 0000000..795e747
--- /dev/null
+++ b/Backup-y-Restauración.md
@@ -0,0 +1,499 @@
+# Backup y Restauración
+
+⚠️ **CRÍTICO**: Vaultwarden almacena todas tus contraseñas. **Sin backup, puedes perderlo todo**. Esta es la página más importante de la wiki.
+
+## 🔴 Por Qué son Críticos los Backups
+
+Un gestor de contraseñas sin backup es una bomba de tiempo:
+
+- 💥 **Fallo de hardware**: Disco duro que muere
+- 🔥 **Corrupción de datos**: Error del sistema de archivos
+- 🚫 **Actualización fallida**: Docker o Vaultwarden se rompe
+- 🏢 **Migración de servidor**: Necesitas moverte a otro host
+- 👤 **Error humano**: `docker compose down -v` por accidente
+
+**Un solo comando sin backup puede borrar años de contraseñas.**
+
+## 📦 Qué Respaldar
+
+Vaultwarden almacena todo en el volumen Docker `vaultwarden_data`:
+
+```
+vaultwarden_data/
+├── db.sqlite3 # Base de datos (contraseñas, usuarios)
+├── db.sqlite3-wal # Write-Ahead Log (transacciones)
+├── db.sqlite3-shm # Shared memory
+├── attachments/ # Archivos adjuntos
+├── sends/ # Sends temporales
+├── config.json # Configuración del servidor
+├── rsa_key.pem # Clave privada RSA
+├── rsa_key.pub.pem # Clave pública RSA
+└── vaultwarden.log # Logs (opcional)
+```
+
+**Archivos críticos**:
+- ✅ `db.sqlite3*` - Base de datos completa
+- ✅ `rsa_key*.pem` - Claves de cifrado
+- ✅ `config.json` - Configuración
+- ✅ `attachments/` - Adjuntos de los usuarios
+
+**Opcionales**:
+- `vaultwarden.log` - Solo para debugging
+- `sends/` - Normalmente vacío (envíos temporales)
+
+## 🛠️ Métodos de Backup
+
+### Método 1: Backup Manual Completo (Recomendado)
+
+Copia todo el volumen Docker.
+
+```bash
+#!/bin/bash
+# Script: backup-vaultwarden.sh
+
+# Configuración
+BACKUP_DIR="$HOME/backups/vaultwarden"
+TIMESTAMP=$(date +%Y%m%d_%H%M%S)
+BACKUP_FILE="vaultwarden-backup-${TIMESTAMP}.tar.gz"
+
+# Crear directorio si no existe
+mkdir -p "$BACKUP_DIR"
+
+# Detener el contenedor (para consistencia)
+docker compose -f /ruta/a/vaultwarden/docker-compose.yml stop vaultwarden
+
+# Crear backup del volumen
+docker run --rm \
+ -v vaultwarden_data:/data \
+ -v "$BACKUP_DIR":/backup \
+ alpine \
+ tar czf "/backup/$BACKUP_FILE" -C /data .
+
+# Reiniciar el contenedor
+docker compose -f /ruta/a/vaultwarden/docker-compose.yml start vaultwarden
+
+# Verificar backup
+if [ -f "$BACKUP_DIR/$BACKUP_FILE" ]; then
+ echo "✅ Backup creado: $BACKUP_FILE"
+ ls -lh "$BACKUP_DIR/$BACKUP_FILE"
+else
+ echo "❌ ERROR: Backup falló"
+ exit 1
+fi
+
+# Limpieza: Mantener solo últimos 30 backups
+cd "$BACKUP_DIR"
+ls -t vaultwarden-backup-*.tar.gz | tail -n +31 | xargs -r rm
+
+echo "✅ Backup completado correctamente"
+```
+
+### Método 2: Backup sin Detener el Servicio
+
+Si tu instancia es 24/7 crítica:
+
+```bash
+#!/bin/bash
+# Backup en caliente con SQLite checkpoint
+
+BACKUP_DIR="$HOME/backups/vaultwarden"
+TIMESTAMP=$(date +%Y%m%d_%H%M%S)
+BACKUP_FILE="vaultwarden-backup-${TIMESTAMP}.tar.gz"
+
+mkdir -p "$BACKUP_DIR"
+
+# Forzar checkpoint de SQLite (fusiona WAL)
+docker compose exec vaultwarden sqlite3 /data/db.sqlite3 "PRAGMA wal_checkpoint(TRUNCATE);"
+
+# Backup sin detener
+docker run --rm \
+ -v vaultwarden_data:/data:ro \
+ -v "$BACKUP_DIR":/backup \
+ alpine \
+ tar czf "/backup/$BACKUP_FILE" -C /data .
+
+echo "✅ Backup en caliente completado: $BACKUP_FILE"
+```
+
+⚠️ **Advertencia**: Los backups en caliente pueden capturar estados inconsistentes. Para máxima seguridad, usa el Método 1.
+
+### Método 3: Backup Automatizado con Cron
+
+Automatiza backups diarios a las 3 AM:
+
+```bash
+# Editar crontab
+crontab -e
+
+# Añadir esta línea
+0 3 * * * /home/usuario/scripts/backup-vaultwarden.sh >> /var/log/vaultwarden-backup.log 2>&1
+```
+
+Verifica que funciona:
+```bash
+# Ver logs del cron
+tail -f /var/log/vaultwarden-backup.log
+
+# Probar el script manualmente
+bash /home/usuario/scripts/backup-vaultwarden.sh
+```
+
+### Método 4: Docker Volume Backup (Contenedor Dedicado)
+
+Usa un contenedor especializado para backups automáticos:
+
+```yaml
+services:
+ # ... tu servicio vaultwarden ...
+
+ backup:
+ image: offen/docker-volume-backup:latest
+ restart: unless-stopped
+ environment:
+ BACKUP_CRON_EXPRESSION: "0 3 * * *" # Diario a las 3 AM
+ BACKUP_FILENAME: "vaultwarden-backup-%Y%m%d-%H%M%S.tar.gz"
+ BACKUP_RETENTION_DAYS: 30
+ BACKUP_PRUNING_PREFIX: "vaultwarden-backup-"
+ volumes:
+ - vaultwarden_data:/backup/vaultwarden_data:ro
+ - /ruta/backups:/archive
+```
+
+Ventajas:
+- ✅ Completamente automático
+- ✅ Rotación de backups integrada
+- ✅ Notificaciones opcionales (webhook, email)
+
+## 💾 Dónde Almacenar Backups
+
+### ⚠️ NO Almacenar SOLO en el Mismo Servidor
+
+Si el servidor muere, pierdes datos Y backups.
+
+### ✅ Estrategia 3-2-1
+
+- **3** copias de tus datos
+- **2** medios diferentes
+- **1** copia offsite (fuera del servidor)
+
+### Opciones de Almacenamiento
+
+#### 1. NAS Local
+
+```bash
+# Montar NAS
+mount -t nfs nas.local:/backups /mnt/nas
+
+# Modificar script de backup
+BACKUP_DIR="/mnt/nas/vaultwarden"
+```
+
+#### 2. Cloud Storage (S3, B2, etc.)
+
+```bash
+# Instalar rclone
+curl https://rclone.org/install.sh | sudo bash
+
+# Configurar remote
+rclone config
+
+# Sincronizar backups
+rclone sync $HOME/backups/vaultwarden remote:vaultwarden-backups
+```
+
+#### 3. Servidor Remoto (SCP/Rsync)
+
+```bash
+# Después del backup, envía a servidor remoto
+scp "$BACKUP_DIR/$BACKUP_FILE" usuario@servidor-backup:/backups/vaultwarden/
+
+# O con rsync
+rsync -avz "$BACKUP_DIR/" usuario@servidor-backup:/backups/vaultwarden/
+```
+
+#### 4. Duplicati (GUI)
+
+Duplicati ofrece backups cifrados y automáticos:
+
+```yaml
+services:
+ duplicati:
+ image: duplicati/duplicati
+ ports:
+ - "8200:8200"
+ environment:
+ TZ: Europe/Madrid
+ volumes:
+ - vaultwarden_data:/source/vaultwarden:ro
+ - duplicati_config:/data
+```
+
+Configura desde http://servidor:8200
+
+## 🔄 Restauración
+
+### Restauración Completa
+
+Recupera todo el volumen desde un backup:
+
+```bash
+#!/bin/bash
+# Script: restore-vaultwarden.sh
+
+BACKUP_FILE="/ruta/al/backup/vaultwarden-backup-20240101_030000.tar.gz"
+
+# Verificar que el backup existe
+if [ ! -f "$BACKUP_FILE" ]; then
+ echo "❌ ERROR: Backup no encontrado: $BACKUP_FILE"
+ exit 1
+fi
+
+# Detener Vaultwarden
+docker compose stop vaultwarden
+
+# ADVERTENCIA: Esto borra los datos actuales
+read -p "⚠️ Esto BORRARÁ los datos actuales. ¿Continuar? (yes/no): " -r
+if [[ ! $REPLY =~ ^yes$ ]]; then
+ echo "❌ Restauración cancelada"
+ exit 1
+fi
+
+# Restaurar backup
+docker run --rm \
+ -v vaultwarden_data:/data \
+ -v "$(dirname $BACKUP_FILE)":/backup \
+ alpine \
+ sh -c "cd /data && rm -rf * && tar xzf /backup/$(basename $BACKUP_FILE)"
+
+# Reiniciar Vaultwarden
+docker compose start vaultwarden
+
+echo "✅ Restauración completada"
+echo "Verifica que puedes acceder: https://vaultwarden.tudominio.com"
+```
+
+### Restauración desde Cero
+
+Si estás migrando a un servidor nuevo:
+
+```bash
+# 1. Instalar Docker y Docker Compose
+
+# 2. Clonar repositorio
+git clone https://git.ictiberia.com/groales/vaultwarden.git
+cd vaultwarden
+
+# 3. Configurar override y .env
+cp docker-compose.override.traefik.yml.example docker-compose.override.yml
+nano .env # Configurar variables
+
+# 4. Crear volumen vacío
+docker volume create vaultwarden_data
+
+# 5. Restaurar datos desde backup
+docker run --rm \
+ -v vaultwarden_data:/data \
+ -v /ruta/al/backup:/backup \
+ alpine \
+ tar xzf /backup/vaultwarden-backup-YYYYMMDD.tar.gz -C /data
+
+# 6. Iniciar Vaultwarden
+docker compose up -d
+
+# 7. Verificar
+docker compose logs -f vaultwarden
+```
+
+### Restauración Selectiva (Solo DB)
+
+Si solo necesitas la base de datos:
+
+```bash
+# Extraer solo db.sqlite3 del backup
+tar xzf vaultwarden-backup-20240101.tar.gz db.sqlite3
+
+# Copiar al volumen
+docker cp db.sqlite3 vaultwarden:/data/db.sqlite3
+
+# Reiniciar
+docker compose restart vaultwarden
+```
+
+## ✅ Verificar Backups
+
+### Probar Restauración
+
+**Una vez al mes**, prueba restaurar un backup en un entorno de testing:
+
+```bash
+# Crear volumen temporal
+docker volume create vaultwarden_test
+
+# Restaurar backup en volumen test
+docker run --rm \
+ -v vaultwarden_test:/data \
+ -v /ruta/backups:/backup \
+ alpine \
+ tar xzf /backup/vaultwarden-backup-YYYYMMDD.tar.gz -C /data
+
+# Levantar Vaultwarden test
+docker run -d --name vaultwarden-test \
+ -v vaultwarden_test:/data \
+ -p 8081:80 \
+ vaultwarden/server:latest
+
+# Probar acceso
+curl http://localhost:8081
+
+# Limpiar
+docker stop vaultwarden-test
+docker rm vaultwarden-test
+docker volume rm vaultwarden_test
+```
+
+### Verificar Integridad de SQLite
+
+```bash
+# Verificar que la DB no está corrupta
+docker run --rm \
+ -v vaultwarden_data:/data:ro \
+ nouchka/sqlite3 \
+ sqlite3 /data/db.sqlite3 "PRAGMA integrity_check;"
+```
+
+Debería devolver: `ok`
+
+### Listar Backups Disponibles
+
+```bash
+# Ver backups y sus tamaños
+ls -lh $HOME/backups/vaultwarden/
+
+# Ver el más reciente
+ls -lt $HOME/backups/vaultwarden/ | head -n 2
+
+# Verificar que no están vacíos
+find $HOME/backups/vaultwarden/ -type f -size 0
+```
+
+## 📊 Monitorización de Backups
+
+### Script de Verificación Diaria
+
+```bash
+#!/bin/bash
+# verify-backup.sh
+
+BACKUP_DIR="$HOME/backups/vaultwarden"
+MAX_AGE_HOURS=30 # Alerta si el último backup tiene más de 30 horas
+
+LATEST_BACKUP=$(ls -t "$BACKUP_DIR"/vaultwarden-backup-*.tar.gz | head -n 1)
+
+if [ -z "$LATEST_BACKUP" ]; then
+ echo "❌ ERROR: No se encontraron backups"
+ exit 1
+fi
+
+# Verificar edad
+BACKUP_AGE=$(( ($(date +%s) - $(stat -c %Y "$LATEST_BACKUP")) / 3600 ))
+
+if [ $BACKUP_AGE -gt $MAX_AGE_HOURS ]; then
+ echo "⚠️ ADVERTENCIA: Último backup tiene ${BACKUP_AGE} horas"
+ echo "Backup: $LATEST_BACKUP"
+ exit 1
+else
+ echo "✅ Backup reciente: ${BACKUP_AGE} horas"
+ echo "Backup: $LATEST_BACKUP"
+fi
+```
+
+### Notificaciones (Opcional)
+
+Envía alertas si los backups fallan:
+
+```bash
+# Al final del script de backup
+if [ $? -eq 0 ]; then
+ curl -X POST https://hooks.slack.com/services/TU_WEBHOOK \
+ -d '{"text":"✅ Backup de Vaultwarden completado"}'
+else
+ curl -X POST https://hooks.slack.com/services/TU_WEBHOOK \
+ -d '{"text":"❌ ERROR en backup de Vaultwarden"}'
+fi
+```
+
+## 🔐 Cifrar Backups
+
+Los backups contienen todas las contraseñas. Cífralos para almacenamiento externo:
+
+### Con GPG
+
+```bash
+# Backup y cifrado
+tar czf - -C /var/lib/docker/volumes/vaultwarden_data/_data . | \
+ gpg --symmetric --cipher-algo AES256 > vaultwarden-backup.tar.gz.gpg
+
+# Descifrado
+gpg --decrypt vaultwarden-backup.tar.gz.gpg | tar xzf -
+```
+
+### Con OpenSSL
+
+```bash
+# Cifrar
+openssl enc -aes-256-cbc -salt \
+ -in vaultwarden-backup.tar.gz \
+ -out vaultwarden-backup.tar.gz.enc
+
+# Descifrar
+openssl enc -aes-256-cbc -d \
+ -in vaultwarden-backup.tar.gz.enc \
+ -out vaultwarden-backup.tar.gz
+```
+
+## 📖 Checklist de Backup
+
+- [ ] Backups automáticos configurados (diarios mínimo)
+- [ ] Backups almacenados en al menos 2 ubicaciones
+- [ ] Al menos 1 backup offsite (fuera del servidor)
+- [ ] Backups cifrados si se almacenan en cloud
+- [ ] Script de restauración probado al menos una vez
+- [ ] Monitorización de backups (verificar que se ejecutan)
+- [ ] Rotación de backups (no llenar el disco)
+- [ ] Documentación de cómo restaurar
+
+## 🆘 Escenarios de Desastre
+
+### Servidor Completamente Muerto
+
+1. Montar nuevo servidor
+2. Instalar Docker
+3. Clonar repo de Vaultwarden
+4. Configurar variables de entorno
+5. Restaurar backup en volumen nuevo
+6. Iniciar stack
+7. Actualizar DNS si cambió la IP
+
+### Base de Datos Corrupta
+
+1. Detener Vaultwarden
+2. Renombrar db corrupta: `mv db.sqlite3 db.sqlite3.corrupted`
+3. Restaurar desde backup más reciente
+4. Verificar integridad: `sqlite3 db.sqlite3 "PRAGMA integrity_check;"`
+5. Reiniciar Vaultwarden
+
+### Volumen Docker Borrado Accidentalmente
+
+```bash
+# Recrear volumen
+docker volume create vaultwarden_data
+
+# Restaurar inmediatamente desde backup
+bash restore-vaultwarden.sh
+```
+
+---
+
+**Última actualización**: Diciembre 2025
+
+⚠️ **RECUERDA**: Un backup de 6 meses vale más que 10 veces lo que cuesta hacerlo. **Automatiza ahora**.
\ No newline at end of file
diff --git a/Configuración-Inicial.md b/Configuración-Inicial.md
new file mode 100644
index 0000000..6fc3cd1
--- /dev/null
+++ b/Configuración-Inicial.md
@@ -0,0 +1,350 @@
+# Configuración Inicial
+
+Una vez desplegado Vaultwarden, sigue estos pasos para configurarlo correctamente.
+
+## 📋 Lista de Verificación
+
+Antes de empezar, asegúrate de haber completado:
+
+- ✅ Vaultwarden desplegado con [Traefik](Traefik), [NPM](NPM) o [Standalone](Standalone)
+- ✅ Acceso a `https://vaultwarden.tudominio.com` (o HTTP en standalone)
+- ✅ ADMIN_TOKEN generado y configurado
+- ✅ Certificado SSL válido (si usas Traefik o NPM)
+
+## 🔐 1. Acceder al Panel de Administración
+
+### Acceso Inicial
+
+1. Abre tu navegador
+2. Ve a: `https://vaultwarden.tudominio.com/admin`
+3. Introduce tu `ADMIN_TOKEN`
+4. Haz clic en **Enter**
+
+⚠️ **Importante**: Si no puedes acceder, verifica que `ADMIN_TOKEN` está correctamente configurado en las variables de entorno.
+
+### Recuperar ADMIN_TOKEN
+
+Si olvidaste tu token:
+
+```bash
+# Ver el token actual
+docker compose exec vaultwarden env | grep ADMIN_TOKEN
+
+# O revisa el archivo .env
+cat .env | grep ADMIN_TOKEN
+```
+
+### Cambiar ADMIN_TOKEN
+
+Si quieres cambiar el token:
+
+1. Genera uno nuevo: `openssl rand -base64 48`
+2. Actualiza la variable de entorno:
+ - **Portainer**: Stack → Environment variables → Editar
+ - **CLI**: Editar `.env` y ejecutar `docker compose up -d`
+3. Accede a `/admin` con el nuevo token
+
+## ⚙️ 2. Configuración General
+
+En el panel de administración, ve a **General Settings**.
+
+### Domain URL
+
+**Campo**: `Domain URL`
+**Valor**: `https://vaultwarden.tudominio.com` (tu dominio completo con protocolo)
+
+Este valor **debe coincidir** con la variable `DOMAIN` del docker-compose.
+
+⚠️ **Crítico**: Un valor incorrecto causará problemas con:
+- Links de verificación de email
+- Redirecciones después del login
+- Funcionalidades de la API
+
+### Iconos de Servicios
+
+**Campo**: `Icon Download Timeout`
+**Valor recomendado**: `10` (segundos)
+
+Vaultwarden puede descargar iconos de servicios (Google, GitHub, etc.) para mostrarlos en la interfaz.
+
+**Opciones**:
+- ✅ Dejar activado: Mejor experiencia visual
+- ❌ Desactivar: Añadir `ICON_SERVICE=none` en variables de entorno (más privacidad)
+
+### Permitir Invitaciones
+
+**Campo**: `Invitation Organization Name`
+**Valor**: Nombre de tu organización (ej: "Mi Empresa IT")
+
+Aparecerá en los emails de invitación cuando añadas usuarios.
+
+## 👥 3. Configuración de Usuarios
+
+En **User Settings**, configura el registro y gestión de usuarios.
+
+### Permitir Nuevos Registros
+
+**Campo**: `Allow new signups`
+**Valor recomendado**: **❌ Desactivado** (false)
+
+**Razones**:
+- 🔒 Evita registros no autorizados
+- 🔒 Control total sobre quién accede
+- 🔒 Previene abuso del servidor
+
+**Métodos alternativos para añadir usuarios**:
+1. **Invitaciones** (recomendado): Desde `/admin` → Users → Invite User
+2. **Registro temporal**: Activa `SIGNUPS_ALLOWED=true` temporalmente, crea las cuentas, desactívalo
+
+### Verificación de Email
+
+**Campo**: `Require Email Verification`
+**Recomendado**: ✅ Activar (requiere SMTP configurado)
+
+Beneficios:
+- Verifica que el email es válido
+- Previene cuentas con emails falsos
+- Mejora la recuperación de cuenta
+
+### Mostrar Pistas de Contraseña
+
+**Campo**: `Show password hints`
+**Valor recomendado**: **❌ Desactivado**
+
+Las pistas de contraseña son un riesgo de seguridad. Mejor usar:
+- Contraseñas generadas aleatoriamente
+- Notas cifradas en Vaultwarden
+- Organizaciones para compartir
+
+## 🔐 4. Configuración de Seguridad
+
+### Activar 2FA (Autenticación de Dos Factores)
+
+Vaultwarden soporta varios métodos de 2FA:
+
+#### Para Usuarios
+
+1. Cada usuario debe configurarlo desde su cuenta:
+ - Login → Configuración → Seguridad → Two-step Login
+2. Métodos disponibles:
+ - **Authenticator App** (TOTP): Google Authenticator, Authy, etc.
+ - **Email**: Código enviado por email (requiere SMTP)
+ - **Yubikey**: Llaves de seguridad hardware
+
+#### Para el Admin Panel
+
+Considera proteger `/admin` adicionalmente:
+
+**Con Traefik** (middleware de autenticación):
+```yaml
+labels:
+ - "traefik.http.routers.vaultwarden-admin.rule=Host(`${DOMAIN_HOST}`) && PathPrefix(`/admin`)"
+ - "traefik.http.routers.vaultwarden-admin.middlewares=admin-auth"
+ - "traefik.http.middlewares.admin-auth.basicauth.users=admin:$$apr1$$hashedpassword"
+```
+
+**Con NPM** (Access List en la interfaz)
+
+### Desactivar el Admin Panel (Producción)
+
+En entornos de alta seguridad, una vez configurado todo:
+
+```env
+# Añadir a variables de entorno
+ADMIN_INTERFACE_ENABLED=false
+```
+
+Esto **desactiva completamente** el panel de administración. Solo hazlo si:
+- ✅ Has completado toda la configuración
+- ✅ Tienes backups
+- ✅ No necesitas hacer cambios frecuentes
+
+Para reactivarlo, cambia a `true` y redesplega.
+
+## 🔄 5. WebSocket y Notificaciones
+
+### Verificar WebSocket
+
+WebSocket permite sincronización en tiempo real entre dispositivos.
+
+```bash
+docker compose logs vaultwarden | grep -i websocket
+```
+
+Deberías ver:
+```
+[INFO] WebSocket server listening on 0.0.0.0:3012
+```
+
+### Probar desde Cliente
+
+1. Abre Vaultwarden en un navegador
+2. Abre la app móvil en otro dispositivo
+3. Añade una contraseña en uno
+4. Debería aparecer **inmediatamente** en el otro
+
+Si tarda minutos:
+- **Con Traefik**: Debería funcionar automáticamente
+- **Con NPM**: Verifica que **WebSocket Support** está activado en el Proxy Host
+
+## 📊 6. Monitorización y Logs
+
+### Configurar Nivel de Logs
+
+En variables de entorno:
+
+```env
+LOG_LEVEL=warn # Valores: error, warn, info, debug, trace
+```
+
+**Recomendaciones**:
+- **Producción**: `warn` (por defecto)
+- **Debugging**: `debug` o `trace`
+
+### Ver Logs en Tiempo Real
+
+```bash
+# Logs generales
+docker compose logs -f vaultwarden
+
+# Logs de acceso
+docker compose exec vaultwarden cat /data/vaultwarden.log
+
+# Filtrar por nivel
+docker compose logs vaultwarden | grep ERROR
+```
+
+### Rotación de Logs
+
+Vaultwarden no rota logs automáticamente. Para evitar que crezcan infinitamente:
+
+**Opción 1: Límite de Docker**
+
+Edita `/etc/docker/daemon.json`:
+```json
+{
+ "log-driver": "json-file",
+ "log-opts": {
+ "max-size": "10m",
+ "max-file": "3"
+ }
+}
+```
+
+Reinicia Docker: `sudo systemctl restart docker`
+
+**Opción 2: Logrotate**
+
+Crea `/etc/logrotate.d/vaultwarden`:
+```
+/var/lib/docker/volumes/vaultwarden_data/_data/vaultwarden.log {
+ daily
+ rotate 7
+ compress
+ missingok
+ notifempty
+}
+```
+
+## 🌐 7. Usuarios y Organizaciones
+
+### Invitar Primer Usuario
+
+Si `SIGNUPS_ALLOWED=false`:
+
+1. Ve a `/admin`
+2. **Users** → **Invite User**
+3. Introduce el email
+4. El usuario recibirá un email de invitación (requiere SMTP)
+5. Sin SMTP, muestra un link que puedes copiar y enviar manualmente
+
+### Crear una Organización
+
+Las organizaciones permiten compartir contraseñas de forma segura:
+
+1. Login como usuario normal (no admin)
+2. **New** → **Organization**
+3. Nombre de la organización
+4. Invita miembros
+5. Crea colecciones (categorías de contraseñas)
+6. Comparte ítems con la organización
+
+**Casos de uso**:
+- 🏢 Contraseñas del equipo de IT
+- 💼 Accesos compartidos de clientes
+- 👨👩👧👦 Contraseñas familiares
+
+## 📧 8. SMTP (Opcional pero Recomendado)
+
+Configurar SMTP permite:
+- ✅ Verificación de emails
+- ✅ Invitaciones automáticas
+- ✅ Notificaciones de seguridad
+- ✅ Recuperación de cuenta (emergencias)
+
+Ver detalles completos en **[Personalización - Configurar SMTP](Personalización#configurar-smtp)**.
+
+## ✅ 9. Verificación Final
+
+Completa esta checklist antes de dar por finalizada la configuración:
+
+### Checklist de Seguridad
+
+- [ ] ADMIN_TOKEN es fuerte (mín. 32 caracteres)
+- [ ] `SIGNUPS_ALLOWED=false` configurado
+- [ ] HTTPS funcionando (certificado válido)
+- [ ] WebSocket funcionando (sincronización instantánea)
+- [ ] Panel `/admin` accesible solo por ti
+- [ ] SMTP configurado (o método alternativo para invitaciones)
+- [ ] Primer usuario creado y puede hacer login
+- [ ] 2FA activado en cuenta de admin
+- [ ] Backup inicial realizado
+
+### Checklist de Funcionalidad
+
+- [ ] Puedes crear una nueva entrada de contraseña
+- [ ] La entrada se sincroniza a otro dispositivo inmediatamente
+- [ ] Puedes instalar la extensión del navegador
+- [ ] La extensión auto-rellena formularios correctamente
+- [ ] Puedes crear una organización
+- [ ] Puedes invitar a otro usuario
+- [ ] El generador de contraseñas funciona
+
+## 📖 Siguientes Pasos
+
+- **[Personalización](Personalización)**: SMTP, temas, límites, etc.
+- **[Backup y Restauración](Backup-y-Restauración)**: **CRÍTICO** - configura backups inmediatamente
+- **[Solución de Problemas](Solución-de-Problemas)**: Si algo no funciona
+
+## 🆘 Problemas Comunes
+
+### No puedo acceder a /admin
+
+**Causa**: ADMIN_TOKEN incorrecto o no configurado
+
+**Solución**:
+```bash
+# Ver token actual
+docker compose exec vaultwarden env | grep ADMIN_TOKEN
+
+# Verificar que coincide con el que introduces
+```
+
+### Los emails no se envían
+
+**Causa**: SMTP no configurado o configurado incorrectamente
+
+**Solución**: Ver **[Personalización - SMTP](Personalización#configurar-smtp)**
+
+### WebSocket no funciona
+
+**Causa**: Configuración del proxy
+
+**Solución**:
+- **Traefik**: Debería funcionar automáticamente, revisa logs
+- **NPM**: Activa **WebSocket Support** en el Proxy Host
+- Ver **[Solución de Problemas - WebSocket](Solución-de-Problemas#websocket-no-funciona)**
+
+---
+
+**Última actualización**: Diciembre 2025
\ No newline at end of file
diff --git a/Home.md b/Home.md
index 0ab951d..d80c3d9 100644
--- a/Home.md
+++ b/Home.md
@@ -1 +1,90 @@
-¡Bienvenidos a la Wiki!
\ No newline at end of file
+# Wiki de Vaultwarden
+
+Bienvenido a la wiki de **Vaultwarden**, un gestor de contraseñas autoalojado compatible con Bitwarden.
+
+## 📋 Índice de Contenidos
+
+### Despliegue
+- **[Traefik](Traefik)**: Despliegue con Traefik como reverse proxy (recomendado)
+- **[Nginx Proxy Manager](NPM)**: Despliegue con Nginx Proxy Manager
+- **[Standalone](Standalone)**: Despliegue sin proxy (solo testing)
+
+### Configuración y Mantenimiento
+- **[Configuración Inicial](Configuración-Inicial)**: Primeros pasos tras el despliegue
+- **[Personalización](Personalización)**: Configurar SMTP, usuarios, organizaciones
+- **[Backup y Restauración](Backup-y-Restauración)**: Protege tus contraseñas
+- **[Actualización](Actualización)**: Mantener Vaultwarden actualizado
+- **[Solución de Problemas](Solución-de-Problemas)**: Resolver errores comunes
+
+## 🔐 ¿Qué es Vaultwarden?
+
+Vaultwarden es una implementación alternativa del servidor Bitwarden escrita en Rust. Ofrece las mismas funcionalidades que Bitwarden oficial pero con:
+
+- 🚀 **Menor consumo de recursos**: Ideal para self-hosting
+- 💰 **Todas las características gratuitas**: Incluye organizaciones, 2FA, etc.
+- 🔒 **Mismo nivel de seguridad**: Cifrado de extremo a extremo
+- 📱 **Compatible 100%**: Usa los clientes oficiales de Bitwarden
+
+## ⚠️ Consideraciones de Seguridad
+
+Antes de desplegar Vaultwarden:
+
+1. **HTTPS es obligatorio**: Los clientes de Bitwarden requieren conexión segura
+2. **ADMIN_TOKEN fuerte**: Genera un token de al menos 32 caracteres
+3. **Backups regulares**: Un gestor de contraseñas sin backup es un riesgo crítico
+4. **Desactiva registros públicos**: Establece `SIGNUPS_ALLOWED=false`
+5. **Contraseña maestra única**: No la reutilices en otros servicios
+6. **Habilita 2FA**: Protege tu cuenta con autenticación de dos factores
+
+## 🚀 Inicio Rápido
+
+### Generar ADMIN_TOKEN
+
+Antes de cualquier despliegue, genera un token seguro:
+
+```bash
+openssl rand -base64 48
+```
+
+### Elección del Modo de Despliegue
+
+| Modo | Recomendado | Requisitos | Características |
+|------|-------------|------------|-----------------|
+| **Traefik** | ✅ Sí | Red `proxy`, Traefik con Let's Encrypt | SSL automático, WebSocket integrado |
+| **NPM** | ⚠️ Aceptable | Red `proxy`, NPM configurado | Requiere activar WebSocket manualmente |
+| **Standalone** | ❌ No | Solo Docker | Solo para testing local, sin HTTPS |
+
+### Variables de Entorno Comunes
+
+Todas las configuraciones requieren estas variables:
+
+```env
+DOMAIN=https://vaultwarden.tudominio.com # Con protocolo en Traefik/NPM
+ADMIN_TOKEN=tu_token_generado_con_openssl
+SIGNUPS_ALLOWED=false # Desactiva registros públicos
+```
+
+**Para Traefik** necesitas también:
+```env
+DOMAIN_HOST=vaultwarden.tudominio.com # Sin protocolo
+```
+
+## 📚 Recursos Adicionales
+
+- [README del repositorio](https://git.ictiberia.com/groales/vaultwarden)
+- [Documentación oficial de Vaultwarden](https://github.com/dani-garcia/vaultwarden/wiki)
+- [Clientes de Bitwarden](https://bitwarden.com/download/)
+- [Comunidad de Vaultwarden](https://github.com/dani-garcia/vaultwarden/discussions)
+
+## 🆘 Soporte
+
+Si encuentras problemas:
+
+1. Consulta la página **[Solución de Problemas](Solución-de-Problemas)**
+2. Revisa los logs: `docker compose logs vaultwarden`
+3. Verifica la configuración en `/admin`
+4. Consulta la documentación oficial de Vaultwarden
+
+---
+
+**Última actualización**: Diciembre 2025
\ No newline at end of file
diff --git a/NPM.md b/NPM.md
new file mode 100644
index 0000000..8bb1ff4
--- /dev/null
+++ b/NPM.md
@@ -0,0 +1,365 @@
+# Despliegue con Nginx Proxy Manager
+
+Esta guía explica cómo desplegar Vaultwarden usando **Nginx Proxy Manager (NPM)** como reverse proxy.
+
+## ⚠️ Consideración Importante
+
+A diferencia de Traefik, con NPM necesitas **configurar WebSocket manualmente** desde la interfaz web. Este paso es crítico para que la sincronización en tiempo real funcione correctamente.
+
+## 📋 Requisitos Previos
+
+Antes de comenzar, asegúrate de tener:
+
+- ✅ Nginx Proxy Manager funcionando y accesible
+- ✅ Red Docker `proxy` creada y NPM conectado a ella
+- ✅ Dominio configurado apuntando a tu servidor
+- ✅ Puertos 80 y 443 abiertos y dirigidos a NPM
+- ✅ ADMIN_TOKEN generado
+
+### Verificar Red Proxy
+
+```bash
+docker network ls | grep proxy
+```
+
+Si no existe, créala:
+
+```bash
+docker network create proxy
+```
+
+### Generar ADMIN_TOKEN
+
+```bash
+openssl rand -base64 48
+```
+
+Guarda el resultado, lo necesitarás para las variables de entorno.
+
+## 🚀 Despliegue desde Portainer
+
+### Opción A: Git Repository (Recomendada)
+
+Esta opción mantiene tu stack actualizado con el repositorio Git.
+
+1. En Portainer, ve a **Stacks** → **Add stack**
+2. Nombre del stack: `vaultwarden`
+3. Selecciona **Git Repository**
+4. Configura el repositorio:
+ - **Repository URL**: `https://git.ictiberia.com/groales/vaultwarden`
+ - **Repository reference**: `refs/heads/main`
+ - **Compose path**: `docker-compose.yml`
+ - **Additional paths**: `docker-compose.override.npm.yml.example`
+
+5. En **Environment variables**, añade:
+
+```env
+DOMAIN=https://vaultwarden.tudominio.com
+ADMIN_TOKEN=tu_token_generado_anteriormente
+SIGNUPS_ALLOWED=false
+```
+
+⚠️ **Nota**: A diferencia de Traefik, aquí NO necesitas `DOMAIN_HOST` separado.
+
+6. Haz clic en **Deploy the stack**
+
+### Opción B: Web Editor
+
+Si prefieres tener el compose completo en Portainer:
+
+1. En Portainer, ve a **Stacks** → **Add stack**
+2. Nombre del stack: `vaultwarden`
+3. Selecciona **Web editor**
+4. Copia y pega este contenido:
+
+```yaml
+services:
+ vaultwarden:
+ container_name: vaultwarden
+ image: vaultwarden/server:latest
+ restart: unless-stopped
+ environment:
+ DOMAIN: ${DOMAIN}
+ SIGNUPS_ALLOWED: ${SIGNUPS_ALLOWED:-false}
+ ADMIN_TOKEN: ${ADMIN_TOKEN}
+ WEBSOCKET_ENABLED: true
+ LOG_FILE: /data/vaultwarden.log
+ LOG_LEVEL: warn
+ TZ: Europe/Madrid
+ volumes:
+ - vaultwarden_data:/data
+ networks:
+ - proxy
+
+networks:
+ proxy:
+ external: true
+
+volumes:
+ vaultwarden_data:
+ driver: local
+```
+
+5. En **Environment variables**, añade las mismas variables que en la Opción A
+
+6. Haz clic en **Deploy the stack**
+
+## 🖥️ Despliegue desde CLI
+
+### 1. Clonar el repositorio
+
+```bash
+git clone https://git.ictiberia.com/groales/vaultwarden.git
+cd vaultwarden
+```
+
+### 2. Copiar el archivo override
+
+```bash
+cp docker-compose.override.npm.yml.example docker-compose.override.yml
+```
+
+### 3. Crear archivo .env
+
+Crea un archivo `.env` con el siguiente contenido:
+
+```env
+DOMAIN=https://vaultwarden.tudominio.com
+ADMIN_TOKEN=tu_token_generado_anteriormente
+SIGNUPS_ALLOWED=false
+```
+
+### 4. Iniciar el servicio
+
+```bash
+docker compose up -d
+```
+
+### 5. Verificar el despliegue
+
+```bash
+# Ver logs
+docker compose logs -f vaultwarden
+
+# Verificar que el contenedor está corriendo
+docker compose ps
+```
+
+## 🔧 Configuración en Nginx Proxy Manager
+
+Una vez el contenedor está corriendo, debes configurar el Proxy Host en NPM.
+
+### 1. Acceder a NPM
+
+Ve a la interfaz web de Nginx Proxy Manager (normalmente `http://tu-servidor:81`).
+
+### 2. Crear Proxy Host
+
+1. Ve a **Proxy Hosts** → **Add Proxy Host**
+
+2. En la pestaña **Details**:
+ - **Domain Names**: `vaultwarden.tudominio.com`
+ - **Scheme**: `http` (sí, HTTP, porque es interno)
+ - **Forward Hostname / IP**: `vaultwarden` (nombre del contenedor)
+ - **Forward Port**: `80`
+ - ✅ **Cache Assets**: Activar
+ - ✅ **Block Common Exploits**: Activar
+ - ✅ **Websockets Support**: **⚠️ CRÍTICO - ACTIVAR**
+
+3. En la pestaña **SSL**:
+ - ✅ **Force SSL**: Activar
+ - **SSL Certificate**: Selecciona "Request a new SSL Certificate"
+ - ✅ **Force SSL**: Activar
+ - ✅ **HTTP/2 Support**: Activar
+ - ✅ **HSTS Enabled**: Activar (recomendado)
+ - Email: Tu email para Let's Encrypt
+ - ✅ **I Agree to the Let's Encrypt Terms of Service**
+
+4. Haz clic en **Save**
+
+### 3. Configuración Avanzada (Opcional)
+
+Si quieres añadir headers de seguridad adicionales:
+
+1. Edita el Proxy Host creado
+2. Ve a la pestaña **Advanced**
+3. Añade en **Custom Nginx Configuration**:
+
+```nginx
+# Security headers
+add_header X-Frame-Options "SAMEORIGIN" always;
+add_header X-Content-Type-Options "nosniff" always;
+add_header X-XSS-Protection "1; mode=block" always;
+add_header Referrer-Policy "strict-origin-when-cross-origin" always;
+
+# WebSocket headers
+proxy_set_header Upgrade $http_upgrade;
+proxy_set_header Connection "upgrade";
+```
+
+4. Guarda los cambios
+
+## ⚠️ WebSocket Support - CRÍTICO
+
+El **WebSocket Support** es **imprescindible** para Vaultwarden. Sin él:
+
+- ❌ No habrá sincronización en tiempo real
+- ❌ Los cambios tardarán minutos en aparecer en otros dispositivos
+- ❌ La experiencia de usuario será deficiente
+
+### Verificar WebSocket
+
+1. En NPM, edita el Proxy Host de Vaultwarden
+2. En la pestaña **Details**, verifica que **Websockets Support** está ✅ activado
+3. Si no lo está, actívalo y guarda
+
+### Probar WebSocket desde CLI
+
+```bash
+# Instalar wscat si no lo tienes
+npm install -g wscat
+
+# Probar conexión WebSocket
+wscat -c wss://vaultwarden.tudominio.com/notifications/hub
+```
+
+Si funciona, verás una conexión establecida. Si falla, revisa la configuración de NPM.
+
+## ✅ Verificación del Despliegue
+
+### 1. Verificar Acceso Web
+
+Abre tu navegador y ve a: `https://vaultwarden.tudominio.com`
+
+Deberías ver la página de login/registro de Vaultwarden con certificado SSL válido (candado verde).
+
+### 2. Verificar Certificado SSL
+
+Haz clic en el candado del navegador y verifica:
+- ✅ Certificado emitido por Let's Encrypt
+- ✅ Válido y no caducado
+- ✅ Sin errores de nombre de dominio
+
+### 3. Verificar WebSocket en Logs
+
+```bash
+docker compose logs vaultwarden | grep -i websocket
+```
+
+Deberías ver:
+```
+[INFO] WebSocket server listening on 0.0.0.0:3012
+```
+
+### 4. Verificar Panel de Administración
+
+Ve a: `https://vaultwarden.tudominio.com/admin`
+
+Introduce tu `ADMIN_TOKEN`. Si puedes acceder, la configuración es correcta.
+
+### 5. Prueba de Sincronización
+
+1. Crea una cuenta en Vaultwarden
+2. Añade una contraseña desde la interfaz web
+3. Instala la app móvil de Bitwarden
+4. Configura el servidor: `https://vaultwarden.tudominio.com`
+5. Inicia sesión
+6. La contraseña debería aparecer **inmediatamente** (si WebSocket funciona)
+
+Si la sincronización tarda minutos, **WebSocket NO está funcionando**.
+
+## 🔒 Seguridad Adicional
+
+### Restringir Acceso por IP al Admin Panel
+
+Puedes limitar el acceso al panel `/admin` desde la configuración avanzada de NPM:
+
+1. Edita el Proxy Host de Vaultwarden
+2. Ve a **Advanced**
+3. Añade:
+
+```nginx
+# Permitir solo desde tu IP
+location /admin {
+ allow 192.168.1.100; # Tu IP
+ deny all;
+ proxy_pass http://vaultwarden:80;
+}
+```
+
+### Headers de Seguridad
+
+Ya añadidos en la configuración opcional anterior, incluyen:
+- `X-Frame-Options`: Previene clickjacking
+- `X-Content-Type-Options`: Previene MIME sniffing
+- `X-XSS-Protection`: Protección XSS
+- `Referrer-Policy`: Control de referrer
+
+## 🔄 Actualización
+
+Desde Portainer (Git Repository):
+1. Ve al stack `vaultwarden`
+2. Clic en **Pull and redeploy**
+
+Desde CLI:
+```bash
+docker compose pull
+docker compose up -d
+```
+
+**Nota**: No necesitas cambiar nada en NPM al actualizar, el Proxy Host seguirá funcionando.
+
+## 📖 Siguientes Pasos
+
+- **[Configuración Inicial](Configuración-Inicial)**: Configura el panel de administración
+- **[Personalización](Personalización)**: Ajusta SMTP, usuarios y organizaciones
+- **[Backup y Restauración](Backup-y-Restauración)**: Protege tus datos
+
+## 🆘 Solución de Problemas
+
+### Error 502 Bad Gateway
+
+**Síntoma**: NPM muestra error 502
+
+**Solución**:
+1. Verifica que el contenedor está corriendo: `docker compose ps`
+2. Comprueba que ambos están en la red `proxy`:
+ ```bash
+ docker network inspect proxy
+ ```
+3. Verifica el nombre del contenedor es exactamente `vaultwarden`
+4. Revisa logs de NPM y Vaultwarden
+
+### WebSocket no funciona
+
+**Síntoma**: Sincronización muy lenta
+
+**Solución**:
+1. ✅ Activa **Websockets Support** en el Proxy Host de NPM
+2. Verifica en logs: `docker compose logs vaultwarden | grep websocket`
+3. Limpia caché del navegador
+4. Prueba con `wscat` como se indicó arriba
+
+### Certificado SSL no se renueva
+
+**Síntoma**: Advertencia de certificado caducado
+
+**Solución**:
+1. En NPM, edita el Proxy Host
+2. Pestaña **SSL** → Click en **Force Renew**
+3. Verifica que el puerto 80 está abierto (Let's Encrypt lo necesita)
+4. Revisa logs de NPM para errores de renovación
+
+### No puedo acceder al admin panel
+
+**Síntoma**: Error al acceder a `/admin`
+
+**Solución**:
+1. Verifica que `ADMIN_TOKEN` está configurado correctamente
+2. Prueba regenerar el token: `openssl rand -base64 48`
+3. Actualiza las variables de entorno en Portainer
+4. Redesplegar el stack
+
+---
+
+**Última actualización**: Diciembre 2025
\ No newline at end of file
diff --git a/Personalización.md b/Personalización.md
new file mode 100644
index 0000000..4b24aab
--- /dev/null
+++ b/Personalización.md
@@ -0,0 +1,458 @@
+# 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:
+
+```env
+# 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):
+
+1. Ve a https://myaccount.google.com/security
+2. Activa verificación en 2 pasos
+3. Genera una App Password
+4. Usa estos valores:
+
+```env
+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
+
+```env
+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:
+```env
+SMTP_HOST=smtp.office365.com
+SMTP_FROM=tucuenta@tuempresa.com
+```
+
+
+
+
+📮 Servidor SMTP Propio
+
+```env
+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**:
+1. Ve a tu stack `vaultwarden`
+2. **Environment variables** → Añade las variables SMTP
+3. **Update the stack**
+
+**Desde CLI**:
+1. Edita `.env` y añade las variables
+2. Ejecuta: `docker compose up -d`
+
+### Probar SMTP
+
+1. Ve a `/admin`
+2. **General Settings** → Scroll down
+3. **Test SMTP** → Introduce un email
+4. Haz clic en **Send test email**
+5. Verifica que recibiste el email
+
+Si falla, revisa los logs:
+```bash
+docker compose logs vaultwarden | grep -i smtp
+```
+
+## 👤 Configuración de Usuarios
+
+### Límite de Usuarios
+
+Para limitar el número de cuentas:
+
+```env
+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:
+
+```env
+SIGNUPS_DOMAINS_WHITELIST=tuempresa.com,otrodominio.com
+```
+
+Solo emails con `@tuempresa.com` o `@otrodominio.com` podrán registrarse.
+
+### Verificación de Email Obligatoria
+
+```env
+SIGNUPS_VERIFY=true
+```
+
+Los usuarios no podrán usar Vaultwarden hasta verificar su email (requiere SMTP).
+
+### Desactivar Registros pero Permitir Invitaciones
+
+```env
+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:
+
+```env
+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:
+
+1. Monta un volumen con tu favicon:
+```yaml
+volumes:
+ - vaultwarden_data:/data
+ - ./custom/favicon.ico:/web-vault/favicon.ico:ro
+```
+
+2. Crea `./custom/favicon.ico` con tu icono
+
+### Deshabilitar Iconos de Servicios
+
+Por privacidad, puedes deshabilitar la descarga de iconos:
+
+```env
+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:
+
+```env
+# 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
+
+```env
+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):
+
+```env
+# 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:
+
+```env
+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):
+
+```env
+DATABASE_URL=postgresql://usuario:password@postgres:5432/vaultwarden
+```
+
+⚠️ **Requiere**:
+1. Contenedor PostgreSQL adicional
+2. Migración manual de datos
+3. Backups más complejos
+
+No es necesario para la mayoría de despliegues.
+
+### Migrar a MySQL/MariaDB (Avanzado)
+
+```env
+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:
+
+```env
+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
+
+```env
+TZ=Europe/Madrid # Ya configurado en el docker-compose
+```
+
+Otras opciones:
+- `America/New_York`
+- `Asia/Tokyo`
+- `UTC`
+
+Lista completa: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
+
+### Formato de Logs
+
+```env
+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:
+
+```env
+ROCKET_WORKERS=10 # Por defecto: número de CPUs
+```
+
+Aumenta si tienes muchos usuarios concurrentes.
+
+### Database Pool
+
+```env
+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:
+
+```env
+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:
+
+```env
+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`:
+
+```env
+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:
+
+```env
+WEBSOCKET_PORT=3012
+```
+
+Si cambias esto, actualiza también:
+- Labels de Traefik
+- Configuración de NPM
+- Puerto publicado en Standalone
+
+## 📝 Ejemplo de Configuración Completa
+
+Un archivo `.env` típico para producción:
+
+```env
+# Dominio
+DOMAIN=https://vaultwarden.empresa.com
+DOMAIN_HOST=vaultwarden.empresa.com
+
+# Seguridad
+ADMIN_TOKEN=token_generado_con_openssl_rand_base64_48
+SIGNUPS_ALLOWED=false
+INVITATIONS_ALLOWED=true
+SIGNUPS_VERIFY=true
+
+# SMTP
+SMTP_HOST=smtp.office365.com
+SMTP_FROM=noreply@empresa.com
+SMTP_PORT=587
+SMTP_SECURITY=starttls
+SMTP_USERNAME=noreply@empresa.com
+SMTP_PASSWORD=password_seguro
+
+# Límites
+USER_LIMIT=100
+ATTACHMENT_LIMIT=10240
+USER_ATTACHMENT_LIMIT=102400
+
+# Restricciones
+SIGNUPS_DOMAINS_WHITELIST=empresa.com
+ORG_CREATION_USERS=admin@empresa.com
+
+# Personalización
+ORG_NAME=Empresa S.L.
+
+# Sistema
+TZ=Europe/Madrid
+LOG_LEVEL=warn
+
+# WebSocket
+WEBSOCKET_ENABLED=true
+```
+
+## 🔄 Aplicar Cambios
+
+Después de cambiar variables de entorno:
+
+**Portainer**:
+1. Stack → Environment variables → Editar
+2. Update the stack
+
+**CLI**:
+```bash
+# Edita .env
+nano .env
+
+# Recrea el contenedor
+docker compose up -d
+```
+
+Los cambios se aplican automáticamente al recrear el contenedor.
+
+## 📖 Referencias
+
+- [Variables de entorno oficiales](https://github.com/dani-garcia/vaultwarden/wiki/Configuration-overview)
+- [Guía de seguridad](https://github.com/dani-garcia/vaultwarden/wiki/Hardening-Guide)
+
+---
+
+**Última actualización**: Diciembre 2025
\ No newline at end of file
diff --git a/Solución-de-Problemas.md b/Solución-de-Problemas.md
new file mode 100644
index 0000000..d9d1e81
--- /dev/null
+++ b/Solución-de-Problemas.md
@@ -0,0 +1,644 @@
+# Solución de Problemas
+
+Guía completa para diagnosticar y resolver problemas comunes de Vaultwarden.
+
+## 🔍 Diagnóstico General
+
+Antes de buscar problemas específicos, recopila información básica:
+
+```bash
+# 1. Verificar que el contenedor está corriendo
+docker compose ps
+
+# 2. Ver logs recientes
+docker compose logs --tail=100 vaultwarden
+
+# 3. Verificar salud del contenedor
+docker inspect vaultwarden | grep -A 10 State
+
+# 4. Comprobar recursos
+docker stats vaultwarden --no-stream
+
+# 5. Verificar red
+docker network inspect proxy
+```
+
+## 🚫 Contenedor No Inicia
+
+### Síntoma
+
+`docker compose up -d` falla o el contenedor se detiene inmediatamente.
+
+### Diagnóstico
+
+```bash
+# Ver error exacto
+docker compose logs vaultwarden
+
+# Ver eventos de Docker
+docker events --filter container=vaultwarden
+```
+
+### Causas Comunes
+
+#### 1. Variable de Entorno Faltante
+
+**Error**: `Missing ADMIN_TOKEN` o similar
+
+**Solución**:
+```bash
+# Verificar variables
+docker compose config
+
+# Añadir variable faltante en .env o Portainer
+ADMIN_TOKEN=tu_token_aqui
+```
+
+#### 2. Puerto Ya en Uso
+
+**Error**: `address already in use` o `bind: address already in use`
+
+**Solución**:
+```bash
+# Identificar qué usa el puerto (ej: 8080)
+netstat -tuln | grep 8080
+
+# Cambiar puerto en override standalone
+ports:
+ - "8081:80" # Usa 8081 en lugar de 8080
+```
+
+#### 3. Volumen Corrupto
+
+**Error**: `database disk image is malformed`
+
+**Solución**:
+```bash
+# Verificar integridad
+docker run --rm -v vaultwarden_data:/data \
+ nouchka/sqlite3 sqlite3 /data/db.sqlite3 "PRAGMA integrity_check;"
+
+# Si falla, restaurar desde backup (ver Backup y Restauración)
+```
+
+#### 4. Permisos Incorrectos
+
+**Error**: `Permission denied` en logs
+
+**Solución**:
+```bash
+# Dar permisos correctos al volumen
+docker run --rm -v vaultwarden_data:/data alpine chown -R 1000:1000 /data
+```
+
+## 🌐 No Puedo Acceder a la Web
+
+### Síntoma
+
+`https://vaultwarden.tudominio.com` no responde o da timeout.
+
+### Diagnóstico Paso a Paso
+
+#### 1. Verificar Contenedor
+
+```bash
+# ¿Está corriendo?
+docker compose ps
+
+# Si está "unhealthy" o "exited"
+docker compose logs vaultwarden
+```
+
+#### 2. Verificar Red
+
+```bash
+# ¿Está en la red proxy?
+docker network inspect proxy | grep vaultwarden
+
+# Si no está, recrear
+docker compose down && docker compose up -d
+```
+
+#### 3. Verificar Proxy
+
+**Con Traefik**:
+```bash
+# Ver logs de Traefik
+docker logs traefik | grep vaultwarden
+
+# Verificar routers en el dashboard (http://traefik:8080)
+```
+
+**Con NPM**:
+1. Accede a NPM (http://npm:81)
+2. **Proxy Hosts** → Verifica que existe entrada para Vaultwarden
+3. Status debe ser "Online"
+
+#### 4. Verificar DNS
+
+```bash
+# ¿El dominio resuelve a tu IP?
+nslookup vaultwarden.tudominio.com
+
+# Prueba desde otra máquina
+ping vaultwarden.tudominio.com
+```
+
+#### 5. Verificar Firewall
+
+```bash
+# ¿Puertos 80/443 abiertos?
+sudo ufw status | grep -E '80|443'
+
+# Si están bloqueados
+sudo ufw allow 80/tcp
+sudo ufw allow 443/tcp
+```
+
+### Soluciones Específicas
+
+#### Error 502 Bad Gateway
+
+**Causa**: El proxy no puede conectar con Vaultwarden
+
+**Solución**:
+```bash
+# 1. Verificar que ambos están en la misma red
+docker network inspect proxy
+
+# 2. Verificar nombre del contenedor
+docker compose ps # Debe ser exactamente "vaultwarden"
+
+# 3. Probar conectividad interna
+docker exec -it traefik ping vaultwarden # O desde NPM
+```
+
+#### Error 503 Service Unavailable
+
+**Causa**: Contenedor caído o reiniciando constantemente
+
+**Solución**:
+```bash
+# Ver por qué se reinicia
+docker compose logs vaultwarden
+
+# Recrear contenedor
+docker compose down && docker compose up -d
+```
+
+#### Error 404 Not Found (con Traefik)
+
+**Causa**: Router no configurado o regla incorrecta
+
+**Solución**:
+```bash
+# Verificar labels
+docker inspect vaultwarden | grep -A 20 Labels
+
+# Debe incluir: traefik.http.routers.vaultwarden.rule=Host(`...`)
+
+# Si falta, verificar override de Traefik
+cat docker-compose.override.yml
+```
+
+## 🔐 Problemas de Login
+
+### No Puedo Iniciar Sesión
+
+#### Causa 1: Contraseña Maestra Incorrecta
+
+**Síntoma**: "Invalid username or password"
+
+**Solución**:
+- ⚠️ **La contraseña maestra NO se puede recuperar**
+- Si la olvidaste, no hay solución sin backup
+- Crear cuenta nueva como último recurso
+
+#### Causa 2: Email No Verificado
+
+**Síntoma**: "Email not verified"
+
+**Solución**:
+```bash
+# Opción 1: Reenviar email de verificación (requiere SMTP)
+# Desde /admin → Users → Resend invitation
+
+# Opción 2: Verificar manualmente en la DB (avanzado)
+docker exec -it vaultwarden sqlite3 /data/db.sqlite3 \
+ "UPDATE users SET email_verified = 1 WHERE email = 'usuario@email.com';"
+```
+
+#### Causa 3: 2FA Perdido
+
+**Síntoma**: No tienes acceso al código 2FA
+
+**Solución**:
+```bash
+# Desactivar 2FA para un usuario (desde DB)
+docker exec -it vaultwarden sqlite3 /data/db.sqlite3 \
+ "DELETE FROM twofactor WHERE user_uuid = (SELECT uuid FROM users WHERE email = 'usuario@email.com');"
+```
+
+### Session Expirada Constantemente
+
+**Causa**: Cookies bloqueadas o DOMAIN incorrecto
+
+**Solución**:
+```bash
+# Verificar variable DOMAIN
+docker compose exec vaultwarden env | grep DOMAIN
+
+# Debe coincidir EXACTAMENTE con la URL de acceso
+# Correcto: DOMAIN=https://vaultwarden.tudominio.com
+# Incorrecto: DOMAIN=https://vaultwarden.tudominio.com/ (barra final)
+```
+
+## 🔌 WebSocket No Funciona
+
+### Síntoma
+
+Sincronización muy lenta (minutos en lugar de segundos).
+
+### Diagnóstico
+
+```bash
+# 1. Verificar que WebSocket está habilitado
+docker compose exec vaultwarden env | grep WEBSOCKET
+
+# 2. Ver puerto en logs
+docker compose logs vaultwarden | grep -i websocket
+
+# Debería mostrar: "WebSocket server listening on 0.0.0.0:3012"
+```
+
+### Soluciones por Configuración
+
+#### Con Traefik
+
+```bash
+# Verificar router de WebSocket
+docker inspect vaultwarden | grep -i "vaultwarden-ws"
+
+# Debe existir router para /notifications/hub en puerto 3012
+```
+
+Si falta:
+1. Verifica que usas `docker-compose.override.traefik.yml.example`
+2. Recrear: `docker compose down && docker compose up -d`
+
+#### Con NPM
+
+**Problema más común**: WebSocket Support no activado
+
+**Solución**:
+1. NPM → **Proxy Hosts**
+2. Editar proxy de Vaultwarden
+3. **Advanced** → ✅ Activar **Websockets Support**
+4. Save
+
+#### Con Standalone
+
+```bash
+# Verificar que puerto 3012 está expuesto
+docker compose port vaultwarden 3012
+
+# Si no responde, verificar override
+cat docker-compose.override.yml
+# Debe incluir: "3012:3012"
+```
+
+### Probar WebSocket
+
+```bash
+# Instalar wscat (si no lo tienes)
+npm install -g wscat
+
+# Probar conexión
+wscat -c wss://vaultwarden.tudominio.com/notifications/hub
+
+# Si funciona, verás: "Connected"
+# Si falla, problema de configuración del proxy
+```
+
+## 📧 Problemas con Email (SMTP)
+
+### Emails No Se Envían
+
+#### Diagnóstico
+
+```bash
+# Ver errores SMTP en logs
+docker compose logs vaultwarden | grep -i smtp
+
+# Errores comunes:
+# - "Connection refused": Host/puerto incorrectos
+# - "Authentication failed": Usuario/password incorrectos
+# - "TLS error": SMTP_SECURITY incorrecto
+```
+
+#### Causas Comunes
+
+##### 1. Host o Puerto Incorrectos
+
+**Solución**:
+```env
+# Gmail
+SMTP_HOST=smtp.gmail.com
+SMTP_PORT=587
+
+# Outlook
+SMTP_HOST=smtp.office365.com
+SMTP_PORT=587
+
+# Otros: verificar documentación del proveedor
+```
+
+##### 2. SMTP_SECURITY Incorrecto
+
+**Solución**:
+```env
+# Para puerto 587 (común)
+SMTP_SECURITY=starttls
+
+# Para puerto 465
+SMTP_SECURITY=ssl
+
+# Para puerto 25 (raro, inseguro)
+SMTP_SECURITY=off
+```
+
+##### 3. Credenciales Incorrectas
+
+**Gmail requiere App Password**:
+1. https://myaccount.google.com/security
+2. 2-Step Verification → ON
+3. App passwords → Generate
+4. Usa el password generado (no tu password normal)
+
+##### 4. Firewall Bloqueando Puerto SMTP
+
+**Solución**:
+```bash
+# Probar conectividad SMTP desde el contenedor
+docker compose exec vaultwarden sh
+apk add --no-cache openssl
+openssl s_client -starttls smtp -connect smtp.gmail.com:587
+# Debería conectar
+```
+
+### Probar SMTP desde el Panel de Administración
+
+1. Ve a `/admin`
+2. Scroll down a **SMTP Settings**
+3. Introduce un email de prueba
+4. **Send test email**
+5. Revisa los logs si falla
+
+## 🔒 Problemas con Certificados SSL
+
+### Certificado Inválido o Autofirmado
+
+#### Con Traefik
+
+**Diagnóstico**:
+```bash
+# Ver certificados gestionados por Traefik
+docker exec traefik ls -la /acme.json
+
+# Ver logs de Let's Encrypt
+docker logs traefik | grep -i acme
+```
+
+**Causas comunes**:
+1. **DNS no apunta al servidor**: Verifica `nslookup vaultwarden.tudominio.com`
+2. **Puertos 80/443 cerrados**: Let's Encrypt necesita acceso
+3. **Límite de Let's Encrypt**: 5 certificados/dominio/semana
+
+**Solución**:
+```bash
+# Forzar renovación (si Traefik usa acme.json)
+docker exec traefik rm /acme.json
+docker restart traefik
+```
+
+#### Con NPM
+
+**Solución**:
+1. NPM → **SSL Certificates**
+2. Encuentra tu certificado
+3. Opciones (⋮) → **Renew Certificate**
+
+Si falla:
+- Verifica DNS
+- Verifica puertos 80/443 abiertos
+- Intenta con DNS Challenge en lugar de HTTP Challenge
+
+### Mixed Content (HTTP en HTTPS)
+
+**Síntoma**: Elementos de la página no cargan, errores de seguridad en consola
+
+**Solución**:
+```bash
+# Verificar que DOMAIN usa https://
+docker compose exec vaultwarden env | grep DOMAIN
+
+# Debe ser: DOMAIN=https://vaultwarden.tudominio.com
+# NO: DOMAIN=http://vaultwarden.tudominio.com
+```
+
+## 💾 Problemas con Base de Datos
+
+### Database is Locked
+
+**Síntoma**: Error al crear/modificar entradas
+
+**Causa**: SQLite bajo mucha carga concurrente
+
+**Solución**:
+```bash
+# Aumentar timeout de DB
+# Añadir a variables de entorno
+DATABASE_MAX_CONNS=10
+```
+
+Para instalaciones grandes (>200 usuarios), considera migrar a PostgreSQL.
+
+### Database Corruption
+
+**Síntoma**: Errores al leer datos, contenedor que crashea
+
+**Diagnóstico**:
+```bash
+# Verificar integridad
+docker run --rm -v vaultwarden_data:/data \
+ nouchka/sqlite3 sqlite3 /data/db.sqlite3 "PRAGMA integrity_check;"
+```
+
+**Solución**:
+```bash
+# 1. Detener Vaultwarden
+docker compose stop vaultwarden
+
+# 2. Backup de la DB corrupta
+docker run --rm -v vaultwarden_data:/data -v ~/:/backup alpine \
+ cp /data/db.sqlite3 /backup/db.sqlite3.corrupted
+
+# 3. Intentar reparación
+docker run --rm -v vaultwarden_data:/data \
+ nouchka/sqlite3 sqlite3 /data/db.sqlite3 ".recover" | \
+ sqlite3 /data/db-recovered.sqlite3
+
+# 4. Si la reparación funciona
+docker run --rm -v vaultwarden_data:/data alpine \
+ sh -c "mv /data/db.sqlite3 /data/db.sqlite3.broken && mv /data/db-recovered.sqlite3 /data/db.sqlite3"
+
+# 5. Si todo falla, restaurar desde backup
+# Ver: Backup y Restauración
+```
+
+## 🧩 Problemas con Clientes
+
+### Extensión del Navegador No Conecta
+
+**Síntomas**: "Unable to connect to server"
+
+**Soluciones**:
+1. Verificar URL del servidor: `https://vaultwarden.tudominio.com` (sin /admin, sin barra final)
+2. Verificar que HTTPS funciona desde navegador
+3. Limpiar caché de la extensión
+4. Reinstalar extensión como último recurso
+
+### App Móvil No Sincroniza
+
+**Causas comunes**:
+1. WebSocket no funciona (ver sección WebSocket arriba)
+2. App en modo offline
+3. Cuenta bloqueada o sesión expirada
+
+**Solución**:
+1. Cerrar sesión en la app
+2. Volver a iniciar sesión
+3. Verificar WebSocket: debe sincronizar al instante
+
+### CLI de Bitwarden Falla
+
+**Error**: `Invalid master password`
+
+**Solución**:
+```bash
+# Verificar configuración del servidor
+bw config server https://vaultwarden.tudominio.com
+
+# Ver config actual
+bw config server
+
+# Logout y login fresh
+bw logout
+bw login usuario@email.com
+```
+
+## 📊 Problemas de Rendimiento
+
+### Vaultwarden Muy Lento
+
+**Diagnóstico**:
+```bash
+# Uso de recursos
+docker stats vaultwarden --no-stream
+
+# Si CPU >80% o RAM alta, posibles causas:
+# 1. Base de datos muy grande
+# 2. Muchos usuarios concurrentes
+# 3. Iconos descargándose constantemente
+```
+
+**Soluciones**:
+```bash
+# 1. Deshabilitar iconos si no son necesarios
+ICON_SERVICE=none
+
+# 2. Aumentar límite de workers
+ROCKET_WORKERS=20
+
+# 3. Considerar PostgreSQL para >500 usuarios
+```
+
+### Logs Creciendo Mucho
+
+**Síntoma**: Disco lleno por `/var/lib/docker/volumes/vaultwarden_data/_data/vaultwarden.log`
+
+**Solución**:
+```bash
+# Rotar logs manualmente
+docker compose exec vaultwarden sh -c "truncate -s 0 /data/vaultwarden.log"
+
+# O deshabilitar logs completamente
+# Eliminar de docker-compose.yml:
+# LOG_FILE: /data/vaultwarden.log
+```
+
+## 🆘 Comandos de Emergencia
+
+### Reset Completo (PELIGRO)
+
+⚠️ **Esto borra TODOS los datos**:
+
+```bash
+docker compose down -v
+docker volume rm vaultwarden_data
+docker compose up -d
+```
+
+### Acceso de Emergencia a la DB
+
+```bash
+# Entrar al contenedor
+docker compose exec vaultwarden sh
+
+# Abrir DB
+sqlite3 /data/db.sqlite3
+
+# Comandos útiles:
+.tables # Ver tablas
+SELECT * FROM users; # Ver usuarios
+.schema users # Ver estructura de tabla
+.quit # Salir
+```
+
+### Exportar Todas las Contraseñas (Recuperación)
+
+Desde la interfaz web:
+1. Login → **Tools**
+2. **Export Vault**
+3. Master Password → Confirmar
+4. **File Format**: JSON o CSV
+5. **Download**
+
+⚠️ El archivo descargado está **sin cifrar**. Elimínalo después de la recuperación.
+
+## 📖 Recursos Adicionales
+
+- [Wiki oficial de Vaultwarden](https://github.com/dani-garcia/vaultwarden/wiki)
+- [Issues de GitHub](https://github.com/dani-garcia/vaultwarden/issues)
+- [Discussions de GitHub](https://github.com/dani-garcia/vaultwarden/discussions)
+- [Guía de endurecimiento](https://github.com/dani-garcia/vaultwarden/wiki/Hardening-Guide)
+
+## 🔧 Obtener Ayuda
+
+Si ninguna solución funcionó:
+
+1. **Revisa logs completos**: `docker compose logs vaultwarden > logs.txt`
+2. **Documenta el problema**: Qué intentaste, qué error ves
+3. **Prepara información del sistema**:
+ ```bash
+ docker --version
+ docker compose version
+ docker compose config
+ ```
+4. **Busca en GitHub Issues**: Probablemente alguien ya tuvo el mismo problema
+
+---
+
+**Última actualización**: Diciembre 2025
+
+💡 **Tip**: El 90% de problemas se resuelven con: `docker compose down && docker compose up -d` después de verificar la configuración.
\ No newline at end of file
diff --git a/Standalone.md b/Standalone.md
new file mode 100644
index 0000000..5161c17
--- /dev/null
+++ b/Standalone.md
@@ -0,0 +1,402 @@
+# Despliegue Standalone
+
+Esta guía explica cómo desplegar Vaultwarden **sin reverse proxy**, accediendo directamente mediante IP y puerto.
+
+## ⚠️ ADVERTENCIA IMPORTANTE
+
+**NO RECOMENDADO PARA PRODUCCIÓN**
+
+Vaultwarden en modo standalone tiene limitaciones críticas:
+
+- ❌ **Sin HTTPS**: Los clientes de Bitwarden **requieren** HTTPS para funcionar correctamente
+- ❌ **Sin certificados SSL**: Conexión no segura
+- ❌ **Funcionalidad limitada**: Muchas características de los clientes no funcionarán
+- ❌ **Solo para testing**: Usar únicamente para pruebas locales temporales
+
+**Este modo solo es apropiado para**:
+- ✅ Testing local en entorno de desarrollo
+- ✅ Pruebas de concepto antes de configurar proxy
+- ✅ Debugging de problemas
+
+Para producción, usa **[Traefik](Traefik)** o **[NPM](NPM)**.
+
+## 📋 Requisitos Previos
+
+- ✅ Docker Engine instalado
+- ✅ Portainer (opcional, recomendado)
+- ✅ ADMIN_TOKEN generado
+- ✅ Puertos 8080 y 3012 disponibles
+
+### Generar ADMIN_TOKEN
+
+```bash
+openssl rand -base64 48
+```
+
+## 🚀 Despliegue desde Portainer
+
+### Opción A: Git Repository
+
+1. En Portainer, ve a **Stacks** → **Add stack**
+2. Nombre del stack: `vaultwarden`
+3. Selecciona **Git Repository**
+4. Configura el repositorio:
+ - **Repository URL**: `https://git.ictiberia.com/groales/vaultwarden`
+ - **Repository reference**: `refs/heads/main`
+ - **Compose path**: `docker-compose.yml`
+ - **Additional paths**: `docker-compose.override.standalone.yml.example`
+
+5. En **Environment variables**, añade:
+
+```env
+DOMAIN=http://IP-DEL-SERVIDOR:8080
+ADMIN_TOKEN=tu_token_generado_anteriormente
+SIGNUPS_ALLOWED=false
+```
+
+⚠️ **Importante**:
+- Reemplaza `IP-DEL-SERVIDOR` con la IP real de tu servidor
+- El `DOMAIN` debe incluir `http://` (no https)
+- El puerto debe coincidir con el publicado (8080)
+
+6. Haz clic en **Deploy the stack**
+
+### Opción B: Web Editor
+
+1. En Portainer, ve a **Stacks** → **Add stack**
+2. Nombre del stack: `vaultwarden`
+3. Selecciona **Web editor**
+4. Copia y pega este contenido:
+
+```yaml
+services:
+ vaultwarden:
+ container_name: vaultwarden
+ image: vaultwarden/server:latest
+ restart: unless-stopped
+ environment:
+ DOMAIN: ${DOMAIN}
+ SIGNUPS_ALLOWED: ${SIGNUPS_ALLOWED:-false}
+ ADMIN_TOKEN: ${ADMIN_TOKEN}
+ WEBSOCKET_ENABLED: true
+ LOG_FILE: /data/vaultwarden.log
+ LOG_LEVEL: warn
+ TZ: Europe/Madrid
+ volumes:
+ - vaultwarden_data:/data
+ ports:
+ - "8080:80"
+ - "3012:3012"
+
+volumes:
+ vaultwarden_data:
+ driver: local
+```
+
+5. En **Environment variables**, añade:
+
+```env
+DOMAIN=http://IP-DEL-SERVIDOR:8080
+ADMIN_TOKEN=tu_token_generado_anteriormente
+SIGNUPS_ALLOWED=false
+```
+
+6. Haz clic en **Deploy the stack**
+
+## 🖥️ Despliegue desde CLI
+
+### 1. Clonar el repositorio
+
+```bash
+git clone https://git.ictiberia.com/groales/vaultwarden.git
+cd vaultwarden
+```
+
+### 2. Copiar el archivo override
+
+```bash
+cp docker-compose.override.standalone.yml.example docker-compose.override.yml
+```
+
+### 3. Crear archivo .env
+
+Crea un archivo `.env` con el siguiente contenido:
+
+```env
+DOMAIN=http://192.168.1.100:8080 # Cambia por tu IP
+ADMIN_TOKEN=tu_token_generado_anteriormente
+SIGNUPS_ALLOWED=false
+```
+
+### 4. Iniciar el servicio
+
+```bash
+docker compose up -d
+```
+
+### 5. Verificar el despliegue
+
+```bash
+# Ver logs
+docker compose logs -f vaultwarden
+
+# Verificar que el contenedor está corriendo
+docker compose ps
+
+# Verificar puertos expuestos
+docker compose port vaultwarden 80
+docker compose port vaultwarden 3012
+```
+
+## 🔌 Puertos Expuestos
+
+El modo standalone expone dos puertos:
+
+| Puerto Host | Puerto Contenedor | Propósito |
+|-------------|-------------------|-----------|
+| **8080** | 80 | Interfaz web HTTP principal |
+| **3012** | 3012 | WebSocket para sincronización en tiempo real |
+
+### Verificar Puertos
+
+```bash
+# Ver puertos en uso
+netstat -tuln | grep -E '8080|3012'
+
+# Desde otro equipo en la red
+curl http://IP-DEL-SERVIDOR:8080
+```
+
+## ✅ Verificación del Despliegue
+
+### 1. Verificar Acceso Web
+
+Abre tu navegador y ve a: `http://IP-DEL-SERVIDOR:8080`
+
+⚠️ **Esperado**: El navegador mostrará advertencia de "conexión no segura". Es normal en modo standalone.
+
+### 2. Verificar WebSocket
+
+```bash
+docker compose logs vaultwarden | grep -i websocket
+```
+
+Deberías ver:
+```
+[INFO] WebSocket server listening on 0.0.0.0:3012
+```
+
+### 3. Verificar Panel de Administración
+
+Ve a: `http://IP-DEL-SERVIDOR:8080/admin`
+
+Introduce tu `ADMIN_TOKEN`. Si puedes acceder, la configuración básica es correcta.
+
+### 4. Verificar Conectividad de Red
+
+Desde otro dispositivo en la misma red:
+
+```bash
+# Ping al servidor
+ping IP-DEL-SERVIDOR
+
+# Probar acceso HTTP
+curl http://IP-DEL-SERVIDOR:8080
+
+# Verificar puerto WebSocket
+nc -zv IP-DEL-SERVIDOR 3012
+```
+
+## 🛠️ Configuración de Clientes
+
+### Configurar Cliente de Bitwarden
+
+⚠️ **LIMITACIÓN**: Muchos clientes de Bitwarden **no funcionarán** correctamente sin HTTPS.
+
+#### Extensión de Navegador (Limitado)
+
+Algunas versiones antiguas pueden funcionar:
+
+1. Abre la extensión de Bitwarden
+2. Haz clic en ⚙️ (configuración)
+3. En **Server URL** introduce: `http://IP-DEL-SERVIDOR:8080`
+4. Intenta iniciar sesión
+
+**Resultado esperado**: Muchas versiones modernas **rechazarán** la conexión HTTP.
+
+#### CLI de Bitwarden
+
+La CLI es más permisiva con HTTP:
+
+```bash
+# Instalar CLI
+npm install -g @bitwarden/cli
+
+# Configurar servidor
+bw config server http://IP-DEL-SERVIDOR:8080
+
+# Login (puede requerir --nointeraction)
+bw login usuario@email.com
+```
+
+#### App Móvil
+
+⚠️ Las apps móviles de Bitwarden **requieren HTTPS**. No funcionarán en modo standalone.
+
+## 🔧 Configuración Avanzada
+
+### Cambiar Puerto HTTP
+
+Si el puerto 8080 está ocupado, cámbialo en el override:
+
+```yaml
+ports:
+ - "9090:80" # Cambia 9090 por el puerto que prefieras
+ - "3012:3012"
+```
+
+Y actualiza la variable `DOMAIN`:
+```env
+DOMAIN=http://IP-DEL-SERVIDOR:9090
+```
+
+### Acceso desde Internet (NO RECOMENDADO)
+
+Si **absolutamente** necesitas exponer Vaultwarden sin proxy:
+
+1. **NO LO HAGAS** en producción
+2. Si insistes, abre los puertos en el router:
+ - Puerto 8080 → IP-DEL-SERVIDOR:8080
+ - Puerto 3012 → IP-DEL-SERVIDOR:3012
+3. Usa tu IP pública en `DOMAIN`
+4. **Ten en cuenta**: Tus contraseñas viajarán sin cifrar por internet
+
+**Mejor solución**: Configura [Traefik](Traefik) o [NPM](NPM) con Let's Encrypt.
+
+### Logs Detallados para Debugging
+
+Si necesitas logs más verbosos:
+
+```yaml
+environment:
+ LOG_LEVEL: debug # Cambia de 'warn' a 'debug'
+```
+
+Luego:
+```bash
+docker compose up -d
+docker compose logs -f vaultwarden
+```
+
+## 🔄 Migración a Modo Proxy
+
+Cuando estés listo para producción, migra fácilmente:
+
+### 1. Detener el Stack
+
+```bash
+docker compose down
+# NO uses -v, queremos conservar los datos
+```
+
+### 2. Cambiar al Override de Traefik o NPM
+
+```bash
+# Para Traefik
+cp docker-compose.override.traefik.yml.example docker-compose.override.yml
+
+# Para NPM
+cp docker-compose.override.npm.yml.example docker-compose.override.yml
+```
+
+### 3. Actualizar Variables de Entorno
+
+Edita `.env`:
+
+**Para Traefik**:
+```env
+DOMAIN=https://vaultwarden.tudominio.com
+DOMAIN_HOST=vaultwarden.tudominio.com
+ADMIN_TOKEN=tu_token_existente
+SIGNUPS_ALLOWED=false
+```
+
+**Para NPM**:
+```env
+DOMAIN=https://vaultwarden.tudominio.com
+ADMIN_TOKEN=tu_token_existente
+SIGNUPS_ALLOWED=false
+```
+
+### 4. Redesplegar
+
+```bash
+docker compose up -d
+```
+
+**Resultado**: Tus datos (contraseñas, usuarios, configuración) se conservan automáticamente gracias al volumen `vaultwarden_data`.
+
+## 📖 Siguientes Pasos
+
+Una vez que has probado Vaultwarden en modo standalone:
+
+1. **Migra a un proxy**: [Traefik](Traefik) o [NPM](NPM)
+2. Configura tu dominio con DNS
+3. Habilita HTTPS con Let's Encrypt
+4. Lee **[Configuración Inicial](Configuración-Inicial)** para el setup del admin
+5. Configura **[Backup y Restauración](Backup-y-Restauración)** (crítico)
+
+## 🆘 Solución de Problemas
+
+### No puedo acceder desde otro equipo
+
+**Síntoma**: `http://IP:8080` no responde desde otro PC
+
+**Solución**:
+1. Verifica el firewall del servidor:
+ ```bash
+ # Windows
+ netsh advfirewall firewall add rule name="Vaultwarden" dir=in action=allow protocol=TCP localport=8080,3012
+
+ # Linux
+ sudo ufw allow 8080/tcp
+ sudo ufw allow 3012/tcp
+ ```
+2. Comprueba que el contenedor escucha en 0.0.0.0, no en 127.0.0.1
+3. Verifica que usas la IP correcta (no localhost)
+
+### Los clientes no se conectan
+
+**Síntoma**: Error en app o extensión de Bitwarden
+
+**Esperado**: Es normal, la mayoría de clientes **requieren HTTPS**.
+
+**Solución**: Migra a [Traefik](Traefik) o [NPM](NPM).
+
+### WebSocket no funciona
+
+**Síntoma**: Sincronización muy lenta
+
+**Solución**:
+1. Verifica puerto 3012: `netstat -tuln | grep 3012`
+2. Revisa logs: `docker compose logs vaultwarden | grep websocket`
+3. Prueba conectividad: `nc -zv IP-DEL-SERVIDOR 3012`
+
+### Puerto 8080 ya en uso
+
+**Síntoma**: Error al iniciar el contenedor
+
+**Solución**:
+1. Identifica qué usa el puerto:
+ ```bash
+ # Windows
+ netstat -ano | findstr :8080
+
+ # Linux
+ sudo lsof -i :8080
+ ```
+2. Cambia el puerto en el override como se explicó arriba
+
+---
+
+**Última actualización**: Diciembre 2025
\ No newline at end of file
diff --git a/Traefik.md b/Traefik.md
new file mode 100644
index 0000000..becbd61
--- /dev/null
+++ b/Traefik.md
@@ -0,0 +1,344 @@
+# Despliegue con Traefik
+
+Esta guía explica cómo desplegar Vaultwarden usando **Traefik** como reverse proxy.
+
+## ✅ Ventajas de usar Traefik
+
+- 🔒 **Certificados SSL automáticos** con Let's Encrypt
+- 🔄 **Renovación automática** de certificados
+- 🌐 **Redirección HTTP → HTTPS** integrada
+- 🔌 **WebSocket preconfigurado** para sincronización en tiempo real
+- 📝 **Configuración declarativa** mediante labels de Docker
+
+## 📋 Requisitos Previos
+
+Antes de comenzar, asegúrate de tener:
+
+- ✅ Traefik funcionando con soporte para Let's Encrypt
+- ✅ Red Docker `proxy` creada y Traefik conectado a ella
+- ✅ Dominio configurado apuntando a tu servidor
+- ✅ Puertos 80 y 443 abiertos en el firewall
+- ✅ ADMIN_TOKEN generado
+
+### Verificar Red Proxy
+
+```bash
+docker network ls | grep proxy
+```
+
+Si no existe, créala:
+
+```bash
+docker network create proxy
+```
+
+### Generar ADMIN_TOKEN
+
+```bash
+openssl rand -base64 48
+```
+
+Guarda el resultado, lo necesitarás para las variables de entorno.
+
+## 🚀 Despliegue desde Portainer
+
+### Opción A: Git Repository (Recomendada)
+
+Esta opción mantiene tu stack actualizado con el repositorio Git.
+
+1. En Portainer, ve a **Stacks** → **Add stack**
+2. Nombre del stack: `vaultwarden`
+3. Selecciona **Git Repository**
+4. Configura el repositorio:
+ - **Repository URL**: `https://git.ictiberia.com/groales/vaultwarden`
+ - **Repository reference**: `refs/heads/main`
+ - **Compose path**: `docker-compose.yml`
+ - **Additional paths**: `docker-compose.override.traefik.yml.example`
+
+5. En **Environment variables**, añade:
+
+```env
+DOMAIN=https://vaultwarden.tudominio.com
+DOMAIN_HOST=vaultwarden.tudominio.com
+ADMIN_TOKEN=tu_token_generado_anteriormente
+SIGNUPS_ALLOWED=false
+```
+
+⚠️ **Importante**:
+- `DOMAIN` incluye el protocolo (`https://`)
+- `DOMAIN_HOST` es solo el dominio sin protocolo
+- Reemplaza `vaultwarden.tudominio.com` con tu dominio real
+
+6. Haz clic en **Deploy the stack**
+
+### Opción B: Web Editor
+
+Si prefieres tener el compose completo en Portainer:
+
+1. En Portainer, ve a **Stacks** → **Add stack**
+2. Nombre del stack: `vaultwarden`
+3. Selecciona **Web editor**
+4. Copia y pega este contenido:
+
+```yaml
+services:
+ vaultwarden:
+ container_name: vaultwarden
+ image: vaultwarden/server:latest
+ restart: unless-stopped
+ environment:
+ DOMAIN: ${DOMAIN}
+ SIGNUPS_ALLOWED: ${SIGNUPS_ALLOWED:-false}
+ ADMIN_TOKEN: ${ADMIN_TOKEN}
+ WEBSOCKET_ENABLED: true
+ LOG_FILE: /data/vaultwarden.log
+ LOG_LEVEL: warn
+ TZ: Europe/Madrid
+ volumes:
+ - vaultwarden_data:/data
+ networks:
+ - proxy
+ labels:
+ # HTTP → HTTPS redirect
+ - "traefik.enable=true"
+ - "traefik.http.routers.vaultwarden-http.rule=Host(`${DOMAIN_HOST}`)"
+ - "traefik.http.routers.vaultwarden-http.entrypoints=web"
+ - "traefik.http.routers.vaultwarden-http.middlewares=redirect-to-https@docker"
+
+ # HTTPS router for main service
+ - "traefik.http.routers.vaultwarden.rule=Host(`${DOMAIN_HOST}`)"
+ - "traefik.http.routers.vaultwarden.entrypoints=websecure"
+ - "traefik.http.routers.vaultwarden.tls=true"
+ - "traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt"
+ - "traefik.http.routers.vaultwarden.service=vaultwarden-svc"
+ - "traefik.http.services.vaultwarden-svc.loadbalancer.server.port=80"
+
+ # WebSocket support for /notifications/hub
+ - "traefik.http.routers.vaultwarden-ws.rule=Host(`${DOMAIN_HOST}`) && Path(`/notifications/hub`)"
+ - "traefik.http.routers.vaultwarden-ws.entrypoints=websecure"
+ - "traefik.http.routers.vaultwarden-ws.tls=true"
+ - "traefik.http.routers.vaultwarden-ws.tls.certresolver=letsencrypt"
+ - "traefik.http.routers.vaultwarden-ws.service=vaultwarden-ws-svc"
+ - "traefik.http.services.vaultwarden-ws-svc.loadbalancer.server.port=3012"
+
+ # Redirect middleware
+ - "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
+ - "traefik.http.middlewares.redirect-to-https.redirectscheme.permanent=true"
+
+networks:
+ proxy:
+ external: true
+
+volumes:
+ vaultwarden_data:
+ driver: local
+```
+
+5. En **Environment variables**, añade las mismas variables que en la Opción A
+
+6. Haz clic en **Deploy the stack**
+
+## 🖥️ Despliegue desde CLI
+
+### 1. Clonar el repositorio
+
+```bash
+git clone https://git.ictiberia.com/groales/vaultwarden.git
+cd vaultwarden
+```
+
+### 2. Copiar el archivo override
+
+```bash
+cp docker-compose.override.traefik.yml.example docker-compose.override.yml
+```
+
+### 3. Crear archivo .env
+
+Crea un archivo `.env` con el siguiente contenido:
+
+```env
+DOMAIN=https://vaultwarden.tudominio.com
+DOMAIN_HOST=vaultwarden.tudominio.com
+ADMIN_TOKEN=tu_token_generado_anteriormente
+SIGNUPS_ALLOWED=false
+```
+
+### 4. Iniciar el servicio
+
+```bash
+docker compose up -d
+```
+
+### 5. Verificar el despliegue
+
+```bash
+# Ver logs
+docker compose logs -f vaultwarden
+
+# Verificar que el contenedor está corriendo
+docker compose ps
+```
+
+## 🔧 Configuración de Traefik
+
+### Labels Explicados
+
+El archivo override de Traefik incluye varios routers y servicios:
+
+#### Router HTTP (Redirección)
+```yaml
+- "traefik.http.routers.vaultwarden-http.rule=Host(`${DOMAIN_HOST}`)"
+- "traefik.http.routers.vaultwarden-http.entrypoints=web"
+- "traefik.http.routers.vaultwarden-http.middlewares=redirect-to-https@docker"
+```
+Captura tráfico HTTP y lo redirige a HTTPS.
+
+#### Router HTTPS Principal
+```yaml
+- "traefik.http.routers.vaultwarden.rule=Host(`${DOMAIN_HOST}`)"
+- "traefik.http.routers.vaultwarden.entrypoints=websecure"
+- "traefik.http.routers.vaultwarden.tls=true"
+- "traefik.http.routers.vaultwarden.tls.certresolver=letsencrypt"
+```
+Maneja tráfico HTTPS con certificado Let's Encrypt.
+
+#### Router WebSocket
+```yaml
+- "traefik.http.routers.vaultwarden-ws.rule=Host(`${DOMAIN_HOST}`) && Path(`/notifications/hub`)"
+- "traefik.http.services.vaultwarden-ws-svc.loadbalancer.server.port=3012"
+```
+Ruta específica para WebSocket en el puerto 3012, necesario para sincronización en tiempo real.
+
+### Verificar Configuración en Traefik
+
+Si tienes el dashboard de Traefik habilitado, verifica:
+
+1. Ve a `http://tu-servidor:8080` (o el puerto de tu dashboard)
+2. En **HTTP Routers**, deberías ver:
+ - `vaultwarden-http` (redirección)
+ - `vaultwarden` (servicio principal)
+ - `vaultwarden-ws` (WebSocket)
+3. En **HTTP Services**, verifica:
+ - `vaultwarden-svc@docker` (puerto 80)
+ - `vaultwarden-ws-svc@docker` (puerto 3012)
+
+## ✅ Verificación del Despliegue
+
+### 1. Verificar Acceso Web
+
+Abre tu navegador y ve a: `https://vaultwarden.tudominio.com`
+
+Deberías ver la página de login/registro de Vaultwarden con certificado SSL válido.
+
+### 2. Verificar WebSocket
+
+Los WebSockets son esenciales para la sincronización en tiempo real. Verifica en los logs:
+
+```bash
+docker compose logs vaultwarden | grep -i websocket
+```
+
+Deberías ver:
+```
+[INFO] WebSocket server listening on 0.0.0.0:3012
+```
+
+### 3. Verificar Panel de Administración
+
+Ve a: `https://vaultwarden.tudominio.com/admin`
+
+Introduce tu `ADMIN_TOKEN`. Si puedes acceder, la configuración es correcta.
+
+### 4. Prueba de Sincronización
+
+1. Crea una cuenta en Vaultwarden
+2. Añade una contraseña desde la web
+3. Instala la extensión de navegador Bitwarden
+4. Configura el servidor: `https://vaultwarden.tudominio.com`
+5. Inicia sesión
+6. Verifica que la contraseña aparece inmediatamente (WebSocket funcionando)
+
+## 🔒 Seguridad Adicional
+
+### Restringir Acceso al Admin Panel
+
+Puedes añadir autenticación básica de Traefik para el panel de administración:
+
+```yaml
+labels:
+ # Admin panel con autenticación extra
+ - "traefik.http.routers.vaultwarden-admin.rule=Host(`${DOMAIN_HOST}`) && PathPrefix(`/admin`)"
+ - "traefik.http.routers.vaultwarden-admin.middlewares=admin-auth"
+ - "traefik.http.middlewares.admin-auth.basicauth.users=admin:$$apr1$$hash$$generado"
+```
+
+Genera el hash:
+```bash
+htpasswd -nb admin tu_password
+```
+
+### Headers de Seguridad
+
+Considera añadir headers de seguridad adicionales:
+
+```yaml
+labels:
+ - "traefik.http.middlewares.security-headers.headers.stsSeconds=31536000"
+ - "traefik.http.middlewares.security-headers.headers.stsIncludeSubdomains=true"
+ - "traefik.http.middlewares.security-headers.headers.stsPreload=true"
+ - "traefik.http.routers.vaultwarden.middlewares=security-headers"
+```
+
+## 🔄 Actualización
+
+Desde Portainer (Git Repository):
+1. Ve al stack `vaultwarden`
+2. Clic en **Pull and redeploy**
+
+Desde CLI:
+```bash
+docker compose pull
+docker compose up -d
+```
+
+## 📖 Siguientes Pasos
+
+- **[Configuración Inicial](Configuración-Inicial)**: Configura el panel de administración
+- **[Personalización](Personalización)**: Ajusta SMTP, usuarios y organizaciones
+- **[Backup y Restauración](Backup-y-Restauración)**: Protege tus datos
+
+## 🆘 Solución de Problemas
+
+### Error de certificado SSL
+
+**Síntoma**: Certificado inválido o autofirmado
+
+**Solución**:
+1. Verifica que el dominio apunta a tu servidor
+2. Comprueba que Traefik tiene acceso a Let's Encrypt
+3. Revisa logs de Traefik: `docker logs traefik`
+4. Verifica el certresolver en la configuración de Traefik
+
+### WebSocket no funciona
+
+**Síntoma**: Sincronización lenta, no en tiempo real
+
+**Solución**:
+1. Verifica logs: `docker compose logs vaultwarden | grep websocket`
+2. Comprueba que el router WebSocket existe en Traefik
+3. Prueba manualmente: `wscat -c wss://vaultwarden.tudominio.com/notifications/hub`
+
+### No puedo acceder al servicio
+
+**Síntoma**: Timeout o conexión rechazada
+
+**Solución**:
+1. Verifica que el contenedor está corriendo: `docker compose ps`
+2. Comprueba que está en la red proxy: `docker network inspect proxy`
+3. Revisa logs de Traefik para errores de routing
+4. Verifica que los puertos 80/443 están abiertos
+
+---
+
+**Última actualización**: Diciembre 2025
\ No newline at end of file