Agente · dev-devops

Agente · dev-devops

Propósito

Infraestructura, despliegue, monitorización del sistema y mantenimiento operativo de CreaRack-Pro.

Infraestructura actual

  • Hosting: Hetzner Cloud · instancias CCX (dedicated CPU) · datacenter EU
  • OS: Ubuntu 24.04 LTS
  • Proxy inverso / orquestación: Dokploy + Traefik (desde v1.0.0)
  • SSL: Let’s Encrypt (Certbot via Traefik)
  • CI/CD: GitHub Actions
  • Distribución Local Agent: GitHub Releases (binario ~23 MB, no en el repo git)

Servicios Docker

ServicioImagenNotas
Django/Daphnecustom (Dockerfile)Puerto 8000 interno
Huey workercustomTask queue (no Celery)
PostgreSQL 18postgres:18-alpineBD principal (max_connections=500, CONN_MAX_AGE=0)
Valkey 8.xvalkey/valkey:8Cache + broker (Redis-compatible)
VictoriaMetricsvictoriametrics/victoria-metrics:1.106.1Métricas time-series · puerto 8428

Archivos Compose

compose.yml                    # Servicios base (siempre)
compose.observability.yml      # VictoriaMetrics (opcional, producción)
# Arrancar servicios base
docker compose up -d

# Arrancar con observabilidad
docker compose -f compose.yml -f compose.observability.yml up -d

URLs de servicio

ServicioURL
Dashboardhttp://localhost:8000
Admin Djangohttp://localhost:8000/admin
API Docshttp://localhost:8000/api/docs
Health Checkhttp://localhost:8000/health
Metrics (Prometheus)http://localhost:8000/metrics
VictoriaMetrics UIhttp://localhost:8428
Local Agenthttp://localhost:5050

Local Agent — distribución y actualización

El ejecutable CreaRackAgent.exe (~23 MB) se distribuye via GitHub Releases, no está en el repo git.

Descarga siempre última versión:
https://github.com/CreaRackSL/CreaRack-Pro/releases/latest/download/CreaRackAgent.exe
  • Instalación automática en %APPDATA%\CreaRackAgent\
  • Puerto: 5050 (localhost only)
  • Auto-start con Windows (scheduled task)
  • Always-reinstall: silent auto-update sin version checks

CI/CD (GitHub Actions)

push a develop  → tests → build imagen → deploy staging
push a main     → tests → build imagen → deploy producción (manual approval)

Backups

  • pg_dump diario: Cron en host Hetzner, retención 30 días
  • Backup por organización: Huey task run_org_backups diario 3:30 AM — ZIP con 14 entity types + media
  • Retención: Starter 7 días, Pro 30 días (configurable backup_retention_days)
  • Métricas VictoriaMetrics: retención nativa 180 días
  • Descarga: GET /api/backup/latest (admin only)

Seguridad

  • Firewall: Hetzner Cloud Firewall — solo puertos 22, 80, 443 abiertos externamente
  • SSH: Solo clave pública
  • Secrets: Variables de entorno en .env (nunca en el repo)
  • RLS: Row-Level Security en 34 tablas PostgreSQL (multi-tenancy a nivel BD)
  • Credenciales: Cifradas con Fernet AES-128 en BD (StoredCredential model)
  • Local Agent tokens: Windows DPAPI
  • Headers: Server header oculto, CSP con nonces, HSTS

Usuarios PostgreSQL

UsuarioPermisosUso
crearack_userOwner (full)Aplicación Django
dani_readonlySELECT onlyDiagnóstico y supervisión

Acceso via SSH tunnel: ssh -L 5432:localhost:5432 root@crearack.com


Monitorización del sistema

  • Prometheus: métricas Django via django-prometheus en /metrics
  • VictoriaMetrics: time-series de métricas de red (SNMP, ping, HTTP)
  • Uptime: UptimeRobot (alertas básicas)
  • Health check: /health endpoint del propio Django

Comandos frecuentes (Windows PowerShell)

# Ver logs en tiempo real
docker compose logs -f web

# Reiniciar tras cambios en templates/JS/CSS
docker compose restart web

# Shell Django
docker compose exec web python manage.py shell

# Crear y aplicar migraciones
docker compose exec web python manage.py makemigrations
docker compose exec web python manage.py migrate

# Ejecutar tests
docker compose exec web python -m pytest tests/api/ -v

# Ver estado de servicios
docker compose ps

# Parar todo
docker compose down