Files
Onedrive/DOKPLOY.md

9.3 KiB

🚀 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

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

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

services:
  odengin:
    image: ghcr.io/tuusuario/onedrive-engine:v1.0
    # No necesitas 'build' si usas imagen pre-construida

Variables de entorno en Dokploy:

REGISTRY=ghcr.io
IMAGE_OWNER=tuusuario
IMAGE_TAG=v1.0

Health Checks Personalizados

Dokploy respeta los health checks del compose:

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:

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:

    # 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

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:

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

📝 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. 🎉