Deploy con Docker y Ubuntu en 5 minutos (y mas) – Nginx y Certbot

Hoy te traigo un paso a paso súper práctico para que tengas un VPS con Ubuntu listo para recibir tu app en contenedores, servida por Nginx y con SSL de Let’s Encrypt. Lo armé porque me cansé de los deploys eternos: cuando estás iterando un producto, querés que salir a producción sea un trámite, no una odisea.

Acá vas a ver el flujo que uso cuando levanto algo rápido en Hetzner y lo quiero online en minutos, sin plataformas caras ni magia negra.


Lo que hacemos en el video

1) Ubuntu + Docker listo en 5 minutos

  • Actualizá y prepará el server:
    • sudo apt update && sudo apt upgrade -y
  • Instalá Docker (sigo la guía oficial):
    • curl -fsSL https://get.docker.com | sh
    • sudo usermod -aG docker $USER # para usar docker sin sudo
    • Cerrar y volver a entrar en la sesión
  • Opcional pero recomendado: Compose plugin
    • sudo apt install -y docker-compose-plugin
    • docker compose version

Tip: dejá tu app escuchando en localhost (por ejemplo 127.0.0.1:3000) para que después Nginx la proxyee hacia afuera.

2) Tu app detrás de Nginx (reverse proxy)

  • Instalá Nginx:
    • sudo apt install -y nginx
  • Abrí el firewall de forma segura (si usás UFW):
    • sudo ufw allow OpenSSH
    • sudo ufw allow 'Nginx Full'
    • sudo ufw enable
  • Apuntá tu dominio al VPS con un registro A (dominio → IP de tu server).
  • Config básico de Nginx (ejemplo):

    • sudo nano /etc/nginx/sites-available/tu-dominio.com

    server {
    listen 80;
    server_name tu-dominio.com www.tu-dominio.com;

    location / {
    proxy_pass http://127.0.0.1:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    }
    }

    • sudo ln -s /etc/nginx/sites-available/tu-dominio.com /etc/nginx/sites-enabled/
    • sudo nginx -t && sudo systemctl reload nginx

3) SSL gratis con Certbot (Let’s Encrypt)

  • Instalá Certbot y el plugin de Nginx:
    • sudo apt install -y certbot python3-certbot-nginx
  • Emití y configurá el certificado en un paso:
    • sudo certbot --nginx -d tu-dominio.com -d www.tu-dominio.com
  • Auto-renew:
    • sudo systemctl status certbot.timer # suele venir activado
    • Podés probar renovación en seco con: sudo certbot renew --dry-run
VER:  Como hostear tu aplicacion node y react en tu propia VPS (2/2)

Con eso, ya tenés HTTPS, redirecciones automáticas a 443 y tu app segura hacia el mundo.

4) Un toque de orden con Docker Compose

  • docker-compose.yml minimal para una app web:

    services:
    web:
    image: tuusuario/tuapp:latest
    restart: unless-stopped
    ports:

    • "127.0.0.1:3000:3000" # expone solo en localhost
      env_file:
    • .env
  • Levantar:

    • docker compose up -d
  • Logs:

    • docker compose logs -f

5) Gotchas comunes

  • DNS: puede tardar unos minutos en propagar; si Certbot falla, revisá que el dominio apunte bien.
  • Puertos: asegurate de tener 80 y 443 abiertos para la validación y el certificado.
  • Healthchecks: agregá healthchecks a tus servicios, te ahorran dolores de cabeza cuando se caen.
  • Renovación: Let’s Encrypt vence cada 90 días; dejá el timer andando y dormí tranquilo.

Video


Recursos que menciono


Cierre

La idea es que no dependas de nadie para sacar tu app. Un VPS barato, Docker para empaquetar, Nginx para exponer y Let’s Encrypt para el candadito verde. Con este combo podés iterar rápido, escalar cuando haga falta y aprender de tu propia infraestructura.

Si te sirve, probalo hoy mismo. Y si tenés dudas o querés que agregue automatización con Ansible o scripts, decímelo en los comentarios. Nos vemos en el próximo mate.

Loading

Esta entrada fue publicada el youtube. Agregá a favoritos el enlace permalink.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *