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
| Servicio | Imagen | Notas |
|---|---|---|
| Django/Daphne | custom (Dockerfile) | Puerto 8000 interno |
| Huey worker | custom | Task queue (no Celery) |
| PostgreSQL 18 | postgres:18-alpine | BD principal (max_connections=500, CONN_MAX_AGE=0) |
| Valkey 8.x | valkey/valkey:8 | Cache + broker (Redis-compatible) |
| VictoriaMetrics | victoriametrics/victoria-metrics:1.106.1 | Mé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
| Servicio | URL |
|---|---|
| Dashboard | http://localhost:8000 |
| Admin Django | http://localhost:8000/admin |
| API Docs | http://localhost:8000/api/docs |
| Health Check | http://localhost:8000/health |
| Metrics (Prometheus) | http://localhost:8000/metrics |
| VictoriaMetrics UI | http://localhost:8428 |
| Local Agent | http://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_backupsdiario 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
| Usuario | Permisos | Uso |
|---|---|---|
crearack_user | Owner (full) | Aplicación Django |
dani_readonly | SELECT only | Diagnó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-prometheusen/metrics - VictoriaMetrics: time-series de métricas de red (SNMP, ping, HTTP)
- Uptime: UptimeRobot (alertas básicas)
- Health check:
/healthendpoint 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