4.5 KiB
SS14-Docker-Linux-Server 🚀
Containerized deployment of the Space Station 14 server on Linux.
Overview
This project is for those who prefer containerized solutions. It's based on the official documentation but wraps the wylab-station-14 fork in a Docker image that is built from source during the Docker build.
Building the Image
-
Clone this repository
git clone https://git.wylab.me/wylab/WS14-Docker-Linux-Server.git cd WS14-Docker-Linux-Server -
Configure your server defaults
Edit
appsettings.ymlandserver_config.tomlwith the values you want baked into the image. These files will be copied into/ss14-default/publishon first run. -
Build the Docker image
docker build \ --build-arg SOURCE_REPO=https://git.wylab.me/wylab/wylab-station-14.git \ --build-arg SOURCE_REF=master \ --build-arg TARGET_PLATFORM=linux-x64 \ -t git.wylab.me/wylab/WS14-Docker-Linux-Server:local .SOURCE_REPO– Git URL of the content repo to compile (defaults to the wylab fork).SOURCE_REF– Branch, tag, or commit to check out (defaults tomaster).TARGET_PLATFORM– Runtime identifier passed to the packaging tool (defaults tolinux-x64).
The build container clones the selected ref, runs
RUN_THIS.py --quietto fetch submodules, and executesdotnet run --project Content.Packaging serverto generate a release zip that is baked into the final layer.
Running the Server
docker run -d \
-p 1212:1212/tcp \
-p 1212:1212/udp \
-p 5000:5000/tcp \
-p 5000:5000/udp \
-v /path/on/host:/ss14 \
--name wylab-ss14 \
git.wylab.me/wylab/WS14-Docker-Linux-Server:latest
On first start the container copies /ss14-default into your mounted volume (if empty) so you can edit configs or upload new builds persistently.
You can still wrap the container in Docker Compose if desired:
version: '3.9'
services:
ss14-server:
image: git.wylab.me/wylab/WS14-Docker-Linux-Server:latest
ports:
- "1212:1212/tcp"
- "1212:1212/udp"
- "5000:5000/tcp"
- "5000:5000/udp"
volumes:
- /path/on/host:/ss14
restart: unless-stopped
CI/CD
Two workflows keep this image up to date:
-
wylab-station-14/.github/workflows/publish.yml- Triggered on pushes to
master, manual dispatch, or nightly cron. - Checks
https://cdn.wylab.me/fork/wylab/manifestfirst; if the current commit already exists on the CDN it exits early. - Uses
actions/cacheto persist~/.nuget/packagesandRobustToolbox/bin, so repeated builds reuse restored packages/engine binaries when the inputs haven’t changed. - Otherwise builds the server/client packages via
Content.Packaging, uploads them viaTools/publish_multi_request.py, and fires arepository_dispatchevent (event_type: ss14-package-ready) to this repo.
Required secrets in the wylab-station-14 repo:
PUBLISH_TOKEN,DOCKER_TRIGGER_TOKEN, and (if used)SECRETS_PRIVATE_KEY.
To send the dispatch, addDOCKER_TRIGGER_TOKEN(a PAT with repo access). - Triggered on pushes to
-
WS14-Docker-Linux-Server/.github/workflows/main.yml- Triggered on pushes here, manual dispatch, or the
ss14-package-readyevent. - Resolves the target wylab commit (uses the payload commit if provided).
- Logs into
git.wylab.meand runsdocker manifest inspectbefore building; if an image tagged with that commit already exists it skips the build. - Otherwise builds the Docker image with
SOURCE_REF=<commit>and pushes:git.wylab.me/wylab/ws14-docker-linux-server:latestgit.wylab.me/wylab/ws14-docker-linux-server:<docker repo commit>git.wylab.me/wylab/ws14-docker-linux-server:<wylab commit>
Required secrets here:
REGISTRY_USERNAME/REGISTRY_PASSWORD(credentials forgit.wylab.me). - Triggered on pushes here, manual dispatch, or the
After the build finishes, Unraid (or any host) can pull:
git.wylab.me/wylab/ws14-docker-linux-server:latest
Use that string in Unraid’s “Repository” field and map /ss14 to persistent storage.