Capitulo 3: Instalacion
Capitulo 3: Instalacion
< Volver al Indice del Tutorial
Instalacion con el Script Oficial
Con el servidor preparado segun el capitulo anterior, la instalacion de Dokploy se reduce a un solo comando:
curl -sSL https://dokploy.com/install.sh | sh
El proceso toma entre 2 y 5 minutos dependiendo de la velocidad de tu servidor y conexion a internet.
Si prefieres revisar el script antes de ejecutarlo (recomendado en produccion):
curl -sSL https://dokploy.com/install.sh -o install.sh
less install.sh
sh install.sh
Que Hace el Script Internamente
El script de instalacion ejecuta varios pasos en secuencia. Entender que hace te ayuda a diagnosticar problemas.
1. Verificacion del sistema
- Comprueba que Docker esta instalado y funcionando.
- Verifica que el usuario tiene permisos suficientes (root o sudo).
- Detecta la arquitectura del sistema (amd64, arm64).
2. Inicializacion de Docker Swarm
Dokploy usa Docker Swarm como orquestador, incluso para un solo nodo:
docker swarm init
Si el servidor tiene multiples interfaces de red, puede necesitar especificar la IP:
docker swarm init --advertise-addr <tu-ip-publica>
3. Creacion de la red overlay
Crea una red Docker overlay para comunicacion entre contenedores:
docker network create --driver overlay --attachable dokploy-network
4. Descarga de imagenes Docker
Descarga las imagenes necesarias:
dokploy/dokploy:latest- Panel principal (Next.js)postgres:16- Base de datos internaredis:7- Cache y colastraefik:v3- Reverse proxy
5. Despliegue del stack
Crea y despliega un Docker Swarm stack con todos los servicios configurados. Esto incluye volumenes persistentes para PostgreSQL, Redis y las configuraciones de Traefik.
6. Configuracion de Traefik
Genera la configuracion inicial de Traefik con:
- Entrypoints para HTTP (80) y HTTPS (443).
- Proveedor de Docker para descubrimiento automatico de servicios.
- Configuracion de Let’s Encrypt para certificados SSL.
Primer Acceso al Panel
Una vez completada la instalacion, accede al panel desde tu navegador:
http://tu-ip-del-servidor:3000
Crear usuario administrador
La primera vez que accedes, Dokploy muestra un formulario de registro para crear la cuenta de administrador:
- Ingresa un email valido.
- Define una contrasena segura (minimo 8 caracteres).
- Haz clic en “Register”.
Esta cuenta tiene permisos completos sobre toda la plataforma. Guarda las credenciales en un gestor de contrasenas.
Pantalla principal
Despues del registro, veras el dashboard principal con:
- Projects: Lista de proyectos (vacia inicialmente).
- Settings: Configuracion general del servidor.
- Monitoring: Metricas de CPU, RAM y disco.
- Sidebar: Navegacion entre secciones.
Verificar que Todo Funciona
Verificar contenedores corriendo
Conectate por SSH y lista los servicios del stack:
docker service ls
Salida esperada:
ID NAME MODE REPLICAS IMAGE
xxxx dokploy_dokploy replicated 1/1 dokploy/dokploy:latest
xxxx dokploy_postgres replicated 1/1 postgres:16
xxxx dokploy_redis replicated 1/1 redis:7
xxxx dokploy_traefik replicated 1/1 traefik:v3
Todos los servicios deben mostrar 1/1 en REPLICAS. Si alguno muestra 0/1, hay un problema.
Verificar logs del panel
docker service logs dokploy_dokploy --tail 50
Busca lineas como:
Ready on http://0.0.0.0:3000
Verificar Traefik
docker service logs dokploy_traefik --tail 20
Verifica que no hay errores de certificados o puertos.
Verificar acceso HTTP
Desde tu maquina local:
curl -I http://tu-ip-del-servidor:3000
Salida esperada:
HTTP/1.1 200 OK
Solucion de Problemas Comunes
Error: “docker swarm init” falla con multiples IPs
Si tu servidor tiene varias interfaces de red:
docker swarm init --advertise-addr $(hostname -I | awk '{print $1}')
Error: Puerto 3000 no accesible
Verifica que el firewall permite el trafico:
sudo ufw status | grep 3000
Si no aparece, agregalo:
sudo ufw allow 3000/tcp
Error: Contenedor en estado “0/1”
Revisa los logs del servicio que falla:
docker service logs dokploy_<servicio> --tail 100
Causas comunes:
- PostgreSQL: Disco lleno o permisos incorrectos en el volumen.
- Redis: Puerto 6379 ocupado por otra instancia.
- Traefik: Puertos 80 o 443 ocupados por Apache/Nginx.
Para liberar puertos ocupados:
# Verificar que ocupa el puerto 80
sudo lsof -i :80
# Si es Apache
sudo systemctl stop apache2
sudo systemctl disable apache2
# Si es Nginx
sudo systemctl stop nginx
sudo systemctl disable nginx
Error: Imagenes no se descargan
Verifica la conectividad con Docker Hub:
docker pull hello-world
Si falla, puede ser un problema de DNS:
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
Reinstalacion limpia
Si necesitas empezar de cero:
# Eliminar el stack
docker stack rm dokploy
# Esperar a que se eliminen los contenedores
sleep 10
# Eliminar volumenes (CUIDADO: borra todos los datos)
docker volume prune -f
# Salir del swarm
docker swarm leave --force
# Reinstalar
curl -sSL https://dokploy.com/install.sh | sh
Seguridad Post-Instalacion
Una vez verificado que todo funciona, aplica estas medidas:
Configurar dominio para el panel
En lugar de acceder por IP y puerto, configura un dominio (ej: panel.tudominio.com). Esto se hace desde Settings en el panel de Dokploy y se detalla en el capitulo de dominios y SSL.
Cerrar puerto 3000
Una vez que el panel es accesible por dominio con SSL:
sudo ufw delete allow 3000/tcp
Actualizar Dokploy
Para actualizar a la ultima version desde el panel, ve a Settings > Server > Update. Tambien puedes hacerlo por CLI:
docker service update --image dokploy/dokploy:latest dokploy_dokploy
Siguiente: Capitulo 4: Panel de Control —>