docs: adiciona documentação da API do Coolify e scripts de health check
This commit is contained in:
parent
c24c57fbd4
commit
543bf73248
3 changed files with 232 additions and 19 deletions
101
vps/redbull/coolify-api.md
Normal file
101
vps/redbull/coolify-api.md
Normal file
|
|
@ -0,0 +1,101 @@
|
||||||
|
# Coolify API Documentation
|
||||||
|
|
||||||
|
## Base URL
|
||||||
|
```
|
||||||
|
http://185.194.141.70:8000/api/v1
|
||||||
|
```
|
||||||
|
|
||||||
|
## Authentication
|
||||||
|
Use Bearer token authentication:
|
||||||
|
```bash
|
||||||
|
curl -H "Authorization: Bearer $TOKEN" ...
|
||||||
|
```
|
||||||
|
|
||||||
|
Token: `2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9`
|
||||||
|
|
||||||
|
## Quick Commands
|
||||||
|
|
||||||
|
### List all applications
|
||||||
|
```bash
|
||||||
|
curl -s -H "Authorization: Bearer $(cat ~/.ssh/coolify-redbull-token)" "http://185.194.141.70:8000/api/v1/applications"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Deploy by UUID
|
||||||
|
```bash
|
||||||
|
# Frontend
|
||||||
|
curl -s -X GET -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/deploy?uuid=ao8g40scws0w4cgo8coc8o40"
|
||||||
|
|
||||||
|
# Backend
|
||||||
|
curl -s -X GET -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/deploy?uuid=iw4sow8s0kkg4cccsk08gsoo"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Check deployment status
|
||||||
|
```bash
|
||||||
|
curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/deployments/{deployment_uuid}"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Start/Stop/Restart application
|
||||||
|
```bash
|
||||||
|
# Start
|
||||||
|
curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/applications/{uuid}/start"
|
||||||
|
|
||||||
|
# Stop
|
||||||
|
curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/applications/{uuid}/stop"
|
||||||
|
|
||||||
|
# Restart
|
||||||
|
curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/applications/{uuid}/restart"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Application UUIDs
|
||||||
|
|
||||||
|
| App | UUID |
|
||||||
|
|-----|------|
|
||||||
|
| gohorsejobs-backend-dev | iw4sow8s0kkg4cccsk08gsoo |
|
||||||
|
| gohorsejobs-backoffice-dev | hg48wkw4wggwsswcwc8sooo4 |
|
||||||
|
| gohorsejobs-frontend-dev | ao8g40scws0w4cgo8coc8o40 |
|
||||||
|
| gohorsejobs-seeder-dev | q4w48gos8cgssso00o8w8gck |
|
||||||
|
| rodiziosdaqui-backend-dev | ecso4woo4woo0ks84888k8ck |
|
||||||
|
| rodiziosdaqui-backoffice-dev | s4kskw08400wcw8g40ossggo |
|
||||||
|
| rodiziosdaqui-frontend-dev | l4g4cc884gc04kg8s480gs48 |
|
||||||
|
| rodiziosdaqui-seeder-dev | ko0kkw4kw8g80scksg8sk0wc |
|
||||||
|
|
||||||
|
## Scripts
|
||||||
|
|
||||||
|
### Health Check Script
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
TOKEN=$(cat ~/.ssh/coolify-redbull-token | tr -d '\n')
|
||||||
|
echo "=== Coolify Health Check ==="
|
||||||
|
curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/applications" | python -c "
|
||||||
|
import json,sys
|
||||||
|
d = json.load(sys.stdin)
|
||||||
|
for a in d:
|
||||||
|
status = a.get('status','unknown')
|
||||||
|
icon = '✅' if 'running' in status else '❌'
|
||||||
|
print(f'{icon} {a[\"name\"]}: {status}')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Restart All Services
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
TOKEN=$(cat ~/.ssh/coolify-redbull-token | tr -d '\n')
|
||||||
|
UUIDS=(
|
||||||
|
"ao8g40scws0w4cgo8coc8o40"
|
||||||
|
"q4w48gos8cgssso00o8w8gck"
|
||||||
|
"iw4sow8s0kkg4cccsk08gsoo"
|
||||||
|
"hg48wkw4wggwsswcwc8sooo4"
|
||||||
|
"ecso4woo4woo0ks84888k8ck"
|
||||||
|
"s4kskw08400wcw8g40ossggo"
|
||||||
|
"l4g4cc884gc04kg8s480gs48"
|
||||||
|
"ko0kkw4kw8g80scksg8sk0wc"
|
||||||
|
)
|
||||||
|
for uuid in "${UUIDS[@]}"; do
|
||||||
|
echo "Deploying $uuid..."
|
||||||
|
curl -s -X GET -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/deploy?uuid=$uuid"
|
||||||
|
done
|
||||||
|
```
|
||||||
|
|
||||||
|
## Useful Links
|
||||||
|
- Coolify Docs: https://coolify.io/docs
|
||||||
|
- API Reference: https://coolify.io/docs/api-reference/authorization
|
||||||
63
vps/redbull/health-check.sh
Normal file
63
vps/redbull/health-check.sh
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Redbull Health Check Script
|
||||||
|
# Usage: ./health-check.sh
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m'
|
||||||
|
|
||||||
|
TOKEN="2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9"
|
||||||
|
COOLIFY_URL="http://185.194.141.70:8000"
|
||||||
|
SSH_HOST="redbull"
|
||||||
|
|
||||||
|
echo "=============================================="
|
||||||
|
echo " REDBULL HEALTH CHECK"
|
||||||
|
echo "=============================================="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Check SSH connection
|
||||||
|
echo -n "🔌 SSH Connection: "
|
||||||
|
if ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no $SSH_HOST "echo ok" &>/dev/null; then
|
||||||
|
echo -e "${GREEN}OK${NC}"
|
||||||
|
else
|
||||||
|
echo -e "${RED}FAILED${NC}"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "📦 Containers Docker:"
|
||||||
|
echo "-------------------------------------------"
|
||||||
|
ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no $SSH_HOST "docker ps --format '{{.Names}}:{{.Status}}'" 2>/dev/null | while read line; do
|
||||||
|
if echo "$line" | grep -q "healthy\|Up"; then
|
||||||
|
echo -e " ${GREEN}✓${NC} $line"
|
||||||
|
else
|
||||||
|
echo -e " ${RED}✗${NC} $line"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "🌐 Aplicações Coolify:"
|
||||||
|
echo "-------------------------------------------"
|
||||||
|
APPS=$(curl -s -H "Authorization: Bearer $TOKEN" "$COOLIFY_URL/api/v1/applications" 2>/dev/null || echo "[]")
|
||||||
|
echo "$APPS" | python -c "
|
||||||
|
import json,sys,os
|
||||||
|
try:
|
||||||
|
d = json.load(sys.stdin)
|
||||||
|
for a in d:
|
||||||
|
status = a.get('status','unknown')
|
||||||
|
if 'running' in status:
|
||||||
|
icon = '${GREEN}✓${NC}'
|
||||||
|
else:
|
||||||
|
icon = '${RED}✗${NC}'
|
||||||
|
print(f' {icon} {a[\"name\"]}: {status}')
|
||||||
|
except Exception as e:
|
||||||
|
print(f' Erro ao buscar dados: {e}')
|
||||||
|
" 2>/dev/null || echo -e " ${RED}Erro ao conectar com API${NC}"
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "=============================================="
|
||||||
|
echo " FIM DO HEALTH CHECK"
|
||||||
|
echo "=============================================="
|
||||||
|
|
@ -15,7 +15,7 @@ Este documento apresenta o inventário completo de serviços hospedados no servi
|
||||||
| **gohorsejobs-backend-dev** | `iw4sow8s0kkg4cccsk08gsoo` | 8521 | coolify-dev.gohorsejobs.com | ✅ Running |
|
| **gohorsejobs-backend-dev** | `iw4sow8s0kkg4cccsk08gsoo` | 8521 | coolify-dev.gohorsejobs.com | ✅ Running |
|
||||||
| **gohorsejobs-frontend-dev** | `ao8g40scws0w4cgo8coc8o40` | 3000 | dev.gohorsejobs.com | ✅ Running |
|
| **gohorsejobs-frontend-dev** | `ao8g40scws0w4cgo8coc8o40` | 3000 | dev.gohorsejobs.com | ✅ Running |
|
||||||
| **gohorsejobs-backoffice-dev** | `hg48wkw4wggwsswcwc8sooo4` | 3001 | backoffice-dev.gohorsejobs.com | ✅ Running |
|
| **gohorsejobs-backoffice-dev** | `hg48wkw4wggwsswcwc8sooo4` | 3001 | backoffice-dev.gohorsejobs.com | ✅ Running |
|
||||||
| **gohorsejobs-seeder-dev** | `q4w48gos8cgssso00o8w8gck` | 8080 | seeder-dev.gohorsejobs.com | ⚠️ Unhealthy |
|
| **gohorsejobs-seeder-dev** | `q4w48gos8cgssso00o8w8gck` | 8080 | seeder-dev.gohorsejobs.com | ✅ Running |
|
||||||
|
|
||||||
### Rodizios Daqui (DEV)
|
### Rodizios Daqui (DEV)
|
||||||
|
|
||||||
|
|
@ -55,12 +55,12 @@ Este documento apresenta o inventário completo de serviços hospedados no servi
|
||||||
|
|
||||||
| Container | Imagem | Porta | Notas |
|
| Container | Imagem | Porta | Notas |
|
||||||
|-----------|--------|:-----:|-------|
|
|-----------|--------|:-----:|-------|
|
||||||
| coolify | ghcr.io/coollabsio/coolify:latest | 8000 | Painel Coolify |
|
| coolify | ghcr.io/coollabsio/coolify:4.0.0-beta.463 | 8000 | Painel Coolify |
|
||||||
| coolify-db | postgres:16-alpine | 5432 | Banco Coolify |
|
| coolify-db | postgres:15-alpine | 5432 | Banco Coolify |
|
||||||
| coolify-redis | redis:7-alpine | 6379 | Cache Coolify |
|
| coolify-redis | redis:7-alpine | 6379 | Cache Coolify |
|
||||||
| coolify-realtime | soketi | 6001 | WebSocket |
|
| coolify-realtime | soketi | 6001 | WebSocket |
|
||||||
| coolify-sentinel | coolify-sentinel | 8888 | Monitoramento |
|
| coolify-sentinel | coolify-sentinel | 8888 | Monitoramento |
|
||||||
| coolify-proxy | traefik:v3 | 80/443 | Proxy reverso |
|
| coolify-proxy | traefik:v3.6 | 80/443 | Proxy reverso |
|
||||||
|
|
||||||
## Portas do Sistema
|
## Portas do Sistema
|
||||||
|
|
||||||
|
|
@ -70,30 +70,79 @@ Este documento apresenta o inventário completo de serviços hospedados no servi
|
||||||
| 80 | Traefik (HTTP) |
|
| 80 | Traefik (HTTP) |
|
||||||
| 443 | Traefik (HTTPS) |
|
| 443 | Traefik (HTTPS) |
|
||||||
| 8000 | Coolify Dashboard |
|
| 8000 | Coolify Dashboard |
|
||||||
|
| 22222 | Forgejo SSH |
|
||||||
| 3000 | Frontends (Next.js) |
|
| 3000 | Frontends (Next.js) |
|
||||||
| 3001 | Backoffice |
|
| 3001 | Backoffice |
|
||||||
| 8080 | Backends (Go) |
|
| 8080 | Backends (Go) |
|
||||||
| 8081 | Seeders |
|
| 8081 | Seeders |
|
||||||
| 8521 | GoHorse Backend |
|
| 8521 | GoHorse Backend |
|
||||||
|
|
||||||
## Variáveis de Ambiente Comuns
|
## Comandos Rápidos
|
||||||
|
|
||||||
### GoHorse Jobs Backend
|
### SSH Access
|
||||||
```
|
```bash
|
||||||
DATABASE_URL=postgres://gohorsejobs:****@bgws48os8wgwk08o48wg8k80:5432/gohorsejobs
|
ssh redbull
|
||||||
JWT_SECRET=gohorsejobs-dev-jwt-secret-2024-very-secure-key-32ch
|
|
||||||
PORT=8521
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Rodizios Daqui Backend
|
### Check All Containers
|
||||||
```
|
```bash
|
||||||
DATABASE_URL=postgres://admin:****@db-60604.dc-us-1.absamcloud.com:11985/rodiziosdaqui?sslmode=require
|
ssh redbull "docker ps -a"
|
||||||
JWT_SECRET=rodiziosdaqui-dev-jwt-secret-2024-very-secure
|
|
||||||
PORT=8080
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Issues Conhecidas
|
### Health Check via API
|
||||||
|
```bash
|
||||||
|
TOKEN="2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9"
|
||||||
|
curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/applications"
|
||||||
|
```
|
||||||
|
|
||||||
1. **gohorsejobs-seeder-dev**: Healthcheck ainda falhando (precisa de correção similar ao rodiziosdaqui)
|
### Deploy Application
|
||||||
2. **SSL**: Domínios ainda sem HTTPS configurado
|
```bash
|
||||||
3. **S3**: Rodiziosdaqui backend sem S3 configurado (uploads desabilitados)
|
# Via UUID
|
||||||
|
TOKEN="2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9"
|
||||||
|
curl -s -X GET -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/deploy?uuid={UUID}"
|
||||||
|
```
|
||||||
|
|
||||||
|
### View Logs
|
||||||
|
```bash
|
||||||
|
ssh redbull "docker logs {container_name}"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Script de Health Check Automático
|
||||||
|
|
||||||
|
Execute no terminal local:
|
||||||
|
```bash
|
||||||
|
#!/bin/bash
|
||||||
|
echo "=== Redbull Health Check ==="
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# Check containers
|
||||||
|
echo "📦 Containers:"
|
||||||
|
ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no redbull "docker ps --format '{{.Names}}:{{.Status}}'" 2>/dev/null | while read line; do
|
||||||
|
if echo "$line" | grep -q "healthy\|Up"; then
|
||||||
|
echo " ✅ $line"
|
||||||
|
else
|
||||||
|
echo " ❌ $line"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo "🌐 Aplicações Coolify:"
|
||||||
|
TOKEN="2|tjaxz6z6osQUz6whMvNMw23kcBqgToQAvMjSLos347164da9"
|
||||||
|
curl -s -H "Authorization: Bearer $TOKEN" "http://185.194.141.70:8000/api/v1/applications" 2>/dev/null | python -c "
|
||||||
|
import json,sys
|
||||||
|
try:
|
||||||
|
d = json.load(sys.stdin)
|
||||||
|
for a in d:
|
||||||
|
status = a.get('status','unknown')
|
||||||
|
icon = '✅' if 'running' in status else '❌'
|
||||||
|
print(f' {icon} {a[\"name\"]}: {status}')
|
||||||
|
except: print(' Erro ao buscar dados')
|
||||||
|
"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Issues Conhecidos
|
||||||
|
|
||||||
|
1. ~~gohorsejobs-seeder-dev~~ - ✅ CORRIGIDO
|
||||||
|
2. ~~gohorsejobs-frontend-dev~~ - ✅ CORRIGIDO (erro de tipagem TypeScript)
|
||||||
|
3. SSL: Domínios ainda sem HTTPS configurado
|
||||||
|
4. S3: Rodiziosdaqui backend sem S3 configurado (uploads desabilitados)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue