Pular para conteúdo

Operação no Coolify

Como criar, configurar e operar uma aplicação no Coolify da X-Adm. Os exemplos usam nomes do BI Vantroba; troque pelos do seu app.

Como a rede funciona

O Traefik (proxy do Coolify) termina o TLS na borda e encaminha para a porta interna do container. O PostgreSQL roda em outro projeto do Coolify (000-compartilhado, recurso postgresql18) — o hostname JDBC é o nome do serviço Docker na rede interna, nunca localhost nem IP externo.

flowchart TD
    I[Internet] -- "HTTPS 443" --> T[Traefik]
    T -- "HTTP porta interna" --> A[Container do app<br/>projeto: vantroba-bi]
    A -- "JDBC 5432, rede interna" --> P[(postgresql18<br/>projeto: 000-compartilhado)]

Criar uma aplicação nova

  1. Projects → selecionar/criar o projeto → + New Resource.
  2. Deploy from Git Repository (o Coolify builda o Dockerfile do repo). Build Pack: Dockerfile.
  3. Domains → adicionar https://<subdominio>.xadm.biz (DNS A apontando para o servidor; o certificado Let's Encrypt é automático).
  4. Environment Variables → configurar; marcar senhas e tokens como Secret (ficam ocultos nos logs e na UI).
  5. Storages → mapear volumes para o que precisa sobreviver a redeploy (ex.: /app/logs).
  6. Health check: path /health, porta interna do app, intervalo 30s.
  7. Deploy e aguardar build + health check verde.

Banco no PostgreSQL compartilhado

Criar banco e usuário dedicados por app, dentro do postgresql18 (terminal do Coolify ou psql):

CREATE DATABASE meu_app;
CREATE USER meu_app WITH PASSWORD 'senha-forte';
GRANT ALL PRIVILEGES ON DATABASE meu_app TO meu_app;
\c meu_app
GRANT ALL ON SCHEMA public TO meu_app;  -- PostgreSQL 15+

Apps que usam PowerSync com "nuke" da replicação precisam de ALTER ROLE meu_app WITH REPLICATION; (não dá superuser; só gerencia slots de replicação).

API do Coolify de dentro de um container

Quando um app que roda no mesmo daemon Docker do Coolify precisa chamar a API do Coolify, usar a URL interna http://coolify:8080 (DNS da network Docker). A URL pública falha em produção: o certificado wildcard pode não estar na truststore da JVM (PKIX path building failed) e o hairpin NAT cai fora da allowlist (HTTP 403). A URL pública fica só para dev local.

Atualizar, rollback e logs

  • Deploy automático: webhook do Coolify cadastrado no Forgejo (ou chamado pelo Forgejo Actions) — cada push na branch configurada rebuilda e redeploya.
  • Manual: botão Redeploy no painel do recurso.
  • Rollback: Deployments → escolher revisão anterior → Rollback (o Coolify guarda as últimas imagens).
  • Logs: painel Logs do recurso (stdout/stderr do container); logs de aplicação persistidos ficam no volume mapeado.

Checklist pré-go-live

  • [ ] Banco e usuário criados no postgresql18
  • [ ] URL do banco apontando para o hostname interno (não localhost/IP)
  • [ ] DNS do domínio apontando para o servidor Coolify
  • [ ] Variáveis configuradas; segredos marcados como Secret
  • [ ] Volume de dados/logs mapeado
  • [ ] Health check verde
  • [ ] Teste manual do endpoint público (curl -I https://.../health)