Skip to content

fix(decypharr): add appuser entry so fusermount3 can resolve UID 1000 - #25

Merged
nordicnode merged 1 commit into
mainfrom
fix/decypharr-fuse-user-issue-24
Jul 30, 2026
Merged

fix(decypharr): add appuser entry so fusermount3 can resolve UID 1000#25
nordicnode merged 1 commit into
mainfrom
fix/decypharr-fuse-user-issue-24

Conversation

@nordicnode

@nordicnode nordicnode commented Jul 30, 2026

Copy link
Copy Markdown
Owner

Fixes #24

When the user: "${PUID}:${PGID}" directive from #23 runs Decypharr as UID 1000, fusermount3 calls id -un to resolve the username. The base ghcr.io/sirrobot01/decypharr image has no /etc/passwd entry for UID 1000, so fusermount3 prints:

fusermount3: could not determine username

This causes the rclone FUSE/WebDAV mount to fail entirely, leaving all Downloaded files unresolvable and Sonarr/Radarr in a permanent error state with "timeout waiting for mount files".

Fix: introduce a thin Dockerfile.decypharr that extends the upstream image with a single adduser call. Also bumps the pinned image to v2.4 (the version the reporter confirmed works after the patch) and updates docker-compose.yml to use the local build.

Description

Describe your changes and the reasoning behind them.

Related Issue / PR

Fixes # (issue) or relates to # (PR)

Type of Change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • Documentation update (non-breaking change to README or other docs)
  • Style/Formatting update (non-breaking formatting change)

How Has This Been Tested?

Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce.

  • Run E2E test suite: bash tests/test_e2e.sh
  • Output / Verification details:

Checklist

  • My code follows the style guidelines of this project (run shfmt on shell scripts)
  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings/errors in the test suite

Summary by CodeRabbit

  • Chores
    • Updated the Decypharr container to version 2.4.
    • The service now builds from the included container configuration and uses a locally tagged image.
    • Improved container compatibility for deployments running under a non-root user with UID 1000.

Fixes #24

When the `user: "${PUID}:${PGID}"` directive from #23 runs Decypharr
as UID 1000, fusermount3 calls `id -un` to resolve the username. The
base ghcr.io/sirrobot01/decypharr image has no /etc/passwd entry for
UID 1000, so fusermount3 prints:

  fusermount3: could not determine username

This causes the rclone FUSE/WebDAV mount to fail entirely, leaving all
Downloaded files unresolvable and Sonarr/Radarr in a permanent error
state with "timeout waiting for mount files".

Fix: introduce a thin Dockerfile.decypharr that extends the upstream
image with a single `adduser` call. Also bumps the pinned image to
v2.4 (the version the reporter confirmed works after the patch) and
updates docker-compose.yml to use the local build.
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

The change adds a local Decypharr image wrapper based on upstream v2.4, creates an appuser entry for UID 1000, and updates Docker Compose to build and use the wrapper image.

Changes

Decypharr mount fix

Layer / File(s) Summary
Build and wire the local Decypharr image
Dockerfile.decypharr, docker-compose.yml
The wrapper adds a UID-1000 appuser entry for fusermount3 username resolution, while Compose builds it with DECYPHARR_VERSION: "v2.4" and uses the resulting local image.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Description check ⚠️ Warning The description has the bug context and issue link, but the template fields for type, testing, and checklist are left unfilled. Fill in the Type of Change selection, add concrete test steps and results, and complete the checklist items before merging.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly states the main fix: adding an appuser entry so fusermount3 can resolve UID 1000.
Linked Issues check ✅ Passed The code adds the UID 1000 passwd entry and switches Compose to the local build, matching #24's fix.
Out of Scope Changes check ✅ Passed The changes stay focused on the Decypharr UID 1000 mount fix and related image wiring, with no clear unrelated edits.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/decypharr-fuse-user-issue-24

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.

@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

Fix Decypharr FUSE mount by adding UID 1000 passwd entry via wrapper image

🐞 Bug fix ⚙️ Configuration changes 🕐 10-20 Minutes

Grey Divider

AI Description

• Build a thin Decypharr wrapper image that adds an /etc/passwd entry for UID 1000.
• Switch docker-compose to build the local image so fusermount3 can resolve the username.
• Bump the upstream Decypharr base image pin to v2.4 (reporter-verified).
Diagram

graph TD
  A["docker-compose.yml"] --> B["Local image build"] --> C["Dockerfile.decypharr"] --> D{{"Upstream Decypharr v2.4"}} --> E["Decypharr container (UID 1000)"] --> F["fusermount3 (id -un)"] --> G["rclone WebDAV FUSE mount"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Run Decypharr as root (remove/avoid PUID:PGID)
  • ➕ Avoids the UID→username resolution problem entirely
  • ➕ No custom image/build step needed
  • ➖ Worse security posture and broader filesystem permissions
  • ➖ Regresses the goal of [BUG] Decypharr keeps restarting #23 (non-root execution)
2. Bind-mount a passwd entry (or use nss_wrapper) instead of building an image
  • ➕ No Docker build required; can be applied at runtime
  • ➕ Potentially reusable across multiple services
  • ➖ More brittle and environment-specific (host passwd/user IDs, mount paths)
  • ➖ Harder to support/document reliably across platforms

Recommendation: The PR’s approach (thin wrapper image adding a UID 1000 user) is the most robust and portable fix: it keeps non-root execution while guaranteeing fusermount3 can resolve the username inside the container. The added build step is minimal and explicitly pinned to the reporter-confirmed upstream version.

Files changed (2) +34 / -1

Bug fix (1) +23 / -0
Dockerfile.decypharrAdd wrapper image that creates appuser (UID 1000) for FUSE compatibility +23/-0

Add wrapper image that creates appuser (UID 1000) for FUSE compatibility

• Introduces a minimal Dockerfile extending the upstream Decypharr image and adds an 'appuser' entry with UID 1000. This ensures 'fusermount3' can resolve 'id -un' when the container runs as PUID 1000, preventing mount failures.

Dockerfile.decypharr

Other (1) +11 / -1
docker-compose.ymlBuild local Decypharr image (v2.4) instead of pulling v2.0 directly +11/-1

Build local Decypharr image (v2.4) instead of pulling v2.0 directly

• Updates the Decypharr service to build from 'Dockerfile.decypharr' with a version build-arg pinned to v2.4, and tags the resulting local image. Adds inline documentation explaining why the wrapper is required for fusermount3 under non-root execution.

docker-compose.yml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@Dockerfile.decypharr`:
- Line 23: Update the Dockerfile.decypharr user setup so the `/etc/passwd` entry
uses the configured `PUID` consumed by `docker-compose.yml`, rather than
hardcoding UID 1000; alternatively, explicitly constrain supported `PUID` values
to 1000 and ensure the compose configuration enforces that constraint.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9e892e0d-2cbd-478b-8cd5-566a2bbb9128

📥 Commits

Reviewing files that changed from the base of the PR and between 7993992 and 2bbe78f.

📒 Files selected for processing (2)
  • Dockerfile.decypharr
  • docker-compose.yml

Comment thread Dockerfile.decypharr
# -D no password (daemon account)
# -H do not create a home directory
# -s /bin/sh minimal shell (required by some FUSE helpers)
RUN adduser -u 1000 -D -H -s /bin/sh appuser

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== files =="
git ls-files | sed -n '1,200p'

echo "== locate decypharr docker/compose =="
fd -a 'Dockerfile\.decypharr|decypharr' . | sed -n '1,200p'

echo "== dockerfile decypharr =="
if [ -f Dockerfile.decypharr ]; then
  cat -n Dockerfile.decypharr
fi

echo "== compose files references to PUID =="
rg -n '\bPUID\b|uid_env|PUID.*Decypharr|Decypharr.*PUID|adduser -u 1000' -S . || true

Repository: nordicnode/TorBox-Media-Server

Length of output: 4935


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== docker-compose.yml decypharr section =="
cat -n docker-compose.yml | sed -n '1,220p' | rg -n 'decypharr|PUID|user:|appuser|environment|volumes|depends|build:' -C 12 || cat -n docker-compose.yml | sed -n '1,220p'

echo "== compose service excerpts around decypharr/user keys =="
python3 - <<'PY'
from pathlib import Path
p=Path('docker-compose.yml')
text=p.read_text()
for i,line in enumerate(text.splitlines(),1):
    if ':decypharr' in line or line.startswith('    user:') or 'PUID=${PUID:-' in line:
        start=max(1,i-8); end=min(len(text.splitlines()), i+8)
        lines=text.splitlines()
        print(f'--- around line {i} ---')
        for n in range(start,end+1):
            if n==i: print(f'{n:4}: {lines[n-1]}  <--')
            else: print(f'{n:4}: {lines[n-1]}')
PY

echo "== deterministic parse of docker-compose user/env patterns =="
python3 - <<'PY'
from pathlib import Path
import re
text=Path('docker-compose.yml').read_text().splitlines()
# simple per-service collection: service names start at column 0, keys indented
services=[]; cur=None
for i,line in enumerate(text,1):
    if not line.startswith('  ') and not line.startswith('\t') and ':' in line and not line.startswith('#'):
        parts=line.split(':',1); keys=parts[0].split()
        if keys:
            cur=(keys[0],i,line)
            services.append(cur)
print('services detected:')
for s in services:
    print(s)
# collect decypharr block
service=None; lines=[]; decypharr_end=None
for i,line in enumerate(text,1):
    if line.rstrip() == 'decypharr:':
        service=i
        decypharr_end=i+1
    elif service and i>service:
        if line.startswith('  ') and not line.startswith('    '):
            decypharr_end=i
            break
        if not line or line.startswith('#'):
            continue
        lines.append((i,line))
if service and lines:
    print('decypharr user/env content lines:')
    for i,line in lines:
        print(f'{i}: {line}')
    print('contains PUID expression with custom env:', any('PUID=${PUID:-' in l for _,l in lines))
PY

Repository: nordicnode/TorBox-Media-Server

Length of output: 13491


🌐 Web query:

ghcr.io sirrobot01 decypharr Dockerfile adduser fusermount3 rclone

💡 Result:

Decypharr is a media gateway for Debrid services and Usenet that uses a Docker-based architecture to provide a unified interface for applications like Sonarr and Radarr [1][2]. The project's Dockerfile includes configurations to support Rclone mounting, which is a key feature for exposing Debrid content as a local filesystem [3][4]. Technical details regarding your query: Dockerfile Configuration: The project's Dockerfile is designed to handle Rclone dependencies and FUSE-based mounting [5][6]. It installs fuse3, shadow, and other utilities [5]. A specific line, echo "user_allow_other" >> /etc/fuse.conf, is included to enable non-root users to mount FUSE filesystems [5]. The Dockerfile also includes logic to download and install the current Rclone binary for the host's architecture (amd64, arm64, or arm) [5][6]. User Management: The inclusion of shadow and su-exec in the Dockerfile indicates that the image supports user and group ID management (via PUID/PGID), which is standard practice for containerized media applications to ensure consistent file permissions on mounted volumes [3][5]. FUSE and Rclone Integration: Decypharr utilizes Rclone's remote control (RC) server to manage mounts [4][7]. For successful operation, especially when using Rclone mounting features, the following requirements are typically noted in documentation and configuration: - Device: Access to /dev/fuse is required [3]. - Capabilities: The container must be run with the SYS_ADMIN capability [3]. - Mount Propagation: A /mnt volume with rshared propagation is recommended for Rclone mounts to be accessible outside the container [3]. Troubleshooting: If you encounter mounting issues, ensure that the container has sufficient privileges (SYS_ADMIN) and that /dev/fuse is correctly exposed [3]. Some users have noted that ensuring the Rclone configuration files have appropriate permissions (or running the container with correct PUID/PGID) is necessary for the Rclone RC server to initialize mounts correctly [8]. The application documentation also highlights that if FUSE or fusermount3 is not available, the system may fall back to WebDAV access [9][4].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== upstream dockerfile v2.4 =="
curl -fsSL "https://raw.githubusercontent.com/sirrobot01/decypharr/v2.4/Dockerfile" | sed -n '1,220p'

echo "== static shell behavior for current compose substitution =="
python3 - <<'PY'
import pathlib, re, sys
text = pathlib.Path("docker-compose.yml").read_text().splitlines()
service = None
for i, line in enumerate(text, 1):
    if line.rstrip() == "decypharr:":
        service = i
    elif service and i > service and not line.startswith("        ") and not line.startswith("          "):
        break
    if line.startswith("     user:") or "PUID=${PUID:-" in line:
        print(f"{i}: {line}")
PY
python3 - <<'PY'
import pathlib
text = pathlib.Path("docker-compose.yml").read_text()
m = re.search(r'user:\s*(.*?)[\n#]', text, re.S)
print("user expression:", m.group(1).strip() if m else None)
print("allows custom PUID != default:", 'PUID:-1000' in text)
print("local passwd arg fixed to 1000:", 'RUN adduser -u 1000' in pathlib.Path("Dockerfile.decypharr").read_text())
PY

Repository: nordicnode/TorBox-Media-Server

Length of output: 3476


Keep the passwd entry aligned with PUID.

docker-compose.yml reads PUID from the environment and uses it for decypharr.user, but Dockerfile.decypharr only creates /etc/passwd for UID 1000. A supported non-default PUID will run as an unmapped UID, so the mount path that relies on username resolution can fail again. Generate the passwd entry for the configured PUID or reject/constrain PUID to 1000.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Dockerfile.decypharr` at line 23, Update the Dockerfile.decypharr user setup
so the `/etc/passwd` entry uses the configured `PUID` consumed by
`docker-compose.yml`, rather than hardcoding UID 1000; alternatively, explicitly
constrain supported `PUID` values to 1000 and ensure the compose configuration
enforces that constraint.

@nordicnode
nordicnode merged commit 558d50f into main Jul 30, 2026
5 checks passed
@qodo-code-review

Copy link
Copy Markdown

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (0) 📜 Skill insights (0)

Context used
✅ Compliance rules (platform): 10 rules

Grey Divider


Action required

1. Install build context missing 🐞 Bug ☼ Reliability
Description
docker-compose.yml now builds Decypharr from Dockerfile.decypharr, but setup.sh/setup.ps1 only copy
docker-compose.yml into the install directory. Running docker compose up from the install
directory (as generated manage.sh does) will fail because the referenced Dockerfile.decypharr is not
present in the build context.
Code

docker-compose.yml[R28-33]

+    build:
+      context: .
+      dockerfile: Dockerfile.decypharr
+      args:
+        DECYPHARR_VERSION: "v2.4"
+    image: torbox-decypharr:v2.4
Evidence
The Decypharr service now requires a local Dockerfile for builds, but both Linux and Windows setup
flows copy only the compose file into the install directory where Compose is executed, so the
Dockerfile won’t exist at runtime.

docker-compose.yml[19-36]
setup.sh[1319-1327]
setup.ps1[547-574]
setup.sh[1429-1436]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`docker-compose.yml` now uses `build:` with `dockerfile: Dockerfile.decypharr`, but the installation workflow only copies `docker-compose.yml` into the install directory. Since users operate the stack from the install directory (via generated `manage.sh` and setup startup), Decypharr cannot be built and startup fails.

## Issue Context
- `setup.sh` and `setup.ps1` both copy only `docker-compose.yml` to the install directory.
- The generated `manage.sh` runs Compose from that install directory, so `build.context: .` resolves to the install directory.

## Fix Focus Areas
- setup.sh[1319-1324]
- setup.ps1[547-559]
- docker-compose.yml[28-33]
- setup.sh[1429-1436]

## Suggested fix
1. Copy `Dockerfile.decypharr` into the install directory alongside `docker-compose.yml` in both:
  - `generate_docker_compose()` in `setup.sh`
  - `Invoke-GenerateDockerCompose` in `setup.ps1`
2. (Optional but helpful) Adjust `manage.sh pull/update` messaging or flow so it rebuilds the local image when appropriate (e.g., `docker compose build --pull decypharr`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

2. Hardcoded UID 1000 only 🐞 Bug ≡ Correctness
Description
Dockerfile.decypharr only adds a passwd entry for UID 1000, while docker-compose.yml supports
running Decypharr as arbitrary ${PUID}:${PGID}. If a user sets PUID to a non-1000 value and the
upstream image lacks that UID entry, fusermount3’s id -un lookup can still fail and the mount
issue remains.
Code

Dockerfile.decypharr[23]

+RUN adduser -u 1000 -D -H -s /bin/sh appuser
Evidence
The PR adds a user entry specifically for UID 1000, but the repository’s install flow and docs
support customizing PUID/PGID; that means the fix can be incomplete for non-default IDs.

Dockerfile.decypharr[15-23]
docker-compose.yml[33-36]
README.md[242-255]
.env.example[41-50]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The wrapper image creates only UID 1000 (`appuser`). However, the stack explicitly supports custom PUID/PGID values at runtime. For custom PUIDs, the container may still lack a matching `/etc/passwd` entry and trigger the same fusermount3 username-resolution failure the PR is aiming to prevent.

## Issue Context
- Compose runs the container as `${PUID:-1000}:${PGID:-1000}`.
- Setup/README indicate PUID/PGID are configurable.
- The Dockerfile hardcodes `-u 1000`.

## Fix Focus Areas
- Dockerfile.decypharr[15-23]
- docker-compose.yml[28-36]
- README.md[242-255]
- .env.example[41-50]

## Suggested fix
Option A (build-time param, simplest):
1. Add `ARG APP_UID=1000` (and optionally `ARG APP_GID=1000`).
2. Use `RUN adduser -u ${APP_UID} ...` (and create/update group if needed for your base OS).
3. In `docker-compose.yml`, pass build args from env: `APP_UID: "${PUID:-1000}"` (and `APP_GID: "${PGID:-1000}"`).
4. Document that changing PUID/PGID requires rebuilding the image.

Option B (runtime entry, most flexible):
Create the passwd entry on container startup using the actual runtime UID/GID, so PUID changes don’t require rebuilds.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

To customize comments, go to the Qodo configuration screen, or learn more in the docs.

Qodo Logo

Comment thread docker-compose.yml
Comment on lines +28 to +33
build:
context: .
dockerfile: Dockerfile.decypharr
args:
DECYPHARR_VERSION: "v2.4"
image: torbox-decypharr:v2.4

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Install build context missing 🐞 Bug ☼ Reliability

docker-compose.yml now builds Decypharr from Dockerfile.decypharr, but setup.sh/setup.ps1 only copy
docker-compose.yml into the install directory. Running docker compose up from the install
directory (as generated manage.sh does) will fail because the referenced Dockerfile.decypharr is not
present in the build context.
Agent Prompt
## Issue description
`docker-compose.yml` now uses `build:` with `dockerfile: Dockerfile.decypharr`, but the installation workflow only copies `docker-compose.yml` into the install directory. Since users operate the stack from the install directory (via generated `manage.sh` and setup startup), Decypharr cannot be built and startup fails.

## Issue Context
- `setup.sh` and `setup.ps1` both copy only `docker-compose.yml` to the install directory.
- The generated `manage.sh` runs Compose from that install directory, so `build.context: .` resolves to the install directory.

## Fix Focus Areas
- setup.sh[1319-1324]
- setup.ps1[547-559]
- docker-compose.yml[28-33]
- setup.sh[1429-1436]

## Suggested fix
1. Copy `Dockerfile.decypharr` into the install directory alongside `docker-compose.yml` in both:
   - `generate_docker_compose()` in `setup.sh`
   - `Invoke-GenerateDockerCompose` in `setup.ps1`
2. (Optional but helpful) Adjust `manage.sh pull/update` messaging or flow so it rebuilds the local image when appropriate (e.g., `docker compose build --pull decypharr`).

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

Comment thread Dockerfile.decypharr
# -D no password (daemon account)
# -H do not create a home directory
# -s /bin/sh minimal shell (required by some FUSE helpers)
RUN adduser -u 1000 -D -H -s /bin/sh appuser

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

2. Hardcoded uid 1000 only 🐞 Bug ≡ Correctness

Dockerfile.decypharr only adds a passwd entry for UID 1000, while docker-compose.yml supports
running Decypharr as arbitrary ${PUID}:${PGID}. If a user sets PUID to a non-1000 value and the
upstream image lacks that UID entry, fusermount3’s id -un lookup can still fail and the mount
issue remains.
Agent Prompt
## Issue description
The wrapper image creates only UID 1000 (`appuser`). However, the stack explicitly supports custom PUID/PGID values at runtime. For custom PUIDs, the container may still lack a matching `/etc/passwd` entry and trigger the same fusermount3 username-resolution failure the PR is aiming to prevent.

## Issue Context
- Compose runs the container as `${PUID:-1000}:${PGID:-1000}`.
- Setup/README indicate PUID/PGID are configurable.
- The Dockerfile hardcodes `-u 1000`.

## Fix Focus Areas
- Dockerfile.decypharr[15-23]
- docker-compose.yml[28-36]
- README.md[242-255]
- .env.example[41-50]

## Suggested fix
Option A (build-time param, simplest):
1. Add `ARG APP_UID=1000` (and optionally `ARG APP_GID=1000`).
2. Use `RUN adduser -u ${APP_UID} ...` (and create/update group if needed for your base OS).
3. In `docker-compose.yml`, pass build args from env: `APP_UID: "${PUID:-1000}"` (and `APP_GID: "${PGID:-1000}"`).
4. Document that changing PUID/PGID requires rebuilding the image.

Option B (runtime entry, most flexible):
Create the passwd entry on container startup using the actual runtime UID/GID, so PUID changes don’t require rebuilds.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@qodo-code-review

Copy link
Copy Markdown

Qodo Fixer

🍒 Ready to be cherry-picked — ✅ Merged (0) · ☑ Fixed (2)

Grey Divider

🔗 Fix PR: #26

This fix PR was closed automatically. Its branch is preserved so you can cherry pick the changes into the original PR.

Prompt for coding agent

This is an automated fix prepared on a separate branch (#26). It is NOT applied to this PR.
To use it: review Fix PR #26 (https://github.com/nordicnode/TorBox-Media-Server/pull/26), evaluate each change critically against your local context, and cherry-pick the changes that are correct into this branch. Do not accept them blindly.
Process — 2 fixed
  • ☑ Fixed: Install build context missing
  • ☑ Fixed: Hardcoded UID 1000 only

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[BUG] Decypharr downloads fail with "timeout waiting for mount files" after #23 fix

1 participant