Criar a conta
Trinta minutos, e o único ponto do processo onde uma recusa é definitiva.
Comece em oracle.com/cloud/free. Você vai precisar de nome, endereço e telefone reais, CPF e cartão de crédito internacional físico. Virtual, descartável ou pré-pago costuma ser recusado pelo antifraude. A Oracle faz uma autorização temporária de cerca de US$ 1 no cartão: não é cobrança, cai sozinha.
Desative VPN e bloqueador de anúncio antes de abrir o formulário, e escreva o endereço exatamente como está no cadastro do cartão. Se a primeira tentativa falhar, não tente de novo com outro e-mail: múltiplas tentativas acionam o antifraude e aí a conta trava de vez. Uma conta gratuita por pessoa.
O que acontece nos primeiros 30 dias
A conta nasce com US$ 300 em créditos de teste, válidos por 30 dias. Isso confunde muita gente: durante esse período você consegue criar recursos que não são gratuitos, e eles somem quando o trial acaba. Regra prática: se o painel não marcar Always Free Eligible, não crie.
Passados os 30 dias, sem upgrade, a conta vira Always Free pura. Os recursos gratuitos continuam de pé por tempo indeterminado. Não é trial disfarçado.
Escolher a região
A decisão irreversível do apêndice inteiro, e ela é tomada no cadastro, antes de você ver qualquer tela de servidor.
A região que você escolhe no cadastro vira a home region da conta, e instância de computação Always Free só existe lá. Não dá para trocar depois em conta gratuita.
| Região | Identificador | Nota |
|---|---|---|
| Brazil East — São Paulo | sa-saopaulo-1 | Menor latência de Brasília. Também a mais disputada. |
| Brazil Southeast — Vinhedo | sa-vinhedo-1 | Alguns milissegundos a mais, historicamente menos concorrida. |
Para servidor de automação — Hermes, n8n, bots, APIs internas — a diferença de latência entre as duas é irrelevante. O que importa é qual delas tem máquina ARM livre, e a Oracle não mostra isso antes de você tentar criar. Se São Paulo recusar de forma persistente, Vinhedo é uma troca barata.
Criar a VPS
Compute → Instances → Create instance. Sete decisões, e uma delas define se você vai receber fatura.
Algo que você reconheça em seis meses, por exemplo jaya-server.
Ubuntu 24.04 ou Oracle Linux 9. Ubuntu tem mais tutorial e mais imagem Docker pronta, e é o sistema que o Volume 07 assume.
Change shape → Ampere → VM.Standard.A1.Flex. Confirme que aparece o selo Always Free Eligible. Se não aparecer, você está prestes a gerar fatura.
2 OCPUs e 12 GB de RAM, a cota inteira numa máquina só.
Crie uma VCN nova, com IP público atribuído.
Generate a key pair for me. Baixe a chave privada e guarde num lugar que você não vai formatar.
Mínimo de 47 GB. Sua cota total de disco é 200 GB.
A2, E4, E5, Intel, GPU ou qualquer shape sem o selo Always Free Eligible. Durante os 30 dias de crédito eles funcionam normalmente e você só descobre o problema quando o trial acaba.
Até junho de 2026 a cota ARM era de 4 OCPUs e 24 GB. A Oracle cortou pela metade em 15 de junho de 2026, sem anúncio público. Praticamente todo tutorial que você achar no Google ainda promete 24 GB, e está desatualizado. Há um detalhe cruel na mudança: instância existente que for terminada pode não ser recriável acima do limite novo. Não destrua uma máquina boa achando que recria igual.
O Volume 07 pede Ubuntu 24.04 x86_64, e esta máquina é aarch64. Não é incompatibilidade: a imagem oficial do Hermes publica linux/arm64 e linux/amd64 na mesma tag, com tratamento explícito de arquitetura no Dockerfile. Provisione ARM aqui e siga o volume com a mesma tag fixada.
Quando aparecer “Out of capacity”
É a resposta mais comum na primeira tentativa. Não é erro seu: o ARM gratuito vive lotado.
Na ordem, tente:
Algumas horas depois, em faixa diferente. Madrugada costuma render.
1 OCPU e 6 GB entram onde a cota cheia não entra. Você sobe agora e cresce depois.
Se a região tiver mais de um.
VM.Standard.E2.1.Micro, x86, também gratuita, mas com 1 GB de RAM. Dá para dois desses.
A documentação do Hermes pede 1 GB como mínimo absoluto e 2 a 4 GB como recomendado — e avisa que a automação de navegador (Playwright/Chromium) é a funcionalidade mais faminta, exigindo pelo menos 2 GB sozinha. Na E2.1.Micro você fica no piso: o agente sobe, responde no Telegram e trabalha com texto, mas as ferramentas de navegador ficam desligadas. É uma escolha legítima; só não é a mesma máquina.
O upgrade para Pay As You Go, os dois lados
Você vai ler em fórum que migrar para PAYG resolve o “out of capacity”. Historicamente resolve mesmo: contas pagas têm prioridade de capacidade, e os recursos Always Free continuam gratuitos dentro da cota.
O custo é que você perde a rede de proteção. Numa conta gratuita, criar algo fora da cota simplesmente falha. Numa conta PAYG, funciona e cobra. Um clique distraído num shape errado vira fatura em dólar.
Em 2026 o argumento ficou mais fraco: segundo o InfoQ, o suporte da Oracle deu informação conflitante sobre se o corte de cota atinge PAYG também. Esgote os quatro itens acima antes. Se migrar, a primeira coisa a fazer é criar um budget alertem Billing & Cost Management → Budgets, com alerta em US$ 1.
Conectar do Windows
Aqui trava a primeira vez, e não é culpa da Oracle nem da sua chave.
Quando a instância ficar verde como Running, copie o IP público. O usuário do primeiro acesso muda conforme a imagem escolhida.
# Ubuntu
ssh -i "C:\caminho\para\sua-chave.key" ubuntu@SEU_IP_PUBLICO
# Oracle Linux
ssh -i "C:\caminho\para\sua-chave.key" opc@SEU_IP_PUBLICOWARNING: UNPROTECTED PRIVATE KEY FILE! — o OpenSSH do Windows recusa a chave porque o arquivo herdou permissões amplas da pasta Downloads. Não é problema da chave.
No PowerShell, remova a herança e deixe só o seu usuário com leitura:
icacls "C:\caminho\para\sua-chave.key" /inheritance:r
icacls "C:\caminho\para\sua-chave.key" /grant:r "$($env:USERNAME):(R)"Rode o ssh de novo. Entra.
A chave privada é a chave da casa. Não sobe para GitHub, não vai por WhatsApp, não entra em prompt de IA nenhuma. Se ela vazar, a máquina é de quem tem o arquivo.
Os dois firewalls
O item que falta em quase todo tutorial, e o motivo nº 1 de “meu serviço não abre”.
Sua VPS está atrás de duas barreiras independentes. Abrir só uma não adianta, e o sintoma é enganoso: a porta parece aberta no painel e a conexão morre em silêncio.
| Camada | Onde fica | O que faz |
|---|---|---|
| Security List / NSG | Painel web da OCI, dentro da VCN | Filtra antes do pacote chegar na máquina. |
| iptables / firewalld | Dentro do sistema, já vem ligado na imagem | Filtra depois. Bloqueia 80 e 443 por padrão. |
Camada 1 — no painel
Networking → Virtual Cloud Networks → sua VCN → Security Lists → Default Security List → Add Ingress Rules. Stateless No, Source CIDR 0.0.0.0/0, IP Protocol TCP, Destination Port Range 80,443.
Camada 2 — dentro da máquina (Ubuntu)
A imagem Ubuntu da OCI já vem com regras de iptables e uma regra REJECT no fim da cadeia. Se você acrescentar a sua regra depois do REJECT, ela nunca é lida. Por isso: primeiro descubra a posição do REJECT.
sudo iptables -L INPUT --line-numbersProcure a linha REJECT all -- anywhere anywhere reject-with icmp-host-prohibited e anote o número dela. Supondo que seja 6, insira antes:
# supondo que o REJECT esteja na linha 6
sudo iptables -I INPUT 6 -p tcp --dport 80 -m state --state NEW -j ACCEPT
sudo iptables -I INPUT 6 -p tcp --dport 443 -m state --state NEW -j ACCEPT
sudo netfilter-persistent saveConfira com sudo iptables -L INPUT --line-numbers que as duas linhas ficaram acima do REJECT. Sem o netfilter-persistent save, tudo volta ao normal no próximo reboot.
O capítulo de segurança do volume usa UFW com deny incoming, e está certo para uma VPS comum. Nas imagens Ubuntu da OCI, não: a própria Oracle recomenda editar o iptables direto, porque a imagem já vem com um conjunto de regras próprio. UFW por cima disso gera um estado confuso, difícil de depurar depois. Nesta máquina, siga este capítulo e pule o bloco de UFW do volume — o fail2ban e o resto do endurecimento continuam valendo.
Camada 2 — Oracle Linux 9
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reloadDocker sem abrir buraco
Onde o firewall que você acabou de configurar deixa de valer, sem avisar.
A instalação, em ARM, é a mesma de sempre:
curl -fsSL https://get.docker.com | sudo sh
sudo usermod -aG docker $USER
# saia e entre de novo no SSH para o grupo valerO Docker escreve as próprias regras de rede e passa por cima do iptables. Um contêiner publicado como -p 5678:5678 fica exposto na internet inteira mesmo com a porta 5678 fechada no seu firewall e na Security List. É assim que painel de n8n e banco de dados aparecem no Shodan.
0.0.0.0 expõe o contêiner mesmo com a porta fechada nas duas camadas de firewall. Amarrar em 127.0.0.1 devolve o controle: só o proxy reverso fica visível.A correção é publicar sempre amarrado ao localhost, e colocar um proxy reverso na frente para quem precisa de acesso externo:
# errado — exposto para a internet inteira
ports:
- "5678:5678"
# certo — só acessível de dentro da máquina
ports:
- "127.0.0.1:5678:5678"Na frente disso, um Caddy ou Nginx nas portas 80 e 443, com HTTPS e autenticação. Só ele fica publicado.
Arquitetura das imagens
Sua máquina é aarch64, não x86. A maioria das imagens grandes já publica linux/arm64, mas nem todas. Antes de brigar com um contêiner que não sobe:
uname -m
docker manifest inspect nome-da-imagem:tag | grep arm64Sem resultado no grep, aquela imagem não roda aí. Procure a variante ARM ou outro projeto.
Endurecer o SSH
Quinze minutos que separam um servidor seu de um servidor de outra pessoa.
IP público na internet começa a receber tentativa de login em minutos. Não é ataque direcionado, é varredura automática, e ela nunca para.
sudo apt update && sudo apt upgrade -y
sudo grep -E "^PasswordAuthentication|^PermitRootLogin" /etc/ssh/sshd_configVocê quer ver PasswordAuthentication no. As imagens da OCI já vêm assim, mas confirmar é barato. Se estiver yes, troque para no e rode sudo systemctl restart ssh sem fechar a sessão atual, testando o login numa segunda janela antes de sair.
sudo apt install -y fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgradesAbertas: 22 para SSH, 80 e 443 para web. Mais nada. Banco de dados, painel de administração e API interna se acessam por túnel SSH ou por uma rede privada como a Tailscale do capítulo 13 do volume, nunca publicados direto.
Backup
Sua cota inclui 5 backups de volume. Usar zero deles é escolha, não descuido.
No painel: Storage → Boot Volumes → seu volume → Create Manual Backup. O momento certo de tirar o primeiro é agora, com a máquina limpa e configurada, antes de instalar qualquer coisa. Esse é o ponto para onde você volta quando quebrar algo.
As políticas automáticas (Bronze, Silver, Gold) geram backups em série e podem estourar os 5 gratuitos. Em conta Always Free, prefira o backup manual em momentos que você escolhe: antes de uma mudança grande, depois de uma configuração que funcionou.
O que backup de volume não cobre
Snapshot de disco te devolve a máquina. Não te devolve um arquivo específico às pressas, e some junto se a conta cair. Para os dados que doem — o .env do Hermes, o histórico de sessões, arquivos de trabalho — mantenha uma cópia fora da Oracle: um rsync ou rclone agendado no cron para outro destino. Regra velha: backup que mora no mesmo lugar que o original não é backup.
Não perder a máquina
Duas formas de perder uma VPS gratuita, e as duas são silenciosas.
Recuperação por ociosidade
A Oracle se reserva o direito de recuperar instância Always Free considerada ociosa. O critério oficial é uma janela de 7 dias em que os três itens abaixo são verdadeiros ao mesmo tempo — basta um acima do limite para barrar a recuperação:
| Métrica | Limite | Observação |
|---|---|---|
| CPU, percentil 95 | abaixo de 20% | Vale para todos os shapes |
| Uso de rede | abaixo de 20% | Vale para todos os shapes |
| Uso de memória | abaixo de 20% | Só se aplica a shapes A1 |
Vale conhecer o número real: 20% de 12 GB são 2,4 GB. Um Hermes conversando por texto, com dois ou três contêineres parados, pode viver abaixo disso e cair nos três critérios ao mesmo tempo.
Há um efeito colateral interessante no outro sentido. Com as ferramentas de navegador ativas, o Hermes trabalha na faixa de 2 a 4 GB — acima do corte de 2,4 GB. Nesse cenário o critério de memória sozinho barra a recuperação, mesmo com a CPU ociosa. É margem estreita, não é garantia: depende de o Chromium ficar residente. Isso se mede, não se supõe.
# depois de uma semana rodando, não antes
free -m
# a coluna "used" é o que a Oracle compara com os 20% de 12 GBIP público
O IP efêmero acompanha a instância enquanto ela existir. Se você terminar a instância, o IP vai junto, e qualquer domínio apontado para ele quebra. A documentação Always Free consultada não lista IP público reservado entre os recursos gratuitos; antes de reservar um, confira a cota no painel para não gerar cobrança.
Conta gratuita não tem SLA e não tem suporte. Ela é excelente para agente pessoal, automação, laboratório e serviço interno. Não é lugar para a única cópia de nada.
Checklist final
Se todos estiverem marcados, o servidor está pronto para receber o Hermes — e você volta para o capítulo 03 do volume.

Agora o inquilino.
Daqui em diante o Volume 07 assume: contêiner com tag fixada, bot do Telegram com allowlist fechada, segredos com chmod 600 e o teste negativo que separa “parece pronto” de pronto. Você já tem o mais difícil — um servidor que não desliga e não custa nada.
Base técnica
Conteúdo consolidado em agosto de 2026. Cotas, telas e políticas da Oracle mudam sem aviso — a de junho de 2026 mudou.
