[PR #52] [MERGED] Match Wolf's embedded PulseAudio and fix socket volume ownership #66

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/52
Author: @JBailes
Created: 6/8/2026
Status: ✅ Merged
Merged: 6/8/2026
Merged by: @JBailes

Base: main ← Head: fix/embedded-pulseaudio-socket-ownership


📝 Commits (1)

  • 138a887 Match Wolf's embedded PulseAudio and fix socket volume ownership (#50)

📊 Changes

4 files changed (+24 additions, -4 deletions)

View changed files

📝 gow.plg (+5 -0)
📝 scripts/deploy.sh (+8 -3)
📝 scripts/uninstall.sh (+3 -1)
📝 scripts/update.sh (+8 -0)

📄 Description

Fixes the PulseAudio failures reported in #50 (comment by @bpivk on Unraid 7.3.1) after Wolf moved PulseAudio inside the Wolf container.

Background

games-on-whales/wolf#422 runs PulseAudio inside the Wolf container under supervisord (waiting for the PA socket before launching Wolf) instead of the external WolfPulseAudio sidecar. The embedded PulseAudio runs as root, but the persisted wolf-socket Docker volume kept /tmp/sockets owned by the old sidecar's run uid (1000). So on upgrade PulseAudio refused to start:

E: [pulseaudio] core-util.c: XDG_RUNTIME_DIR (/tmp/sockets) is not owned by us (uid 0), but by uid 1000!

which cascaded into WolfApi SSE failures in Wolf Den. @bpivk's manual workaround was docker exec -it wolf chown root:root /tmp/sockets.

We can't bind-mount the socket dir from /mnt/user (shfs/FUSE won't host unix sockets), so the named volume stays — it just needs to come back root-owned.

Changes

  • deploy.sh, update.sh, uninstall.sh: use docker compose down -v so the non-external wolf-socket runtime volume is recreated root-owned. The external nvidia-driver-vol is never removed by down -v, and wolf-socket only holds runtime sockets, so recreating it is safe.
  • update.sh: also drops any leftover WolfPulseAudio sidecar before bringing the stack back up.
  • deploy.sh: remove the now-unused WOLF_PULSE_CONTAINER_TIMEOUT_MS env. Wolf waits for the PulseAudio socket directly now, so there's no timeout to tune.
  • gow.plg: changelog entry.

Testing

  • bash -n passes on all three scripts.
  • Rendered the generated docker-compose.yml (host/standard) and confirmed it parses as valid YAML, the timeout env is gone, XDG_RUNTIME_DIR=/tmp/sockets is retained, and PULSE_SERVER is left unset so Wolf's embedded mode activates.

🤖 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/52 **Author:** [@JBailes](https://github.com/JBailes) **Created:** 6/8/2026 **Status:** ✅ Merged **Merged:** 6/8/2026 **Merged by:** [@JBailes](https://github.com/JBailes) **Base:** `main` ← **Head:** `fix/embedded-pulseaudio-socket-ownership` --- ### 📝 Commits (1) - [`138a887`](https://github.com/games-on-whales/unraid-plugin/commit/138a887ff709a7c766c0e4c4d377c18a43f46d9f) Match Wolf's embedded PulseAudio and fix socket volume ownership (#50) ### 📊 Changes **4 files changed** (+24 additions, -4 deletions) <details> <summary>View changed files</summary> 📝 `gow.plg` (+5 -0) 📝 `scripts/deploy.sh` (+8 -3) 📝 `scripts/uninstall.sh` (+3 -1) 📝 `scripts/update.sh` (+8 -0) </details> ### 📄 Description Fixes the PulseAudio failures reported in #50 (comment by @bpivk on Unraid 7.3.1) after Wolf moved PulseAudio inside the Wolf container. ## Background [games-on-whales/wolf#422](https://github.com/games-on-whales/wolf/pull/422) runs PulseAudio inside the Wolf container under supervisord (waiting for the PA socket before launching Wolf) instead of the external `WolfPulseAudio` sidecar. The embedded PulseAudio runs as **root**, but the persisted `wolf-socket` Docker volume kept `/tmp/sockets` owned by the old sidecar's run uid (**1000**). So on upgrade PulseAudio refused to start: ``` E: [pulseaudio] core-util.c: XDG_RUNTIME_DIR (/tmp/sockets) is not owned by us (uid 0), but by uid 1000! ``` which cascaded into `WolfApi` SSE failures in Wolf Den. @bpivk's manual workaround was `docker exec -it wolf chown root:root /tmp/sockets`. We can't bind-mount the socket dir from `/mnt/user` (shfs/FUSE won't host unix sockets), so the named volume stays — it just needs to come back root-owned. ## Changes - `deploy.sh`, `update.sh`, `uninstall.sh`: use `docker compose down -v` so the non-external `wolf-socket` runtime volume is recreated root-owned. The `external` `nvidia-driver-vol` is never removed by `down -v`, and `wolf-socket` only holds runtime sockets, so recreating it is safe. - `update.sh`: also drops any leftover `WolfPulseAudio` sidecar before bringing the stack back up. - `deploy.sh`: remove the now-unused `WOLF_PULSE_CONTAINER_TIMEOUT_MS` env. Wolf waits for the PulseAudio socket directly now, so there's no timeout to tune. - `gow.plg`: changelog entry. ## Testing - `bash -n` passes on all three scripts. - Rendered the generated `docker-compose.yml` (host/standard) and confirmed it parses as valid YAML, the timeout env is gone, `XDG_RUNTIME_DIR=/tmp/sockets` is retained, and `PULSE_SERVER` is left unset so Wolf's embedded mode activates. 🤖 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#66
No description provided.