-
Notifications
You must be signed in to change notification settings - Fork 4
fix(decypharr): add appuser entry so fusermount3 can resolve UID 1000 #25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| # ============================================================================= | ||
| # Dockerfile.decypharr | ||
| # | ||
| # Thin wrapper around the upstream Decypharr image that adds a /etc/passwd | ||
| # entry for UID 1000 ("appuser"). This is required because the container is | ||
| # run as UID 1000 (via `user: PUID:PGID` in docker-compose.yml) and | ||
| # fusermount3 calls `id -un` to resolve the username before mounting the | ||
| # FUSE filesystem. Without a matching passwd entry fusermount3 exits with: | ||
| # | ||
| # fusermount3: could not determine username | ||
| # | ||
| # …which prevents the rclone WebDAV mount from ever establishing (issue #24). | ||
| # ============================================================================= | ||
|
|
||
| ARG DECYPHARR_VERSION=v2.4 | ||
| FROM ghcr.io/sirrobot01/decypharr:${DECYPHARR_VERSION} | ||
|
|
||
| # adduser flags: | ||
| # -u 1000 match the PUID used at runtime | ||
| # -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 | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 2. Hardcoded uid 1000 only 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
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -19,8 +19,18 @@ services: | |
| # ── Decypharr ────────────────────────────────────────────────── | ||
| # Mocks qBittorrent API for Radarr/Sonarr, connects to TorBox, | ||
| # handles WebDAV mounting via built-in rclone, and creates symlinks. | ||
| # | ||
| # We build a thin local image (Dockerfile.decypharr) on top of the | ||
| # upstream release. The only change is an `adduser` for UID 1000 so | ||
| # that fusermount3 can resolve the username when the container runs as | ||
| # a non-root user (fixes issue #24 / regression from #23). | ||
| decypharr: | ||
| image: ghcr.io/sirrobot01/decypharr:v2.0 | ||
| build: | ||
| context: . | ||
| dockerfile: Dockerfile.decypharr | ||
| args: | ||
| DECYPHARR_VERSION: "v2.4" | ||
| image: torbox-decypharr:v2.4 | ||
|
Comment on lines
+28
to
+33
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 1. Install build context missing 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
|
||
| container_name: decypharr | ||
| user: "${PUID:-1000}:${PGID:-1000}" | ||
| restart: unless-stopped | ||
|
|
||
There was a problem hiding this comment.
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:
Repository: nordicnode/TorBox-Media-Server
Length of output: 4935
🏁 Script executed:
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:
Repository: nordicnode/TorBox-Media-Server
Length of output: 3476
Keep the passwd entry aligned with
PUID.docker-compose.ymlreadsPUIDfrom the environment and uses it fordecypharr.user, butDockerfile.decypharronly creates/etc/passwdfor UID 1000. A supported non-defaultPUIDwill run as an unmapped UID, so the mount path that relies on username resolution can fail again. Generate the passwd entry for the configuredPUIDor reject/constrainPUIDto1000.🤖 Prompt for AI Agents