Files
openmonetis/DEPLOY_COOLIFY.md
Felipe Coutinho 4358bcfb10 feat: adição de workflows e documentação para publicação no Docker Hub
- Implementado o workflow GitHub Actions para build e push da imagem do OpenSheets para o Docker Hub.
- Criado guia de deploy no Coolify, detalhando opções de uso e configuração.
- Atualizados arquivos de configuração do Docker Compose para produção, incluindo serviços e variáveis de ambiente.
- Adicionadas instruções para gerenciamento de versões e troubleshooting.
2025-11-15 16:37:27 -03:00

6.6 KiB

Deploy do OpenSheets no Coolify

Este guia mostra como fazer deploy do OpenSheets no Coolify usando Docker.

🚀 Resumo Rápido

Duas formas principais:

1. Com imagem do Docker Hub (MAIS RÁPIDO )

  • Publicar imagem no Docker Hub primeiro
  • Deploy em segundos (só faz pull)
  • Ideal para produção e CI/CD
  • Ver guia: DOCKER_HUB.md

2. Build direto no Coolify (MAIS SIMPLES)

  • Usar docker-compose.yml original
  • Coolify faz build completo (2-5 min)
  • Ideal para começar rápido

Qual opção escolher?

Opção Quando usar Deploy Complexidade
Opção 1: Imagem Docker Hub Deploy rápido, CI/CD, produção Segundos Fácil
Opção 2: Build no Coolify Começar rápido, teste 🐢 2-5 min Fácil
Opção 3: PostgreSQL separado Backups automáticos, melhor gestão 🐢 2-5 min Médio

Recomendado para produção: Opção 1 (Docker Hub)


Opção 1: Deploy com Docker Hub (Recomendado para Produção)

Vantagens:

  • Deploy em segundos (vs minutos)
  • Mesma imagem em múltiplos ambientes
  • CI/CD automático via GitHub Actions
  • Rollback fácil (trocar tag)

Passo 0: Publicar Imagem no Docker Hub

Siga o guia completo: DOCKER_HUB.md

Resumo rápido:

  1. Configurar secrets no GitHub (DOCKER_USERNAME e DOCKER_PASSWORD)
  2. Push para main ou criar tag → GitHub Actions publica automaticamente
  3. Verificar imagem em https://hub.docker.com/

Passo 1: Criar Aplicação no Coolify

  1. No Coolify: Projects+ New ResourceDocker Compose Empty
  2. Configure:
    • Name: opensheets
    • Source: Conecte ao seu repositório Git
    • Branch: main
    • Docker Compose Location: docker-compose.prod.yml

Passo 2: Configurar Variáveis de Ambiente

# Configuração da imagem do Docker Hub
DOCKER_USERNAME=seu-usuario-dockerhub
IMAGE_TAG=latest

# PostgreSQL
POSTGRES_USER=opensheets
POSTGRES_PASSWORD=SENHA_FORTE_AQUI
POSTGRES_DB=opensheets_db
DATABASE_URL=postgresql://opensheets:SENHA_FORTE_AQUI@db:5432/opensheets_db

# Better Auth (OBRIGATÓRIO)
BETTER_AUTH_SECRET=GERAR_COM_OPENSSL
BETTER_AUTH_URL=https://seu-dominio.com

# Opcionais: EMAIL, OAUTH, AI (ver abaixo)

Passo 3: Deploy

  1. Clique em Deploy
  2. Coolify vai fazer PULL da imagem (segundos)
  3. PostgreSQL sobe primeiro
  4. App executa migrations e inicia

Opção 2: Deploy com Build no Coolify (Mais Simples)

Use se: Quer começar rápido sem configurar Docker Hub

Passo 1: Criar Aplicação no Coolify

  1. Projects+ New ResourceDocker Compose Empty
  2. Configure:
    • Name: opensheets
    • Source: Conecte ao repositório
    • Branch: main
    • Docker Compose Location: docker-compose.yml (ou deixe vazio)

Passo 2: Variáveis de Ambiente

# PostgreSQL
POSTGRES_USER=opensheets
POSTGRES_PASSWORD=SENHA_FORTE_AQUI
POSTGRES_DB=opensheets_db
DATABASE_URL=postgresql://opensheets:MESMA_SENHA_ACIMA@db:5432/opensheets_db

# Better Auth
BETTER_AUTH_SECRET=GERAR_COM_OPENSSL
BETTER_AUTH_URL=https://seu-dominio.com

Gerar secrets:

openssl rand -base64 32  # Para POSTGRES_PASSWORD
openssl rand -base64 32  # Para BETTER_AUTH_SECRET

⚠️ IMPORTANTE: A senha em POSTGRES_PASSWORD e DATABASE_URL deve ser igual!

Passo 3: Deploy

  1. Clique em Deploy
  2. Coolify faz build completo (2-5 min) 🐢
  3. PostgreSQL e app sobem juntos

Opção 3: PostgreSQL Separado

Vantagens:

  • Backups automáticos do Coolify
  • Monitoring independente
  • Melhor para produção
Ver instruções detalhadas

Passo 1: Criar PostgreSQL

  1. Databases+ New DatabasePostgreSQL 18
  2. Configure nome, usuário, senha
  3. Copie a Internal Connection String

Passo 2: Criar Aplicação

  1. Docker Compose Empty → apontar para docker-compose.coolify.yml
  2. Configurar variáveis (DATABASE_URL aponta para PostgreSQL separado)

Variáveis de Ambiente Opcionais

# Email (Resend)
RESEND_API_KEY=re_...
EMAIL_FROM=noreply@seu-dominio.com

# OAuth Google
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...

# OAuth GitHub
GITHUB_CLIENT_ID=...
GITHUB_CLIENT_SECRET=...

# AI Providers
ANTHROPIC_API_KEY=sk-ant-...
OPENAI_API_KEY=sk-...
GOOGLE_GENERATIVE_AI_API_KEY=...
OPENROUTER_API_KEY=...

Configurar Domínio

  1. No Coolify: Domains
  2. Adicione seu domínio
  3. SSL automático via Let's Encrypt

Verificação de Deploy

  1. Health Check: https://seu-dominio.com/api/health

    {"status":"ok","timestamp":"...","service":"opensheets-app"}
    
  2. Logs: No Coolify → Logs

  3. Database: Verificar se migrations rodaram


Comparação das Opções

Docker Hub Build no Coolify PostgreSQL Separado
Tempo de deploy Segundos 🐢 2-5 min 🐢 2-5 min
Complexidade Médio (setup inicial) Fácil Médio
CI/CD Automático Manual Possível
Rollback Fácil (trocar tag) Rebuild Fácil
Backups DB Manual Manual Automático
Ideal para Produção Desenvolvimento/Teste Produção crítica

Atualizações

Com Docker Hub (Opção 1):

# Fazer alterações
git add .
git commit -m "feat: nova funcionalidade"
git push origin main
# → GitHub Actions publica nova imagem automaticamente

# No Coolify: Redeploy (faz pull da nova imagem)

Com Build no Coolify (Opção 2):

git push origin main
# No Coolify: Redeploy (faz build novamente)

Troubleshooting

Deploy demora muito

Causa: Fazendo build completo Solução: Use Opção 1 (Docker Hub)

Erro de conexão com banco

Causa: DATABASE_URL incorreta Solução: Verificar host (db para compose local, ou nome do serviço no Coolify)

Migrations não executam

Solução: Executar manualmente no terminal do container:

pnpm db:push

Recursos


Próximos Passos

  1. Configurar domínio personalizado
  2. Configurar OAuth (Google, GitHub)
  3. Configurar email (Resend)
  4. Configurar AI providers
  5. Configurar backups (se PostgreSQL separado)
  6. Configurar monitoring