MMatchdock

Server builds

A build is one version of your dedicated server. One build per project is live at a time.

Register, upload, go live

  1. Register the version and how to start it.
  2. Upload the archive (.zip or .tar.gz, up to 2 GB). It is streamed to storage, size-checked and hashed with SHA-256; send x-artifact-sha256 to have the upload verified end to end.
  3. Activate it. Nodes fetch live builds in the background within about 30 seconds, verify the checksum, and unpack into a directory named after the version and hash.
curl -X POST  $API/admin/projects/$PROJECT/builds                  -H "x-matchdock-key: $KEY" -H 'content-type: application/json' -d @build.json
curl -X PUT   $API/admin/projects/$PROJECT/builds/$ID/artifact     -H "x-matchdock-key: $KEY" -H 'content-type: application/zip' \
              -H "x-artifact-sha256: $(sha256sum server.zip | cut -d' ' -f1)" --data-binary @server.zip
curl -X POST  $API/admin/projects/$PROJECT/builds/$ID/activate     -H "x-matchdock-key: $KEY"

The console does the same under Builds → Upload build, with a progress bar.

Build definition

Field Meaning
version Unique per project. Letters, digits, ., -, _.
source ARTIFACT - an archive you upload.
runtime CONTAINER (recommended) or PROCESS.
containerImage Base image the build runs in. arenacloud/unity-runtime:24.04 fits Unity and most native Linux servers.
entrypoint Executable, relative to the archive root, e.g. Server/server.x86_64.
workingDirectory Optional, relative to the archive root.
argsTemplate Arguments; {port}, {serverSessionId}, {serverSecret}, {apiUrl}, {matchId} are filled in per session.
env Extra environment variables.
cpuLimit, memoryLimitMb Per-server limits (defaults 1 core, 1024 MB).

Rules worth knowing

  • A live build is immutable. To change anything, register a new version.
  • Going live is a rolling change. New matches start on the new build; matches in progress finish on theirs.
  • Rollback is activation. Activate the previous version (console: Make live); it is still on the nodes.
  • Archives are rejected if they contain links that point outside the build.

Sizing

After real matches, the console shows average and peak CPU and peak memory per match under Matches → Server load. Set cpuLimit and memoryLimitMb from those numbers with some headroom; a server that sits at its CPU limit is a server whose players feel it.