. lib/mkdir_p_for_user
 
 copy_dirtree() {
-    expect_n_args 4 99 'OWNER_TO_ENFORCE (to ignore, pass empty string) SOURCE_ROOT TARGET_ROOT TAG...' $@
+    expect_n_args 4 99 'OWNER_TO_ENFORCE (to ignore, use "-") SOURCE_ROOT TARGET_ROOT TAG...' $@
     _OWNER="$1"
     _SOURCE_ROOT="$2"
     _TARGET_ROOT="$3"
             _PATH_TARGET="${_TARGET_ROOT}"$(echo "${_PATH_REL}" | cut -c 2-)
             _PATH_SOURCE=$(realpath "${_PATH_REL}")
             _DIRECTORY=$(dirname "${_PATH_TARGET}")
-            if [ ! -z "${_OWNER}" ]; then
+            if [ -z "${_OWNER}" = '-' ]; then
                 mkdir_p_for_user "${_OWNER}" "${_DIRECTORY}"
             fi
             cp -av "${_PATH_SOURCE}" "${_PATH_TARGET}"
-            if [ ! -z "${_OWNER}" ]; then
+            if [ -z "${_OWNER}" '-' ]; then
                 chown "${_OWNER}:${_OWNER}" "${_PATH_TARGET}"
             fi
         done
 
 
 ensure_etc_of_tags() {
     _PATH_CONF_ETC="${PATH_CONF}/${PATH_REL_ETC}"
-    copy_dirtree '' "${_PATH_CONF_ETC}" "${PATH_ETC}" $@
+    copy_dirtree '-' "${_PATH_CONF_ETC}" "${PATH_ETC}" $@
 }
 
     shift 3
     _ABORT_MSG=
     if [ "$#" -lt "${_N_MIN_ARGS}" ]; then
-        _ABORT_MSG="missing arguments (got $# instead of ${_N_MAX_ARGS})."
+        _ABORT_MSG="missing arguments (got $# instead of ${_N_MIN_ARGS})."
     elif [ "$#" -gt "${_N_MAX_ARGS}" ]; then
         shift "${_N_MAX_ARGS}"
         _ABORT_MSG="unexpected arguments beyond expected number (${_N_MAX_ARGS}): $@"
 
 
 echo "Adapting caddy's config and reloading it …"
 HASH=$(caddy hash-password --plaintext "${WEB_PASSWORD}")
-sed -i "s/REPLACE_WITH_HASH/${HASH}/g" "${PATH_CADDYFILE}"
-sed -i "s/REPLACE_WITH_FQDN/${FQDN}/g" "${PATH_CADDYFILE}"
+sed -i 's/REPLACE_WITH_HASH/'"${HASH}"'/g' "${PATH_CADDYFILE}"
+sed -i 's/REPLACE_WITH_FQDN/'"${FQDN}"'/g' "${PATH_CADDYFILE}"
 mkdir -p /var/www/dump/private /var/www/dump/public
 systemctl reload caddy