infracloud/vps/redbull/README.md

172 lines
7 KiB
Markdown

# 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.rede5.com.br |
| **IP Público** | 185.194.141.70 |
| **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 (LOCAL)
| Serviço | UUID | Porta | Domínio | CI/CD | Status |
|---------|------|:-----:|---------|-------|:------:|
| Backend | `iw4sow8s0kkg4cccsk08gsoo` | 8521 | test2.q1agenda.com.br | ✅ GitHub | ✅ |
| Frontend | `ao8g40scws0w4cgo8coc8o40` | 3000 | local.gohorsejobs.com | ✅ GitHub | ✅ |
| Backoffice | `hg48wkw4wggwsswcwc8sooo4` | 3001 | b-local.gohorsejobs.com | ✅ GitHub | ✅ |
| Seeder | `q4w48gos8cgssso00o8w8gck` | 8080 | s-local.gohorsejobs.com | ✅ GitHub | ✅ Healthy |
| Database | `bgws48os8wgwk08o48wg8k80` | 5432 | Internal | - | ✅ Healthy |
### Subdomínios Locais (Cloudflare)
指向 Coolify (redbull.rede5.com.br / 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 | CI/CD | Status |
|---------|------|:-----:|---------|-------|:------:|
| Backend | `ecso4woo4woo0ks84888k8ck` | 8080 | api.rodiziosdaqui.rede5.com.br | ✅ GitHub | ✅ |
| Frontend | `l4g4cc884gc04kg8s480gs48` | 3000 | rodiziosdaqui.rede5.com.br | ✅ GitHub | ✅ |
| Backoffice | `s4kskw08400wcw8g40ossggo` | 8082 | backoffice.rodiziosdaqui.rede5.com.br | ✅ GitHub | ✅ |
| Seeder | `ko0kkw4kw8g80scksg8sk0wc` | 8081 | seeder.rodiziosdaqui.rede5.com.br | ✅ GitHub | ✅ Healthy |
### Q1 Agenda (DEV/HML)
| Serviço | UUID | Domínio | CI/CD | Status |
|---------|------|---------|-------|:------:|
| backend-dev | `h8kkc0gw04sow8oo08ccg00s` | sem domínio | ❌ | ❌ Exited |
| backend-hml | `bk0kcosgo0s8cogww8s4so0w` | sem domínio | ❌ | ❌ Exited |
| frontend-dev | `wwgccg0o8g4ogowgowcw4gcg` | sem domínio | ❌ | ❌ Exited |
| frontend-hml | `es0gg4gokssw8c88o4kg0c08` | sem domínio | ❌ | ❌ Exited |
### Q1 Food (DEV)
| Serviço | UUID | Domínio | CI/CD | Status |
|---------|------|---------|-------|:------:|
| Backend | `eosgwscc4g044c884k0ws4gc` | api-dev.q1food.com | ✅ GitHub | ❌ Exited |
| Frontend | `g8w440g0w0oowo8skss440wk` | dev.q1food.com | ✅ GitHub | ✅ Running |
### Sextando (DEV)
| Serviço | UUID | Domínio | CI/CD | Status |
|---------|------|---------|-------|:------:|
| Backend | `h8c4sg0sg80c4o8kkcw4ogcg` | api-dev.sextando.com.br | ❌ | ❌ Exited |
| Backoffice | `nsc0gw0og40g0c88soc0o0wc` | backoffice-dev.sextando.com.br | ❌ | ❌ Exited |
| Frontend | `vggkcs880o8go0ws84wcggco` | dev.sextando.com.br | ❌ | ✅ Running |
### ObraMarket (DEV) — ⚠️ 4 duplicatas, todas paradas
> Ver `services_inventory.md` para detalhe. Ação: limpar e manter apenas 1.
> **DNS Zone**: rede5.com.br (Zone ID: 7eb6587a2c867bb9743719a8fabcd455)
> **Banco de Dados**: PostgreSQL externo (Absam Cloud) - db-60604.dc-us-1.absamcloud.com:11985
## Documentação
- [Inventário de Serviços](./services_inventory.md): Tabela completa de apps, bancos, portas e domínios
- [Guia de Deploy](./deployment_guide.md): Instruções passo a passo para deployment e manutenção
## Quick Start
### Deploy Manual via API
```bash
# Token de autenticação
TOKEN="fzz2xL0UUwpeVB1mObEwxE9GO8sTV8z2OHiOojmdf0e428be"
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
Os webhooks GitHub estão configurados para deploy automático:
- Push na branch `dev` → Deploy automático no Coolify
- URL do webhook: `https://redbull.rede5.com.br/api/v1/webhook/github?uuid=<APP_UUID>&secret=<SECRET>`
## Acesso SSH
```bash
# Conexão SSH (HostName aponta para 185.194.141.70 direto)
ssh redbull
# Verificar containers
docker ps --format 'table {{.Names}}\t{{.Status}}'
# Logs do Coolify
docker logs coolify -f
```
> ⚠️ **Nota:** `redbull.rede5.com.br` está atrás do Cloudflare — porta 22 bloqueada.
> O SSH config usa o IP `185.194.141.70` direto para contornar isso.
## 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 |