Agregar soporte para múltiples instancias en la configuración del proyecto, actualizando .gitignore, README.md, DOKPLOY.md, DOKPLOY_QUICK.md y docker-compose.dokploy.yml; además, se crea un nuevo archivo .dockerignore.
This commit is contained in:
400
DOKPLOY.md
Normal file
400
DOKPLOY.md
Normal file
@@ -0,0 +1,400 @@
|
||||
# 🚀 Despliegue en Dokploy
|
||||
|
||||
Esta guía explica cómo desplegar múltiples instancias de OneDrive Engine en Dokploy.
|
||||
|
||||
## 📋 ¿Qué es Dokploy?
|
||||
|
||||
Dokploy es una plataforma de gestión de aplicaciones que simplifica el despliegue de contenedores Docker. Automáticamente maneja:
|
||||
|
||||
- Nombres únicos de contenedores
|
||||
- Redes aisladas por proyecto
|
||||
- Variables de entorno
|
||||
- SSL/TLS con Let's Encrypt
|
||||
- Dominios y subdominios
|
||||
- Monitoreo y logs
|
||||
|
||||
## 🎯 Ventajas de usar Dokploy
|
||||
|
||||
✅ **Interfaz Web**: Gestiona todo desde el navegador
|
||||
✅ **Multi-instancia**: Cada proyecto es independiente
|
||||
✅ **Sin conflictos**: Dokploy maneja puertos y nombres automáticamente
|
||||
✅ **Variables de entorno**: Configuración segura desde la UI
|
||||
✅ **Logs centralizados**: Ver logs de todas las instancias en un lugar
|
||||
✅ **Actualizaciones fáciles**: Rebuild y redeploy con un clic
|
||||
|
||||
## 🔧 Preparación
|
||||
|
||||
### Prerrequisitos
|
||||
|
||||
1. Servidor con Dokploy instalado
|
||||
2. Acceso a la UI de Dokploy
|
||||
3. Repositorio Git (opcional, pero recomendado)
|
||||
|
||||
### Estructura del Proyecto
|
||||
|
||||
Asegúrate de que tu proyecto tenga esta estructura:
|
||||
|
||||
```
|
||||
onedrive/
|
||||
├── docker-compose.dokploy.yml # Compose para Dokploy
|
||||
├── docker-compose.yml # Compose local/tradicional
|
||||
├── .env.example
|
||||
├── engine/
|
||||
│ └── Dockerfile
|
||||
└── cron/
|
||||
└── Dockerfile
|
||||
```
|
||||
|
||||
## 📦 Método 1: Deploy desde Git (Recomendado)
|
||||
|
||||
### Paso 1: Sube el proyecto a Git
|
||||
|
||||
```bash
|
||||
# Inicializar repositorio (si no existe)
|
||||
git init
|
||||
git add .
|
||||
git commit -m "Initial commit"
|
||||
|
||||
# Subir a GitHub/GitLab/Gitea
|
||||
git remote add origin <tu-repositorio-url>
|
||||
git push -u origin main
|
||||
```
|
||||
|
||||
### Paso 2: Crear Proyecto en Dokploy
|
||||
|
||||
1. Accede a Dokploy: `https://tu-servidor:3000`
|
||||
2. Clic en **"New Project"**
|
||||
3. Nombre del proyecto: `onedrive-instancia1` (o el nombre que prefieras)
|
||||
4. Clic en **"Create Project"**
|
||||
|
||||
### Paso 3: Crear Aplicación (Compose)
|
||||
|
||||
1. Dentro del proyecto, clic en **"New Service"**
|
||||
2. Selecciona **"Docker Compose"**
|
||||
3. Configura:
|
||||
- **Name**: `e5-renewal`
|
||||
- **Repository**: Tu URL de Git
|
||||
- **Branch**: `main`
|
||||
- **Compose File Path**: `docker-compose.dokploy.yml`
|
||||
- **Build Path**: `./` (raíz del repo)
|
||||
|
||||
### Paso 4: Configurar Variables de Entorno
|
||||
|
||||
En la sección **"Environment Variables"**, agrega:
|
||||
|
||||
```env
|
||||
# Credenciales E5
|
||||
E5_CLIENT_ID=tu_client_id_aqui
|
||||
E5_CLIENT_SECRET=tu_client_secret_aqui
|
||||
E5_REFRESH_TOKEN=tu_refresh_token_aqui
|
||||
|
||||
# Contraseñas
|
||||
WEB_APP_PASSWORD=tu_password_segura
|
||||
E5_WEB_APP_PASSWORD=tu_e5_password
|
||||
|
||||
# Cron
|
||||
CRON_PASSWORD=tu_cron_password
|
||||
CRON_REFRESH_TOKEN=tu_cron_refresh_token
|
||||
|
||||
# Puerto (opcional, Dokploy puede asignar automáticamente)
|
||||
ENGINE_PORT=8089
|
||||
```
|
||||
|
||||
### Paso 5: Deploy
|
||||
|
||||
1. Clic en **"Deploy"**
|
||||
2. Dokploy automáticamente:
|
||||
- Clona el repositorio
|
||||
- Construye las imágenes
|
||||
- Inicia los contenedores
|
||||
- Configura la red
|
||||
|
||||
### Paso 6: Configurar Dominio (Opcional)
|
||||
|
||||
1. En la aplicación, ve a **"Domains"**
|
||||
2. Agrega un dominio: `onedrive1.tudominio.com`
|
||||
3. Dokploy configurará SSL automáticamente
|
||||
|
||||
## 📦 Método 2: Deploy Manual (Docker Compose)
|
||||
|
||||
### Paso 1: Crear Proyecto en Dokploy
|
||||
|
||||
1. Nuevo proyecto: `onedrive-instancia1`
|
||||
2. New Service → **"Docker Compose"**
|
||||
3. Selecciona **"Custom Compose"**
|
||||
|
||||
### Paso 2: Pegar Docker Compose
|
||||
|
||||
Copia el contenido de `docker-compose.dokploy.yml` en el editor.
|
||||
|
||||
### Paso 3: Configurar Variables de Entorno
|
||||
|
||||
Igual que en el Método 1.
|
||||
|
||||
### Paso 4: Deploy
|
||||
|
||||
Clic en **"Deploy"**.
|
||||
|
||||
## 🔄 Múltiples Instancias en Dokploy
|
||||
|
||||
Para gestionar múltiples cuentas de E5, crea **proyectos separados**:
|
||||
|
||||
### Configuración Recomendada
|
||||
|
||||
| Proyecto Dokploy | Cuenta E5 | Puerto | Dominio (opcional) |
|
||||
| ------------------ | --------------- | ------ | -------------------- |
|
||||
| `onedrive-cuenta1` | Cuenta personal | 8089 | `e5-1.tudominio.com` |
|
||||
| `onedrive-cuenta2` | Cuenta trabajo | 8090 | `e5-2.tudominio.com` |
|
||||
| `onedrive-cuenta3` | Cuenta familiar | 8091 | `e5-3.tudominio.com` |
|
||||
|
||||
### Crear Nueva Instancia
|
||||
|
||||
1. **Duplicar Proyecto**:
|
||||
|
||||
- Clic en el menú del proyecto → **"Clone Project"**
|
||||
- Nuevo nombre: `onedrive-cuenta2`
|
||||
|
||||
2. **Actualizar Variables**:
|
||||
|
||||
- Ir a Environment Variables
|
||||
- Cambiar todas las credenciales E5
|
||||
- Cambiar `ENGINE_PORT` (ej: 8090)
|
||||
|
||||
3. **Deploy**:
|
||||
- Clic en "Deploy"
|
||||
|
||||
Repite para cada cuenta adicional.
|
||||
|
||||
## 📊 Gestión desde Dokploy UI
|
||||
|
||||
### Ver Logs
|
||||
|
||||
1. Navega al proyecto
|
||||
2. Selecciona el servicio (`odengin` o `odcron`)
|
||||
3. Clic en **"Logs"**
|
||||
4. Logs en tiempo real con búsqueda y filtros
|
||||
|
||||
### Reiniciar Servicios
|
||||
|
||||
1. En el servicio, clic en **"Restart"**
|
||||
2. O **"Rebuild"** para reconstruir desde cero
|
||||
|
||||
### Monitoreo
|
||||
|
||||
1. Dashboard del proyecto muestra:
|
||||
- Estado de contenedores
|
||||
- Uso de recursos (CPU, RAM)
|
||||
- Tráfico de red
|
||||
|
||||
### Actualizar Código
|
||||
|
||||
1. Haz push de cambios a Git
|
||||
2. En Dokploy, clic en **"Rebuild & Deploy"**
|
||||
3. Dokploy pull, rebuild y redeploy automáticamente
|
||||
|
||||
## 🔒 Seguridad en Dokploy
|
||||
|
||||
### Mejores Prácticas
|
||||
|
||||
✅ **Variables de Entorno**:
|
||||
|
||||
- Usa la UI de Dokploy para variables sensibles
|
||||
- No las incluyas en el compose file
|
||||
|
||||
✅ **Dominios con SSL**:
|
||||
|
||||
- Dokploy genera certificados Let's Encrypt automáticamente
|
||||
- Fuerza HTTPS para todas las conexiones
|
||||
|
||||
✅ **Redes Aisladas**:
|
||||
|
||||
- Cada proyecto tiene su propia red Docker
|
||||
- Los servicios no pueden comunicarse entre proyectos
|
||||
|
||||
✅ **Control de Acceso**:
|
||||
|
||||
- Configura usuarios con permisos específicos
|
||||
- Usa autenticación de dos factores
|
||||
|
||||
## 🛠️ Configuración Avanzada
|
||||
|
||||
### Usar Registry Privado
|
||||
|
||||
Si construyes imágenes previamente:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
odengin:
|
||||
image: ghcr.io/tuusuario/onedrive-engine:v1.0
|
||||
# No necesitas 'build' si usas imagen pre-construida
|
||||
```
|
||||
|
||||
Variables de entorno en Dokploy:
|
||||
|
||||
```env
|
||||
REGISTRY=ghcr.io
|
||||
IMAGE_OWNER=tuusuario
|
||||
IMAGE_TAG=v1.0
|
||||
```
|
||||
|
||||
### Health Checks Personalizados
|
||||
|
||||
Dokploy respeta los health checks del compose:
|
||||
|
||||
```yaml
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget --spider http://localhost:8080/health"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
start_period: 40s
|
||||
```
|
||||
|
||||
### Límites de Recursos
|
||||
|
||||
Agrega en el compose file:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
odengin:
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: "0.5"
|
||||
memory: 512M
|
||||
reservations:
|
||||
cpus: "0.25"
|
||||
memory: 256M
|
||||
```
|
||||
|
||||
## 🔍 Troubleshooting
|
||||
|
||||
### El servicio no inicia
|
||||
|
||||
1. **Revisar logs**:
|
||||
|
||||
- Dokploy UI → Service → Logs
|
||||
- Busca errores de inicio
|
||||
|
||||
2. **Verificar variables**:
|
||||
|
||||
- Asegúrate de que todas las variables requeridas están configuradas
|
||||
- Revisa por typos en nombres de variables
|
||||
|
||||
3. **Rebuild**:
|
||||
- Intenta "Rebuild & Deploy" para forzar reconstrucción
|
||||
|
||||
### Puertos en conflicto
|
||||
|
||||
Dokploy maneja esto automáticamente, pero si necesitas puertos específicos:
|
||||
|
||||
1. Asigna puertos únicos en cada proyecto
|
||||
2. O deja que Dokploy asigne puertos aleatorios
|
||||
3. Usa dominios en lugar de puertos
|
||||
|
||||
### No puedo acceder al servicio
|
||||
|
||||
1. **Verifica el estado**:
|
||||
|
||||
- Dashboard → Service Status debe ser "Running"
|
||||
|
||||
2. **Revisa el firewall**:
|
||||
|
||||
```bash
|
||||
# En el servidor
|
||||
sudo ufw allow 8089/tcp
|
||||
```
|
||||
|
||||
3. **Usa dominios**:
|
||||
- Más fácil que gestionar puertos
|
||||
- Dokploy configura proxy reverso automáticamente
|
||||
|
||||
### Actualización no se refleja
|
||||
|
||||
1. **Force rebuild**:
|
||||
- Clic en "Rebuild & Deploy" (no solo "Deploy")
|
||||
2. **Limpia cache**:
|
||||
- En algunas versiones de Dokploy: Settings → "Clear Build Cache"
|
||||
|
||||
## 📋 Checklist de Deploy
|
||||
|
||||
Antes de crear una nueva instancia:
|
||||
|
||||
- [ ] Nombre único de proyecto
|
||||
- [ ] Repositorio Git configurado (o compose manual)
|
||||
- [ ] Todas las variables de entorno configuradas
|
||||
- [ ] Puerto único asignado (o dominio configurado)
|
||||
- [ ] Credenciales E5 correctas y válidas
|
||||
- [ ] Build context correcto (`./`)
|
||||
- [ ] Compose file path correcto
|
||||
|
||||
Después del deploy:
|
||||
|
||||
- [ ] Estado del servicio es "Running"
|
||||
- [ ] Logs no muestran errores críticos
|
||||
- [ ] Health check pasa (si está configurado)
|
||||
- [ ] Puedes acceder al servicio (puerto o dominio)
|
||||
|
||||
## 💡 Tips Pro
|
||||
|
||||
### 1. Usa Git Tags para Versiones
|
||||
|
||||
```bash
|
||||
git tag -a v1.0 -m "Version 1.0"
|
||||
git push origin v1.0
|
||||
```
|
||||
|
||||
En Dokploy, configura el branch a `v1.0` para deploys estables.
|
||||
|
||||
### 2. Organiza con Etiquetas
|
||||
|
||||
En el compose, agrega labels:
|
||||
|
||||
```yaml
|
||||
labels:
|
||||
- "com.dokploy.project=onedrive"
|
||||
- "com.dokploy.environment=production"
|
||||
- "com.dokploy.owner=admin"
|
||||
```
|
||||
|
||||
### 3. Automatiza con Webhooks
|
||||
|
||||
1. Dokploy UI → Service → Webhooks
|
||||
2. Copia la URL del webhook
|
||||
3. En GitHub: Settings → Webhooks → Add webhook
|
||||
4. Paste URL, selecciona eventos (push, release)
|
||||
5. Ahora cada push redeploya automáticamente
|
||||
|
||||
### 4. Backup de Variables
|
||||
|
||||
Exporta variables de entorno periódicamente:
|
||||
|
||||
1. Settings → Export Configuration
|
||||
2. Guarda el JSON de forma segura
|
||||
3. Úsalo para restaurar o clonar proyectos
|
||||
|
||||
### 5. Monitoreo Externo
|
||||
|
||||
Integra con herramientas como:
|
||||
|
||||
- **Uptime Kuma**: Para monitoreo de uptime
|
||||
- **Grafana**: Para métricas avanzadas
|
||||
- **Prometheus**: Para alertas
|
||||
|
||||
## 🔗 Recursos
|
||||
|
||||
- [Dokploy Docs](https://docs.dokploy.com)
|
||||
- [Docker Compose Reference](https://docs.docker.com/compose/compose-file/)
|
||||
- [Microsoft E5 Auto-Renewal](https://github.com/TheCaduceus/Microsoft-E5-Auto-Renewal)
|
||||
|
||||
## 📝 Resumen
|
||||
|
||||
Con Dokploy puedes:
|
||||
|
||||
1. **Crear proyecto** → Asignar nombre único
|
||||
2. **Configurar compose** → Desde Git o manual
|
||||
3. **Agregar variables** → Desde la UI segura
|
||||
4. **Deploy** → Con un clic
|
||||
5. **Repetir** → Para múltiples instancias
|
||||
|
||||
Cada instancia es completamente independiente y se gestiona desde una interfaz centralizada. 🎉
|
||||
Reference in New Issue
Block a user