- nginx-demo.conf: new :2101 server block reverse-proxying the live indee.tx1138.com site with no path prefix (fixes the old sub_filter path-rewrite breakage), X-Frame-Options/CSP stripped, WS upgrade passthrough, and a demo sign-in script injected into <head> - indee-demo-signin.js: PUBLIC-DEMO-ONLY seeder that writes a labelled throwaway "nsec" account (freshly generated keypair, not a secret) into the :2101 origin's indeedhub-accounts/indeedhub-active-account localStorage keys, idempotently, so IndeeHub boots signed in - Dockerfile.web: copy the seeder into the demo web image, EXPOSE 2101 - docker-compose.demo.yml + demo-deploy/docker-compose.yml: publish 2101 (DEMO_INDEE_PORT override documented in the thin deploy stack) Verified: nginx -t clean in nginx:alpine; live proxy smoke shows 200 with no framing headers, injected tag, seed script served, assets proxied. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Archipelago — Public Demo deploy
A click-to-play demo of the Archipelago UI, backed entirely by a mock backend.
Every visitor gets an isolated, ephemeral sandbox (own apps, wallet, files),
real container runtimes are never touched, and Bitcoin runs on signet test
coins. Login password: entertoexit (shown on the login screen).
This directory is the full contents of the public archy-demo repo. It holds no
source — only this compose file that pulls prebuilt :demo images.
Deploy in Portainer
- Stacks → Add stack → Repository (or paste
docker-compose.ymlinto the web editor). - Set environment variables (see
.env.example) — at minimumREGISTRY, andANTHROPIC_API_KEYif you want the AI chat panel. - Deploy. The UI is served on
:2100(override withDEMO_WEB_PORT).
To pick up a new build, redeploy the stack (or wire the CI Portainer webhook).
How it stays current
The images are built from the Archipelago monorepo by
.github/workflows/demo-images.yml on every change to neode-ui/, tagged :demo
and :<git-sha>, and pushed to REGISTRY. Editing the real UI → CI rebuilds →
redeploy here. No source lives in this repo.
What's mocked
- Per-visitor isolation — state keyed by a
demo_sidcookie, idle-reaped. - Apps — install/uninstall/start/stop are simulated (no real Docker).
- Wallet/Bitcoin — signet-flavored; use the in-UI faucet for test sats.
- Files — real per-session upload/rename/delete, 50 MB quota, wiped on reap.
- Intro — replays once per calendar day per browser.