Merge remote-tracking branch 'origin/master'
Deploy to Coolify / deploy (push) Has been cancelled

union ramas discrepantes
This commit is contained in:
2025-11-14 11:57:48 +01:00
10 changed files with 327 additions and 19 deletions
+46
View File
@@ -0,0 +1,46 @@
{
"name": "suite-logs",
"description": "Stack de monitoreo con Grafana, Prometheus, Loki, Tempo y Alloy",
"type": "docker-compose",
"dockerComposeFile": "docker-compose.yml",
"buildCommand": "docker-compose pull",
"deployCommand": "docker-compose up -d",
"healthCheckPath": "/",
"healthCheckPort": 3500,
"healthCheckProtocol": "http",
"environment": {
"COMPOSE_PROJECT_NAME": "suite-logs"
},
"services": [
{
"name": "grafana",
"port": 3500,
"protocol": "http",
"path": "/"
},
{
"name": "prometheus",
"port": 9090,
"protocol": "http",
"path": "/"
},
{
"name": "loki",
"port": 3100,
"protocol": "http",
"path": "/"
},
{
"name": "tempo",
"port": 3200,
"protocol": "http",
"path": "/"
},
{
"name": "alloy",
"port": 12345,
"protocol": "http",
"path": "/"
}
]
}
+33
View File
@@ -0,0 +1,33 @@
# Configuración de autenticación para Grafana
# IMPORTANTE: Cambia estos valores por credenciales seguras
GRAFANA_ADMIN_USER=admin
GRAFANA_ADMIN_PASSWORD=cambiar_por_contraseña_segura
# Configuración de red
# Puertos donde se expondrán los servicios
GRAFANA_PORT=3500
PROMETHEUS_PORT=9090
LOKI_PORT=3100
TEMPO_PORT=3200
ALLOY_PORT=12345
ALLOY_UI_PORT=12345
# Configuración de volúmenes
# Rutas donde se almacenarán los datos persistentes
PROMETHEUS_DATA_PATH=./data/prometheus
LOKI_DATA_PATH=./data/loki
TEMPO_DATA_PATH=./data/tempo
ALLOY_DATA_PATH=./data/alloy
GRAFANA_DATA_PATH=./data/grafana
# Configuración de Alloy
ALLOY_HOSTNAME=alloy
# Configuración del proyecto
COMPOSE_PROJECT_NAME=suite-logs
# INSTRUCCIONES:
# 1. Copia este archivo a .env: cp .env.example .env
# 2. Edita .env y cambia GRAFANA_ADMIN_PASSWORD por una contraseña segura
# 3. Opcionalmente modifica los puertos si hay conflictos
# 4. Nunca subas el archivo .env al repositorio (ya está en .gitignore)
+35
View File
@@ -0,0 +1,35 @@
name: Deploy to Coolify
on:
push:
branches:
- master
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Deploy to Coolify
run: |
curl -X POST \
-H "Authorization: Bearer ${{ secrets.COOLIFY_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{
"deploymentUuid": "${{ secrets.COOLIFY_DEPLOYMENT_UUID }}",
"gitCommitSha": "${{ github.sha }}",
"gitBranch": "${{ github.ref_name }}"
}' \
${{ secrets.COOLIFY_WEBHOOK_URL }}
- name: Notify deployment
if: always()
run: |
if [ "${{ job.status }}" == "success" ]; then
echo "✅ Deployment successful"
else
echo "❌ Deployment failed"
fi
+7 -1
View File
@@ -9,4 +9,10 @@ wheels/
# Virtual environments
.venv
data
# Data directories
data
# Environment variables (contienen credenciales)
.env
.env.local
.env.production
+110
View File
@@ -0,0 +1,110 @@
# Configuración de Despliegue Automático
Este documento explica cómo configurar el despliegue automático desde Gitea a Coolify.
## Pasos de Configuración
### 1. En Gitea
1. Ve a tu repositorio en Gitea
2. Habilita Gitea Actions si no está habilitado
3. Configura los siguientes secrets en Settings → Secrets:
- `COOLIFY_TOKEN`: Token de API de Coolify
- `COOLIFY_WEBHOOK_URL`: URL del webhook de Coolify
- `COOLIFY_DEPLOYMENT_UUID`: UUID del deployment en Coolify
### 2. En Coolify
1. **Crear nuevo proyecto:**
- Nombre: `suite-logs`
- Tipo: Docker Compose
- Repositorio: URL de tu repositorio en Gitea
2. **Configurar Source:**
- Branch: `master` (o `main`)
- Auto Deploy: Habilitado
- Dockerfile/Compose path: `docker-compose.yml`
3. **Variables de entorno:**
```env
COMPOSE_PROJECT_NAME=suite-logs
```
4. **Configurar dominios/puertos:**
- Grafana: puerto 3500
- Prometheus: puerto 9090
- Loki: puerto 3100
- Tempo: puerto 3200
- Alloy: puerto 12345
5. **Obtener webhook URL:**
- Ve a la configuración del proyecto
- Copia la URL del webhook
- Úsala como `COOLIFY_WEBHOOK_URL` en Gitea
### 3. Configuración de Red
Asegúrate de que Coolify tenga acceso a:
- Puerto 3500 (Grafana)
- Puerto 9090 (Prometheus)
- Puerto 3100 (Loki)
- Puerto 3200 (Tempo)
- Puerto 12345 (Alloy)
### 4. Monitoreo de Despliegues
El pipeline de Gitea Actions:
- Se ejecuta automáticamente en push a master/main
- Envía webhook a Coolify para iniciar despliegue
- Reporta estado del despliegue
## Troubleshooting
### Pipeline falla
1. Verifica que los secrets estén configurados correctamente
2. Revisa logs en Gitea Actions
3. Verifica conectividad entre Gitea y Coolify
### Despliegue falla en Coolify
1. Revisa logs en Coolify dashboard
2. Verifica que docker-compose.yml sea válido
3. Asegúrate de que los volúmenes tengan permisos correctos
### Servicios no se conectan
1. Verifica configuración de red en docker-compose.yml
2. Revisa logs de cada servicio
3. Verifica que los archivos de configuración existan
## Comandos Útiles
```bash
# Verificar estado local
docker-compose ps
# Ver logs de todos los servicios
docker-compose logs -f
# Reiniciar servicios específicos
docker-compose restart grafana
# Limpiar y reiniciar todo
docker-compose down && docker-compose up -d
```
## URLs de Acceso Post-Despliegue
Una vez desplegado en Coolify:
- **Grafana**: https://tu-dominio.com/grafana (o puerto configurado)
- **Prometheus**: https://tu-dominio.com/prometheus
- **Loki**: https://tu-dominio.com/loki
- **Tempo**: https://tu-dominio.com/tempo
- **Alloy**: https://tu-dominio.com/alloy
## Secrets Necesarios en Gitea
```yaml
# En Settings → Secrets de tu repositorio
COOLIFY_TOKEN: "tu_token_de_coolify_api"
COOLIFY_WEBHOOK_URL: "https://coolify.tudominio.com/webhooks/deploy/uuid"
COOLIFY_DEPLOYMENT_UUID: "uuid-de-tu-deployment"
```
+2 -2
View File
@@ -28,7 +28,7 @@ Todos en la carpeta **"Observability Stack"** en Grafana:
## Acceso
- URL: http://localhost:3500
- Usuario: `admin`
- Contraseña: `admin123`
- Usuario: Ver `GRAFANA_ADMIN_USER` en `.env`
- Contraseña: Ver `GRAFANA_ADMIN_PASSWORD` en `.env`
Los dashboards se actualizan automáticamente cada 10 segundos si modificas los archivos JSON.
+16 -4
View File
@@ -8,9 +8,21 @@ Esta configuracin incluye un stack completo de monitoreo con:
## Estructura de Archivos
## Uso
## Configuración Inicial
### Iniciar los servicios
### 1. Configurar variables de entorno
```bash
# Copiar archivo de ejemplo
cp .env.example .env
# Editar archivo .env y cambiar la contraseña de Grafana
nano .env
```
**IMPORTANTE**: Cambia `GRAFANA_ADMIN_PASSWORD` por una contraseña segura.
### 2. Iniciar los servicios
```bash
docker-compose up -d
@@ -40,8 +52,8 @@ docker-compose down
## Acceso a los Servicios
- **Grafana**: http://localhost:3500
- Usuario: `admin`
- Contrasea: `admin123`
- Usuario: Ver `GRAFANA_ADMIN_USER` en `.env`
- Contrasea: Ver `GRAFANA_ADMIN_PASSWORD` en `.env`
- **Prometheus**: http://localhost:9090
+4 -4
View File
@@ -16,10 +16,10 @@ type = sqlite3
path = /var/lib/grafana/grafana.db
[security]
# Usuario administrador por defecto
admin_user = admin
# Contraseña administrador por defecto
admin_password = admin123
# Usuario administrador por defecto (se sobrescribe con variables de entorno)
# admin_user = admin
# Contraseña administrador por defecto (se sobrescribe con variables de entorno)
# admin_password = admin123
# Clave secreta para cookies
secret_key = your_secret_key_here
Executable
+66
View File
@@ -0,0 +1,66 @@
#!/bin/bash
# Script de despliegue para Coolify
# Este script se ejecuta cuando Coolify despliega la aplicación
set -e
echo "🚀 Iniciando despliegue de Suite Logs..."
# Verificar que Docker Compose esté disponible
if ! command -v docker-compose &> /dev/null; then
echo "❌ Docker Compose no está instalado"
exit 1
fi
# Verificar que el archivo docker-compose.yml existe
if [ ! -f "docker-compose.yml" ]; then
echo "❌ No se encuentra docker-compose.yml"
exit 1
fi
# Detener servicios existentes
echo "⏹️ Deteniendo servicios existentes..."
docker-compose down --remove-orphans || true
# Limpiar imágenes antiguas
echo "🧹 Limpiando imágenes antiguas..."
docker image prune -f || true
# Descargar nuevas imágenes
echo "📥 Descargando nuevas imágenes..."
docker-compose pull
# Crear directorios necesarios si no existen
echo "📁 Verificando directorios..."
mkdir -p config/{prometheus,loki,tempo,alloy,grafana/provisioning}
# Iniciar servicios
echo "▶️ Iniciando servicios..."
docker-compose up -d
# Verificar que los servicios estén corriendo
echo "🔍 Verificando servicios..."
sleep 10
# Health checks
services=("prometheus:9090" "loki:3100" "tempo:3200" "alloy:12345" "grafana:3500")
for service in "${services[@]}"; do
name=${service%%:*}
port=${service##*:}
if docker-compose ps | grep -q "$name.*Up"; then
echo "$name está corriendo"
else
echo "$name no está corriendo"
docker-compose logs "$name"
exit 1
fi
done
echo "🎉 Despliegue completado exitosamente!"
echo "📊 Grafana: http://localhost:3500 (credenciales en .env)"
echo "📈 Prometheus: http://localhost:9090"
echo "📝 Loki: http://localhost:3100"
echo "🔍 Tempo: http://localhost:3200"
echo "🔧 Alloy: http://localhost:12345"
+8 -8
View File
@@ -4,7 +4,7 @@ services:
image: prom/prometheus:latest
container_name: prometheus
ports:
- "9090:9090"
- "${PROMETHEUS_PORT:-9090}:9090"
volumes:
- ./config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- prometheus_data:/prometheus
@@ -24,7 +24,7 @@ services:
image: grafana/loki:latest
container_name: loki
ports:
- "3100:3100"
- "${LOKI_PORT:-3100}:3100"
volumes:
- ./config/loki/loki.yaml:/etc/loki/local-config.yaml
- loki_data:/loki
@@ -38,7 +38,7 @@ services:
image: grafana/tempo:latest
container_name: tempo
ports:
- "3200:3200" # Solo puerto de consulta, sin endpoints de recepción
- "${TEMPO_PORT:-3200}:3200" # Solo puerto de consulta, sin endpoints de recepción
volumes:
- ./config/tempo/tempo.yaml:/etc/tempo/tempo.yaml
- tempo_data:/var/tempo
@@ -53,7 +53,7 @@ services:
image: grafana/alloy:latest
container_name: alloy
ports:
- "12345:12345" # Puerto para la UI de Alloy
- "${ALLOY_UI_PORT:-12345}:12345" # Puerto para la UI de Alloy
# Puertos para métricas
- "9999:9999" # HTTP receiver para métricas externas
# Puertos para logs
@@ -80,7 +80,7 @@ services:
- --server.http.listen-addr=0.0.0.0:12345
- /etc/alloy/config.river
environment:
- ALLOY_HOSTNAME=alloy
- ALLOY_HOSTNAME=${ALLOY_HOSTNAME:-alloy}
networks:
- monitoring
restart: always
@@ -94,10 +94,10 @@ services:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3500:3000"
- "${GRAFANA_PORT:-3500}:3000"
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=admin123
- GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER:-admin}
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-admin123}
- GF_PATHS_DATA=/var/lib/grafana
- GF_PATHS_LOGS=/var/log/grafana
- GF_PATHS_PLUGINS=/var/lib/grafana/plugins