Spaces:
Runtime error
Runtime error
| # =================================================================================== | |
| # AgroVisión — variables de entorno (PLANTILLA) | |
| # =================================================================================== | |
| # Copia este archivo a `.env` para desarrollo local: cp .env.example .env | |
| # | |
| # REGLAS DE SEGURIDAD: | |
| # - `.env.example` (versionado) lleva SOLO placeholders vacíos. NUNCA secretos reales. | |
| # - `.env` (en .gitignore) lleva tus valores reales para local. No se versiona. | |
| # - En PRODUCCIÓN, define los secretos en el panel de cada plataforma | |
| # (Render, ShinyApps.io, Supabase), no en archivos. | |
| # =================================================================================== | |
| # ----------------------------------------------------------------------------------- | |
| # 1) General | |
| # ----------------------------------------------------------------------------------- | |
| APP_ENV=development # development | production | |
| LOG_LEVEL=info | |
| # ----------------------------------------------------------------------------------- | |
| # 2) UI (Shiny) <-> Backend (FastAPI) | |
| # ----------------------------------------------------------------------------------- | |
| SHINY_HOST=127.0.0.1 | |
| SHINY_PORT=8001 | |
| API_HOST=127.0.0.1 | |
| API_PORT=8000 | |
| API_BASE_URL=http://127.0.0.1:8000 # En prod: URL pública del backend en Render | |
| ALLOWED_ORIGINS=http://127.0.0.1:8001,http://localhost:8001,https://<tu-app>.shinyapps.io | |
| CONFIDENCE_THRESHOLD=0.25 | |
| MAX_UPLOAD_MB=50 | |
| # ----------------------------------------------------------------------------------- | |
| # 3) Despliegue -> Hugging Face Spaces (SDK Docker) [VÍA ACTIVA — ver docs/ejecucion.md §5] | |
| # HF construye el Dockerfile de la raíz (gateway FastAPI: UI / + API /api). | |
| # Token (write) en: https://huggingface.co/settings/tokens | |
| # Crea el Space (una vez, web): https://huggingface.co/new-space -> SDK "Docker". | |
| # Deploy: .\scripts\deploy_hf.ps1 | |
| # ----------------------------------------------------------------------------------- | |
| HF_SPACE_ID= # <usuario>/<space>, p. ej. alexprieto/agrovision | |
| # (HF_TOKEN se define en la sección 5; sirve tanto para el Space como para el modelo.) | |
| # ----------------------------------------------------------------------------------- | |
| # 3b) Alternativas de despliegue (opcionales): | |
| # - Render (Docker, free): backend/Dockerfile + render.yaml. API en dashboard.render.com/u/settings | |
| # - Posit Connect (de pago): rsconnect deploy fastapi (scripts/deploy_prod.ps1). | |
| # OJO: shinyapps.io NO hospeda FastAPI (solo Shiny); estas vars solo aplican a Posit Connect. | |
| # ----------------------------------------------------------------------------------- | |
| RENDER_API_KEY= | |
| RENDER_SERVICE_ID= | |
| SHINYAPPS_ACCOUNT= | |
| SHINYAPPS_TOKEN= | |
| SHINYAPPS_SECRET= | |
| # ----------------------------------------------------------------------------------- | |
| # 5) Modelo de conteo + Hugging Face Hub | |
| # Token HF en: https://huggingface.co/settings/tokens (write si vas a publicar) | |
| # ----------------------------------------------------------------------------------- | |
| COUNTING_ENABLED=false # true para activar el conteo (mock o real) | |
| MODEL_BACKEND=mock # mock (datos falsos para probar) | onnx (modelo real) | |
| MODEL_PATH=/app/models/agrovision-plantcount-v2.0.0.onnx | |
| MODEL_VERSION=2.0.0 | |
| MODEL_ARCHITECTURE=yolo26n # yolo26n | rfdetr_nano (define el adaptador de decode) | |
| HF_MODEL_REPO=<org>/agrovision-plantcount | |
| HF_TOKEN= | |
| # ----------------------------------------------------------------------------------- | |
| # 6) Telemetría de UI (Fase 9) | |
| # Los eventos siempre se loguean en stdout y se guardan en un buffer en memoria | |
| # (GET /api/events/recent). EVENTS_PERSIST=true además los persiste en la tabla | |
| # `events` de Supabase (best-effort; requiere DATABASE_URL). Nunca contiene secretos. | |
| # ----------------------------------------------------------------------------------- | |
| EVENTS_PERSIST=false # true para volcar la telemetría a la tabla events | |
| # ----------------------------------------------------------------------------------- | |
| # 7) Seguridad / hardening | |
| # Rate limiting en memoria sobre /api (anti-abuso/DDoS). 0 = desactivado. | |
| # ----------------------------------------------------------------------------------- | |
| RATE_LIMIT_PER_MIN=120 # peticiones/min por IP a /api (0 desactiva) | |
| # ----------------------------------------------------------------------------------- | |
| # 6) Supabase (BD PostGIS + Storage + Queues) — PLATAFORMA COMPLETA | |
| # Project Settings -> API / Database. SERVICE_ROLE es SECRETO (solo backend, nunca UI). | |
| # ----------------------------------------------------------------------------------- | |
| SUPABASE_URL= # https://<proyecto>.supabase.co | |
| SUPABASE_ANON_KEY= | |
| SUPABASE_SERVICE_ROLE_KEY= | |
| SUPABASE_STORAGE_BUCKET=drone-images | |
| DATABASE_URL= # postgresql+asyncpg://postgres:<pwd>@<host>:5432/postgres | |
| # ----------------------------------------------------------------------------------- | |
| # 7) Groq — modelo BYOK ("Trae tu propia llave") | |
| # En PRODUCCIÓN estas llaves NO se guardan en el servidor: el usuario las inyecta | |
| # por sesión (cabeceras X-User-*) y se descartan. Las DEV_* de abajo son SOLO para | |
| # pruebas locales sin el flujo BYOK. | |
| # - Groq (agente RAG / Llama 3): https://console.groq.com/keys | |
| # ----------------------------------------------------------------------------------- | |
| DEV_GROQ_API_KEY= | |
| # ----------------------------------------------------------------------------------- | |
| # 8) APIs satelitales — modelo BYOK ("Trae tu propia llave") | |
| # En PRODUCCIÓN estas llaves NO se guardan en el servidor: el usuario las inyecta | |
| # por sesión (cabeceras X-User-*) y se descartan. Las DEV_* de abajo son SOLO para | |
| # pruebas locales sin el flujo BYOK. | |
| # - Copernicus CDSE (Sentinel-2): https://dataspace.copernicus.eu/ | |
| # - Open-Meteo: sin llave. NASA POWER: acceso público por coordenadas. | |
| # ----------------------------------------------------------------------------------- | |
| DEV_COPERNICUS_CLIENT_ID= | |
| DEV_COPERNICUS_CLIENT_SECRET= | |