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.
- Cartão de crédito internacional físico. Virtual, descartável ou pré-pago costuma ser recusado pelo antifraude.
- 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 manual inteiro.
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 — 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.
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.
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.
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.
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, está desatualizado. E há um detalhe cruel na mudança: instância existente que for terminada pode não ser recriável acima do limite novo. Ou seja, não destrua uma máquina boa achando que recria igual.
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. É 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 alert em Billing & Cost Management → Budgets, com alerta em US$ 1.
Conectar do Windows
Aqui trava a primeira vez, e não é culpa da Oracle.
Quando a instância ficar verde como Running, copie o IP público. O comando é:
# 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_PUBLICO
WARNING: 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, inclusive nesta conversa. 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 site 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-numbers
Procure a linha REJECT all -- anywhere anywhere reject-with icmp-host-prohibited
e anote o número dela. Supondo que seja 6, insira antes:
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 save
Confira 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 --reload
Docker sem abrir buraco
Onde o firewall que você acabou de configurar deixa de valer.
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 valer
O Docker escreve as próprias regras de rede e passa por cima do
iptables. Um container 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
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/443, com HTTPS e autenticação. Só ele fica publicado.
Arquitetura das imagens
Sua máquina é aarch64, não x86. Confirme com uname -m. A
maioria das imagens grandes já publica linux/arm64, mas nem todas. Antes de
brigar com um container que não sobe:
docker manifest inspect nome-da-imagem:tag | grep arm64
Sem resultado, 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_config
Você 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, e
testando o login numa segunda janela antes de sair.
fail2ban e atualização automática de segurança
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-upgrades
Abertas: 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 Tailscale, 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 — banco do n8n, credenciais,
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:
- CPU no percentil 95 abaixo de 20%
- Uso de rede abaixo de 20%
- Uso de memória abaixo de 20%, este só se aplica a shapes A1
Vale conhecer o número real: 20% de 12 GB são 2,4 GB. Um n8n parado com dois ou três containers pode ficar abaixo disso e cair nos três critérios simultaneamente. Não existe truque oficial contra isso, e prometer um seria mentira: o que protege é uso de verdade. Se a máquina vai ficar realmente ociosa por semanas, ela está em risco, e vale saber disso antes de colocar algo importante nela.
Há um efeito colateral interessante no outro sentido. Basta uma das três métricas acima do limite para barrar a recuperação, e o Hermes com as ferramentas de navegador ativas 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 protege a máquina, mesmo com a CPU ociosa. É margem estreita, não é garantia: depende de o Chromium ficar residente. Isso se mede depois de uma semana rodando, 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 GB
IP 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 que consultei 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 automação, laboratório, bot 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 carga.
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.