diff --git a/Configuración-Inicial.md b/Configuración-Inicial.md index 6fc3cd1..61aa71f 100644 --- a/Configuración-Inicial.md +++ b/Configuración-Inicial.md @@ -6,10 +6,10 @@ Una vez desplegado Vaultwarden, sigue estos pasos para configurarlo correctament 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) +- ✅ Vaultwarden desplegado con [Traefik](Traefik) o [NPM](NPM) +- ✅ Acceso a `https://vaultwarden.tudominio.com` - ✅ ADMIN_TOKEN generado y configurado -- ✅ Certificado SSL válido (si usas Traefik o NPM) +- ✅ Certificado SSL válido ## 🔐 1. Acceder al Panel de Administración @@ -53,13 +53,13 @@ En el panel de administración, ve a **General Settings**. **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: +Este valor es importante para: - Links de verificación de email - Redirecciones después del login - Funcionalidades de la API +⚠️ **Nota**: A diferencia de versiones anteriores, ahora se configura únicamente desde el panel de administración, no desde variables de entorno. + ### Iconos de Servicios **Campo**: `Icon Download Timeout` diff --git a/Home.md b/Home.md index d80c3d9..1b8a42e 100644 --- a/Home.md +++ b/Home.md @@ -7,7 +7,6 @@ Bienvenido a la wiki de **Vaultwarden**, un gestor de contraseñas autoalojado c ### 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 @@ -51,24 +50,23 @@ openssl rand -base64 48 | 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 | +| **NPM** | ✅ Sí | Red `proxy`, NPM configurado | Requiere activar WebSocket manualmente | -### Variables de Entorno Comunes +### Variables de Entorno -Todas las configuraciones requieren estas variables: +Todas las configuraciones requieren: ```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 +ADMIN_TOKEN=tu_token_generado_con_openssl # Obligatorio ``` **Para Traefik** necesitas también: ```env -DOMAIN_HOST=vaultwarden.tudominio.com # Sin protocolo +DOMAIN_HOST=vaultwarden.tudominio.com # Sin protocolo ``` +**Nota**: Otras opciones (DOMAIN, SIGNUPS_ALLOWED, SMTP, etc.) se configuran desde el panel de administración `/admin` después del despliegue. + ## 📚 Recursos Adicionales - [README del repositorio](https://git.ictiberia.com/groales/vaultwarden) diff --git a/NPM.md b/NPM.md index 8bb1ff4..7fb65d0 100644 --- a/NPM.md +++ b/NPM.md @@ -54,12 +54,10 @@ Esta opción mantiene tu stack actualizado con el repositorio Git. 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. +⚠️ **Nota**: Otras opciones (DOMAIN, registros, SMTP) se configuran desde el panel `/admin`. 6. Haz clic en **Deploy the stack** @@ -79,12 +77,7 @@ services: 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 @@ -124,9 +117,7 @@ cp docker-compose.override.npm.yml.example docker-compose.override.yml 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 diff --git a/Personalización.md b/Personalización.md index 4b24aab..b3f400b 100644 --- a/Personalización.md +++ b/Personalización.md @@ -382,53 +382,28 @@ WEBSOCKET_PORT=3012 ``` Si cambias esto, actualiza también: -- Labels de Traefik +- Labels de Traefik (loadbalancer.server.port) - Configuración de NPM -- Puerto publicado en Standalone -## 📝 Ejemplo de Configuración Completa +## 📝 Ejemplo de Configuración -Un archivo `.env` típico para producción: +Un archivo `.env` mínimo para producción: ```env -# Dominio -DOMAIN=https://vaultwarden.empresa.com -DOMAIN_HOST=vaultwarden.empresa.com - -# Seguridad +# Obligatorio 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 +# Para Traefik +DOMAIN_HOST=vaultwarden.empresa.com ``` +**Nota**: El resto de opciones (SMTP, límites, restricciones, etc.) se configuran desde el panel de administración `/admin` después del despliegue. Esto permite: +- ✅ Cambios sin redesplegar contenedores +- ✅ Configuración más intuitiva desde GUI +- ✅ Menos variables de entorno que gestionar + +Para opciones avanzadas que SÍ requieren variables de entorno, consulta las secciones específicas de esta página. + ## 🔄 Aplicar Cambios Después de cambiar variables de entorno: diff --git a/Solución-de-Problemas.md b/Solución-de-Problemas.md index d9d1e81..17a74fc 100644 --- a/Solución-de-Problemas.md +++ b/Solución-de-Problemas.md @@ -63,9 +63,8 @@ ADMIN_TOKEN=tu_token_aqui # 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 +# Si necesitas cambiar puertos, usa Traefik o NPM +# Vaultwarden no expone puertos directamente ``` #### 3. Volumen Corrupto @@ -290,23 +289,6 @@ Si falta: **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 diff --git a/Standalone.md b/Standalone.md deleted file mode 100644 index 5161c17..0000000 --- a/Standalone.md +++ /dev/null @@ -1,402 +0,0 @@ -# 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 index becbd61..d6598c6 100644 --- a/Traefik.md +++ b/Traefik.md @@ -58,16 +58,14 @@ Esta opción mantiene tu stack actualizado con el repositorio Git. 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 +- `DOMAIN_HOST` es el dominio sin protocolo - Reemplaza `vaultwarden.tudominio.com` con tu dominio real +- Otras opciones se configuran desde el panel `/admin` 6. Haz clic en **Deploy the stack** @@ -87,12 +85,7 @@ services: 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 @@ -158,10 +151,8 @@ cp docker-compose.override.traefik.yml.example docker-compose.override.yml 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