--- /** * "What you actually deploy" — the first of `/architecture/`'s three diagrams (D21). * * This one exists because of a specific, repeated misunderstanding that §10 names and the * homepage's CTA already spends two sentences on: a Runic Gateway install is two * independent installs, on two machines, and neither installs the other. The homepage says * it; this page draws it, because an evaluator deciding whether to run the software is * doing capacity planning, and "how many machines is this" is the first question they have. * * Drawn generically for the same reason the homepage's diagram is (D17) — "your game host", * not "your ServUO box" — with the prose beside it naming the real components. The boundary * is the one drawn argument: everything above it is reachable because you published it, and * everything below it is not reachable at all. * * The vocabulary and the layout are `src/styles/diagram.css`; only the geometry is here. */ ---

What you deploy

Two hosts, two installs

Almost everyone gets this wrong once. The website and the game-side bridge are separate deployments on separate machines, and neither one installs the other — so a "Runic Gateway install" is really two, done in that order.

Today the game server is a ServUO shard and the sidecar is uo-link. Two machines is the minimum and also the maximum — nothing here scales by adding a third.

The web host

A Docker Compose deployment: the site, its database, and whichever game module you installed. Images are pulled rather than built, so nothing compiles here and an upgrade is a pull and a restart. This is the only machine anybody points a browser at, and the only one that needs a certificate.

The game host

The machine your game server is already on. One installer binary puts the plugin into the server's tree, installs the sidecar beside it and registers the service — then prints four values. It never contacts your website; you paste those four values into the admin panel yourself, and that is the moment the two halves meet.

Why they share a host

The game talks to the sidecar over loopback, on the same machine, and dials out to do it. That is what lets the game server open no port at all — and it is also why there is no macOS installer build. The pair has to sit together, and no game server anybody runs is on one.

What crosses between them

One authenticated connection, in both directions: a WebSocket carrying the live feed up, and REST calls going down for point-in-time questions. Nothing else on either machine talks to the other, and the sidecar answers your site and nobody else.