Server builds
A build is one version of your dedicated server. One build per project is live at a time.
Register, upload, go live
- Register the version and how to start it.
- Upload the archive (
.zipor.tar.gz, up to 2 GB). It is streamed to storage, size-checked and hashed with SHA-256; sendx-artifact-sha256to have the upload verified end to end. - 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.