feat: initial sbsports deployment setup
Add Coolify/Woodpecker CI config, .gitignore, and deployment scripts.
This commit is contained in:
131
COOLIFY.md
Normal file
131
COOLIFY.md
Normal 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
|
||||
Reference in New Issue
Block a user