Sageland — deploy (produção)
Deploy Sageland (2026-07-16)
Decisão do Marcus: sem subdomínio app. (redundante) — tudo em sageland.app.
Arquitetura
- nginx (VPS Hermes):
location = /→ landing estática/var/www/sageland/index.html; resto → proxy127.0.0.1:3020(Next) - App: docker compose em
/home/sageland/src(docker-compose.prod.yml): web (imagem bun, next start :3000→3020) + postgres 17 (volume pgdata) + redis - Secrets:
/home/sageland/src/.env.prod(600, fora do git) — Better Auth, DATABASE_URL, chaves Asaas sandbox por enquanto - Webhook Asaas registrado: id
707f1a32-d6cc-476f-a5a0-7e08917543f1→https://sageland.app/api/webhooks/asaas(eventos PAYMENT_RECEIVED/CONFIRMED/REFUNDED, authToken confere com env)
Como atualizar
Ver README do repo (seção Deploy): tar-pipe do source pra /home/sageland/src + docker compose -f docker-compose.prod.yml up -d --build web. Landing: scp direto do landing/index.html.
Smoke validado 2026-07-16
/landing 200 ·/explore200 com curso seed ·/login200 · signup+sessão via API 200 ·/c/{slug}200 · webhook sem token 401
Pendência pra vender de verdade
Trocar sandbox → produção: ASAAS_API_KEY de prod + ASAAS_BASE_URL=https://api.asaas.com/v3 no .env.prod, re-registrar webhook na base de prod, e recriar perfil de recebimento dos criadores (subcontas sandbox não migram). Lembrete: escapar \$ se a chave for parar em arquivo .env lido pelo Next local — no compose env_file não precisa.