diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..469ee0a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,21 @@
+# Docker Compose override files (keep only .example files)
+docker-compose.override.yml
+
+# Environment variables
+.env
+.env.local
+
+# Data directories
+data/
+logs/
+
+# OS files
+.DS_Store
+Thumbs.db
+*.swp
+*.swo
+*~
+
+# IDE
+.vscode/
+.idea/
diff --git a/README.md b/README.md
index e389ff8..26f4512 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,558 @@
-# vaultwarden
+# Vaultwarden
+Servidor de gestión de contraseñas compatible con Bitwarden, escrito en Rust. Implementación ligera y eficiente que permite autoalojar tu propio gestor de contraseñas con todas las características de Bitwarden.
+
+## Características
+
+- 🔐 **Compatible con Bitwarden**: Funciona con todas las aplicaciones oficiales de Bitwarden
+- 🚀 **Ligero y rápido**: Escrito en Rust, consume menos recursos que Bitwarden oficial
+- 📱 **Multiplataforma**: Clientes para móvil, escritorio, navegador y CLI
+- 🔄 **Sincronización en tiempo real**: WebSocket para actualizaciones instantáneas
+- 🔒 **Cifrado de extremo a extremo**: Tus contraseñas están cifradas localmente
+- 👥 **Organizaciones**: Comparte contraseñas de forma segura con equipos
+- 🌐 **Autoalojado**: Control total sobre tus datos
+
+## Requisitos Previos
+
+- Docker Engine instalado
+- Portainer configurado (recomendado)
+- **Para Traefik o NPM**: Red Docker `proxy` creada
+- **Dominio configurado**: Vaultwarden requiere HTTPS para funcionar correctamente
+- **ADMIN_TOKEN generado**: Token seguro para acceder al panel de administración
+
+⚠️ **IMPORTANTE - Seguridad**: Vaultwarden requiere HTTPS en producción. Los clientes de Bitwarden no funcionarán correctamente con HTTP.
+
+## Despliegue con Portainer
+
+### Opción A: Git Repository (Recomendada)
+
+Permite mantener la configuración actualizada automáticamente desde Git.
+
+1. En Portainer, ve a **Stacks** → **Add stack**
+2. Nombra el stack: `vaultwarden`
+3. Selecciona **Git Repository**
+4. Configura:
+ - **Repository URL**: `https://git.ictiberia.com/groales/vaultwarden`
+ - **Repository reference**: `refs/heads/main`
+ - **Compose path**: `docker-compose.yml`
+ - **Additional paths**: Elige según tu proxy:
+ - Para Traefik: `docker-compose.override.traefik.yml.example`
+ - Para NPM: `docker-compose.override.npm.yml.example`
+ - Para Standalone: `docker-compose.override.standalone.yml.example` (⚠️ no recomendado)
+
+5. En **Environment variables**, añade:
+
+ **Para Traefik o NPM**:
+ ```
+ DOMAIN=https://vaultwarden.tudominio.com
+ DOMAIN_HOST=vaultwarden.tudominio.com
+ ADMIN_TOKEN=tu_token_admin_seguro_generado
+ SIGNUPS_ALLOWED=false
+ ```
+
+ **Para Standalone** (solo testing):
+ ```
+ DOMAIN=http://IP-DEL-SERVIDOR:8080
+ ADMIN_TOKEN=tu_token_admin_seguro_generado
+ SIGNUPS_ALLOWED=false
+ ```
+
+6. Haz clic en **Deploy the stack**
+
+#### Generar ADMIN_TOKEN
+
+Es **crítico** generar un token fuerte para proteger el panel de administración:
+
+```bash
+openssl rand -base64 48
+```
+
+O usa cualquier generador de contraseñas seguro con mínimo 32 caracteres.
+
+#### Configuración de WebSocket
+
+- **Traefik**: Ya configurado en el override
+- **NPM**: Debes habilitar **WebSocket Support** en la configuración del Proxy Host desde la interfaz de NPM
+
+### Opción B: Web Editor
+
+Copia y pega el contenido consolidado según tu configuración de proxy.
+
+1. En Portainer, ve a **Stacks** → **Add stack**
+2. Nombra el stack: `vaultwarden`
+3. Selecciona **Web editor**
+4. Copia el contenido según tu entorno:
+
+
+📋 Despliegue con Traefik
+
+```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
+```
+
+**Variables de entorno necesarias**:
+```
+DOMAIN=https://vaultwarden.tudominio.com
+DOMAIN_HOST=vaultwarden.tudominio.com
+ADMIN_TOKEN=tu_token_admin_seguro_generado
+SIGNUPS_ALLOWED=false
+```
+
+
+
+
+📋 Despliegue con Nginx Proxy Manager
+
+```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
+```
+
+**Variables de entorno necesarias**:
+```
+DOMAIN=https://vaultwarden.tudominio.com
+ADMIN_TOKEN=tu_token_admin_seguro_generado
+SIGNUPS_ALLOWED=false
+```
+
+**⚠️ IMPORTANTE**: Debes configurar en NPM:
+1. Crea un Proxy Host apuntando a `vaultwarden:80`
+2. **Habilita "WebSocket Support"** en la pestaña Advanced
+3. Configura SSL con Let's Encrypt
+
+
+
+
+📋 Despliegue Standalone (Solo Testing)
+
+⚠️ **NO RECOMENDADO**: Vaultwarden requiere HTTPS para funcionar correctamente con los clientes oficiales de Bitwarden.
+
+```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
+```
+
+**Variables de entorno necesarias**:
+```
+DOMAIN=http://IP-DEL-SERVIDOR:8080
+ADMIN_TOKEN=tu_token_admin_seguro_generado
+SIGNUPS_ALLOWED=false
+```
+
+**Acceso**:
+- HTTP: `http://IP-DEL-SERVIDOR:8080`
+- WebSocket: `ws://IP-DEL-SERVIDOR:3012`
+
+
+
+5. En **Environment variables**, añade las variables correspondientes
+6. Haz clic en **Deploy the stack**
+
+## Despliegue con Docker CLI
+
+### 1. Clonar el repositorio
+
+```bash
+git clone https://git.ictiberia.com/groales/vaultwarden.git
+cd vaultwarden
+```
+
+### 2. Elegir modo de despliegue
+
+#### Opción A: Traefik
+
+```bash
+cp docker-compose.override.traefik.yml.example docker-compose.override.yml
+```
+
+Crear archivo `.env`:
+```env
+DOMAIN=https://vaultwarden.tudominio.com
+DOMAIN_HOST=vaultwarden.tudominio.com
+ADMIN_TOKEN=tu_token_admin_seguro_generado
+SIGNUPS_ALLOWED=false
+```
+
+#### Opción B: Nginx Proxy Manager
+
+```bash
+cp docker-compose.override.npm.yml.example docker-compose.override.yml
+```
+
+Crear archivo `.env`:
+```env
+DOMAIN=https://vaultwarden.tudominio.com
+ADMIN_TOKEN=tu_token_admin_seguro_generado
+SIGNUPS_ALLOWED=false
+```
+
+⚠️ No olvides habilitar **WebSocket Support** en la configuración del Proxy Host en NPM.
+
+#### Opción C: Standalone (solo testing)
+
+```bash
+cp docker-compose.override.standalone.yml.example docker-compose.override.yml
+```
+
+Crear archivo `.env`:
+```env
+DOMAIN=http://IP-DEL-SERVIDOR:8080
+ADMIN_TOKEN=tu_token_admin_seguro_generado
+SIGNUPS_ALLOWED=false
+```
+
+### 3. Generar ADMIN_TOKEN
+
+```bash
+openssl rand -base64 48
+```
+
+Añade el resultado a tu archivo `.env`.
+
+### 4. Iniciar el servicio
+
+```bash
+docker compose up -d
+```
+
+### 5. Verificar el despliegue
+
+```bash
+docker compose logs -f vaultwarden
+```
+
+## Configuración Inicial
+
+### 1. Acceder al Panel de Administración
+
+Visita `https://vaultwarden.tudominio.com/admin` e introduce tu `ADMIN_TOKEN`.
+
+### 2. Configuración Recomendada
+
+En el panel de administración:
+
+- **General Settings**:
+ - `Domain URL`: `https://vaultwarden.tudominio.com`
+ - `Require Email Verification`: Activar si tienes SMTP
+ - `Show password hints`: Desactivar por seguridad
+
+- **User Settings**:
+ - `Allow new signups`: `false` (salvo que lo necesites)
+ - `Invitation Organization Name`: Tu organización
+
+- **Advanced Settings**:
+ - `Enable WebSocket`: `true` (ya configurado)
+ - `Enable Admin Interface`: `true`
+
+### 3. Configurar SMTP (Opcional pero Recomendado)
+
+Para recuperación de contraseñas y verificación de email:
+
+```env
+SMTP_HOST=smtp.tudominio.com
+SMTP_PORT=587
+SMTP_SECURITY=starttls
+SMTP_USERNAME=vaultwarden@tudominio.com
+SMTP_PASSWORD=tu_password_smtp
+SMTP_FROM=vaultwarden@tudominio.com
+```
+
+### 4. Crear tu Primera Cuenta
+
+1. Ve a `https://vaultwarden.tudominio.com`
+2. Haz clic en **Create Account**
+3. Introduce tu email y una contraseña maestra **fuerte**
+4. Verifica tu email (si configuraste SMTP)
+
+⚠️ **La contraseña maestra NO se puede recuperar**. Guárdala de forma segura.
+
+## Clientes de Bitwarden
+
+Vaultwarden es compatible con todos los clientes oficiales de Bitwarden:
+
+- **Navegador**: Extensiones para Chrome, Firefox, Edge, Safari
+- **Escritorio**: Windows, macOS, Linux
+- **Móvil**: iOS, Android
+- **CLI**: `bw` (para scripts y automatización)
+
+### Configurar Cliente
+
+Al crear cuenta o iniciar sesión:
+
+1. Haz clic en el ⚙️ en la pantalla de login
+2. En **Server URL** introduce: `https://vaultwarden.tudominio.com`
+3. Inicia sesión con tu email y contraseña maestra
+
+## Integración con Traefik
+
+El archivo `docker-compose.override.traefik.yml.example` incluye:
+
+- ✅ Redirección automática HTTP → HTTPS
+- ✅ Certificados SSL con Let's Encrypt
+- ✅ Soporte completo para WebSocket (`/notifications/hub`)
+- ✅ Headers de seguridad
+
+Requiere:
+- Red Docker `proxy` existente
+- Traefik configurado con certificados Let's Encrypt
+- Variables: `DOMAIN` (con protocolo) y `DOMAIN_HOST` (solo dominio)
+
+## Integración con Nginx Proxy Manager
+
+El archivo `docker-compose.override.npm.yml.example` es minimalista.
+
+**Configuración en NPM**:
+
+1. **Proxy Hosts** → **Add Proxy Host**
+2. **Details**:
+ - Domain Names: `vaultwarden.tudominio.com`
+ - Scheme: `http`
+ - Forward Hostname / IP: `vaultwarden`
+ - Forward Port: `80`
+ - ✅ **Websockets Support**: **ACTIVAR**
+ - ✅ Block Common Exploits
+3. **SSL**:
+ - ✅ Force SSL
+ - SSL Certificate: Request a new SSL Certificate (Let's Encrypt)
+
+## Backup y Restauración
+
+### Backup Manual
+
+```bash
+# Detener el contenedor
+docker compose stop vaultwarden
+
+# Backup del volumen
+docker run --rm -v vaultwarden_data:/data -v $(pwd):/backup alpine \
+ tar czf /backup/vaultwarden-backup-$(date +%Y%m%d).tar.gz -C /data .
+
+# Reiniciar el contenedor
+docker compose start vaultwarden
+```
+
+### Restauración
+
+```bash
+# Detener el contenedor
+docker compose stop vaultwarden
+
+# Restaurar desde backup
+docker run --rm -v vaultwarden_data:/data -v $(pwd):/backup alpine \
+ sh -c "cd /data && tar xzf /backup/vaultwarden-backup-20240101.tar.gz"
+
+# Reiniciar el contenedor
+docker compose start vaultwarden
+```
+
+### Backup Automático
+
+Considera usar una solución de backup automático como:
+- [docker-volume-backup](https://github.com/offen/docker-volume-backup)
+- Cron job con el script de backup manual
+- Duplicati configurado para el directorio de datos
+
+⚠️ **CRÍTICO**: Un gestor de contraseñas requiere backups regulares y probados.
+
+## Actualización
+
+### Desde Portainer (Git Repository)
+
+1. Ve a tu stack `vaultwarden`
+2. Haz clic en **Pull and redeploy**
+
+### Desde CLI
+
+```bash
+docker compose pull
+docker compose up -d
+```
+
+Docker Compose recreará automáticamente el contenedor con la nueva imagen manteniendo tus datos intactos.
+
+## Solución de Problemas
+
+### El cliente no puede conectar
+
+**Síntomas**: Error de conexión en la app móvil o extensión del navegador
+
+**Soluciones**:
+1. Verifica que usas HTTPS (los clientes requieren conexión segura)
+2. Comprueba que el certificado SSL es válido
+3. Revisa que la variable `DOMAIN` incluye el protocolo completo
+4. Verifica acceso desde navegador: `https://vaultwarden.tudominio.com`
+
+### WebSocket no funciona
+
+**Síntomas**: Las contraseñas no se sincronizan en tiempo real
+
+**Soluciones**:
+
+**Para Traefik**:
+```bash
+# Verificar que existen los routers de WebSocket
+docker compose logs vaultwarden | grep websocket
+```
+
+**Para NPM**:
+1. Edita el Proxy Host
+2. Pestaña **Advanced**
+3. ✅ Activa **Websockets Support**
+
+**Para Standalone**:
+- Verifica que el puerto 3012 está publicado y accesible
+
+### Error de ADMIN_TOKEN
+
+**Síntomas**: No puedes acceder a `/admin`
+
+**Soluciones**:
+```bash
+# Verificar que la variable está configurada
+docker compose exec vaultwarden env | grep ADMIN_TOKEN
+
+# Regenerar token
+openssl rand -base64 48
+
+# Actualizar .env o variables de Portainer y redesplegar
+```
+
+### Problemas de rendimiento
+
+**Síntomas**: Aplicación lenta
+
+**Soluciones**:
+1. Vaultwarden usa SQLite por defecto, que es eficiente para < 1000 usuarios
+2. Para instalaciones grandes, considera migrar a PostgreSQL
+3. Revisa los logs: `docker compose logs vaultwarden`
+
+### Ver logs detallados
+
+```bash
+# Logs en tiempo real
+docker compose logs -f vaultwarden
+
+# Logs dentro del contenedor
+docker compose exec vaultwarden cat /data/vaultwarden.log
+```
+
+### Reiniciar completamente
+
+```bash
+# Cuidado: esto eliminará TODOS tus datos
+docker compose down -v
+docker compose up -d
+```
+
+## Recursos Adicionales
+
+- [Documentación Oficial de Vaultwarden](https://github.com/dani-garcia/vaultwarden/wiki)
+- [Clientes de Bitwarden](https://bitwarden.com/download/)
+- [Wiki de este repositorio](https://git.ictiberia.com/groales/vaultwarden/wiki)
+- [Repositorio en Gitea](https://git.ictiberia.com/groales/vaultwarden)
+
+## Seguridad
+
+- ⚠️ **Nunca** compartas tu ADMIN_TOKEN
+- ⚠️ Usa una contraseña maestra fuerte y única
+- ⚠️ Habilita 2FA en tu cuenta de Vaultwarden
+- ⚠️ Realiza backups regulares y pruébalos
+- ⚠️ Mantén actualizado el contenedor
+- ⚠️ Usa HTTPS en producción (obligatorio)
+
+## Licencia
+
+Este repositorio de configuración está bajo licencia MIT. Vaultwarden es software libre bajo licencia GPL-3.0.
diff --git a/docker-compose.override.npm.yml.example b/docker-compose.override.npm.yml.example
new file mode 100644
index 0000000..e4408a3
--- /dev/null
+++ b/docker-compose.override.npm.yml.example
@@ -0,0 +1,27 @@
+# docker-compose.override.npm.yml.example
+#
+# Este archivo configura Vaultwarden para usar Nginx Proxy Manager.
+#
+# Para usarlo:
+# Desde Portainer (Git Repository):
+# - Repository URL: https://git.ictiberia.com/groales/vaultwarden
+# - Compose path: docker-compose.yml
+# - Additional paths: docker-compose.override.npm.yml.example
+# - Environment variables:
+# DOMAIN=https://vaultwarden.tudominio.com
+# ADMIN_TOKEN=tu_token_admin_seguro
+# SIGNUPS_ALLOWED=false
+#
+# Desde CLI:
+# 1. Copia este archivo a docker-compose.override.yml
+# 2. Crea archivo .env con las variables necesarias
+#
+# Docker Compose automáticamente fusiona docker-compose.yml + docker-compose.override.yml
+#
+# IMPORTANTE: En Nginx Proxy Manager debes:
+# 1. Crear un Proxy Host apuntando a vaultwarden:80
+# 2. HABILITAR "WebSocket Support" en la pestaña Advanced
+# 3. Configurar SSL con Let's Encrypt
+
+# No necesita labels adicionales para NPM
+# La red proxy ya está definida en docker-compose.yml
diff --git a/docker-compose.override.standalone.yml.example b/docker-compose.override.standalone.yml.example
new file mode 100644
index 0000000..170adf1
--- /dev/null
+++ b/docker-compose.override.standalone.yml.example
@@ -0,0 +1,33 @@
+# docker-compose.override.standalone.yml.example
+#
+# Este archivo permite acceder a Vaultwarden directamente mediante IP:puerto sin proxy.
+# ⚠️ NO RECOMENDADO: Vaultwarden requiere HTTPS para funcionar correctamente.
+# Usa este modo solo para testing local temporal.
+#
+# Para usarlo:
+# Desde Portainer (Git Repository):
+# - Repository URL: https://git.ictiberia.com/groales/vaultwarden
+# - Compose path: docker-compose.yml
+# - Additional paths: docker-compose.override.standalone.yml.example
+# - Environment variables:
+# DOMAIN=http://IP-DEL-SERVIDOR:8080
+# ADMIN_TOKEN=tu_token_admin_seguro
+# SIGNUPS_ALLOWED=false
+#
+# Desde CLI:
+# 1. Copia este archivo a docker-compose.override.yml
+# 2. Crea archivo .env con las variables necesarias
+#
+# Docker Compose automáticamente fusiona docker-compose.yml + docker-compose.override.yml
+#
+# Acceso:
+# HTTP: http://IP-DEL-HOST:8080
+# WebSocket: ws://IP-DEL-HOST:3012
+#
+# ⚠️ IMPORTANTE: Los clientes de Bitwarden requieren HTTPS en producción.
+
+services:
+ vaultwarden:
+ ports:
+ - "8080:80"
+ - "3012:3012"
diff --git a/docker-compose.override.traefik.yml.example b/docker-compose.override.traefik.yml.example
new file mode 100644
index 0000000..665dd7f
--- /dev/null
+++ b/docker-compose.override.traefik.yml.example
@@ -0,0 +1,49 @@
+# docker-compose.override.traefik.yml.example
+#
+# Este archivo configura Vaultwarden para usar Traefik como reverse proxy.
+#
+# Para usarlo:
+# Desde Portainer (Git Repository):
+# - Repository URL: https://git.ictiberia.com/groales/vaultwarden
+# - Compose path: docker-compose.yml
+# - Additional paths: docker-compose.override.traefik.yml.example
+# - Environment variables:
+# DOMAIN=https://vaultwarden.tudominio.com
+# DOMAIN_HOST=vaultwarden.tudominio.com
+# ADMIN_TOKEN=tu_token_admin_seguro
+# SIGNUPS_ALLOWED=false
+#
+# Desde CLI:
+# 1. Copia este archivo a docker-compose.override.yml
+# 2. Crea archivo .env con las variables necesarias
+#
+# Docker Compose automáticamente fusiona docker-compose.yml + docker-compose.override.yml
+
+services:
+ vaultwarden:
+ 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"
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..c163f35
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,25 @@
+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