Legendary Arena Lab

Wiki Index

16 / 50 entity pages. Last regenerated: 2026-07-24. See SCHEMA.md for the entity-page contract and README.md for purpose, conventions, and authority — including § Tradeoffs .

All entity pages currently carry status: draft: the infra/ artifacts exist and are described accurately, but the migration has not yet run against a production droplet (see SCHEMA.md § Status Values ). The one exception is the canonical migration hub, which cites only the plan.


Concept

Abstract ideas, contracts, and design decisions.

  • Render-to-DigitalOcean Migration(canonical) the hub. Why apps/server + PostgreSQL + ewiki leave Render for one DigitalOcean droplet behind Cloudflare; the locked-decisions architecture, the honest cost-is-a-wash / control-is-the-driver read, the accepted single-box SPOF mitigated by tested R2 backups, and the Phase 0→7 sequence with Render kept warm as the rollback target.

Tutorial

Step-by-step procedures, each owning a runnable infra artifact.

Foundations — host provisioning & hardening (Phase 1)

Runtime (Phase 2)

Web — reverse proxy & edge (Phase 2)

Data (Phase 2)

App & Ops — deploy (Phases 3–4)

Guide

Reference explainers for a subsystem or contract without a single runnable script.

  • Ubuntu Droplet Setup — the umbrella sequence for standing up the droplet: the ordered Phase 1–3 bring-up (provision → harden → runtime/web/data → first deploy), linking each step to its owning page and infra/ artifact. Duplicates none of their mechanics; it is the linear path through them.
  • Droplet Snapshots — DigitalOcean snapshots as whole-host rollback points across the migration lifecycle (pre-hardening-baseline, post-bootstrap-hardened), how they differ from automated Backups, and why a snapshot is not a substitute for the tested pg_dump → R2 database restore.
  • Secrets and Env — owns infra/.env.example . The ~15 sync:false variables (auth, Stripe, analytics tokens, R2, Brevo) as the environment contract; real values live only in /etc/la/.env at mode 600.
  • Systemd Service — owns infra/systemd/la-server.service . The la-server unit: ExecStart through fnm-pinned Node, EnvironmentFile, Restart=on-failure, and reboot survival — why systemd over PM2.

Reference

Standing lookups — status views and tables.

  • Migration Checklist — live progress against the PLAN §6 phase sequence: the three legs (GitHub ✅, Cloudflare Pages / play ✅, Ubuntu droplet 🔲) and a phase-by-phase status table. A status overlay on the plan, not a second copy; the tested-restore drill is flagged as the real cutover gate.

Pages by owning artifact

Wiki pageOwning artifact(s)
Provision Dropletinfra/cloud-init.yaml
SSH Hardeninginfra/scripts/05-user-and-ssh.ps1
UFW Firewallinfra/scripts/06-ufw.ps1
Fail2ban and Unattended Upgradesinfra/scripts/07-fail2ban-upgrades.ps1
Node Runtimeinfra/scripts/10-node.ps1
Nginx Reverse Proxyinfra/nginx/api.conf, infra/scripts/20-nginx.ps1
Cloudflare TLSinfra/scripts/21-cloudflare-tls.ps1
PostgreSQL Setupinfra/scripts/30-postgres.ps1
Deploy Serverinfra/scripts/40-app-deploy.ps1, infra/systemd/la-server.service, infra/.env.example
Deploy Pipeline.github/workflows/deploy.yml
Secrets and Envinfra/.env.example
Systemd Serviceinfra/systemd/la-server.service
Droplet Snapshots(guide — DO snapshot practice; cites docs/PLAN.md §5.1, docs/DECISIONS.md)
Ubuntu Droplet Setup(guide — sequences the Phase 1–3 pages; cites docs/PLAN.md, infra/cloud-init.yaml)
Migration Checklist(reference — status overlay; cites docs/PLAN.md §6, docs/DECISIONS.md)
Render-to-DigitalOcean Migration(concept — cites docs/PLAN.md)

Not yet documented

Pages land when their owning artifact exists in infra/. Planned by PLAN.md §5 but not yet present, so intentionally absent from this wiki:

  • backup-restoreinfra/scripts/50-backup.ps1 / 51-restore.ps1 (pg_dump → R2, restore drill)
  • postgres-maintenanceinfra/scripts/52-vacuum-reclaim.ps1
  • monitoringinfra/scripts/60-monitor.ps1
  • cutover / disaster-recovery — orchestration procedures