- Add structured logging function for consistent output
- Implement robust numeric validation for PUID/PGID environment variables
- Improve safe_copy with atomic operations and comprehensive error handling
- Optimize permission fixing with better performance and root user checks
- Restructure code with main function for improved organization
- Remove default ENV vars from Dockerfile to simplify conf
- Default PUID, PGID, and UMASK environment variables removed from Dockerfile - users must now explicitly set these if needed
- Remove permission fixing for /config directory
- Add graceful error handling for su-exec privilege dropping
- Fall back to running as root with warning if su-exec fails
- Call fix_permissions only when running as root to avoid permission
errors
- Fix /config ownership only under root
- If running as root, drop privileges via su-exec to PUID:PGID; if
already non-root, execute the command as-is
This prevents failures when the container is started as a non-root user
(e.g., via docker-compose user) while preserving the existing behavior
for root runs.
- add entrypoint.sh to run as PUID/PGID via su-exec, set UMASK,
copy config.yml.sample into /config atomically, and fix ownership
- update Dockerfile to set QBM_DOCKER, PUID/PGID/UMASK defaults, install
su-exec, and use tini + entrypoint
- add util.in_docker() and use it to auto-detect container runtime
- adjust default config dir fallback to prefer /config when sample
YAML exists
- improve version banner to indicate Docker runtime