diff --git a/bin/docker_entrypoint.sh b/bin/docker_entrypoint.sh index 26d7e9f4..29153908 100755 --- a/bin/docker_entrypoint.sh +++ b/bin/docker_entrypoint.sh @@ -17,20 +17,23 @@ export PGID="$(id -g archivebox)" # Check the permissions of the data dir (or create if it doesn't exist) if [[ -d "$DATA_DIR/archive" ]]; then - if touch "$DATA_DIR/archive/.permissions_test_safe_to_delete"; then + if touch "$DATA_DIR/archive/.permissions_test_safe_to_delete" 2>/dev/null; then # It's fine, we are able to write to the data directory rm "$DATA_DIR/archive/.permissions_test_safe_to_delete" # echo "[√] Permissions are correct" else - echo "[X] Error: ArchiveBox (uid=$PUID) is not able to write to your ./data dir. Fix the permissions and retry:" >2 - echo " \$ chown -R $PUID:$PGID data" >2 - echo " You may need to pass PUID & PGID to the Docker container: https://docs.linuxserver.io/general/understanding-puid-and-pgid" >2 + echo "[X] Error: ArchiveBox (uid=$PUID) is not able to write to your ./data dir. Fix the permissions and retry:" >&2 + echo " \$ chown -R $PUID:$PGID data" >&2 + echo " You may need to pass PUID & PGID to the Docker container: https://docs.linuxserver.io/general/understanding-puid-and-pgid" >&2 exit 1 fi else # create data directory mkdir -p "$DATA_DIR/logs" fi + +# force set the ownership of the data dir contents to the archivebox user and group +# this is needed because Docker Desktop often does not map user permissions from the host properly chown $ARCHIVEBOX_USER:$ARCHIVEBOX_USER "$DATA_DIR" "$DATA_DIR"/* # Drop permissions to run commands as the archivebox user