Skip to content

(withdrawn) - #27

Closed
yingerbucang wants to merge 1 commit into
nordicnode:mainfrom
yingerbucang:fix/lsio-user-directive-crash
Closed

yingerbucang wants to merge 1 commit into
nordicnode:mainfrom
yingerbucang:fix/lsio-user-directive-crash

Conversation

@yingerbucang

@yingerbucang yingerbucang commented Sep 29, 2026 •

Copy link
Copy Markdown

(withdrawn)

linuxserver.io images are designed to start as root and drop privileges
internally via PUID/PGID env vars (s6-overlay). Forcing a compose
'user: UID:GID' on them makes s6 run as an unprivileged user that cannot
fix permissions on root-owned dirs, and the container crash-loops:

  /run belongs to uid 0 instead of 1000 - fixing it
  s6-chmod: fatal: unable to change mode of /run: Operation not permitted
  s6-overlay-suexec: fatal: child failed with exit code 111

Reproduced on Ubuntu 24.04 + Docker 29.1.3 with jellyfin:10.11.10:
container restart-loops and nothing listens on 8096. Removing the
user: directive fixes it (PUID/PGID are still honored by s6, so file
ownership is unchanged). Radarr/Sonarr/Prowlarr already work this way
in this compose file; plex had the same latent bug.
@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing

@coderabbitai

coderabbitai Bot commented Sep 29, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: f668c187-256d-4768-afc2-9aac5098e3e5

📥 Commits

Reviewing files that changed from the base of the PR and between 331d771 and 2b5cd9d.

📒 Files selected for processing (1)
  • docker-compose.yml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The Plex and Jellyfin services no longer set Compose’s user directive. Both services retain their PUID/PGID environment settings. A comment explains the LinuxServer image startup constraint.

Changes

Container startup configuration

Layer / File(s) Summary
Service user settings
docker-compose.yml
The Plex and Jellyfin services no longer set Compose’s user directive. Their PUID/PGID environment settings remain. A comment explains why LinuxServer images must start as root.

Priority: ➖ Normal

Estimated code review effort: 1 (Trivial) | ~3 minutes

Change: Bug fix

Suggested reviewers: nordicnode

Merge Risk: ⚪ Minimal · up to 2b5cd

The change removes the startup override from both services while preserving their configured ownership settings; no merge-blocking risk remains.

Security Architecture Review

Security architecture risk: 🔵 Low · up to 2b5cd

The change restores the images’ intended startup configuration without adding ports, mounts, or capabilities. Initial privileged execution now depends on the images correctly dropping application privileges. No vulnerability was established, but the exact images’ privilege-dropping and recovery behavior remains unverified.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — The intended privileged startup phase can affect each service’s configuration and shared media/remote host paths. Shared mounts extend potential filesystem effects beyond one application’s private configuration. The declared service configuration does not establish host-wide authority or a container escape.

Trust Boundaries and Controls

  • inferred — Existing network requests still reach the applications through the shared container network and loopback-published ports. Whether request-handling processes have dropped to PUID/PGID before accepting traffic is now an image-enforced boundary, not a Compose-enforced identity guarantee. Retained root request handling was not demonstrated.

Resilience and Maintainability Implications

  • inferred — Separate configuration directories reduce direct configuration sharing, but shared writable mounts remain. Restart and health settings do not establish idempotent ownership repair, safe concurrent initialization, or privilege invariants after interruption; those behaviors require image or deployment evidence.

Hardening Proposals

  • proposed — Validate the deployed image versions’ serving-process UID/GID and effective capabilities, including retained supervisors or helpers. Include interrupted initialization, repeated restarts, shared-mount use, and rollback ownership checks. This would resolve the enforcement uncertainty rather than confirm an observed vulnerability.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely identifies the main change: removing the Compose user directive from the Jellyfin and Plex LinuxServer.io services.
Description check ✅ Passed The description clearly explains the problem, root cause, fix, affected services, and test results. It does not use all template sections, including Related Issue / PR, Type of Change, and Checklist, …
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@yingerbucang

Copy link
Copy Markdown
Author

Withdrawing — please disregard.

@yingerbucang yingerbucang changed the title fix(compose): drop user: directive from LSIO services (jellyfin, plex) (withdrawn) Sep 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant