Volver al Blog
AI AgentsDigitalOceanSelf-hostingDocker

Desplegar un agente de IA en un DigitalOcean Droplet

Guía completa 2026 para autoalojar un agente de IA en un DigitalOcean Droplet: tamaño de droplet, Cloud Firewall, Docker, Telegram y coste real.

Por Hermify Team||11 min de lectura
Rack oscuro con LED azul de estado y el texto 'DigitalOcean AI Agent'

Por qué la gente acaba en DigitalOcean para agentes de IA

Cuando decides autoalojar un agente de IA, al final llegas al mismo tridente: Hetzner, AWS EC2 o DigitalOcean. Cada uno atrae a un público distinto. Hetzner atrae al optimizador de costes europeo. AWS atrae al equipo "en mi empresa ya usamos esto". DigitalOcean atrae al indie SaaS que quiere una máquina Ubuntu limpia, un panel de control decente, una imagen 1-Click de Docker oficial y una documentación que no da por hecho a qué equipo perteneces.

Hay una razón más por la que DigitalOcean aparece tanto en este nicho: la DigitalOcean Community tiene un catálogo creciente de tutoriales sobre agentes de IA e imágenes 1-Click en el Marketplace (Docker Agent, Ollama, bases pensadas para agentes) que acortan la primera hora de instalación. Si tu runtime de agente ya se distribuye como contenedor, media batalla del "poner un agente en marcha" está ganada.

Esta guía es para quien ha elegido DigitalOcean y quiere levantar un agente autoalojado (Hermes Agent, un flujo de n8n con un nodo LLM, un proxy de OpenAI Assistants, cualquier cosa que llame a una API de modelo desde un servidor siempre encendido) sin saltarse lo que importa a las 3 de la mañana. Dimensionamiento, hardening, Docker Compose, un test en Telegram y la lista honesta de lo que se romperá.

Si todavía estás decidiendo proveedor, nuestra guía de Hetzner y la comparativa de VPS baratos cubren el panorama. Este post da por hecho DigitalOcean.

Paso 1: elegir el Droplet correcto

La línea de CPU compartida de DigitalOcean en 2026 se divide en tres grupos que verás en el panel al crear un Droplet:

  • Regular Intel - las vCPU compartidas clásicas, las más antiguas y lentas por dólar
  • Premium Intel / Premium AMD - chips más nuevos, más rápidos en un solo hilo
  • Basic AMD (facturación por segundo) - el punto dulce actual para servicios pequeños

Para un agente basado en API (que llama a OpenAI, Anthropic, OpenRouter o a tu propio Ollama y orquesta llamadas a herramientas localmente), la inferencia del modelo ocurre en los servidores del proveedor. El Droplet solo tiene que correr el proceso del agente, un gateway de Telegram y un daemon de Docker, así que no necesitas mucha CPU. La restricción es la RAM.

Plan vCPU RAM NVMe Precio Veredicto
s-1vcpu-512mb-10gb 1 512 MB 10 GB 4 $/mes Muy justo, OOM la primera vez que carga una skill
s-1vcpu-1gb 1 1 GB 25 GB 6 $/mes Suficiente para un agente sencillo con llamadas por API
s-1vcpu-2gb 1 2 GB 50 GB 12 $/mes Vale para un agente, sin margen para un segundo servicio
s-2vcpu-4gb-amd 2 4 GB 80 GB 28 $/mes Recomendado: agente + memoria + Playwright + reverse proxy
s-2vcpu-4gb (Intel) 2 4 GB 80 GB 24 $/mes Mismas specs, CPU más antigua

DigitalOcean pasó a facturación por segundo (mínimo 60 segundos) el 1 de enero de 2026, así que un Droplet que levantas para probar y destruyes esa misma tarde cuesta céntimos, no un mes entero. Cada Droplet incluye una cuota de tráfico (1 TB en el plan de 6 $, 4 TB en el plan de 24-28 $), más que suficiente para un agente que reenvía mensajes de chat.

Recomendación: empieza con s-2vcpu-4gb-amd. Dos vCPU y 4 GB de RAM dejan margen para el agente, un pequeño trabajo de polling IMAP, una skill con navegador headless y un reverse proxy, sin sustos de OOM la primera vez que el backend de memoria escribe un lote a disco. Si tu única carga es un agente de chat contra un modelo en la nube, el plan de 6 $ (s-1vcpu-1gb) es de verdad suficiente.

Sáltate el plan de 4 $ si vas a correr Docker más un volumen de memoria más un gateway de Telegram. Cruzará el umbral OOM en una semana.

Paso 2: cierra el Droplet antes de entrar por SSH

Este es el paso que la gente se salta y que acaba doliendo. DigitalOcean te ofrece un Cloud Firewall a nivel de hipervisor, que actúa antes de que los paquetes lleguen a la VM. Configúralo antes de arrancar el Droplet para que la máquina nunca acepte un paquete en un puerto que no querías abrir.

En la consola de DigitalOcean, ve a Networking > Firewalls > Create Firewall. Reglas de entrada:

  • SSH (TCP 22) desde My IP solamente (o un CIDR pequeño si tienes una IP fija de oficina)
  • HTTP (TCP 80) desde All IPv4, All IPv6 (solo si vas a poner un reverse proxy)
  • HTTPS (TCP 443) desde All IPv4, All IPv6 (solo si necesitas webhooks HTTPS o un UI web)
  • ICMP desde All IPv4, All IPv6 (para que los pings de monitorización funcionen)

Salida: deja los valores por defecto - el agente necesita alcanzar la API del modelo. Adjunta este firewall al Droplet durante la creación. No crees primero el Droplet y luego le pongas el firewall.

Para un setup más fuerte, cierra el puerto 22 al mundo y llega a la máquina por Tailscale. DigitalOcean tiene una 1-Click de Tailscale y la documentación de Tailscale cubre el flujo "cierra el puerto 22 para siempre". El Cloud Firewall descarta los intentos SSH en el borde, así que ni siquiera llegan a fail2ban ni a tus logs.

Al crear el Droplet, elige Ubuntu 24.04 LTS, pega tu clave pública SSH, adjunta el firewall y pulsa Create. Cuando el Droplet esté arriba, entra por SSH como root y haz cuatro cosas de inmediato:

# 1. Parchea
apt update && apt upgrade -y && apt install -y ufw fail2ban unattended-upgrades

# 2. Crea un usuario sin root
adduser --disabled-password --gecos "" agent
usermod -aG sudo agent
mkdir -p /home/agent/.ssh && cp ~/.ssh/authorized_keys /home/agent/.ssh/
chown -R agent:agent /home/agent/.ssh && chmod 600 /home/agent/.ssh/authorized_keys

# 3. Endurece SSH
sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart ssh

# 4. Firewall del host (UFW), redundante con el Cloud Firewall pero una buena red de seguridad
ufw default deny incoming && ufw default allow outgoing
ufw allow OpenSSH && ufw allow 80/tcp && ufw allow 443/tcp
ufw --force enable

Después activa las actualizaciones de seguridad desatendidas y fail2ban:

dpkg-reconfigure -plow unattended-upgrades   # responde Yes
systemctl enable --now fail2ban

Cierra la sesión de root, vuelve a entrar como agent y sigue desde ahí.

Paso 3: instalar Docker (o usar la imagen 1-Click)

Tienes dos caminos.

Camino A: instalar Docker sobre Ubuntu estándar. Estándar, una línea, funciona en todas partes:

curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker agent
newgrp docker
docker run --rm hello-world

Camino B: usar la imagen Docker del Marketplace de DigitalOcean. Desde la pantalla de creación de Droplet, elige Marketplace > Docker (Ubuntu 24.04 con Docker preinstalado). Te saltas la instalación y obtienes un setup ya configurado. Mismo resultado, un comando menos.

Si tu runtime publica una imagen 1-Click oficial en DigitalOcean (Docker Agent, Ollama y una lista creciente lo hacen), puedes ir un paso más allá y usar esa imagen directamente, y luego solo componer tu archivo de entorno y volúmenes.

Paso 4: desplegar el agente con Docker Compose

Crea ~/agent/docker-compose.yml. El ejemplo es genérico; cambia la referencia de imagen por el runtime que uses.

services:
  agent:
    image: ghcr.io/your-runtime/agent:latest
    container_name: agent
    restart: unless-stopped
    env_file: .env
    volumes:
      - ./data:/data
      - ./skills:/skills
      - ./memory:/memory
    ports:
      - "127.0.0.1:8080:8080"   # UI web escuchando solo en localhost

Después ~/agent/.env:

# Proveedor de modelo (BYOK - trae tu propia clave)
OPENAI_API_KEY=sk-...
# o ANTHROPIC_API_KEY / OPENROUTER_API_KEY

# Gateway de mensajería
TELEGRAM_BOT_TOKEN=...
TELEGRAM_ALLOWED_USERS=12345678

# Persistencia
DATA_DIR=/data
MEMORY_DIR=/memory

chmod 600 .env para que otros usuarios de la máquina no puedan leer tus claves, y arriba:

docker compose up -d
docker compose logs -f agent

restart: unless-stopped es lo que mantiene el agente vivo entre reinicios del Droplet (que DigitalOcean hace de vez en cuando por mantenimiento).

Adjunta un Volume persistente

El disco raíz del Droplet sirve para el contenedor, pero el estado del agente (memoria, skills, historial de conversaciones) debe vivir en un Volume aparte de DigitalOcean. Sobrevive a que destruyas el Droplet, se snapshotea por su cuenta y se puede reatachar a un Droplet nuevo si redimensionas.

En la consola: Volumes > Create > 10 GB > attach to your Droplet. Luego en la máquina:

sudo mkdir -p /mnt/agent-state
sudo mount -o discard,defaults,noatime /dev/sda /mnt/agent-state
echo '/dev/sda /mnt/agent-state ext4 defaults,nofail,discard 0 0' | sudo tee -a /etc/fstab
sudo chown agent:agent /mnt/agent-state

Apunta los volúmenes ./data, ./skills, ./memory de docker-compose.yml a subdirectorios de /mnt/agent-state. Un Volume de 10 GB cuesta alrededor de 1 $/mes.

Paso 5: conectar Telegram y probar

Si Telegram es tu canal (la mayoría de los que autoalojan acaban ahí porque la Bot API es gratis e instantánea), el bucle de prueba es corto:

  1. Habla con @BotFather, ejecuta /newbot, guarda el token en .env.
  2. Habla con @userinfobot para obtener tu ID numérico de Telegram y ponlo en TELEGRAM_ALLOWED_USERS.
  3. docker compose restart agent.
  4. Abre tu nuevo bot y manda "hola".

Deberías tener respuesta en pocos segundos. Si no, docker compose logs -f agent suele apuntar directo al problema: token ausente, ID de usuario permitido mal puesto o el proveedor devolviendo 401.

Para un recorrido más profundo por Telegram (grupos, topics, modo voz, troubleshooting), lee cómo montar un agente de IA en Telegram.

Paso 6: backups y monitorización

Dos costumbres baratas que se pagan solas la primera vez que algo falla:

  • DigitalOcean Backups o Snapshots. Los Backups son automáticos y semanales con cuatro semanas de retención, al 20% del coste del Droplet. Los Snapshots son manuales, precio por GB al mes (unos 0,05 $/GB/mes). Como mínimo, etiqueta un snapshot "before-update" antes de cualquier docker compose pull.
  • Un ping de uptime. BetterStack, UptimeRobot o el propio Uptime de DigitalOcean. Que golpee https://tu-dominio/health (o un check TCP) cada 5 minutos. La primera vez que el long-polling de Telegram se caiga a las 3 AM te enteras antes de comer, no al comer.

Para el propio estado del agente en el Volume, un cron de una línea que tara /mnt/agent-state en /var/backups/agent-$(date +%F).tar.gz, más un rsync a DigitalOcean Spaces (compatible con S3, plan inicial de 5 $/mes), es suficiente. Spaces guarda los tarballs a precio de object storage, muy por debajo de "engancho otro Droplet".

Paso 7: actualizaciones

Una vez a la semana, con snapshot fresco:

cd ~/agent
docker compose pull
docker compose up -d
docker image prune -f

Suele tardar menos de un minuto. Si la imagen nueva rompe algo, restauras el snapshot desde la consola. Lo único que pierdes es lo escrito entre el snapshot y ahora, que vive en el Volume de memoria.

Lo que se rompe tarde o temprano

Lista honesta, agnóstica del proveedor y probada por el tiempo:

  • El long-polling de Telegram se cae en cortes de red. La mayoría de runtimes reconecta; si el tuyo no, lo pilla el ping de uptime.
  • docker compose pull :latest mete un cambio de configuración incompatible. Fija tags de imagen a versiones concretas en producción.
  • El proveedor de modelo te limita y el agente se queda callado sin un error obvio. Loguea el HTTP status del cliente del proveedor.
  • El disco raíz se llena porque una skill escribe en /tmp sin rotación. du -sh /* y docker system df deben estar en tu memoria muscular. Por eso el estado persistente vive en un Volume.
  • Te olvidas de una regla de firewall cuando añades un servicio. Tanto el Cloud Firewall como UFW necesitan el puerto nuevo, o pierdes 20 minutos depurando "connection refused" desde el lado equivocado.

Nada de esto es específico de DigitalOcean. Es el impuesto de gestionarlo tú.

Cuentas reales

Números aproximados al mes para una pequeña producción en DigitalOcean, mitad de 2026:

  • Droplet (s-2vcpu-4gb-amd): 28 $
  • Volume de 10 GB: 1 $
  • Weekly Backups: unos 5,60 $
  • Spaces (backup off-site, 250 GB / 1 TB de transferencia): 5 $
  • Ping de uptime: 0 $ (plan gratis)

Total: unos 40 $/mes para un host de agente de IA en DigitalOcean, con backups, monitorización y aislamiento decentes. En Hetzner la misma forma sale más cerca de 8-10 $/mes (regiones EU, CPU comparable, 20 TB de transferencia incluidos), y en AWS EC2 specs equivalentes se van a 60-80 $/mes cuando sumas EBS y salida de datos. DigitalOcean se queda en medio, con precio de "vale lo que pulen".

Cuando las cuentas del VPS dejan de cuadrar

Si los pasos de arriba te suenan bien, este es exactamente el flujo para el que DigitalOcean está pensado. Panel limpio, imágenes 1-Click, un ecosistema lleno de "cómo montar X".

Si te suenan a impuesto sobre tu fin de semana, la comparación cambia. Un hosting gestionado te cambia unos euros al mes y una tarde de domingo por un setup que ya incluye gateway de Telegram, BYOK contra tu proveedor de modelo, memoria persistente, snapshots y "sigue arriba mientras duermes". Nuestra guía hosting vs self-hosting hace las cuentas, incluido lo que vale tu tiempo.

Empieza con Hermify si prefieres el camino gestionado: un Hermes Agent en infraestructura de producción en alrededor de un minuto, sin Cloud Firewall que configurar ni Volumes que adjuntar. Si prefieres hacerlo tú en DigitalOcean, esta guía debería llevarte hasta allí.

Fuentes

Lanza tu propio agente Hermes

Trae tu clave de API, conecta Telegram y ten un agente de IA que evoluciona solo activo en 60 segundos.

Empezar