# sbsports — Coolify & Woodpecker Setup

Despliegue automático de sbsports en Coolify con CI/CD en Woodpecker.

## URLs

| Servicio | URL |
|----------|-----|
| App Web | `https://sbsports.thax.es` |
| Registry | `git.thax.es/alexandrump/sbsports` |

## Setup en Coolify

### Paso 1: Crear el servicio

1. Accede a https://panel.thax.es
2. Crea un nuevo **Proyecto** (o usa uno existente)
3. Dentro del proyecto, crea un nuevo servicio:
   - **Tipo**: Docker Compose
   - **Nombre**: sbsports
   - **Contenido**: copia el contenido de `coolify/docker-compose.yml`
4. Click en **Deploy**

### Paso 2: Obtener el UUID

Una vez creado, copia el UUID del servicio. Lo encontrarás en:
- URL: `https://panel.thax.es/project/{projectId}/service/{UUID}`
- O en los detalles del servicio

### Paso 3: Configurar variables de entorno

En Coolify, ve a **Environment** del servicio y verifica:
- `NODE_ENV=production`
- `PORT=3000`
- `DATA_DIR=/app/data`

## Setup en Woodpecker CI

### Paso 1: Activar el repositorio

1. Accede a https://ci.thax.es
2. El repositorio sbsports debería aparecer en la lista
3. Haz click en **Activate** (si no está ya activado)
4. Guarda el **Repository ID** (aparece en la URL: `/repos/{id}`)

### Paso 2: Configurar secretos

En Woodpecker, ve a **Secrets** del repositorio sbsports y agrega:

| Secreto | Valor | Origen |
|---------|-------|--------|
| `gitea_user` | Tu usuario de Gitea | `git.thax.es` |
| `gitea_token` | Token de Gitea | https://git.thax.es/user/settings/applications |
| `coolify_api_token` | Token de Coolify API | `panel.thax.es` (del README de invest) |
| `SBSPORTS_COOLIFY_UUID` | UUID del servicio | De Coolify (Paso 2) |

### Paso 3: Variables del pipeline

Añade la variable `SBSPORTS_COOLIFY_UUID` a los secretos de Woodpecker con el UUID obtenido en Coolify.

## Flujo de despliegue

```
git push → Gitea
  ↓
Woodpecker detects push
  ↓
1. Build imagen: Dockerfile → git.thax.es/alexandrump/sbsports:latest
  ↓
2. PATCH compose en Coolify con la nueva imagen
  ↓
3. Trigger deploy en Coolify (redeploy automático)
  ↓
Contenedor reinicia con la nueva imagen
```

## Despliegue manual (sin Woodpecker)

Si necesitas hacer deploy manualmente:

```bash
# 1. Build y push a registry
docker build -t git.thax.es/alexandrump/sbsports:latest .
docker login git.thax.es
docker push git.thax.es/alexandrump/sbsports:latest

# 2. Redeploy en Coolify
COOLIFY_TOKEN="8|qF9w8JziRgUjUsbTMTUIQUP6C2PjD8bpbQ34Gf4e6254af98"
COOLIFY_UUID="<obtén de https://panel.thax.es>"

curl -sSLk -X GET "https://panel.thax.es/api/v1/deploy?uuid=$COOLIFY_UUID&force=false" \
  -H "Authorization: Bearer $COOLIFY_TOKEN"
```

## Troubleshooting

**Imagen no actualiza en Coolify**
- Verifica que `pull_policy: always` está en el compose
- Força el redeploy con `force=true` en la URL de deploy

**Woodpecker falla al buildar**
- Verifica credenciales de Gitea en secretos
- Comprueba que el Dockerfile existe en la raíz del repo

**Dominio no resuelve**
- Verifica que Traefik está corriendo en Coolify
- Comprueba las labels de la configuración en `coolify/docker-compose.yml`

**Contenedor no arranca**
- Revisa logs en Coolify: **Monitoring** → **Logs**
- Verifica que el puerto 3000 es accesible

## IDs clave

```bash
# Coolify application UUID
SBSPORTS_COOLIFY_UUID="ng00g8sskks0ok0okk0cg8kw"

# Coolify project UUID
SBSPORTS_PROJECT_UUID="cwo848sgwgk0gk8kgkwkoskg"

# Gitea repo ID
GITEA_REPO_ID=39

# Woodpecker repo ID
WP_REPO_ID=5
```

## Notas

- La imagen se buildeará en el registry de Gitea: `git.thax.es/alexandrump/sbsports:latest`
- El volumen `sbsports-data` persiste entre deployments
- Traefik maneja el HTTPS automáticamente para `sbsports.thax.es`
- Los logs se pueden ver en Coolify → Monitoring → Logs
