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
- Servidor con Dokploy instalado
- Acceso a la UI de Dokploy
- 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
- Accede a Dokploy:
https://tu-servidor:3000 - Clic en "New Project"
- Nombre del proyecto:
onedrive-instancia1(o el nombre que prefieras) - Clic en "Create Project"
Paso 3: Crear Aplicación (Compose)
- Dentro del proyecto, clic en "New Service"
- Selecciona "Docker Compose"
- Configura:
- Name:
e5-renewal - Repository: Tu URL de Git
- Branch:
main - Compose File Path:
docker-compose.dokploy.yml - Build Path:
./(raíz del repo)
- Name:
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
- Clic en "Deploy"
- Dokploy automáticamente:
- Clona el repositorio
- Construye las imágenes
- Inicia los contenedores
- Configura la red
Paso 6: Configurar Dominio (Opcional)
- En la aplicación, ve a "Domains"
- Agrega un dominio:
onedrive1.tudominio.com - Dokploy configurará SSL automáticamente
📦 Método 2: Deploy Manual (Docker Compose)
Paso 1: Crear Proyecto en Dokploy
- Nuevo proyecto:
onedrive-instancia1 - New Service → "Docker Compose"
- 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
-
Duplicar Proyecto:
- Clic en el menú del proyecto → "Clone Project"
- Nuevo nombre:
onedrive-cuenta2
-
Actualizar Variables:
- Ir a Environment Variables
- Cambiar todas las credenciales E5
- Cambiar
ENGINE_PORT(ej: 8090)
-
Deploy:
- Clic en "Deploy"
Repite para cada cuenta adicional.
📊 Gestión desde Dokploy UI
Ver Logs
- Navega al proyecto
- Selecciona el servicio (
odenginoodcron) - Clic en "Logs"
- Logs en tiempo real con búsqueda y filtros
Reiniciar Servicios
- En el servicio, clic en "Restart"
- O "Rebuild" para reconstruir desde cero
Monitoreo
- Dashboard del proyecto muestra:
- Estado de contenedores
- Uso de recursos (CPU, RAM)
- Tráfico de red
Actualizar Código
- Haz push de cambios a Git
- En Dokploy, clic en "Rebuild & Deploy"
- 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
-
Revisar logs:
- Dokploy UI → Service → Logs
- Busca errores de inicio
-
Verificar variables:
- Asegúrate de que todas las variables requeridas están configuradas
- Revisa por typos en nombres de variables
-
Rebuild:
- Intenta "Rebuild & Deploy" para forzar reconstrucción
Puertos en conflicto
Dokploy maneja esto automáticamente, pero si necesitas puertos específicos:
- Asigna puertos únicos en cada proyecto
- O deja que Dokploy asigne puertos aleatorios
- Usa dominios en lugar de puertos
No puedo acceder al servicio
-
Verifica el estado:
- Dashboard → Service Status debe ser "Running"
-
Revisa el firewall:
# En el servidor sudo ufw allow 8089/tcp -
Usa dominios:
- Más fácil que gestionar puertos
- Dokploy configura proxy reverso automáticamente
Actualización no se refleja
- Force rebuild:
- Clic en "Rebuild & Deploy" (no solo "Deploy")
- 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
- Dokploy UI → Service → Webhooks
- Copia la URL del webhook
- En GitHub: Settings → Webhooks → Add webhook
- Paste URL, selecciona eventos (push, release)
- Ahora cada push redeploya automáticamente
4. Backup de Variables
Exporta variables de entorno periódicamente:
- Settings → Export Configuration
- Guarda el JSON de forma segura
- Ú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:
- Crear proyecto → Asignar nombre único
- Configurar compose → Desde Git o manual
- Agregar variables → Desde la UI segura
- Deploy → Con un clic
- Repetir → Para múltiples instancias
Cada instancia es completamente independiente y se gestiona desde una interfaz centralizada. 🎉