Saltar al contenido principal

Entorno de Staging (dev.floutic.com)

El entorno de staging permite validar cambios antes de llegar a producción. Se gestiona con Coolify y tiene sus propios servicios de PostgreSQL y Redis aislados.

Arquitectura

Staging tiene sus propios contenedores de PostgreSQL y Redis, independientes de producción. El despliegue se gestiona con Coolify desde la branch dev.

┌──────────────────────────────────────────────────────────┐
│ Servidor VPS (178.105.42.28) │
│ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Coolify │ │
│ │ │ │
│ │ App: staging (branch dev) │ │
│ │ ┌──────────┐ ┌──────────┐ ┌─────────┐ ┌────────┐ │ │
│ │ │ postgres │ │ redis │ │backend │ │frontend│ │ │
│ │ │ :5432 │ │ :6379 │ │-dev │ │-dev │ │ │
│ │ │ floutic │ │ │ │ :8000 │ │ :3000 │ │ │
│ │ │ _dev │ │ │ │ │ │ │ │ │
│ │ └──────────┘ └──────────┘ └────┬────┘ └───┬────┘ │ │
│ │ Red: mwgcze9l... │ │ │ │
│ └─────────────────────────────────────┼──────────┼──────┘ │
│ │ │ │
│ ┌─────────────────────────────────────┼──────────┼──────┐ │
│ │ Traefik (coolify-proxy)│ │ │ │
│ │ dev.floutic.com ─── Basic Auth ──┼──────────┘ │ │
│ │ floutic.com │ │ │
│ └─────────────────────────────────────┼──────────────────┘ │
│ │ │
│ App: production (branch main) │ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┴──┐ ┌─────────┐ │
│ │ postgres │ │ redis │ │ backend │ │frontend │ │
│ │ floutic │ │ │ │ :8000 │ │ :3000 │ │
│ └──────────┘ └──────────┘ └─────────────┘ └─────────┘ │
│ Red: bo0fos7... │
└──────────────────────────────────────────────────────────┘

Recursos asignados (staging)

ServicioMemoria límiteMemoria reservada
postgresSin límite
redisSin límite
backend-dev1 GB256 MB
frontend-dev1 GB256 MB

Coolify

IDs de referencia

RecursoIDUUID
Staging (app)2mwgcze9lhlb5qc1syww3rfrv
Production (app)3bo0fos7syldixxvorl29in98
Project1fcfrm6wnesc47un28gyvobfd
Environment2

Acceso

  • Coolify UI: http://178.105.42.28
  • Staging URL: https://dev.floutic.com
  • Production URL: https://floutic.com

Credenciales

ServicioUsuarioContraseña
Staging DB (floutic_dev)flouticfloutiC_PassW0rd
Staging admin (app)admin@floutic.comAdmin123!
Basic Auth (staging web)flouticfloutic123
Coolify DBcoolifycoolify

Configuración

Archivo compose

El archivo docker-compose.coolify-staging.yml en la raíz del repo es el que Coolify usa para staging. Contiene:

  • postgres:15 — Base de datos propia con healthcheck
  • redis:7-alpine — Redis propio con healthcheck
  • backend-dev — Backend en modo desarrollo
  • frontend-dev — Frontend Astro en modo dev con patch de allowedHosts

:::info allowedHosts El compose incluye un command override que parchea astro.config.mjs al arrancar para incluir dev.floutic.com en los hosts permitidos de Vite. Esto es necesario porque el repo principal solo incluye localhost y floutic.haorp.es. :::

Variables de entorno

Las variables se gestionan desde el panel de Coolify (Environment Variables). Las necesarias:

VariableValorNotas
DATABASE_URLpostgresql+asyncpg://floutic:floutiC_PassW0rd@postgres:5432/floutic_dev
REDIS_URLredis://redis:6379/0
ENVIRONMENTstaging
JWT_SECRET(generado)Distinto al de producción
FRONTEND_URLhttps://dev.floutic.com
CORS_ORIGINShttps://dev.floutic.com
STRIPE_SECRET_KEYsk_test_*SIEMPRE test en staging
GHL_API_KEYstaging-placeholderRequerido por Pydantic
GHL_LOCATION_IDstaging-placeholderRequerido por Pydantic
GHL_WEBHOOK_SECRETstaging-placeholderRequerido por Pydantic
N8N_API_KEYstaging-placeholderRequerido por Pydantic

:::warning Placeholders GHL y N8N tienen valores placeholder porque staging no debe interactuar con servicios reales. Si se necesitan, se configuran desde Coolify UI. :::

Servicios no incluidos en staging

Los siguientes servicios no se ejecutan en staging:

ServicioMotivo
OpenObserveNo enviar datos de dev a producción
GoHighLevelNo mezclar datos de test con CRM real
n8nNo disparar workflows reales desde staging

Seguridad

Basic Auth

Staging está protegido con Basic Auth via Traefik middleware:

  • URL: https://dev.floutic.com
  • Usuario: floutic
  • Contraseña: floutic123

La configuración se encuentra en coolify/traefik/ y se mantiene con un cron que asegura la conexión de red.

robots.txt

El archivo frontend/public/robots.txt bloquea indexación:

User-agent: *
Disallow: /

Despliegue automático

Webhook de GitHub

Cada push a la branch dev dispara un deploy automático en Coolify via webhook:

  • Payload URL: http://178.105.42.28/api/v1/webhooks/deploy/mwgcze9lhlb5qc1syww3rfrv
  • Content type: application/json
  • Events: Push to refs/heads/dev

Configurado en: GitHub → danielgap/Floutic → Settings → Webhooks

Flujo Git

main        ← producción (floutic.com)

dev ← staging (dev.floutic.com) — auto-deploy

feature/* ← ramas de desarrollo, PR contra dev
RamaEntornoDominioAuto-deploy
mainProducciónfloutic.comNo
devStagingdev.floutic.com (webhook)
feature/*LocallocalhostNo

Restauración

Si se pierde la configuración del servidor, consultar coolify/RESTORE.md en el repo para instrucciones completas de restauración.

Archivos de configuración en el repo:

coolify/
├── RESTORE.md # Instrucciones de restauración
├── crontab # Cron para mantener Basic Auth
├── scripts/
│ └── ensure-staging-auth.sh # Script auto-healing
└── traefik/
├── staging-auth.yaml # Middleware Basic Auth
└── staging-auth-router.yaml # Router + Service

Más Información