From 0276e341a21bae58df7aa5628366872b0c59c7ec Mon Sep 17 00:00:00 2001 From: valgulnecron <39313199+ValgulNecron@users.noreply.github.com> Date: Mon, 13 Jul 2026 18:37:25 +0200 Subject: [PATCH 1/2] feat(ark): manage CurseForge mods from the Mods tab MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ARK: Survival Ascended declared no capabilities.mods at all, so it had no Mods tab — correct at the time, because ASA has no mods directory and no mods env. Its only hook is a -mods=,... flag on the launch string, which also carries the user's own params, so the file-drop model never fitted. Gameplane now has mods-by-ID: the operator projects the selected mod ids into a template-declared env. ARK declares it in append mode against ASA_START_PARAMS, so the ids are appended to whatever launch params the user set — they never type -mods= themselves. With no mods selected nothing is appended (a bare -mods= would break the server). Adds the CurseForge registry provider for in-app browse (ASA's mod platform). No install/allowedHosts block: the game downloads the mods itself, so the agent never fetches anything here. Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com> --- ark-survival-ascended/README.md | 13 +++++----- ark-survival-ascended/module.yaml | 2 +- ark-survival-ascended/template.yaml | 37 +++++++++++++++++++++-------- 3 files changed, 34 insertions(+), 18 deletions(-) diff --git a/ark-survival-ascended/README.md b/ark-survival-ascended/README.md index 2608384..4069fda 100644 --- a/ark-survival-ascended/README.md +++ b/ark-survival-ascended/README.md @@ -74,13 +74,12 @@ via the Files tab. ## Mods -CurseForge mods install via the game's own `-mods=,` launch -parameter — the server downloads them itself at boot. Append it to -**Launch parameters** (e.g. `...-WinLiveMaxPlayers=70 -mods=931636,889745`). -There is no panel-managed mods folder for this game (no -`capabilities.mods` block): the manual-unzip `.../Mods/` layout only -applies to the singleplayer/manual flow, not the dedicated-server flow -this image runs. +CurseForge mods are managed via the **Mods** tab in the dashboard. Select +mods to install them — the game downloads them itself at boot via the +`-mods=,` launch parameter, which is automatically appended to +your **Launch parameters** string. The manual-unzip `.../Mods/` layout +only applies to the singleplayer/manual flow, not the dedicated-server +flow this image runs. ## Ports diff --git a/ark-survival-ascended/module.yaml b/ark-survival-ascended/module.yaml index ade36fe..bd404ec 100644 --- a/ark-survival-ascended/module.yaml +++ b/ark-survival-ascended/module.yaml @@ -1,7 +1,7 @@ apiVersion: gameplane.local/module/v1 name: ark-survival-ascended displayName: "ARK: Survival Ascended" -version: 1.0.0 +version: 1.0.1 game: ark-survival-ascended summary: "ARK: Survival Ascended dedicated server (mschnitzer/asa-linux-server) with RCON console/moderation. CurseForge mods install via the game's own -mods= launch parameter." homepage: https://survivetheark.com/ diff --git a/ark-survival-ascended/template.yaml b/ark-survival-ascended/template.yaml index 4a39891..a74c477 100644 --- a/ark-survival-ascended/template.yaml +++ b/ark-survival-ascended/template.yaml @@ -58,14 +58,13 @@ metadata: spec: displayName: "ARK: Survival Ascended" game: ark-survival-ascended - version: 1.0.0 + version: 1.0.1 accentColor: "#00b2e2" description: | ARK: Survival Ascended dedicated server using [mschnitzer/asa-linux-server](https://github.com/mschnitzer/ark-survival-ascended-linux-container-image). - RCON-backed console and moderation. Mods install via the game's own - `-mods=` CurseForge launch parameter, not a panel-managed folder — see - the ASA_START_PARAMS field below. + RCON-backed console and moderation. CurseForge mod management via the + Mods tab. image: mschnitzer/asa-linux-server:latest @@ -134,6 +133,24 @@ spec: displayName: Save world icon: save command: "SaveWorld" + mods: + # ASA has no mods directory and no mods env — its only hook is a + # -mods=,... flag on the launch string, which also + # carries the user's own params. So the operator APPENDS the selected + # ids onto ASA_START_PARAMS; the user never types -mods= themselves, + # and with no mods selected nothing is appended (a bare -mods= would + # break the server). + idList: + env: ASA_START_PARAMS + format: " -mods={{ids}}" + separator: "," + mode: append + # ASA mods are distributed through CurseForge. The game downloads them + # itself at boot, so there is deliberately no install/allowedHosts + # block — the agent never fetches anything for this game. + registry: + providers: + - provider: curseforge probes: # Game/peer ports are UDP; RCON is the only TCP port, so it's the @@ -166,12 +183,12 @@ spec: Raw ASA launch string: map + ?query=params, then space-separated -Flag=value CLI args, e.g. player count is " -WinLiveMaxPlayers=70" (a separate arg, not a ?query fragment — matches the image's own - documented example). Append " -mods=," - to install CurseForge mods (the server downloads them itself at - boot). Do NOT put ServerAdminPassword here — the image's own docs - warn against setting it on the command line. Set it via the - Admin / RCON password field below instead, and see README.md for - the one-time step needed to make ASA actually accept it. + documented example). CurseForge mods are managed via the Mods tab + and automatically appended to this string. Do NOT put + ServerAdminPassword here — the image's own docs warn against + setting it on the command line. Set it via the Admin / RCON + password field below instead, and see README.md for the one-time + step needed to make ASA actually accept it. type: string required: true default: "TheIsland_WP?listen?Port=7777?RCONPort=27020?RCONEnabled=True -WinLiveMaxPlayers=70" From a2aea66b905fefa106e6464d8af4f3a1c68a985a Mon Sep 17 00:00:00 2001 From: valgulnecron <39313199+ValgulNecron@users.noreply.github.com> Date: Mon, 13 Jul 2026 19:48:18 +0200 Subject: [PATCH 2/2] =?UTF-8?q?fix(ark):=20set=20the=20image's=20entrypoin?= =?UTF-8?q?t=20=E2=80=94=20the=20server=20never=20started?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The image declares no ENTRYPOINT and its CMD is /bin/bash. With no TTY the container got a non-interactive bash, which read EOF on stdin and exited 0 immediately: the pod restart-looped forever with an EMPTY log and a 'Completed' exit status, which looks nothing like a crash and is why this went unnoticed. Caught on the test cluster after 22 restarts. The image's own docker-compose sets entrypoint: /usr/bin/start_server. Declaring it makes the server actually boot — verified on the cluster: the container now runs, fetches Proton and proceeds to the SteamCMD install. ARK could never have started since the module was written. Signed-off-by: valgulnecron <39313199+ValgulNecron@users.noreply.github.com> --- ark-survival-ascended/template.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/ark-survival-ascended/template.yaml b/ark-survival-ascended/template.yaml index a74c477..1f4df4a 100644 --- a/ark-survival-ascended/template.yaml +++ b/ark-survival-ascended/template.yaml @@ -68,6 +68,13 @@ spec: image: mschnitzer/asa-linux-server:latest + # REQUIRED. The image declares no ENTRYPOINT and its CMD is /bin/bash, so + # without this the container gets a non-interactive bash, which reads EOF + # on stdin and exits 0 immediately — the pod then restart-loops forever + # with an empty log and a "Completed" exit. The image's own compose file + # sets `entrypoint: /usr/bin/start_server`; this is that. + command: ["/usr/bin/start_server"] + env: - name: ENABLE_DEBUG value: "0"