Skip to content

evocases-iframe

Documentation for working on the evocases-iframe stack. main is stage.

I want to…

Stage

Game / embed game.evocase-iframe.io — public, loaded in an operator's iframe
Back office bo.evocase-iframe.io — behind Cloudflare Access
Back-office API bo-api.evocase-iframe.io — public, mandatory TOTP
Container logs logs.evocase-iframe.io — behind Access
Docs docs.evocase-iframe.io
Postgres evocases-iframe.taildb581b.ts.net:5432 — over Tailscale only
Redis evocases-iframe.taildb581b.ts.net:6379 — over Tailscale only

One Hetzner VM (cx33, nbg1), docker compose, everything reached through a Cloudflare Tunnel. The VM publishes no ports; only SSH is open inbound.

The one thing to know first

game.evocase-iframe.io is two origins behind one hostname. games-api serves the embed document because it is the only process that can build Content-Security-Policy: frame-ancestors from the installation row; the static image serves /<game>/assets/. See Architecture — most surprises on this stack come from that split.