Running a game studio means running infrastructure. Here’s the shape of ours: enough detail to be useful, not enough to run your own NOC off the post.


The hardware

We run two dedicated servers and a small slice of public cloud where elasticity actually matters.

  • Hetzner (auction box): Ryzen 5950X, 128GB RAM, 2×4TB NVMe — Proxmox underneath, two Windows 11 VMs for Jenkins agents (4 cores / 32GB / ~1.5TB NVMe each). Compile and package work happens here; the Jenkins controller sits on OVH.
  • OVH dedicated: Perforce, the Jenkins controller, Discord bots, and Unreal Horde (UnrealGameSync metadata for now). Heavy Docker. No build agents here — coordination and services only.
  • OVH Cloud: game backends, analytics, anything player-facing that needs to bounce with load.

Perforce is the shape a lot of large Unreal repositories end up in when binary churn is high; ours is no exception.


WireGuard and what faces the internet

Everything that needs to talk to everything else — CI, Perforce, game services — rides WireGuard. Config files per node, no vendor lock-in, no fat client stack.

Exposure is default-deny host firewalls, cloud edge rules on top, and no public Perforce or Jenkins: you reach the internal stuff through the VPN tunnel, not from the open internet. We’ve used Uptime Kuma for cheap self-hosted health checks, and we bring in outside eyes on the setup occasionally so tunnel vision doesn’t harden into habit.


Builds

Pipelines are Groovy in Git, reviewed like game code instead of click-ops in the UI. Agents on Hetzner, controller on OVH—from sync through cook, package, Steam upload, Discord notifications—and not much of it is novel once you’ve seen one Unreal shipping floor; it’s mostly disk hours and brittle Windows VMs.


Backups

Critical data and configs rclone off to another provider. We’re not imaging whole machines; reprovisioning is fast enough that files and configs are what we bother preserving.


Cost and why not “just use the cloud”

Rough numbers for us:

  • OVH dedicated: ~$500/year (annual bill)
  • Hetzner: ~$100/month
  • All-in-ish: ~$200/month with the pieces above bundled together

Always-on workloads (CI, source control, bots) suit dedicated hardware—we’re not optimizing for elasticity there. Stuff that genuinely needs to scale with players sits on OVH Cloud where that model makes sense.


Where we came from

Before this we ran on a founder colo box behind a FortiGate. It worked until every tweak turned into firewall archaeology. Migrating here was a long weekend of config, then months of not thinking about the plumbing underneath.

— GhostJam Games