Wylabb 900969b9ef
Some checks failed
Build and publish wylab SS14 server / build-arm64 (push) Successful in 14s
Build and publish wylab SS14 server / build-amd64 (push) Failing after 14m15s
Fix amd64 runner to use Docker mode
Restore runs-on to [self-hosted, linux-amd64] which now maps to Docker
mode after updating the runner configuration. This fixes actions/checkout
compatibility while maintaining amd64 tagging.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-15 04:25:00 +01:00
2025-12-08 17:41:16 +00:00
2025-12-15 00:50:55 +01:00
2025-12-15 00:50:55 +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=auto \
      -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. Use auto (default) to match the Docker target platform automatically, or override with linux-x64, linux-arm64, or linux-arm to force an architecture.

    If you are building on one architecture and running on another (for example, building on x86 and deploying to an ARM board), build with an explicit platform to avoid exec format error:

    docker buildx build \
      --platform linux/arm64 \
      --build-arg TARGET_PLATFORM=linux-arm64 \
      -t git.wylab.me/wylab/WS14-Docker-Linux-Server:arm64 .
    

    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%