From e2860ed36d42054dd47b65214469b30407ae8451 Mon Sep 17 00:00:00 2001 From: Trenton H <797416+stumpylog@users.noreply.github.com> Date: Mon, 14 Apr 2025 08:21:45 -0700 Subject: [PATCH] Fix: Explicitly set the HOME environment variable for running as root at startup (#9643) * Explicitly set the HOME environment for the migrations to fix issue with certificates * Defines the HOME globally when we're running as root for startup --- .../etc/s6-overlay/s6-rc.d/init-migrations/migrate.sh | 7 ------- .../rootfs/etc/s6-overlay/s6-rc.d/init-migrations/run | 10 ++++++++-- docker/rootfs/etc/s6-overlay/s6-rc.d/init-start/run | 1 + 3 files changed, 9 insertions(+), 9 deletions(-) delete mode 100755 docker/rootfs/etc/s6-overlay/s6-rc.d/init-migrations/migrate.sh diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/init-migrations/migrate.sh b/docker/rootfs/etc/s6-overlay/s6-rc.d/init-migrations/migrate.sh deleted file mode 100755 index 93b45fd06..000000000 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/init-migrations/migrate.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/command/with-contenv /usr/bin/bash -# shellcheck shell=bash -declare -r data_dir="${PAPERLESS_DATA_DIR:-/usr/src/paperless/data}" - -# shellcheck disable=SC2164 -cd "${PAPERLESS_SRC_DIR}" -exec s6-setlock -n "${data_dir}/migration_lock" python3 manage.py migrate --skip-checks --no-input diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/init-migrations/run b/docker/rootfs/etc/s6-overlay/s6-rc.d/init-migrations/run index 777724886..5d9b45740 100755 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/init-migrations/run +++ b/docker/rootfs/etc/s6-overlay/s6-rc.d/init-migrations/run @@ -2,11 +2,17 @@ # shellcheck shell=bash declare -r log_prefix="[init-migrations]" +declare -r data_dir="${PAPERLESS_DATA_DIR:-/usr/src/paperless/data}" + echo "${log_prefix} Apply database migrations..." +cd "${PAPERLESS_SRC_DIR}" + # The whole migrate, with flock, needs to run as the right user if [[ -n "${USER_IS_NON_ROOT}" ]]; then - exec /etc/s6-overlay/s6-rc.d/init-migrations/migrate.sh + exec s6-setlock -n "${data_dir}/migration_lock" python3 manage.py migrate --skip-checks --no-input else - exec s6-setuidgid paperless /etc/s6-overlay/s6-rc.d/init-migrations/migrate.sh + exec s6-setuidgid paperless \ + s6-setlock -n "${data_dir}/migration_lock" \ + python3 manage.py migrate --skip-checks --no-input fi diff --git a/docker/rootfs/etc/s6-overlay/s6-rc.d/init-start/run b/docker/rootfs/etc/s6-overlay/s6-rc.d/init-start/run index b6a26fae7..a04f930a2 100755 --- a/docker/rootfs/etc/s6-overlay/s6-rc.d/init-start/run +++ b/docker/rootfs/etc/s6-overlay/s6-rc.d/init-start/run @@ -15,5 +15,6 @@ if [ $(id -u) == $(id -u paperless) ]; then printf "true" > /var/run/s6/container_environment/USER_IS_NON_ROOT echo "${log_prefix} paperless-ngx docker container running under a user" else + printf "/usr/src/paperless" > /var/run/s6/container_environment/HOME echo "${log_prefix} paperless-ngx docker container starting init as root" fi