Skip to content

Guia de despliegue

1. Objetivo

Este documento resume el estado real del despliegue del proyecto y separa con claridad tres planos:

  • lo que esta versionado en el repositorio;
  • lo que hemos validado localmente con Docker;
  • lo que forma parte de la publicacion en VPS con NGINX.

2. Base de despliegue presente en el repositorio

El proyecto incluye una base tecnica completa para despliegue:

  • Django como backend principal
  • Gunicorn como servidor WSGI
  • WhiteNoise para estaticos
  • Procfile
  • Dockerfile
  • docker-compose.yml
  • deploy/entrypoint.sh
  • deploy/nginx/seo-growth-engine.conf
  • zensical.toml y docs/ para la presentacion integrada en /docs/

3. Variables de entorno clave

  • DJANGO_DEBUG
  • DJANGO_SECRET_KEY
  • DJANGO_ADMIN_URL
  • DJANGO_ALLOWED_HOSTS
  • DJANGO_CSRF_TRUSTED_ORIGINS
  • DATABASE_URL
  • REDIS_URL
  • DJANGO_TASK_QUEUE_BACKEND
  • DJANGO_USE_X_FORWARDED_HOST
  • DJANGO_USE_SECURE_PROXY_SSL_HEADER
  • OPENAI_API_KEY
  • DJANGO_DEFAULT_SERVICE_ACCOUNT_JSON
  • DJANGO_DEFAULT_GSC_PROPERTY
  • DJANGO_DEFAULT_GA4_PROPERTY_ID

Archivo base:

4. Docker local

Estado validado localmente:

  • revision documentada el 2026-05-18
  • arranque correcto con docker-compose up --build -d
  • web, worker, db y redis en estado Up
  • respuesta 200 en http://127.0.0.1:8000/

Detalle de la validacion:

5. NGINX y publicacion en VPS

El repositorio incluye la configuracion de NGINX en:

Y la arquitectura que presentamos contempla NGINX en la VPS como reverse proxy delante de la aplicacion.

El papel de NGINX en esa arquitectura es:

  • recibir el trafico;
  • servir estaticos;
  • servir la documentacion generada en /docs/;
  • reenviar peticiones a la aplicacion;
  • propagar cabeceras de proxy necesarias.

6. Estado actual del despliegue

El estado actual del despliegue queda resumido en tres puntos:

  • Docker local validado
  • configuracion de despliegue versionada en el repo
  • arquitectura de publicacion en VPS con NGINX como capa de entrada

La parte que sigue siendo mejora futura no es "tener despliegue", sino reforzar:

  • automatizacion;
  • checklist de hardening final;
  • dominio, HTTPS y observabilidad cerrados segun el entorno final.

7. Orden recomendado para una puesta en produccion

  1. Configurar .env de produccion con claves reales.
  2. Copiar el JSON privado de Google a secrets/gsc-service-account.json en la VPS.
  3. Preparar base de datos persistente y REDIS_URL.
  4. Generar la documentacion Zensical con ./scripts/build_zensical_site.sh.
  5. Ejecutar migraciones y collectstatic.
  6. Servir la aplicacion con Gunicorn.
  7. Colocar NGINX delante, ajustar server_name y validar la configuracion real del proxy.
  8. Comprobar login, runs, worker, estaticos, /docs/ y logs.

Para conectar el sitio inicial con GSC y GA4:

docker compose exec web python manage.py bootstrap_dashboard \
  --username admin \
  --email admin@example.com \
  --service-account-json /app/secrets/gsc-service-account.json \
  --gsc-property sc-domain:going.international \
  --ga4-property-id 417418090

8. Documentacion relacionada