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¶
Projects→ selecionar/criar o projeto →+ New Resource.- Deploy from Git Repository (o Coolify builda o Dockerfile do repo).
Build Pack:
Dockerfile. Domains→ adicionarhttps://<subdominio>.xadm.biz(DNS A apontando para o servidor; o certificado Let's Encrypt é automático).Environment Variables→ configurar; marcar senhas e tokens como Secret (ficam ocultos nos logs e na UI).Storages→ mapear volumes para o que precisa sobreviver a redeploy (ex.:/app/logs).- Health check: path
/health, porta interna do app, intervalo 30s. Deploye 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
Redeployno painel do recurso. - Rollback:
Deployments→ escolher revisão anterior →Rollback(o Coolify guarda as últimas imagens). - Logs: painel
Logsdo 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)