DEV Community

Cómo desplegar Dokploy en un servidor Ubuntu y crear tu primer "Hola Mundo" en Node.js

Introducción

Dokploy es una plataforma de despliegue auto-hospedada que simplifica la gestión de aplicaciones en contenedores Docker usando Docker Swarm. En este tutorial completo, te mostraré cómo instalar Dokploy en un servidor Ubuntu, configurar seguridad con firewall, desplegar tu primera aplicación Node.js y seguir las mejores prácticas para producción.

Arquitectura

Diagrama realizado con https://savnet.co

¿Qué necesitas?

Antes de comenzar, asegúrate de tener:

  • Un servidor con Ubuntu 24.04 LTS (2 GB de RAM mínimo para pruebas)
  • Acceso por SSH con claves configuradas
  • Un dominio o subdominio (opcional, pero recomendado para HTTPS)
  • Conocimientos básicos de terminal y Docker

Paso 1: Preparar tu servidor Ubuntu

Si ya tienes un servidor Ubuntu 24.04 LTS con acceso SSH, puedes saltar este paso. Si necesitas crear uno, sigue estas recomendaciones:

  1. Elige un proveedor de cloud o VPS que ofrezca Ubuntu 24.04 LTS
  2. Selecciona un plan con al menos 2 GB de RAM para pruebas
  3. Configura acceso SSH con claves en lugar de contraseña (más seguro)
  4. Considera activar backups y monitoreo si es para producción
  5. Anota la IP pública de tu servidor

Si usas un proveedor con firewall integrado (como Cloud Firewall de DigitalOcean, Security Groups de AWS, etc.), configura las reglas necesarias desde el panel de control.

Servidor DitialOcean

Paso 2: Configuración inicial del servidor

Conéctate al servidor por SSH:

ssh root@TU_IP_PUBLICA
Enter fullscreen mode Exit fullscreen mode

Actualizar sistema e instalar utilidades

apt update && apt upgrade -y
apt install -y curl wget git ufw ca-certificates gnupg lsb-release
Enter fullscreen mode Exit fullscreen mode

Crear usuario administrador (recomendado)

adduser deploy
usermod -aG sudo deploy
rsync --archive --chown=deploy:deploy ~/.ssh /home/deploy
Enter fullscreen mode Exit fullscreen mode

Ahora puedes conectarte con el nuevo usuario:

ssh deploy@TU_IP_PUBLICA
Enter fullscreen mode Exit fullscreen mode

Paso 3: Configurar firewall con UFW

Dokploy necesita puertos específicos abiertos. Configura UFW correctamente:

# Permitir SSH primero para no bloquearnos
sudo ufw allow OpenSSH

# Abrir puertos necesarios para Dokploy y aplicaciones
sudo ufw allow 80/tcp     # HTTP para Traefik
sudo ufw allow 443/tcp    # HTTPS para Traefik
sudo ufw allow 443/udp    # HTTPS UDP para Traefik
sudo ufw allow 3000/tcp   # Panel de Dokploy (solo temporal)

# Activar firewall
sudo ufw enable
sudo ufw status numbered
Enter fullscreen mode Exit fullscreen mode

Importante: Docker puede saltarse reglas de UFW porque manipula iptables directamente. Si tu proveedor de cloud ofrece firewall integrado (como Cloud Firewall de DigitalOcean, Security Groups de AWS, etc.), te recomendamos configurarlo también como capa adicional de seguridad.

Configura las mismas reglas de firewall en el panel de tu proveedor:

  • 22/TCP desde tu IP o rango de confianza (SSH)
  • 80/TCP desde Anywhere (HTTP)
  • 443/TCP desde Anywhere (HTTPS)
  • 443/UDP desde Anywhere (HTTPS UDP)
  • 3000/TCP temporalmente desde tu IP (solo para configuración inicial)

Firewall de servidor

Paso 4: Instalar Dokploy

La instalación oficial de Dokploy es sencilla con su script:

curl -sSL https://dokploy.com/install.sh | sudo sh
Enter fullscreen mode Exit fullscreen mode

Este script automáticamente:

  • Instala Docker si no está presente
  • Inicializa Docker Swarm
  • Crea la red overlay dokploy-network
  • Despliega servicios de Postgres, Redis y Dokploy
  • Levanta Traefik como reverse proxy
  • Publica el panel en el puerto 3000

Paso 5: Verificar la instalación

Comprueba que todo esté funcionando:

# Ver servicios de Docker Swarm
docker service ls

# Ver contenedores en ejecución
docker ps

# Verificar que los puertos estén escuchando
ss -lntup | grep -E '(:80|:443|:3000)'
Enter fullscreen mode Exit fullscreen mode

Dashboard Dokploy

Ahora abre tu navegador y accede al panel de Dokploy:

http://TU_IP_PUBLICA:3000
Enter fullscreen mode Exit fullscreen mode

Completa el asistente inicial creando tu cuenta de administrador.

Home dokploy

Paso 6: Configurar dominio y HTTPS (opcional pero recomendado)

Para acceder a tus aplicaciones con dominio propio y HTTPS:

  1. En el panel de DNS de tu proveedor (Cloudflare, DigitalOcean, AWS Route53, etc.), añade tu dominio si no lo tienes ya.
  2. Crea registros DNS:
    • A record para @ apuntando a la IP de tu servidor
    • A record para www apuntando a la IP de tu servidor
    • O un subdominio como dokploy.tudominio.com

Espera la propagación DNS (puede tomar unos minutos).

Restringir acceso al puerto 3000

Por seguridad, una vez configurado Dokploy, restringe el acceso al puerto 3000:

  • En el firewall de tu proveedor de cloud, limítala solo a tu IP si necesitas acceso administrativo.

Paso 7: Desplegar tu primera aplicación "Hola Mundo" en Node.js

Vamos a crear una aplicación Node.js simple y desplegarla en Dokploy.

7.1 Crear el proyecto localmente

Crea una carpeta para tu proyecto y los siguientes archivos:

package.json:

{
  "name": "hola-mundo-dokploy",
  "version": "1.0.0",
  "description": "Aplicación Hola Mundo para Dokploy",
  "main": "app.js",
  "scripts": {
    "start": "node app.js"
  },
  "dependencies": {
    "express": "^4.18.2"
  }
}
Enter fullscreen mode Exit fullscreen mode

app.js:

const express = require('express');
const app = express();
const PORT = 3000;

app.get('/', (req, res) => {
  res.json({
    message: '¡Hola Mundo desde Dokploy!',
    timestamp: new Date().toISOString(),
    environment: process.env.NODE_ENV
  });
});

app.get('/health', (req, res) => {
  res.status(200).send('OK');
});

app.listen(PORT, () => {
  console.log(`Servidor corriendo en puerto ${PORT}`);
});
Enter fullscreen mode Exit fullscreen mode

Dockerfile:

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --omit=dev
COPY . .
EXPOSE 3000
USER node
CMD ["node", "app.js"]
Enter fullscreen mode Exit fullscreen mode

docker-compose.yml (para referencia):

version: '3.8'
services:
  app:
    build: .
    environment:
      - NODE_ENV=staging
    restart: unless-stopped
Enter fullscreen mode Exit fullscreen mode

7.2 Desplegar en Dokploy

Despliegue parte 1

Despliegue parte 1

Despliegue parte 2

Despliegue parte 2


  1. En el panel de Dokploy, haz clic en Create Project
  2. Dale un nombre a tu proyecto (ej: "Tests")
  3. En el panel de proyecto, haz click en Create Service y selecciona Application
  4. Dale un nombre a tu aplicación: Hello World
  5. Luego accede a tu aplicación y en la sección inferior Build Type selecciona Dockerfile y luego Save.
  6. En la parte superior cuentas con la sección Provider. Para esta prueba seleccionaremos el tipo Drop, sin embargo para casos reales la mejor opción es a través de repositorio git.
  7. Una vez seleccionado Drop, arrastra al área Zip file el zip con el código que especificamos en el punto 7.1.
  8. Haz clic en el botón Deploy
  9. Una vez terminado el despliegue, te mostrará la pestaña Deployments en la cual deberás ver un punto verde y Done que indica que el proceso fue exitoso. Puedes hacer clic en View para verificar el proceso.
  10. Ahora, para desplegar nuestro Hola Mundo, ve a la pestaña Domains.
  11. Para esta prueba usaremos un dominio gratuito de Traefik haciendo click en el icono de un par de dados, especificamos que el Container Port es 3000 y habilitamos el HTTPS con proveedor Let's Encrypt.
  12. Luego haz clic en el botón Create
  13. Al terminar nos dará una URL a la cual podremos ingresar y ver nuestra web. Importante: como estamos usando un dominio de prueba nos dará advertencia de seguridad. Para entornos de producción usa un dominio propio.

7.3 Verificar el despliegue

Una vez completado el despliegue, accede a tu aplicación:

https://tests-hello-world-puloud-d13d9c-167-172-as2dsaccc234-151.traefik.me/
Enter fullscreen mode Exit fullscreen mode

Deberías ver el mensaje JSON de "Hola Mundo".

Paso 8: Buenas prácticas para producción

1. No compilar en el servidor de producción

Dokploy recomienda construir las imágenes Docker en CI/CD (GitHub Actions, GitLab CI) y luego desplegar la imagen ya construida. Esto ahorra recursos y reduce riesgo de downtime.

2. Usar health checks

Configura health checks en tus aplicaciones (como el endpoint /health en nuestro ejemplo) para que Docker Swarm pueda monitorear el estado.

3. Configurar backups

  • Configura backups regulares de tu servidor (si tu proveedor ofrece esta funcionalidad)
  • Configura backups de bases de datos regularmente
  • Usa docker volume para datos persistentes

4. Monitoreo y logs

# Ver logs de Dokploy
docker service logs dokploy --tail 100 -f

# Ver logs de tu aplicación
docker service logs hola-mundo_app --tail 100 -f

# Ver estado de los servicios
docker service ps hola-mundo_app
Enter fullscreen mode Exit fullscreen mode

Conclusión

Dokploy ofrece una solución robusta y auto-hospedada para el despliegue de aplicaciones en Docker Swarm. Al implementarlo en un servidor Ubuntu, obtienes una infraestructura escalable, segura y profesional a un costo accesible.

¿Necesitas un servidor en la nube? Puedes obtener un Droplet Ubuntu en DigitalOcean usando nuestro enlace de referido y recibir créditos iniciales para probar este tutorial.

Recursos adicionales


¿Te gustó este tutorial? Comparte tus experiencias desplegando aplicaciones con Dokploy en los comentarios o sugiere temas para futuros artículos.

Top comments (0)