Skip to content

Host the tournament app

The mobile-app command serves plain HTTP. To run a fully digital event (on-screen scoreboards and competitor result pages reachable over the internet) you put it behind a reverse proxy that terminates HTTPS. The ready-made deployments under deploy/ all use Caddy for automatic Let's Encrypt certificates, so HTTPS works with no manual certificate steps.

You need:

  • A domain name with an A record pointing at the host's public IP.
  • Ports 80 and 443 open (port 80 is required for the ACME HTTP-01 challenge that issues the certificate).

Choose a deployment

Each option links to its full guide on GitHub, where the Compose and Terraform files sit alongside the instructions.

Option Platform Scale Use when
Docker baseline Any Linux host with Docker Depends on the host You already have a server or VM and want the provider-agnostic Compose + Caddy stack.
GCP free tier GCP Always-Free e2-micro (1 GB RAM, x86-64), Terraform-deployed Club-sized events; 1 GB/month egress cap You want a free cloud VM. Watch the egress cap: a busy day with a few hundred connected viewers can exceed it.
Oracle free tier Oracle Always-Free Ampere A1 (2 OCPU / 12 GB, Arm64), Terraform-deployed 1000+ connected viewers; 10 TB/month egress You need the free-forever tier that matches the app's large-event SSE target.

The Docker baseline is the reusable core: the GCP and Oracle Terraform modules render the same Compose file and Caddyfile onto a cloud VM using cloud-init. Each guide includes the full prerequisites and a one-command Terraform (or Compose) flow.

PDF export needs the PDF-enabled image

The lean default image cannot generate PDFs (competitor tags, name sheets, trees), it ships without LibreOffice to stay small. If your operators export PDFs, run the ghcr.io/gitrgoliveira/bracket-creator-mobile-pdf:latest image variant instead. Excel export works on every image.

Security

Any deployment reachable over the internet should run in locked-password mode rather than the default file mode. Locked mode reads a bcrypt hash from an environment variable and disables the public password-reset endpoint. See Admin authentication for the setup steps.

What still needs printing

A fully digital setup still leaves one job on paper: organisers print player tags and numbers before the event. Everything else (pools, scoring, scoreboards, and result pages) runs on screen. See the three ways to run a tournament for how this mode compares to the offline and partially connected setups.