# Redbull - Servidor Coolify DEV

Este repositório contém a documentação técnica e os guias de operação para o servidor Redbull, uma VPS dedicada ao ambiente de desenvolvimento utilizando a plataforma Coolify.

## Visão Geral

O servidor Redbull é uma infraestrutura de desenvolvimento que hospeda múltiplos projetos web, seguindo uma arquitetura baseada em contêineres. A plataforma Coolify serve como camada de gerenciamento de aplicações, similar a um Heroku/Vercel self-hosted, permitindo deploys automáticos através de webhooks Git. O Traefik atua como proxy reverso com auto-descoberta de serviços.

## Especificações do Servidor

| Recurso | Especificação |
|---------|---------------|
| **Hostname** | redbull |
| **IP Público** | 185.194.141.70 |
| **Domínio** | redbull.rede5.com.br |
| **Coolify Dashboard** | https://redbull.rede5.com.br |
| **API** | https://redbull.rede5.com.br/api/v1 |
| **Plataforma** | VPS Ubuntu/Debian |
| **Orquestrador** | Coolify v4 (PaaS self-hosted) |
| **Container Runtime** | Docker |
| **Proxy Reverso** | Traefik |
| **Bancos de Dados** | PostgreSQL 16 (gerenciado) |

## Projetos Hospedados

### GoHorse Jobs (DEV)
| Serviço | UUID | Porta | Domínio |
|---------|------|:-----:|---------|
| Backend | `iw4sow8s0kkg4cccsk08gsoo` | 8521 | coolify-dev.gohorsejobs.com |
| Frontend | `ao8g40scws0w4cgo8coc8o40` | 3000 | local.gohorsejobs.com |
| Backoffice | `hg48wkw4wggwsswcwc8sooo4` | 3001 | backoffice-dev.gohorsejobs.com |
| Seeder | `q4w48gos8cgssso00o8w8gck` | 8080 | seeder-dev.gohorsejobs.com |
| Database | `bgws48os8wgwk08o48wg8k80` | 5432 | Internal |

### Subdomínios Locais (Cloudflare)

指向 Coolify (185.194.141.70):

| Subdomínio | Tipo | UUID App |
|------------|------|----------|
| local.gohorsejobs.com | A → 185.194.141.70 | Frontend |
| api-local.gohorsejobs.com | A → 185.194.141.70 | Backend |
| b-local.gohorsejobs.com | A → 185.194.141.70 | Backoffice |
| s-local.gohorsejobs.com | A → 185.194.141.70 | Seeder |

> **Cloudflare Zone**: gohorsejobs.com (Zone ID: 5e7e9286849525abf7f30b451b7964ac)

### Rodizios Daqui (DEV)
| Serviço | UUID | Porta | Domínio |
|---------|------|:-----:|---------|
| Backend | `ecso4woo4woo0ks84888k8ck` | 8080 | api.rodiziosdaqui.rede5.com.br |
| Frontend | `l4g4cc884gc04kg8s480gs48` | 3000 | rodiziosdaqui.rede5.com.br |
| Backoffice | `s4kskw08400wcw8g40ossggo` | 8082 | backoffice.rodiziosdaqui.rede5.com.br |
| Seeder | `ko0kkw4kw8g80scksg8sk0wc` | 8081 | seeder.rodiziosdaqui.rede5.com.br |

> **DNS Zone**: rede5.com.br (Zone ID: 7eb6587a2c867bb9743719a8fabcd455)

> **Banco de Dados**: PostgreSQL externo (Absam Cloud) - db-60604.dc-us-1.absamcloud.com:11985

### Q1Food (DEV)
| Serviço | UUID | Porta | Domínio |
|---------|------|:-----:|---------|
| Backend | `eosgwscc4g044c884k0ws4gc` | 8000 | api-dev.q1food.com |
| Frontend | `g8w440g0w0oowo8skss440wk` | 3000 | dev.q1food.com |

> **DNS Zone**: q1food.com (Zone ID: 70cdac5cc9787719d548ac6d74c98896)

> **Banco de Dados**: Supabase (externo)

## Documentação

- [**Resumo de Projetos**](./projetos-resumo.md): Status, URLs, CI/CD e webhooks
- [Inventário de Serviços](./services_inventory.md): Tabela completa de apps, bancos, portas e domínios
- [API Coolify](./coolify-api.md): Endpoints e comandos da API

## Quick Start

### Deploy Manual via API

```bash
# Token de autenticação
TOKEN="2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9"
URL="https://redbull.rede5.com.br/api/v1"

# Deploy de uma aplicação
curl -s -H "Authorization: Bearer $TOKEN" \
  "$URL/deploy?uuid=<APP_UUID>"

# Atualizar domínio (requer http:// ou https://)
curl -s -X PATCH -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  "$URL/applications/<UUID>" \
  -d '{"domains":"http://local.gohorsejobs.com","instant_deploy":true}'

# Listar aplicações
curl -s -H "Authorization: Bearer $TOKEN" "$URL/applications"

# Ver domínios do servidor
curl -s -H "Authorization: Bearer $TOKEN" \
  "$URL/servers/m844o4gkwkwcc0k48swgs8c8/domains"
```

### Cloudflare DNS

```bash
# Token em ~/.ssh/cloudflare-token
export CF_AUTH_EMAIL="yamamoto@rede5.com.br"
export CF_AUTH_KEY="5dcfd89a9d4ec330dede0d4074a518f26818e"
export CF_ZONE_ID="5e7e9286849525abf7f30b451b7964ac"

# Listar DNS records
curl -s -H "X-Auth-Email: $CF_AUTH_EMAIL" -H "X-Auth-Key: $CF_AUTH_KEY" \
  "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records"

# Criar DNS record
curl -s -X POST -H "X-Auth-Email: $CF_AUTH_EMAIL" -H "X-Auth-Key: $CF_AUTH_KEY" \
  -H "Content-Type: application/json" \
  "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/dns_records" \
  -d '{"type":"A","name":"novo-dominio.gohorsejobs.com","content":"185.194.141.70","proxied":false}'

# Limpar cache
curl -s -X DELETE -H "X-Auth-Email: $CF_AUTH_EMAIL" -H "X-Auth-Key: $CF_AUTH_KEY" \
  -H "Content-Type: application/json" \
  "https://api.cloudflare.com/client/v4/zones/$CF_ZONE_ID/purge_cache" \
  -d '{"purge_everything":true}'
```

### CI/CD Automático via Webhook do Coolify

O Coolify recebe webhooks do GitHub para deploy automático. Configure no repositório GitHub (Settings → Webhooks):

| App | Webhook URL | Secret |
|-----|-------------|--------|
| Backend | `https://redbull.rede5.com.br/api/v1/webhooks/deploy?uuid=iw4sow8s0kkg4cccsk08gsoo` | `oRTKAwXgHrIzIcXdVqa7BXPkzXVQAhwS` |
| Frontend | `https://redbull.rede5.com.br/api/v1/webhooks/deploy?uuid=ao8g40scws0w4cgo8coc8o40` | `H3CfQuM9Jnpv9Tl37WKupEMlaaIWFlU5` |
| Backoffice | `https://redbull.rede5.com.br/api/v1/webhooks/deploy?uuid=hg48wkw4wggwsswcwc8sooo4` | `wvREqj94RRX60113cYb2nMCZf0pmg662` |
| Seeder | `https://redbull.rede5.com.br/api/v1/webhooks/deploy?uuid=q4w48gos8cgssso00o8w8gck` | `sa08PAj2RwyjW5VNmqKX0Ac9s7zIMyH2` |
| q1food-backend | `http://185.194.141.70:8000/api/v1/webhooks/deploy?uuid=eosgwscc4g044c884k0ws4gc` | `d66bac276faa04631124559d77199d0e` |
| q1food-frontend | `http://185.194.141.70:8000/api/v1/webhooks/deploy?uuid=g8w440g0w0oowo8skss440wk` | `c512dc54933829d1cde381e2c9bf394a` |

Configuração do webhook no GitHub:
- Payload URL: URL do webhook acima
- Content type: `application/json`
- Secret: webhook secret da app
- Events: `Push events` (branch `dev`)

## Acesso SSH

```bash
# Conexão SSH
ssh redbull

# Verificar containers
docker ps --format 'table {{.Names}}\t{{.Status}}'

# Logs do Coolify
docker logs coolify -f
```

## Boas Práticas

1. **Variáveis de Ambiente**: Configure todas as variáveis antes do deploy
2. **Bancos de Dados**: Utilize o PostgreSQL gerenciado ou bancos externos
3. **Logs**: Monitore os logs após cada deploy
4. **Webhooks**: Mantenha os secrets seguros

## Comparação com Outros Servidores

| Servidor | Uso | Plataforma |
|----------|-----|------------|
| **Redbull** | Desenvolvimento (DEV) | Coolify |
| **Vim** | Produção | Dokku |
| **Apolo** | Kubernetes | K3s |
