Jay.AI/ Biblioteca Técnica / Hermes Agent / Apêndice Volume 07

Volume 07 · Apêndice · v1.0

A VPS que não custa nada.

Do cadastro até o servidor rodando Docker com firewall fechado, backup ligado e SSH endurecido. Escrito para Windows, para uma conta nova, com os limites que a Oracle pratica hoje — não com os que os tutoriais antigos prometem.

Base técnica de agosto de 2026 Duas camadas de firewall, 22/80/443 Leitura aproximada: 20 min
Este apêndice pertence ao Volume 07 · Hermes Agent 24/7 no Telegram
Jaya Roberta sentada numa plataforma circular futurista, sustentando um globo luminoso numa das mãos e tocando um painel de ícones de ferramentas com a outraOracle Always Free
Jay.AI Technical LibraryA máquina é de graça. A disciplina de configurá-la, não.
Leve o manual com você

Arquivo único, funciona sem internet e imprime bem. Útil justamente quando a máquina que você está configurando ainda não sobe.

Baixar em HTML
Guia independente.Não é documento oficial da Oracle e não tem vínculo com a empresa. Cada passo que envolve limite ou política tem a fonte oficial no fim da página. A Oracle mudou a cota em 2026 sem aviso; confira lá antes de decidir qualquer coisa irreversível.
01

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.

Armadilha

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.

Os primeiros 30 dias de uma conta Oracle Cloud gratuitaNos primeiros 30 dias a conta tem 300 dólares em créditos e permite criar recursos pagos. Depois do dia 30, sem upgrade, ela vira Always Free e só os recursos com o selo continuam de pé, por tempo indeterminado.DIA 0 — DIA 30 · CRÉDITOS DE TESTEUS$ 300 · dá para criar recurso PAGODIA 30ALWAYS FREE · SEM PRAZO DE VALIDADE2 OCPUs ARM · 12 GB · 200 GB de discocontinua de pé por tempo indeterminadoCRIADO AQUI SEM O SELOfunciona agora, some no dia 30
A confusão dos primeiros 30 dias. Os créditos de teste deixam você criar máquinas que não são gratuitas, e elas funcionam normalmente enquanto o trial dura. A régua é uma só: se o painel não marcar Always Free Eligible, aquilo tem prazo de validade — mesmo parecendo idêntico ao resto.

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.

02

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ãoIdentificadorNota
Brazil East — São Paulosa-saopaulo-1Menor latência de Brasília. Também a mais disputada.
Brazil Southeast — Vinhedosa-vinhedo-1Alguns 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.

03

Criar a VPS

Compute → Instances → Create instance. Sete decisões, e uma delas define se você vai receber fatura.

Nome

Algo que você reconheça em seis meses, por exemplo jaya-server.

Image

Ubuntu 24.04 ou Oracle Linux 9. Ubuntu tem mais tutorial e mais imagem Docker pronta, e é o sistema que o Volume 07 assume.

Shape

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.

Capacidade

2 OCPUs e 12 GB de RAM, a cota inteira numa máquina só.

Rede

Crie uma VCN nova, com IP público atribuído.

SSH keys

Generate a key pair for me. Baixe a chave privada e guarde num lugar que você não vai formatar.

Boot volume

Mínimo de 47 GB. Sua cota total de disco é 200 GB.

Não escolha

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.

Contexto que mudou em 2026

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.

ARM roda o Hermes, sim

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.

04

Quando aparecer “Out of capacity”

É a resposta mais comum na primeira tentativa. Não é erro seu: o ARM gratuito vive lotado.

Na ordem, tente:

Repetir em outro horário

Algumas horas depois, em faixa diferente. Madrugada costuma render.

Pedir metade

1 OCPU e 6 GB entram onde a cota cheia não entra. Você sobe agora e cresce depois.

Trocar de Availability Domain

Se a região tiver mais de um.

Plano B real, com uma condição

VM.Standard.E2.1.Micro, x86, também gratuita, mas com 1 GB de RAM. Dá para dois desses.

O que 1 GB significa na prática

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.

Se migrar, crie o cinto de segurança primeiro

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.

05

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.

Primeiro acessoPowerShell
# 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
O erro que vai aparecer

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:

Corrigir permissões da chavePowerShell
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.

Regra sem exceção

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.

06

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.

As duas camadas de firewall de uma VPS na Oracle CloudUm pacote vindo da internet atravessa primeiro a Security List no painel da OCI e depois o iptables dentro da máquina. Se apenas uma das duas estiver aberta, o pacote é descartado antes de chegar à aplicação.AS DUAS ABERTASInternet:80 :443Security List / NSGcamada 1 · painel da OCIingress 80,443 = OKiptables / firewalldcamada 2 · dentro da VPSregra ACIMA do REJECTapprespondeSÓ A CAMADA 1 ABERTA — O CASO QUE ENGANAInternet:80 :443Security List / NSGaberta no paineliptables · REJECTpacote descartado aquitimeoutsilencioso
Por que abrir uma só não adianta. As duas barreiras são independentes e ficam em lugares diferentes: uma no painel web, outra dentro do sistema. Com a camada 1 aberta e a 2 fechada, o painel mostra a porta liberada e a conexão morre em silêncio, sem mensagem de erro. É o sintoma que faz todo mundo culpar a aplicação.
CamadaOnde ficaO que faz
Security List / NSGPainel web da OCI, dentro da VCNFiltra antes do pacote chegar na máquina.
iptables / firewalldDentro do sistema, já vem ligado na imagemFiltra 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.

Achar a linha do REJECTUbuntu
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:

Abrir 80 e 443 acima do REJECTUbuntu
# 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 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.

Aqui o Volume 07 e este apêndice divergem — de propósito

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

Abrir 80 e 443Oracle Linux 9
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
07

Docker 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:

Instalar o DockerUbuntu ARM
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 furo

O 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.

Como uma porta publicada pelo Docker contorna o firewallÀ esquerda, um contêiner publicado em todas as interfaces fica acessível da internet mesmo com o iptables fechado. À direita, o mesmo contêiner publicado em 127.0.0.1 só é alcançável através de um proxy reverso nas portas 80 e 443.ERRADO — 5678:5678Internetiptablespassa por cimacontêiner0.0.0.0:5678porta 5678 fechada no painelporta 5678 fechada no iptablese ainda assim: expostaCERTO — 127.0.0.1:5678:5678Internetproxy:80 :443 TLScontêiner127.0.0.1só o proxy está publicadoo resto só existe de dentrosuperfície: uma porta
O furo mais comum de VPS caseira. O Docker escreve as próprias regras de rede e as insere antes das suas. Publicar em 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:

Publicação de portasdocker-compose.yml
# 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:

Confirmar suporte ARMUbuntu ARM
uname -m
docker manifest inspect nome-da-imagem:tag | grep arm64

Sem resultado no grep, aquela imagem não roda aí. Procure a variante ARM ou outro projeto.

08

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.

Atualizar e conferir a configuraçãoUbuntu
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, testando o login numa segunda janela antes de sair.

fail2ban e atualização automáticaUbuntu
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
Regra de portas

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 a Tailscale do capítulo 13 do volume, nunca publicados direto.

09

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.

Cuidado com as Backup Policies

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.

10

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étricaLimiteObservação
CPU, percentil 95abaixo de 20%Vale para todos os shapes
Uso de redeabaixo de 20%Vale para todos os shapes
Uso de memóriaabaixo 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.

Medir antes de confiarUbuntu
# 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 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.

Regra de sobrevivência

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.

11

Checklist final

Se todos estiverem marcados, o servidor está pronto para receber o Hermes — e você volta para o capítulo 03 do volume.

Jaya Roberta diante de um painel holográfico do Hermes Agent, com ícones de Telegram e Docker ligados por linhas de luz a um notebook
A máquina está pronta

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.

Voltar ao Volume 07 e instalar o Hermes
Referências

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.