Skip to content

Commit 698e176

Browse files
Merge nightly into systemd feature branch
- Trying to not run into merge issues later on - because im working on go and localization too here
2 parents c67c7fc + aa0350e commit 698e176

16 files changed

Lines changed: 1507 additions & 5095 deletions

File tree

‎.github/workflows/docker-publish.yml.disabled‎

Lines changed: 0 additions & 64 deletions
This file was deleted.
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: Build and Push Nightly Image
2+
3+
on:
4+
push:
5+
branches: ["nightly"]
6+
7+
env:
8+
REGISTRY: ghcr.io
9+
10+
jobs:
11+
build-and-push:
12+
runs-on: ubuntu-latest
13+
permissions:
14+
contents: read
15+
packages: write
16+
17+
steps:
18+
- name: Checkout repository
19+
uses: actions/checkout@v5
20+
with:
21+
fetch-depth: 0 # Fetch all history for all tags and branches
22+
23+
- name: Lowercase the repo name
24+
run: |
25+
echo "IMAGE_NAME=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV
26+
27+
- name: Extract metadata
28+
id: meta
29+
uses: docker/metadata-action@v5
30+
with:
31+
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
32+
tags: |
33+
type=raw,value=nightly
34+
flavor: |
35+
latest=false
36+
37+
- name: Set up QEMU
38+
uses: docker/setup-qemu-action@v3
39+
40+
- name: Set up Docker Buildx
41+
uses: docker/setup-buildx-action@v3
42+
43+
- name: Login to GHCR
44+
uses: docker/login-action@v3
45+
with:
46+
registry: ${{ env.REGISTRY }}
47+
username: ${{ github.actor }}
48+
password: ${{ secrets.GITHUB_TOKEN }}
49+
50+
- name: Build and push
51+
uses: docker/build-push-action@v6
52+
with:
53+
context: .
54+
platforms: linux/amd64
55+
push: true
56+
tags: ${{ steps.meta.outputs.tags }}
57+
labels: ${{ steps.meta.outputs.labels }}
58+
cache-from: type=gha
59+
cache-to: type=gha,mode=max
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Build and Push Release Image
2+
3+
on:
4+
push:
5+
tags: ["v*"]
6+
7+
env:
8+
REGISTRY: ghcr.io
9+
10+
jobs:
11+
build-and-push:
12+
runs-on: ubuntu-latest
13+
permissions:
14+
contents: read
15+
packages: write
16+
17+
steps:
18+
- name: Checkout repository
19+
uses: actions/checkout@v5
20+
with:
21+
fetch-depth: 0 # Fetch all history for all tags and branches
22+
23+
- name: Lowercase the repo name
24+
run: |
25+
echo "IMAGE_NAME=${GITHUB_REPOSITORY,,}" >> $GITHUB_ENV
26+
27+
- name: Extract metadata
28+
id: meta
29+
uses: docker/metadata-action@v5
30+
with:
31+
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
32+
tags: |
33+
type=semver,pattern={{version}}
34+
type=raw,value=latest
35+
36+
- name: Set up QEMU
37+
uses: docker/setup-qemu-action@v3
38+
39+
- name: Set up Docker Buildx
40+
uses: docker/setup-buildx-action@v3
41+
42+
- name: Login to GHCR
43+
uses: docker/login-action@v3
44+
with:
45+
registry: ${{ env.REGISTRY }}
46+
username: ${{ github.actor }}
47+
password: ${{ secrets.GITHUB_TOKEN }}
48+
49+
- name: Build and push
50+
uses: docker/build-push-action@v6
51+
with:
52+
context: .
53+
platforms: linux/amd64
54+
push: true
55+
tags: ${{ steps.meta.outputs.tags }}
56+
labels: ${{ steps.meta.outputs.labels }}
57+
cache-from: type=gha
58+
cache-to: type=gha,mode=max

‎Dockerfile‎

Lines changed: 56 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,66 @@
1-
FROM debian:12-slim AS runner
1+
###############
2+
# Frontend build
3+
###############
4+
FROM node:24-bookworm-slim AS frontend-builder
5+
6+
WORKDIR /src/frontend
7+
8+
# Only copy frontend to leverage Docker layer caching for npm install
9+
COPY ./frontend/package.json ./frontend/package-lock.json* ./
10+
RUN npm install
11+
12+
COPY ./frontend/ ./
13+
# Build Svelte UI into ../UIMod/onboard_bundled/v2 (as configured in vite.config.js)
14+
RUN npm run build
15+
16+
############
17+
# Go build
18+
############
19+
FROM golang:1.25-bookworm AS go-builder
20+
21+
WORKDIR /src
22+
23+
# Pre-copy go.mod and go.sum for better caching
24+
COPY ./go.mod ./go.sum ./
25+
RUN go mod download
26+
27+
COPY . ./
28+
29+
COPY --from=frontend-builder /src/UIMod /src/UIMod
30+
31+
# Build the server (embed will include UIMod/* at build time)
32+
RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o /out/StationeersServerControl ./server.go
33+
34+
############
35+
# Runtime
36+
############
37+
FROM debian:13-slim AS runner
238

3-
# Set the working directory inside the container
439
WORKDIR /app
540

6-
# Copy the rest of the application source code
7-
COPY ./build/StationeersServerControl*.x86_64 /app/StationeersServerControl
8-
COPY ./LICENSE /app/LICENSE
9-
RUN chmod +x /app/StationeersServerControl
41+
ENV HOME=/app
1042

43+
# Minimal runtime dependencies. SteamCMD needs 32-bit runtime.
1144
RUN dpkg --add-architecture i386 \
1245
&& apt-get update -y \
13-
&& apt-get install -y --no-install-recommends ca-certificates locales lib32gcc-s1 file
46+
&& apt-get install -y --no-install-recommends \
47+
ca-certificates \
48+
locales \
49+
lib32gcc-s1 \
50+
file \
51+
&& rm -rf /var/lib/apt/lists/*
52+
53+
RUN useradd -m -d /app -s /bin/sh app
54+
55+
# Copy compiled binary and license
56+
COPY --from=go-builder /out/StationeersServerControl /usr/local/bin/StationeersServerControl
57+
COPY ./LICENSE /app/LICENSE
58+
RUN chmod +x /usr/local/bin/StationeersServerControl
1459

15-
# Verify that the executable was copied and renamed successfully
16-
RUN echo "Verifying the copied and renamed StationeersServerControl executable:" && \
17-
if ls -l /app/StationeersServerControl; then \
18-
echo "StationeersServerControl copy and rename successful."; \
19-
else \
20-
echo "Error: StationeersServerControl executable not found after copy."; \
21-
exit 1; \
22-
fi
60+
RUN chown -R app:app /app
2361

24-
# Expose the ports
25-
EXPOSE 8443 27016 27015
62+
USER app
2663

27-
# Set the entrypoint to the application
28-
ENTRYPOINT ["/app/StationeersServerControl"]
64+
EXPOSE 8443/tcp 27016/udp 27015/udp
2965

30-
# Provide default arguments to the entrypoint
31-
CMD []
66+
ENTRYPOINT ["/usr/local/bin/StationeersServerControl"]

‎UIMod/onboard_bundled/localization/de-DE.json‎

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
"UIText_BasicSettings": "Basis",
2727
"UIText_NetworkSettings": "Netzwerk",
2828
"UIText_AdvancedSettings": "Erweitert",
29-
"UIText_BetaSettings": "Beta",
3029
"basic": {
3130
"UIText_BasicServerSettings": "Grundlegende Servereinstellungen",
3231
"UIText_ServerName": "Servername",
@@ -78,11 +77,7 @@
7877
"UIText_GameBranch": "Spiel Branch",
7978
"UIText_GameBranchInfo": "Branch des Spiels. Bei Änderung SSUI Neustart erforderlich!"
8079
},
81-
"beta": {
82-
"UIText_BetaOnlySettings": "NUR BETA: NEUE TERRAIN UND SPEICHERSYSTEM EINSTELLUNGEN",
83-
"UIText_BetaWarning": "Diese Einstellungen sind nur nützlich bei Stationeers Dedicated Server Beta. Wechsel möglich unter Erweiterte Einstellungen -> Spiel Branch. Alte Speicherstände NICHT kompatibel, aber migrierbar mit JacksonTheMaster's <a href=\"https://sst.jxsn.dev\">Migration Tool</a>. \"How to\" Infos im FAQ gelten auch für Dedicated Server.",
84-
"UIText_UseNewTerrainAndSave": "Neues Terrain- und Speichersystem Nutzen",
85-
"UIText_UseNewTerrainAndSaveInfo": "Auf TRUE setzen für .save Dateien im Backup Manager und Argument-Parsing. Bei false funktionieren nur Stationeers Versionen vor Terrain-Überarbeitung (≈ Mitte 2025). Standard false bis neues System veröffentlicht.",
80+
"terrain": {
8681
"UIText_Difficulty": "Schwierigkeit",
8782
"UIText_DifficultyInfo": "Schwierigkeit für Welterstellung. Standard Normal wenn leer.",
8883
"UIText_StartCondition": "Startbedingung",
@@ -177,7 +172,6 @@
177172
"UIText_GameBranch_SkipButton": "Release Version nutzen",
178173
"UIText_NewTerrainAndSaveSystem_Title": "Wichtig",
179174
"UIText_NewTerrainAndSaveSystem_HeaderTitle": "Terrainsystem wählen",
180-
"UIText_NewTerrainAndSaveSystem_StepMessage": "Gerade zu Beta gewechselt? Terrain- und Speichersystem umschalten! 'ja' eingeben zum Aktivieren oder 'nein' zum Deaktivieren.",
181175
"UIText_NewTerrainAndSaveSystem_PrimaryPlaceholder": "nein",
182176
"UIText_NewTerrainAndSaveSystem_PrimaryLabel": "Neues System aktivieren",
183177
"UIText_NewTerrainAndSaveSystem_SubmitButton": "Speichern & Weiter",

‎UIMod/onboard_bundled/localization/en-US.json‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
"UIText_BasicSettings": "Basic Settings",
2727
"UIText_NetworkSettings": "Network Settings",
2828
"UIText_AdvancedSettings": "Advanced Settings",
29-
"UIText_BetaSettings": "Beta Settings",
29+
"UIText_TerrainSettings": "New Terrain",
3030
"basic": {
3131
"UIText_BasicServerSettings": "Basic Server Settings",
3232
"UIText_ServerName": "Server Name",
@@ -80,11 +80,11 @@
8080
"UIText_AllowAutoGameServerUpdates": "Enable Auto Game Server Updates",
8181
"UIText_AllowAutoGameServerUpdatesInfo": "Allow the gameserver to automatically query for and update to the latest version. Attention: Restarts the server when a new version was found and installed. Will send multiple warning messages to the sever with SAY commands 60-10 seconds before the restart."
8282
},
83-
"beta": {
84-
"UIText_BetaOnlySettings": "BETA ONLY: NEW TERRAIN AND SAVE SYSTEM SETTINGS",
85-
"UIText_BetaWarning": "These settings are only useful if you are running the Stationeers Dedicated Server Beta. Switching is possible from Advanced Settings -> Game Branch. Old savegames are NOT compatible with the new system, but can be migrated with JacksonTheMaster's <a href=\"https://sst.jxsn.dev\">Migration tool.</a>. Related \"how to\" Information on the FAQ there also applies to the Dedicated Server.",
83+
"terrain": {
84+
"UIText_TerrainSettingsHeader": "NEW TERRAIN AND SAVE SYSTEM SETTINGS",
85+
"UIText_TerrainWarning": "These settings are only useful if you are running a Stationeers build NEWER than September 2025. Old savegames are NOT compatible with the new system, but can be migrated with JacksonTheMaster's <a href=\"https://sst.jxsn.dev\">Migration tool.</a>. Related \"how to\" Information on the FAQ there also applies to the Dedicated Server.",
8686
"UIText_UseNewTerrainAndSave": "Use New Terrain and Save System",
87-
"UIText_UseNewTerrainAndSaveInfo": "Set to TRUE to enable handling of .save files in the Backup manager and argument parsing. If set to false, only Stationeers versions before the terrain rework (≈ mid 2025) will work. Defaults to false until new Stationeers Terrain and Save System is released.",
87+
"UIText_UseNewTerrainAndSaveInfo": "Set to TRUE to enable handling of .save files in the Backup manager and argument parsing. If set to false, only Stationeers versions before the terrain rework (≈ mid 2025) will work. Defaults to TRUE!",
8888
"UIText_Difficulty": "Difficulty",
8989
"UIText_DifficultyInfo": "Difficulty to create the world with. Defaults to Normal if empty.",
9090
"UIText_StartCondition": "Start Condition",
@@ -176,8 +176,8 @@
176176
"UIText_GameBranch_SkipButton": "Use Normal Version",
177177
"UIText_NewTerrainAndSaveSystem_Title": "IMPORTANT",
178178
"UIText_NewTerrainAndSaveSystem_HeaderTitle": "Select Terrain System",
179-
"UIText_NewTerrainAndSaveSystem_StepMessage": "Just switched to Beta? If yes, enable handling of the new terrain and save system here. Enter 'yes' to enable or 'no' to use the old system.",
180-
"UIText_NewTerrainAndSaveSystem_PrimaryPlaceholder": "no",
179+
"UIText_NewTerrainAndSaveSystem_StepMessage": "Using an OLD branch, such as preterrain or older without the terrain system changes? If yes, disable handling of the new terrain and save system here. Enter 'yes' or skip to enable (default) or 'no' to use the old save and terrain system. If you are unsure, skip this step.",
180+
"UIText_NewTerrainAndSaveSystem_PrimaryPlaceholder": "yes",
181181
"UIText_NewTerrainAndSaveSystem_PrimaryLabel": "Enable new System",
182182
"UIText_NewTerrainAndSaveSystem_SubmitButton": "Save & Continue",
183183
"UIText_NewTerrainAndSaveSystem_SkipButton": "Skip",

‎UIMod/onboard_bundled/localization/sv-SE.json‎

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@
2626
"UIText_BasicSettings": "Grund",
2727
"UIText_NetworkSettings": "Nätverk",
2828
"UIText_AdvancedSettings": "Avancerad",
29-
"UIText_BetaSettings": "Beta",
3029
"basic": {
3130
"UIText_BasicServerSettings": "Grundläggande serverinställningar",
3231
"UIText_ServerName": "Servernamn",
@@ -80,11 +79,8 @@
8079
"UIText_AllowAutoGameServerUpdates": "Aktivera automatiska uppdateringar av spelservern",
8180
"UIText_AllowAutoGameServerUpdatesInfo": "Tillåt spelservern att automatiskt söka efter och uppdatera till den senaste versionen. Obs! Servern startas om när en ny version har hittats och installerats. Flera varningsmeddelanden skickas till servern med SAY-kommandon 60–10 sekunder före omstarten."
8281
},
83-
"beta": {
84-
"UIText_BetaOnlySettings": "ENDAST BETA: INSTÄLLNINGAR FÖR NYTT TERRÄNG- OCH SPARSYSTEM",
85-
"UIText_BetaWarning": "Dessa inställningar är endast användbara om du kör Stationeers Dedicated Server Beta. Byte är möjligt via Avancerade inställningar -> Spelgren. Gamla sparfiler är INTE kompatibla med det nya systemet, men kan migreras med JacksonTheMasters <a href=\"https://sst.jxsn.dev\">Migreringsverktyg</a>. Relaterad \"hur man gör\"-info i FAQ gäller även för Dedicated Server.",
82+
"terrain": {
8683
"UIText_UseNewTerrainAndSave": "Använd nytt system",
87-
"UIText_UseNewTerrainAndSaveInfo": "Sätt till TRUE för att aktivera hantering av .save-filer i Backup-hanteraren och argumentparsning. Om satt till false fungerar endast Stationeers-versioner före terrängomarbetningen (≈ mitten av 2025). Standard är false tills nya Stationeers terräng- och sparsystemet släpps.",
8884
"UIText_Difficulty": "Svårighetsgrad",
8985
"UIText_DifficultyInfo": "Svårighetsgrad för världsskapande. Standard är Normal om tomt.",
9086
"UIText_StartCondition": "Startvillkor",
@@ -176,7 +172,6 @@
176172
"UIText_GameBranch_SkipButton": "Använd standardversion",
177173
"UIText_NewTerrainAndSaveSystem_Title": "Viktigt",
178174
"UIText_NewTerrainAndSaveSystem_HeaderTitle": "Välj terrängsystem",
179-
"UIText_NewTerrainAndSaveSystem_StepMessage": "Bytt till beta? Aktivera terräng- och sparsystem för att stödja det! Ange 'ja' för att aktivera eller 'nej' för att inaktivera.",
180175
"UIText_NewTerrainAndSaveSystem_PrimaryPlaceholder": "nej",
181176
"UIText_NewTerrainAndSaveSystem_PrimaryLabel": "Aktivera nytt system",
182177
"UIText_NewTerrainAndSaveSystem_SubmitButton": "Spara & fortsätt",

‎UIMod/onboard_bundled/ui/config.html‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ <h1>{{.UIText_ServerConfig}}</h1>
5656
<button class="section-nav-button" data-section="basic-settings">{{.UIText_BasicSettings}}</button>
5757
<button class="section-nav-button" data-section="network-settings">{{.UIText_NetworkSettings}}</button>
5858
<button class="section-nav-button" data-section="advanced-settings">{{.UIText_AdvancedSettings}}</button>
59-
<button class="section-nav-button" data-section="beta-settings">{{.UIText_BetaSettings}}</button>
59+
<button class="section-nav-button" data-section="terrain-settings">{{.UIText_TerrainSettings}}</button>
6060
</div>
6161

6262
<form id="server-config-form" action="/saveconfigasjson" method="post">
@@ -254,9 +254,9 @@ <h3 class="section-title">{{.UIText_AdvancedConfiguration}}</h3>
254254
</div>
255255
</div>
256256

257-
<div id="beta-settings" class="config-section">
258-
<h3 class="section-title">{{.UIText_BetaOnlySettings}}</h3>
259-
<div class="beta-warning">{{.UIText_BetaWarning}}</div>
257+
<div id="terrain-settings" class="config-section">
258+
<h3 class="section-title">{{.UIText_TerrainSettingsHeader}}</h3>
259+
<div class="beta-warning">{{.UIText_TerrainWarning}}</div>
260260
<div class="channel-grid">
261261
<div class="form-group">
262262
<label for="IsNewTerrainAndSaveSystem">{{.UIText_UseNewTerrainAndSave}}:</label>

0 commit comments

Comments
 (0)