Ctrl K
ComunidadGuías…

render.yaml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Render Blueprint for the hosted public demo (read-only replay).
#
# WHY RENDER, NOT FLY: the demo-site spec targets a free hosting tier, with
# Render named as the fallback. Fly.io discontinued its free allowances for
# new organizations (October 2024) — new accounts get a ~2-hour trial, then
# pay-as-you-go — so there is no Fly free tier to target. Render's free web
# service tier still exists (2026): 512 MB, 750 instance-hours/month, spins
# down after 15 min idle (~1 min cold start on the next visit), ephemeral
# filesystem. All acceptable for this demo: it is stateless by design and
# re-seeds the packaged fixtures on every boot.
#
# TLS: Render's edge terminates TLS and forwards plain HTTP to $PORT (Render
# sets it; 10000 by default), so docker/demo-entrypoint.sh starts uvicorn
# WITHOUT the --ssl-* flags the image's default CMD uses.
#
# autoDeploy is OFF: deploys go through .github/workflows/demo-deploy.yml
# (fixture leak gate first, then the Render deploy hook) — never straight
# from a push.
#
# Setup already done (owner): the Blueprint from this file is live as
# soc-ai-demo on Render, with its deploy-hook URL in the GitHub repo secret
# RENDER_DEPLOY_HOOK_URL. autoDeploy stays off by design — refreshes are
# triggered manually, either via .github/workflows/demo-deploy.yml
# (workflow_dispatch → the deploy hook) or the Render dashboard's Manual
# Deploy button.

services:
  - type: web
    name: soc-ai-demo
    runtime: docker
    plan: free
    dockerfilePath: ./Dockerfile
    dockerContext: .
    dockerCommand: /opt/soc-ai/docker/demo-entrypoint.sh
    healthCheckPath: /healthz
    autoDeploy: false
    envVars:
      # Same block as docker-compose.demo.yml — loopback mock URLs and inert
      # placeholders only; nothing sensitive exists in the demo environment.
      - key: SOC_AI_DEMO
        value: "true"
      - key: API_AUTH_REQUIRED
        value: "false"
      # The SPA fires ~10-15 API calls per page view, so 30/min throttled a real
      # visitor to ~2 navigations before 429s. 120 clears normal browsing while
      # still bounding scrapers (production default is 1200).
      - key: API_RATE_LIMIT_PER_MIN
        value: "120"
      - key: ES_HOSTS
        value: "http://127.0.0.1:9200"
      - key: SO_HOST
        value: "http://127.0.0.1:9200"
      - key: SO_USERNAME
        value: "demo"
      - key: SO_PASSWORD
        value: "demo-placeholder-unused"
      - key: LITELLM_BASE_URL
        value: "http://127.0.0.1:9200"