Eliminar página Standalone y actualizar variables a solo ADMIN_TOKEN

2025-12-03 13:02:59 +01:00
parent bb6d63755a
commit 4f124656a8
7 changed files with 31 additions and 496 deletions

@@ -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`

16
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)

11
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

@@ -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:

@@ -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

@@ -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

@@ -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