Infra Forgejo Coolify
Topologia de rede do Forgejo (interno, sem IP público) e do Coolify (VPS), ligados por uma tailnet Tailscale — inclusive o webhook de deploy. Referência para devs fazendo manutenção de infra; não é um workflow de código. Invoque quando o dev perguntar por que o Forgejo não responde por IP direto, como o deploy automático dispara, ou pedir os endereços da tailnet.
Infra: Forgejo + Coolify via tailnet
Esta skill é referência de infraestrutura para devs, não uma convenção de workflow de código —
existe aqui porque este repo é privado (autenticação obrigatória) e é a fonte que a
engineering-knowledge-platform consome para publicar conhecimento interno.
Topologia
- Forgejo (
git.kcl.net.br) roda na rede interna da empresa. Tem IP de LAN192.168.0.130, que não é alcançável de fora — não existe port-forward nem IP público apontando pra ele. - Coolify roda numa VPS externa, fora da rede da empresa.
- As duas máquinas (e outros dispositivos do time) estão na mesma tailnet Tailscale
(
KCL-web). É por ela que Coolify alcança o Forgejo, e vice-versa — não existe caminho de rede entre os dois fora da tailnet.
Inventário da tailnet (nós relevantes pra infra)
| IP tailnet | Hostname | Papel |
|---|---|---|
100.95.217.25 |
forgejo |
Forgejo — mesma máquina do IP de LAN 192.168.0.130, alcançável só via tailnet ou de dentro da rede interna |
100.94.228.110 |
17141 (hostname padrão, nunca renomeado) |
VPS que roda o Coolify |
Existem outros nós na tailnet (ex.: laptops de dev, outro serviço com hostname
coolifyem100.96.30.15que é distinto da VPS acima) — fora do escopo desta skill. Para o inventário completo e atualizado, rodetailscale statusnuma máquina já conectada, ou veja o admin console do Tailscale.
Webhook de deploy (Forgejo → Coolify)
O deploy automático (push/merge num projeto) dispara via webhook do Forgejo apontando pro Coolify, e esse tráfego passa pela tailnet — é o único jeito de um evento do Forgejo (rede interna, sem IP público) alcançar a VPS do Coolify sem expor o Forgejo pra internet.
Isso implica, ao diagnosticar "deploy não disparou":
- Confirme que ambos os nós (
forgejoe a VPS do Coolify) aparecem online emtailscale status— se um dos dois caiu da tailnet, o webhook não chega. - A URL do webhook configurada no Forgejo (Settings do repo → Webhooks) aponta pro IP/hostname tailnet do Coolify, não pro IP público da VPS nem pra um domínio — confirme isso se o webhook foi reconfigurado recentemente.
- Logs do lado que recebe (Coolify) e do lado que dispara (Forgejo → aba Webhooks da issue/PR, mostra o histórico de entregas e o código de resposta) são o primeiro lugar a olhar.
Por que isso importa pra manutenção
- Serviço novo que precisa falar com o Forgejo (outro webhook, integração, script de CI
rodando fora da rede interna): aponte para o IP/hostname tailnet (
100.95.217.25/forgejo), nunca para192.168.0.130— esse só resolve de dentro da LAN da empresa. - IP tailnet pode mudar se o dispositivo for removido/re-adicionado à tailnet (o Tailscale
tenta manter o mesmo IP, mas não é garantido). Antes de hardcodar um IP em config de produção,
prefira o hostname MagicDNS (
forgejo.<tailnet>.ts.net) quando disponível, ou confirme o IP atual comtailscale statusem vez de confiar num valor documentado antigo. - VPS do Coolify tem hostname genérico (
17141) — ninguém renomeou ainda. Vale considerar renomear para algo comocoolify-vpsno admin console do Tailscale, pra reduzir a chance de alguém confundir com outro nó numérico da lista.
Skills relacionadas
- Nenhuma diretamente — esta é referência de infra, não de workflow de código. Ver
harness-indexpara o índice geral de skills do harness.