{
  "id": "osc-stack-cdn-acceleration",
  "job": "Put a CDN in front of one endpoint on Open Source Cloud (a public My Page, a MinIO storage instance or a My App) so its public content is cached and served from a European edge network over HTTPS.",
  "aliases": [
    "cdn for minio",
    "minio cdn",
    "cdn for static site",
    "cdn in front of my app",
    "european cdn",
    "cdn pricing per gb"
  ],
  "status": "beta",
  "sla": "none while in beta",
  "planGate": "PROFESSIONAL and higher (not available on Basic or Personal)",
  "distinctFrom": [
    {
      "url": "https://www.osaas.io/use-cases/edge-computing",
      "why": "WebAssembly workloads, not content delivery"
    }
  ],
  "relatedPages": [
    {
      "url": "https://www.osaas.io/use-cases/app-hosting",
      "why": "publish the My Page or My App that the CDN fronts"
    },
    {
      "url": "https://www.osaas.io/use-cases/video-to-hls",
      "why": "produce HLS and MP4 output into storage that the CDN can serve"
    },
    {
      "url": "https://www.osaas.io/subprocessors",
      "why": "content delivery sub-processor entry (Varnish Software AB through Elastx AB)"
    }
  ],
  "origins": [
    {
      "originKind": "mypage",
      "requires": "pageId of a public My Page (Basic Auth protected pages are refused)",
      "caching": "short cache time of a few minutes"
    },
    {
      "originKind": "instance",
      "serviceId": "minio-minio",
      "requires": "serviceId and instanceName",
      "caching": "anonymous GET and HEAD on public-read buckets; private objects return 403",
      "warning": "Do not send presigned URLs through the CDN address: the CDN can keep serving them after they expire. Keep the instance's own URL for presigned links."
    },
    {
      "originKind": "myapp",
      "requires": "appId",
      "caching": "only responses with Cache-Control: public or s-maxage; requests with Cookie or Authorization go to the app"
    }
  ],
  "recommendedPath": {
    "app": "Open the CDN panel on the My Page, My App or storage instance in app.osaas.io.",
    "mcp": [
      "create-my-cdn-site (originKind mypage with pageId, instance with serviceId and instanceName, or myapp with appId)",
      "get-my-cdn-site, poll until status is active, then use cdnUrl",
      "list-my-cdn-sites before retrying a call that timed out"
    ],
    "measuredWallClockSeconds": null,
    "wallClockMeasured": false,
    "gapNote": "No end-to-end site creation was timed for this page."
  },
  "pricing": {
    "unit": "OSC tokens from the plan",
    "egress": "6 tokens per GB delivered",
    "site": "50 tokens per site per day",
    "requests": "listed as its own metered line; this recipe states no request price",
    "source": "production metered usage shared by the OSC CTO on 2026-11-04 (CDN site 14 site-days = 700 tokens, CDN egress 18 tokens), matching the rates decided 2026-10-04"
  },
  "limits": [
    "traffic caps per site and per workspace; suits websites, downloads and video on demand, not broadcast-scale live delivery",
    "no self-service cache purge yet",
    "custom domains on CDN sites are rolling out, available on selected workspaces",
    "no published list of edge locations yet; the edge network is European"
  ],
  "video": "Range requests are answered with 206 Partial Content, so players can seek in video files served from a public-read MinIO bucket.",
  "exitPath": {
    "origin": "the endpoint keeps its own address; deleting the CDN site leaves the origin serving as before",
    "openSource": "MinIO and the apps behind the CDN are open source; the CDN edge itself is a commercial service and is not described as open source"
  },
  "subProcessor": "Varnish Software AB, engaged through Elastx AB, which resells the CDN service (https://www.osaas.io/subprocessors)",
  "claimsSource": "OSC MCP tool descriptions for create-my-cdn-site and delete-my-cdn-site (read live 2026-11-04); ADR-0057 in Eyevinn/agent-team-osc-dev (caching rules and live tests); Eyevinn/agent-team-osc-pm#71 (rates, plan gate, naming); production metered usage 2026-11-04.",
  "notVerified": [
    "a timed run from creating a site to first cached response",
    "the CDN panel rendered in the production app (not opened in a browser for this page)",
    "the exact cache time on My Pages beyond the 5-minute override in ADR-0057",
    "the 4 non-EN locales rendered in a browser"
  ],
  "verifiedOn": "2026-11-04",
  "publishedAt": "https://www.osaas.io/use-cases/cdn-acceleration",
  "descriptorUrl": "https://www.osaas.io/stacks/cdn-acceleration.json"
}
