Fix filebrowser crash-looping on permission denied opening its database

Confirmed from gtstef/filebrowser's own Dockerfile (_docker/Dockerfile):
the image runs as a fixed non-root user (adduser -u 1000 filebrowser;
USER filebrowser), not root and not remappable via PUID/PGID. The
installer's broad `chown -R $ACTUAL_USER:$ACTUAL_USER "$FB_DIR"` left the
bind-mounted ./data owned by $ACTUAL_USER (root, on a box where the
installer itself runs as root) — UID 1000 inside the container then had no
write access to it, so every start failed with "could not open database:
open /home/filebrowser/data/database.db: permission denied" and the
container crash-looped indefinitely (restart: unless-stopped kept retrying
every ~60s, matching the log timestamps this was diagnosed from).

Re-chown ./data to 1000:1000 specifically, after the broad chown so it
isn't clobbered back to $ACTUAL_USER.
This commit is contained in:
Claude
2026-08-10 14:52:48 +00:00
parent 8cd52347ff
commit 3a3833596c
+9
View File
@@ -352,6 +352,15 @@ FB_CONFIG
chown -R "$ACTUAL_USER:$ACTUAL_USER" "$FB_DIR"
# The image runs as a fixed non-root user (adduser -u 1000 filebrowser in
# its Dockerfile, not root and not configurable via PUID/PGID), so the
# bind-mounted ./data — where it opens database.sqlite on every start —
# must actually be writable by UID 1000, not by $ACTUAL_USER from the
# broad chown above. Confirmed live: without this, the container fails
# every single start with "could not open database: ... permission
# denied" and restarts in a crash loop indefinitely.
chown -R 1000:1000 "$FB_DIR/data"
# Deploy fbq-add-source.sh helper
local _TOOLS_DIR
_TOOLS_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../tools" 2>/dev/null && pwd)" || true