Skip to content

Latest commit

 

History

History
50 lines (39 loc) · 2.34 KB

MASTER.md

File metadata and controls

50 lines (39 loc) · 2.34 KB

Your own master

iw4l-master is a relay and server browser, not a game server: the host's client simulates the match. It pulls in no engine dependency, so a VPS needs no assets and no GPU. Publishing our own releases: DEPLOY.md.

Install — from the machine with the clone; the VPS needs only ssh

cargo xtask master install root@1.2.3.4
cargo xtask master logs    root@1.2.3.4 --since 10min

install mints a CA and server certificate under ~/.iw4l/ca, builds a static binary, installs it with the certificates under /usr/local/lib/iw4l/ and /etc/iw4l/, writes the unit through iw4l-master print-unit and runs enable --now. The CA key never leaves the local machine. master update, status and uninstall follow, each taking --channel dev and --ca DIR; uninstall keeps the certificates and CA, so a reinstall stays trusted.

No domain required — the certificate is not tied to one

The client connects by address but checks the certificate against a separate name — IW4L_MASTER_SERVER_NAME, a fixed label — so nothing in the SAN depends on the host; with IW4L_MASTER_CA_CERT set it loads only that PEM into an empty RootCertStore (net/src/transport/master.rs:3107), bypassing the platform verifier. install signs San::Labels alone: the certificate is minted once per user, not per server, and a new IP or VPS keeps it.

What it records — nothing on disk

Rooms, the advertised match name, peers and room membership live in ServiceState in memory, gone when the room closes or the process restarts. No account, history, analytics or telemetry. What survives is the systemd journal — startup and failures, not matches or players — under the VPS's own journald retention. Peer IPs are visible to the kernel and to any packet capture on that host while a connection is open, as with any server. Run it for others and that is the honest description: it forwards packets and vouches for nobody.

Hand out to players — this block plus iw4l-ca.pem

The host opens a match with IW4L_MASTER_HOST_NAME='name' make map mp_boneyard, the rest join from make menu, 2..=18 (IW4L_MASTER_MAX_PLAYERS). Trust rests entirely on pinning ca.pem, so hand it over a trusted channel.

IW4L_MASTER_ADDR=1.2.3.4:4433
IW4L_MASTER_SERVER_NAME=iw4l-prod
IW4L_MASTER_CA_CERT=/path/to/iw4l-ca.pem