Panel de administración de contenedores que reemplazó a CloudPanel en el servidor Oracle Cloud.
https://dok.managuanetworks.com| Contenedor | Función |
|---|---|
dokploy |
El panel/dashboard en sí |
dokploy-postgres |
Base de datos interna de Dokploy (proyectos, configuración) |
dokploy-traefik |
Reverse proxy — enruta todos los dominios (*.managuanetworks.com) hacia el contenedor correcto |
curl -sSL https://dokploy.com/install.sh | sudo sh
Importante: el pipe debe ir con sudo sh, no solo sudo curl — de lo contrario el script se ejecuta sin privilegios de root y falla.
Cada subdominio (omada.managuanetworks.com, doc.managuanetworks.com, etc.) se configura desde la pestaña Domains de cada servicio en Dokploy. Al guardar, Dokploy:
Regla crítica: cualquier cambio en la pestaña Domains requiere un Redeploy del servicio para tomar efecto — solo guardar el formulario no actualiza las labels del contenedor en ejecución.
Todo servicio desplegado como "Compose" en Dokploy debe unir sus contenedores a la red externa dokploy-network para que Traefik pueda alcanzarlos. Sin esto, Traefik responde 404 page not found aunque el contenedor esté corriendo bien.
services:
mi-servicio:
# ...
networks:
- dokploy-network
networks:
dokploy-network:
external: true
Verificar el nombre exacto de la red en el servidor (por si cambia entre versiones):
sudo docker network ls | grep dokploy
ports:Si un servicio Compose intenta publicar un puerto ya usado por el host (ej. 3000, que ya usa el propio Dokploy), el deploy falla con port is already allocated. Solución: no publicar puertos al host (ports:) en servicios que se acceden vía dominio/Traefik — Traefik se conecta directo al contenedor por la red interna dokploy-network, sin necesidad de exponer el puerto en el host.
Si en el campo Middleware de la configuración de dominio se escribe algo que no es un middleware real de Traefik (ej. por error, un correo electrónico), el router HTTPS queda roto y Traefik devuelve 404 permanentemente, con este error en sus logs:
sudo docker logs dokploy-traefik --tail 50
# ERR error="middleware \"texto-invalido\" does not exist"
Solución: dejar el campo Middleware vacío (a menos que se necesite uno específico) y hacer Redeploy del servicio.
Configurado desde Web Server → Backups → Create Backup, apuntando al bucket dok-bk en Cloudflare R2 (ver página de Cloudflare). Respalda la base de datos Postgres interna — es decir, la config de todos los proyectos gestionados por Dokploy, no solo uno.
| Campo | Valor configurado |
|---|---|
| Destination | Cloudflare R2 — bucket dok-bk |
| Prefix Destination | /dokploy-server |
| Schedule | Diario (~3:30 AM, después de los backups de cada proyecto) |
| Keep the latest | 7 |
| Include encryption key | Activado (permite restaurar variables de entorno cifradas en un servidor nuevo) |
# Ver todos los contenedores activos
sudo docker ps -a
# Ver logs de un contenedor
sudo docker logs <nombre-contenedor> --tail 100
# Inspeccionar labels de Traefik de un contenedor
sudo docker inspect <contenedor> --format '{{json .Config.Labels}}' | python3 -m json.tool
# Ver a qué redes está conectado un contenedor
sudo docker inspect <contenedor> --format '{{json .NetworkSettings.Networks}}' | python3 -m json.tool