Voltar ao Blog
AI AgentsDigitalOceanSelf-hostingDocker

Como implantar um agente de IA em um Droplet DigitalOcean

Guia completo 2026 para autohospedar um agente de IA em um Droplet DigitalOcean: dimensionamento, Cloud Firewall, Docker, Telegram e custo real.

Por Hermify Team||11 min de leitura
Rack escuro com LED azul de status e o texto 'DigitalOcean AI Agent'

Por que a galera acaba na DigitalOcean para agentes de IA

Quando você decide autohospedar um agente de IA, mais cedo ou mais tarde chega ao mesmo trio: Hetzner, AWS EC2 ou DigitalOcean. Cada um atrai um perfil. Hetzner atrai quem otimiza custo na Europa. AWS atrai a turma "minha empresa já usa isso". DigitalOcean atrai o indie SaaS que quer uma máquina Ubuntu simples, um painel bonito, uma imagem 1-Click de Docker oficial e uma documentação que não presume a que time você pertence.

Tem mais um motivo pelo qual a DigitalOcean aparece tanto nesse nicho: a DigitalOcean Community tem um catálogo crescente de tutoriais sobre agentes de IA e imagens 1-Click no Marketplace (Docker Agent, Ollama, bases prontas para agentes) que encurtam a primeira hora de instalação. Se o seu runtime de agente já vem como contêiner, metade da luta "colocar um agente no ar" já está ganha.

Este guia é para quem escolheu DigitalOcean e quer levantar um agente autohospedado (Hermes Agent, um workflow do n8n com nó LLM, um proxy do OpenAI Assistants, qualquer coisa que chame uma API de modelo a partir de um servidor sempre ligado) sem pular o que importa às 3 da manhã. Dimensionamento, hardening, Docker Compose, um teste no Telegram e a lista honesta do que vai quebrar.

Se você ainda está escolhendo provedor, nosso guia de Hetzner e o comparativo de VPS baratos cobrem o resto. Este post assume DigitalOcean.

Passo 1: escolha o Droplet certo

A linha de CPU compartilhada da DigitalOcean em 2026 se divide em três grupos que aparecem no painel de criação:

  • Regular Intel - as vCPUs compartilhadas clássicas, as mais antigas e lentas por dólar
  • Premium Intel / Premium AMD - chips mais novos, mais rápidos em single-thread
  • Basic AMD (cobrança por segundo) - o ponto ideal atual para serviços pequenos

Para um agente movido a API (que chama OpenAI, Anthropic, OpenRouter ou seu próprio Ollama e orquestra tool calls localmente), a inferência do modelo roda nos servidores do provedor. O Droplet só precisa rodar o processo do agente, um gateway do Telegram e o daemon do Docker, então não faz falta muita CPU. O gargalo é a RAM.

Plano vCPU RAM NVMe Preço Veredicto
s-1vcpu-512mb-10gb 1 512 MB 10 GB US$ 4/mês Apertado demais, OOM na primeira skill carregada
s-1vcpu-1gb 1 1 GB 25 GB US$ 6/mês Serve para um agente enxuto só de chamadas de API
s-1vcpu-2gb 1 2 GB 50 GB US$ 12/mês Serve para um agente, sem folga para segundo serviço
s-2vcpu-4gb-amd 2 4 GB 80 GB US$ 28/mês Padrão recomendado: agente + memória + Playwright + reverse proxy
s-2vcpu-4gb (Intel) 2 4 GB 80 GB US$ 24/mês Mesmas specs, CPU mais antiga

A DigitalOcean passou a cobrar por segundo (mínimo 60 segundos) em 1 de janeiro de 2026, então um Droplet que você sobe para testar e destrói na mesma tarde custa centavos, não um mês inteiro. Cada Droplet vem com cota de tráfego (1 TB no plano de US$ 6, 4 TB no plano de US$ 24-28), mais que suficiente para um agente que só repassa mensagens de chat.

Recomendação: comece com s-2vcpu-4gb-amd. Dois vCPU e 4 GB de RAM deixam folga para o agente, um polling IMAP pequeno, uma skill com navegador headless e um reverse proxy, sem susto de OOM na primeira vez em que o backend de memória grava um lote em disco. Se sua única carga é um agente de chat contra um modelo na nuvem, o plano de US$ 6 (s-1vcpu-1gb) realmente basta.

Pule o plano de US$ 4 se for rodar Docker mais um volume de memória mais um gateway do Telegram. Ele atravessa o limiar de OOM em uma semana.

Passo 2: trave o Droplet antes de entrar por SSH

Este é o passo que a galera pula e que dói depois. A DigitalOcean tem um Cloud Firewall que roda no nível do hypervisor, antes dos pacotes chegarem à VM. Configure antes do Droplet subir para a máquina nunca aceitar um pacote em uma porta que você não quis abrir.

No painel da DigitalOcean, vá em Networking > Firewalls > Create Firewall. Regras de entrada:

  • SSH (TCP 22) só a partir de My IP (ou um CIDR pequeno se você tem IP fixo no escritório)
  • HTTP (TCP 80) a partir de All IPv4, All IPv6 (só se for rodar um reverse proxy)
  • HTTPS (TCP 443) a partir de All IPv4, All IPv6 (só se precisar de webhooks HTTPS ou UI web)
  • ICMP a partir de All IPv4, All IPv6 (para os pings de uptime funcionarem)

Saída: deixe o padrão - o agente precisa alcançar a API do modelo. Anexe esse firewall ao Droplet no momento da criação. Não crie o Droplet primeiro para colocar firewall depois.

Para um setup mais forte, feche a porta 22 para a internet e acesse a máquina via Tailscale. A DigitalOcean tem uma 1-Click do Tailscale e a documentação do próprio Tailscale cobre o fluxo "feche a porta 22 para sempre". O Cloud Firewall descarta as tentativas de SSH na borda, então nem chegam ao fail2ban ou aos seus logs.

Ao criar o Droplet escolha Ubuntu 24.04 LTS, cole sua chave pública SSH, anexe o firewall e clique em Create. Assim que o Droplet subir, entre por SSH como root e faça quatro coisas imediatamente:

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

# 2. Crie um usuário sem 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. Trave o 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 do host (UFW), redundante com o Cloud Firewall mas uma boa rede de segurança
ufw default deny incoming && ufw default allow outgoing
ufw allow OpenSSH && ufw allow 80/tcp && ufw allow 443/tcp
ufw --force enable

Depois ligue as atualizações de segurança automáticas e o fail2ban:

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

Saia do root, volte como agent e siga a partir daí.

Passo 3: instale o Docker (ou use a imagem 1-Click)

Você tem dois caminhos.

Caminho A: instalar Docker no Ubuntu puro. Padrão, uma linha, funciona em qualquer lugar:

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

Caminho B: usar a imagem Docker do Marketplace da DigitalOcean. Na tela de criação do Droplet, escolha Marketplace > Docker (Ubuntu 24.04 com Docker pré-instalado). Você pula a instalação e ganha um setup já configurado. Mesmo resultado, um comando a menos.

Se o seu runtime publica uma imagem 1-Click oficial na DigitalOcean (Docker Agent, Ollama e uma lista crescente publicam), você pode ir um passo além e usar aquela imagem direto, e depois só compor seu arquivo de env e os volumes.

Passo 4: suba o agente com Docker Compose

Crie ~/agent/docker-compose.yml. O exemplo é genérico; troque a referência da imagem pelo runtime que você usa.

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 ouvindo só em localhost

E ~/agent/.env:

# Provedor de modelo (BYOK - traga sua chave)
OPENAI_API_KEY=sk-...
# ou ANTHROPIC_API_KEY / OPENROUTER_API_KEY

# Gateway de mensageria
TELEGRAM_BOT_TOKEN=...
TELEGRAM_ALLOWED_USERS=12345678

# Persistência
DATA_DIR=/data
MEMORY_DIR=/memory

chmod 600 .env para que outros usuários da máquina não leiam suas chaves, e suba:

docker compose up -d
docker compose logs -f agent

restart: unless-stopped é o que mantém o agente vivo entre reinícios do Droplet (a DigitalOcean reinicia de vez em quando por manutenção).

Anexe um Volume persistente

O disco raiz do Droplet dá conta do contêiner, mas o estado do agente (memória, skills, histórico de conversas) deve viver em um Volume separado da DigitalOcean. Ele sobrevive à destruição do Droplet, tira snapshot próprio e pode ser anexado a um novo Droplet se você redimensionar.

No painel: Volumes > Create > 10 GB > attach to your Droplet. Depois na 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

Aponte os volumes ./data, ./skills, ./memory do docker-compose.yml para subpastas de /mnt/agent-state. Um Volume de 10 GB fica em cerca de US$ 1/mês.

Passo 5: ligar ao Telegram e testar

Se o Telegram é seu canal (a maior parte de quem autohospeda cai lá porque a Bot API é grátis e instantânea), o loop de teste é curto:

  1. Fale com @BotFather, rode /newbot, salve o token em .env.
  2. Fale com @userinfobot para pegar seu ID numérico do Telegram e coloque em TELEGRAM_ALLOWED_USERS.
  3. docker compose restart agent.
  4. Abra seu bot novo e mande "oi".

Deve responder em poucos segundos. Se não responder, docker compose logs -f agent normalmente aponta o problema: token faltando, ID de usuário permitido errado ou provedor devolvendo 401.

Para um passeio mais fundo pelo Telegram (grupos, tópicos, modo voz, troubleshooting), leia como montar um agente de IA no Telegram.

Passo 6: backups e monitoramento

Dois hábitos baratos que se pagam na primeira vez que algo quebra:

  • DigitalOcean Backups ou Snapshots. Backups são semanais e automáticos com quatro semanas de retenção, a 20% do preço do Droplet. Snapshots são manuais, cobrados por GB/mês (uns US$ 0,05/GB/mês). No mínimo, marque um snapshot "before-update" antes de qualquer docker compose pull.
  • Um ping de uptime. BetterStack, UptimeRobot ou o próprio Uptime da DigitalOcean. Que bata em https://seu-dominio/health (ou um check TCP) a cada 5 minutos. Na primeira vez que o long-polling do Telegram cair às 3 da manhã você fica sabendo antes do almoço, não no almoço.

Para o estado do agente no Volume, um cron de uma linha que empacota /mnt/agent-state em /var/backups/agent-$(date +%F).tar.gz, mais um rsync para o DigitalOcean Spaces (compatível com S3, plano inicial de US$ 5/mês), já basta. O Spaces guarda os tarballs a preço de object storage, bem abaixo de "engancho outro Droplet".

Passo 7: atualizações

Uma vez por semana, com snapshot fresco:

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

Costuma levar menos de um minuto. Se a imagem nova quebrar, restaure o snapshot pelo painel. O único estado que se perde é o gravado entre o snapshot e agora, que vive no Volume de memória.

O que quebra mais cedo ou mais tarde

Lista honesta, agnóstica de provedor e testada pelo tempo:

  • O long-polling do Telegram cai em quedas de rede. A maioria dos runtimes reconecta; se o seu não faz, o ping de uptime pega.
  • docker compose pull :latest traz uma mudança de config incompatível. Fixe as tags de imagem em versões específicas em produção.
  • O provedor de modelo te limita e o agente fica em silêncio sem erro claro. Logue o HTTP status do cliente do provedor.
  • O disco raiz enche porque uma skill escreve em /tmp sem rotação. du -sh /* e docker system df precisam estar na sua memória muscular. É exatamente por isso que o estado persistente vive em um Volume.
  • Você esquece a regra de firewall ao adicionar um serviço. Cloud Firewall e UFW precisam da porta nova, ou você perde 20 minutos depurando "connection refused" pelo lado errado.

Nada disso é específico da DigitalOcean. É o imposto de gerenciar você mesmo.

Conta real

Números aproximados por mês para uma produção pequena na DigitalOcean, meados de 2026:

  • Droplet (s-2vcpu-4gb-amd): US$ 28
  • Volume de 10 GB: US$ 1
  • Weekly Backups: cerca de US$ 5,60
  • Spaces (backup off-site, 250 GB / 1 TB de transferência): US$ 5
  • Ping de uptime: US$ 0 (plano grátis)

Total: cerca de US$ 40/mês para um host de agente de IA na DigitalOcean com backup, monitoramento e isolamento decentes. Na Hetzner o mesmo formato sai perto de US$ 8-10/mês (regiões EU, CPU comparável, 20 TB de transferência incluídos), e na AWS EC2 specs equivalentes chegam a US$ 60-80/mês depois de somar EBS e saída de dados. A DigitalOcean fica bem no meio, com preço do polimento, dos docs, das imagens 1-Click e de não ter que pensar em tiers de cobrança.

Quando a conta do VPS deixa de fechar

Se os passos acima te parecem interessantes, esse é exatamente o fluxo para o qual a DigitalOcean foi feita. Painel limpo, imagens de um clique, ecossistema cheio de tutoriais "como rodar X".

Se te parecem imposto sobre o seu fim de semana, a comparação muda. Hosting gerenciado troca uma mensalidade e uma tarde de domingo por um setup que já inclui gateway do Telegram, BYOK contra seu provedor de modelo, memória persistente, snapshots e "fica no ar enquanto você dorme". Nosso guia hosting vs self-hosting faz as contas, inclusive do que vale seu tempo.

Comece com a Hermify se quer o caminho gerenciado: um Hermes Agent em infra de produção em cerca de um minuto, sem Cloud Firewall para configurar nem Volumes para anexar. Se prefere fazer você mesmo na DigitalOcean, este guia deveria te levar lá.

Fontes

Lance seu próprio agente Hermes

Traga sua chave de API, conecte o Telegram e tenha um agente de IA que evolui sozinho no ar em 60 segundos.

Começar agora