[PR #56] [MERGED] Identity-mount appdata so Wolf config and pairing persist (#54) #67

Closed
opened 2026-10-15 12:55:20 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/games-on-whales/unraid-plugin/pull/56
Author: @JBailes
Created: 6/14/2026
Status: ✅ Merged
Merged: 6/14/2026
Merged by: @JBailes

Base: main ← Head: fix/wolf-config-persistence-identity-mount


📝 Commits (1)

  • 123a8cb Identity-mount appdata so Wolf config and pairing persist (#54)

📊 Changes

2 files changed (+17 additions, -4 deletions)

View changed files

📝 gow.plg (+3 -0)
📝 scripts/deploy.sh (+14 -4)

📄 Description

Problem

Reported in #54: Wolf config and Moonlight pairing are lost on every container restart.

Wolf's container startup.sh unconditionally re-derives its config paths from HOST_APPS_STATE_FOLDER:

export WOLF_CFG_FOLDER=$HOST_APPS_STATE_FOLDER/cfg
export WOLF_CFG_FILE=$WOLF_CFG_FOLDER/config.toml
export WOLF_PRIVATE_KEY_FILE=$WOLF_CFG_FOLDER/key.pem
export WOLF_PRIVATE_CERT_FILE=$WOLF_CFG_FOLDER/cert.pem

(So the WOLF_CFG_FILE we passed in the compose was already dead — startup.sh overrides it.)

#46 set HOST_APPS_STATE_FOLDER to the host appdata path but kept appdata mounted at /etc/wolf inside the container. Wolf then resolved its config folder to the host path (e.g. /mnt/cache/gow/cfg), which isn't mounted in the container, so it wrote config.toml/key.pem/cert.pem to the ephemeral container layer and lost them on every restart. Symptom: re-pair Moonlight after each restart, and the bind-mounted cfg/ stays empty on the host.

Fix

Mount appdata at the same path inside the container as on the host (identity mount), matching Wolf's reference compose. Now the path Wolf derives from HOST_APPS_STATE_FOLDER is the persistent bind mount, and is also valid when Wolf bind-mounts state into the app containers it spawns via the docker socket.

  • wolf service (both nvidia + standard compose blocks): ${APPDATA}:/etc/wolf → ${APPDATA}:${APPDATA}, WOLF_CFG_FILE corrected to ${APPDATA}/cfg/config.toml.
  • wolf-den keeps its /etc/wolf mount (hardcoded /etc/wolf/... paths in its appsettings, points at the same host dir).

The persistent host config location is unchanged (${APPDATA}/cfg/config.toml) — same place that worked before #46, so existing configs are picked up again. No migration needed.

Credit to @shitfacevk for the diagnosis in #54.

Fixes #54

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/games-on-whales/unraid-plugin/pull/56 **Author:** [@JBailes](https://github.com/JBailes) **Created:** 6/14/2026 **Status:** ✅ Merged **Merged:** 6/14/2026 **Merged by:** [@JBailes](https://github.com/JBailes) **Base:** `main` ← **Head:** `fix/wolf-config-persistence-identity-mount` --- ### 📝 Commits (1) - [`123a8cb`](https://github.com/games-on-whales/unraid-plugin/commit/123a8cbdcbb3937a3f9368cac16e39b1602032e4) Identity-mount appdata so Wolf config and pairing persist (#54) ### 📊 Changes **2 files changed** (+17 additions, -4 deletions) <details> <summary>View changed files</summary> 📝 `gow.plg` (+3 -0) 📝 `scripts/deploy.sh` (+14 -4) </details> ### 📄 Description ## Problem Reported in #54: Wolf config and Moonlight pairing are lost on every container restart. Wolf's container `startup.sh` unconditionally re-derives its config paths from `HOST_APPS_STATE_FOLDER`: ```sh export WOLF_CFG_FOLDER=$HOST_APPS_STATE_FOLDER/cfg export WOLF_CFG_FILE=$WOLF_CFG_FOLDER/config.toml export WOLF_PRIVATE_KEY_FILE=$WOLF_CFG_FOLDER/key.pem export WOLF_PRIVATE_CERT_FILE=$WOLF_CFG_FOLDER/cert.pem ``` (So the `WOLF_CFG_FILE` we passed in the compose was already dead — `startup.sh` overrides it.) #46 set `HOST_APPS_STATE_FOLDER` to the host appdata path but kept appdata mounted at `/etc/wolf` inside the container. Wolf then resolved its config folder to the host path (e.g. `/mnt/cache/gow/cfg`), which **isn't mounted in the container**, so it wrote `config.toml`/`key.pem`/`cert.pem` to the ephemeral container layer and lost them on every restart. Symptom: re-pair Moonlight after each restart, and the bind-mounted `cfg/` stays empty on the host. ## Fix Mount appdata at the same path inside the container as on the host (identity mount), matching Wolf's reference compose. Now the path Wolf derives from `HOST_APPS_STATE_FOLDER` is the persistent bind mount, and is also valid when Wolf bind-mounts state into the app containers it spawns via the docker socket. - wolf service (both nvidia + standard compose blocks): `${APPDATA}:/etc/wolf` → `${APPDATA}:${APPDATA}`, `WOLF_CFG_FILE` corrected to `${APPDATA}/cfg/config.toml`. - wolf-den keeps its `/etc/wolf` mount (hardcoded `/etc/wolf/...` paths in its appsettings, points at the same host dir). The persistent host config location is unchanged (`${APPDATA}/cfg/config.toml`) — same place that worked before #46, so existing configs are picked up again. No migration needed. Credit to @shitfacevk for the diagnosis in #54. Fixes #54 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-15 12:55:20 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
games-on-whales/unraid-plugin#67
No description provided.