feat: initial sbsports deployment setup

Add Coolify/Woodpecker CI config, .gitignore, and deployment scripts.
This commit is contained in:
alexandrump
2026-04-22 01:01:42 +02:00
commit 78c5ed52ac
32 changed files with 6088 additions and 0 deletions

131
COOLIFY.md Normal file
View File

@@ -0,0 +1,131 @@
# 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 service UUID (reemplazar después de crear)
SBSPORTS_COOLIFY_UUID="obtén_de_coolify"
# Gitea registry (ya configurado)
git.thax.es/alexandrump/sbsports
# Credenciales (guardadas en memoria de Claude Code)
# Ver: /Users/alex/.claude/projects/*/memory/
```
## 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