Como zerei meus custos de infra (de R$ 300/mês para R$ 0) com uma VM monstra da Oracle e o Antigravity
Se você é desenvolvedor e tem alguns projetos paralelos (SaaS, apps, APIs), já deve ter sentido essa dor no bolso:
👉 Começa com um servidorzinho de $5
👉 Adiciona um banco de dados gerenciado porque “segurança em primeiro lugar” (+$15)
👉 Coloca um Redis para cache (+$10)
👉 Configura backups automáticos (+$5)
👉 Multiplica pelo dólar + impostos…
Parabéns! Você acabou de assinar uma conta de aproximadamente R$ 300 por mês na DigitalOcean para manter no ar projetos que ainda dão mais orgulho do que receita.
Foi exatamente esse boleto que me fez parar e pensar: “Será que não dá para fazer melhor, mais poderoso e de graça?”
Spoiler: Dá sim. E hoje eu rodo tudo isso em uma VM absurdamente mais potente, com zero portas públicas abertas, backups automáticos no S3 e notificações no Telegram. Custo mensal? R$ 0,00.
Vem comigo que vou te contar como montei essa infraestrutura com a ajuda do meu parceiro de inteligência artificial, o Antigravity.
💡 A Grande Troca: DigitalOcean vs Oracle Cloud Free Tier
Para quem não sabe, a Oracle Cloud tem um dos planos gratuitos (Always Free) mais generosos do mercado. Eles te dão uma VM baseada em ARM64 (Ampere A1) com:
- Até 4 OCPUs
- 24 GB de Memória RAM
- 200 GB de armazenamento em disco
Se você tentar contratar uma máquina dessas na DigitalOcean ou na AWS, vai pagar uma pequena fortuna. Na Oracle, ela é grátis para sempre.
Tudo começou quando eu assisti a este vídeo incrível no YouTube que abriu meus olhos sobre a possibilidade de criar uma infraestrutura Always Free na Oracle:
Se eles conseguem, eu também consigo! Saí de uma VM humilde com 1GB ou 2GB de RAM e banco gerenciado para um verdadeiro monstro de 24GB de RAM. Sobra espaço para rodar tudo o que eu quiser sem nunca mais ver um erro de Out Of Memory (OOM).
🏗️ A Estrutura (Unificada e Modular)
Em vez de espalhar serviços, criei o repositório oracle-host para gerenciar a infraestrutura base do servidor de forma unificada usando Docker Compose.
A pilha roda os seguintes serviços centrais:
- Portainer → Para gerenciar os containers por uma interface web bonita (sem precisar ficar dando
docker psno terminal a cada 5 minutos). - Redis → Cache compartilhado de ultra velocidade para todos os projetos.
- PostgreSQL e MySQL → Os motores de banco de dados locais.
- Cloudflare Tunnel (
cloudflared) → A grande mágica da segurança.
🔒 Segurança Extrema: Sem Portas Públicas!
“Mas Thyago, rodar Postgres e MySQL locais numa VM pública não é perigoso? E expor o Portainer?”
Seria, se eu estivesse abrindo portas no firewall da Oracle. Mas a arquitetura que desenhamos é Zero-Trust:
- Portas Amarradas ao Localhost (
127.0.0.1): Os bancos de dados PostgreSQL (5432) e MySQL (3306) estão configurados no Docker para ouvirem apenas conexões locais da própria máquina. Ninguém de fora consegue sequer tentar uma conexão de força bruta. - Sem Portas Públicas 80 ou 443:
O container do
cloudflaredcria um túnel criptografado direto da VM para a borda da Cloudflare. Para expor minhas aplicações ou o Portainer, eu não abro portas no servidor. Eu simplesmente mapeio o domínio no painel do Cloudflare Zero Trust e ele encaminha o tráfego de forma totalmente criptografada para o container correspondente na rede interna do Docker (infra-network). - MFA no Portainer sem instalar nada:
Para acessar o Portainer, configurei uma política do Cloudflare Access. Quando entro em
portainer.meudominio.com, a Cloudflare me intercepta e exige que eu digite um PIN enviado ao meu e-mail antes de me deixar ver a tela de login. Invasores não chegam nem perto.
🗄️ “Mas e os backups automáticos que a DigitalOcean fazia?”
Esse era o meu maior medo. Banco de dados gerenciado é maravilhoso porque você dorme sabendo que tem backup diário. Se eu rodasse o banco local no Docker, quem faria isso por mim?
Foi aqui que o Antigravity brilhou. Em vez de eu perder horas escrevendo scripts bash cheios de bugs, sentamos juntos (eu e a IA de codificação) e projetamos dois scripts de backup de nível de produção impressionantes:
backup_db.sh(PostgreSQL) ebackup_mysql.sh(MySQL).
O que esses scripts fazem de tão especial?
- I/O Não-Bloqueante (Named Pipes / FIFO): O dump lógico do banco (
pg_dumpalloumysqldump) não é salvo no disco para depois ser compactado. Ele é transmitido através de um “cano virtual” direto para ogzipem background. Isso evita picos de uso de disco e memória na VM! - Integridade Garantida: Cada backup gera automaticamente um hash de integridade
SHA256para auditoria e conferência. - AWS S3 sem poluir a máquina: O upload para o bucket do Amazon S3 é feito disparando um container efêmero do
amazon/aws-cli. Assim, a VM não precisa ter a AWS CLI instalada localmente (e funciona perfeitamente em ARM64). - Fofoca no Telegram 🤖: Ao final de cada backup, o script chama a API do Telegram e me manda uma mensagem bonitinha formatada em HTML dizendo se o backup foi concluído com sucesso, o tamanho do arquivo, tempo de execução e a data. Se falhar, ele me manda um alerta vermelho com o código do erro!
- Auto-limpeza local: Ele mantém apenas os últimos 7 dias de backups locais para não estourar o disco da VM.
Tudo isso agendado no crontab do servidor para rodar de madrugada, enquanto eu dormo o sono dos justos.
🚀 Conclusão (e agradecimento ao Antigravity)
Toda essa jornada de migração me provou duas coisas:
- Dá para ter infraestrutura de altíssimo nível sem gastar um centavo, desde que você use as ferramentas certas (Docker, Cloudflare Zero Trust, Oracle Cloud, AWS S3 Free Tier).
- Desenvolver com um parceiro de IA focado em engenharia de software muda o jogo. O Antigravity não só escreveu scripts robustos em bash com tratamentos de erros complexos (
set -Eeuo pipefail), como também revisou minha segurança, encontrou falhas no meu.gitignoreoriginal (eu quase comitei dados brutos do MySQL por acidente! 🤦♂️), e estruturou toda a documentação.
Agora a grana que ia para a DigitalOcean pode virar café (ou cerveja) 🍻.
Se quiser ver como ficou a estrutura de segurança e os scripts de backup para usar no seu servidor, o repositório é totalmente open-source no GitHub: thyagobrejao/oracle-host. Dá uma olhada e economize seus R$ 300 também!
Até o próximo deploy!
P.S.: E aí, você percebeu que este artigo foi escrito inteiramente pelo Antigravity, a inteligência artificial de programação parceira do Thyago? Pois é! Além de estruturar scripts Bash robustos, debugar fusos horários de containers no Docker de madrugada e configurar backups automáticos no S3, eu também sei escrever posts divertidos de blog com bastante café virtual no circuito! ☕🤖