diff --git a/Dockerfile b/Dockerfile
index 4d9684b..b83a323 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,9 +1,12 @@
-FROM lukechannings/deno:v1.38.2
+FROM lukechannings/deno:v1.38.3
 # The volume that will keep the space data
-# Create a volume first:
+
+# Either create a volume:
 #   docker volume create myspace
 # Then bind-mount it when running the container with the -v flag, e.g.:
 #   docker run -v myspace:/space -p3000:3000 -it zefhemel/silverbullet
+# Or simply mount an existing folder into the container:
+#   docker run -v /path/to/my/folder:/space -p3000:3000 -it zefhemel/silverbullet
 VOLUME /space
 
 # Accept TARGETARCH as argument
@@ -13,7 +16,6 @@ ARG TARGETARCH
 ENV TINI_VERSION v0.19.0
 ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini-${TARGETARCH} /tini
 
-
 # Make sure the deno user has access to the space volume
 RUN mkdir -p /space \
     && chmod +x /tini \
@@ -34,11 +36,13 @@ RUN mkdir -p /space \
 # Port map this when running, e.g. with -p 3002:3000 (where 3002 is the host port)
 EXPOSE 3000
 
+# Always binding to this IP, otherwise the server wouldn't be available
 ENV SB_HOSTNAME 0.0.0.0
 ENV SB_FOLDER /space
 
 # Copy the bundled version of silverbullet into the container
 ADD ./dist/silverbullet.js /silverbullet.js
+# As well as the docker-entrypoint.sh script
 ADD ./docker-entrypoint.sh /docker-entrypoint.sh
 
 # Run the server, allowing to pass in additional argument at run time, e.g.
diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
index 468255e..5cecc20 100755
--- a/docker-entrypoint.sh
+++ b/docker-entrypoint.sh
@@ -1,25 +1,27 @@
-#!/bin/bash
+#!/bin/bash -e
 
-# Check if UID and GID are passed as environment variables
-if [ -z "$UID" ]; then
+# Check if UID and GID are passed as environment variables, if not, extract from the space folder owner
+if [ -z "$PUID" ]; then
     # Get the UID of the folder owner
-    UID=$(stat -c "%u" "$SB_FOLDER")
+    PUID=$(stat -c "%u" "$SB_FOLDER")
+    echo "Will run SilverBullet with UID $PUID, inferred from the owner of $SB_FOLDER (set PUID environment variable to override)"
 fi
-
-if [ -z "$GID" ]; then
+if [ -z "$PGID" ]; then
     # Get the GID of the folder owner
-    GID=$(stat -c "%g" "$SB_FOLDER")
+    PGID=$(stat -c "%g" "$SB_FOLDER")
 fi
 
-echo "Doing this as $UID, $GID"
-
-ls -l /space
-
-if [ "$UID" -eq 0 ]; then
-    # If the UID is 0, the user is root
+if [ "$PUID" -eq "0" ]; then
+    echo "Will run SilverBullet as root"
     deno run -A --unstable /silverbullet.js $@
-    exit
 else
-    useradd -M -u $UID -g $GID silverbullet
-    su silverbullet -s /bin/bash -c "deno run -A --unstable /silverbullet.js $@"
+    # Create silverbullet user and group ad-hoc mapped to PUID and PGID
+    groupadd -g $PGID silverbullet
+    useradd -M -u $PUID -g $PGID silverbullet
+    # And make sure /deno-dir (Deno cache) is accessible
+    chown -R $PUID:$PGID /deno-dir
+    # And run via su as the newly mapped 'silverbullet' user
+    args="$@"
+    su silverbullet -s /bin/bash -c "deno run -A --unstable /silverbullet.js $args"
 fi
+