From 543bf732489767a2f1d67b1b4663c8b49945af27 Mon Sep 17 00:00:00 2001 From: Tiago Yamamoto Date: Mon, 16 Feb 2026 16:18:09 -0600 Subject: [PATCH] =?UTF-8?q?docs:=20adiciona=20documenta=C3=A7=C3=A3o=20da?= =?UTF-8?q?=20API=20do=20Coolify=20e=20scripts=20de=20health=20check?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- vps/redbull/coolify-api.md | 101 ++++++++++++++++++++++++++++++ vps/redbull/health-check.sh | 63 +++++++++++++++++++ vps/redbull/services_inventory.md | 87 +++++++++++++++++++------ 3 files changed, 232 insertions(+), 19 deletions(-) create mode 100644 vps/redbull/coolify-api.md create mode 100644 vps/redbull/health-check.sh diff --git a/vps/redbull/coolify-api.md b/vps/redbull/coolify-api.md new file mode 100644 index 0000000..d7a39b1 --- /dev/null +++ b/vps/redbull/coolify-api.md @@ -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 diff --git a/vps/redbull/health-check.sh b/vps/redbull/health-check.sh new file mode 100644 index 0000000..eeb59b3 --- /dev/null +++ b/vps/redbull/health-check.sh @@ -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 "==============================================" diff --git a/vps/redbull/services_inventory.md b/vps/redbull/services_inventory.md index ffd2444..e263d4d 100644 --- a/vps/redbull/services_inventory.md +++ b/vps/redbull/services_inventory.md @@ -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-frontend-dev** | `ao8g40scws0w4cgo8coc8o40` | 3000 | 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) @@ -55,12 +55,12 @@ Este documento apresenta o inventário completo de serviços hospedados no servi | Container | Imagem | Porta | Notas | |-----------|--------|:-----:|-------| -| coolify | ghcr.io/coollabsio/coolify:latest | 8000 | Painel Coolify | -| coolify-db | postgres:16-alpine | 5432 | Banco Coolify | +| coolify | ghcr.io/coollabsio/coolify:4.0.0-beta.463 | 8000 | Painel Coolify | +| coolify-db | postgres:15-alpine | 5432 | Banco Coolify | | coolify-redis | redis:7-alpine | 6379 | Cache Coolify | | coolify-realtime | soketi | 6001 | WebSocket | | 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 @@ -70,30 +70,79 @@ Este documento apresenta o inventário completo de serviços hospedados no servi | 80 | Traefik (HTTP) | | 443 | Traefik (HTTPS) | | 8000 | Coolify Dashboard | +| 22222 | Forgejo SSH | | 3000 | Frontends (Next.js) | | 3001 | Backoffice | | 8080 | Backends (Go) | | 8081 | Seeders | | 8521 | GoHorse Backend | -## Variáveis de Ambiente Comuns +## Comandos Rápidos -### GoHorse Jobs Backend -``` -DATABASE_URL=postgres://gohorsejobs:****@bgws48os8wgwk08o48wg8k80:5432/gohorsejobs -JWT_SECRET=gohorsejobs-dev-jwt-secret-2024-very-secure-key-32ch -PORT=8521 +### SSH Access +```bash +ssh redbull ``` -### Rodizios Daqui Backend -``` -DATABASE_URL=postgres://admin:****@db-60604.dc-us-1.absamcloud.com:11985/rodiziosdaqui?sslmode=require -JWT_SECRET=rodiziosdaqui-dev-jwt-secret-2024-very-secure -PORT=8080 +### Check All Containers +```bash +ssh redbull "docker ps -a" ``` -## 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) -2. **SSL**: Domínios ainda sem HTTPS configurado -3. **S3**: Rodiziosdaqui backend sem S3 configurado (uploads desabilitados) +### Deploy Application +```bash +# 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)