# 🚀 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 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. 🎉