Codex Agent 2a615a644a
Some checks failed
Build and publish wylab SS14 server / build-arm64 (push) Successful in 6m57s
Build and publish wylab SS14 server / build-amd64 (push) Has been cancelled
CI: split arm64 and amd64 jobs
2025-12-15 00:31:53 +01:00
2025-12-08 17:41:16 +00:00
2025-12-14 08:27:04 +01:00
2025-12-14 23:33:08 +01:00

SS14-Docker-Linux-Server 🚀

Containerized deployment of the Space Station 14 server on Linux.

Create and publish a Docker image

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

  1. Clone this repository

    git clone https://git.wylab.me/wylab/WS14-Docker-Linux-Server.git
    cd WS14-Docker-Linux-Server
    
  2. Configure your server defaults

    Edit appsettings.yml and server_config.toml with the values you want baked into the image. These files will be copied into /ss14-default/publish on first run.

  3. 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 to master).
    • TARGET_PLATFORM Runtime identifier passed to the packaging tool (defaults to linux-x64).

    The build container clones the selected ref, runs RUN_THIS.py --quiet to fetch submodules, and executes dotnet run --project Content.Packaging server to 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:

  1. wylab-station-14/.github/workflows/publish.yml

    • Triggered on pushes to master, manual dispatch, or nightly cron.
    • Checks https://cdn.wylab.me/fork/wylab/manifest first; if the current commit already exists on the CDN it exits early.
    • Uses actions/cache to persist ~/.nuget/packages and RobustToolbox/bin, so repeated builds reuse restored packages/engine binaries when the inputs havent changed.
    • Otherwise builds the server/client packages via Content.Packaging, uploads them via Tools/publish_multi_request.py, and fires a repository_dispatch event (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, add DOCKER_TRIGGER_TOKEN (a PAT with repo access).

  2. WS14-Docker-Linux-Server/.github/workflows/main.yml

    • Triggered on pushes here, manual dispatch, or the ss14-package-ready event.
    • Resolves the target wylab commit (uses the payload commit if provided).
    • Logs into git.wylab.me and runs docker manifest inspect before 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:latest
      • git.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 for git.wylab.me).

After the build finishes, Unraid (or any host) can pull:

git.wylab.me/wylab/ws14-docker-linux-server:latest

Use that string in Unraids “Repository” field and map /ss14 to persistent storage.


Description
No description provided
Readme 142 KiB
Languages
Dockerfile 91.9%
Shell 8.1%