2020-10-20 10:47:04 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2021-09-29 07:01:57 +00:00
|
|
|
if [[ $(id -u) == "0" ]]; then
|
2021-09-28 16:51:23 +00:00
|
|
|
echo "started as root"
|
2021-09-29 07:01:57 +00:00
|
|
|
|
2022-02-19 14:32:52 +00:00
|
|
|
if [ -e /opt/photoprism/.init ]; then
|
2021-09-29 07:01:57 +00:00
|
|
|
echo "initialized"
|
|
|
|
elif [[ ${PHOTOPRISM_INIT} ]]; then
|
|
|
|
for target in $PHOTOPRISM_INIT; do
|
|
|
|
echo "init ${target}..."
|
2022-02-19 14:32:52 +00:00
|
|
|
make -f /opt/photoprism/scripts/Makefile "${target}"
|
2021-09-29 07:01:57 +00:00
|
|
|
done
|
2022-02-19 14:32:52 +00:00
|
|
|
echo 1 >/opt/photoprism/.init
|
2021-09-29 07:01:57 +00:00
|
|
|
fi
|
2020-10-20 10:47:04 +00:00
|
|
|
fi
|
|
|
|
|
2022-02-19 14:32:52 +00:00
|
|
|
STORAGE_PATH=${PHOTOPRISM_STORAGE_PATH:-/photoprism/storage}
|
|
|
|
|
2021-09-28 16:51:23 +00:00
|
|
|
re='^[0-9]+$'
|
2021-02-05 16:39:48 +00:00
|
|
|
|
2022-02-16 08:51:43 +00:00
|
|
|
# legacy umask env variable in use?
|
2021-09-28 16:51:23 +00:00
|
|
|
if [[ -z ${PHOTOPRISM_UMASK} ]] && [[ ${UMASK} =~ $re ]]; then
|
|
|
|
PHOTOPRISM_UMASK=${UMASK}
|
|
|
|
echo "WARNING: UMASK without PHOTOPRISM_ prefix is deprecated, use PHOTOPRISM_UMASK: \"${PHOTOPRISM_UMASK}\" instead"
|
|
|
|
fi
|
2021-02-05 16:39:48 +00:00
|
|
|
|
2022-02-16 08:51:43 +00:00
|
|
|
# set file permission mask
|
2021-09-28 16:51:23 +00:00
|
|
|
if [[ ${PHOTOPRISM_UMASK} =~ $re ]]; then
|
|
|
|
echo "umask ${PHOTOPRISM_UMASK}"
|
|
|
|
umask "${PHOTOPRISM_UMASK}"
|
|
|
|
fi
|
2021-02-05 16:39:48 +00:00
|
|
|
|
2022-02-16 08:51:43 +00:00
|
|
|
# script must run as root to perform changes
|
2021-09-29 07:01:57 +00:00
|
|
|
if [[ $(id -u) == "0" ]]; then
|
2022-02-16 08:51:43 +00:00
|
|
|
# check for alternate user ID env variables
|
2022-01-30 14:47:45 +00:00
|
|
|
if [[ -z ${PHOTOPRISM_UID} ]]; then
|
|
|
|
if [[ ${UID} =~ $re ]] && [[ ${UID} != "0" ]]; then
|
|
|
|
PHOTOPRISM_UID=${UID}
|
|
|
|
elif [[ ${PUID} =~ $re ]] && [[ ${PUID} != "0" ]]; then
|
|
|
|
PHOTOPRISM_UID=${PUID}
|
|
|
|
fi
|
2021-09-28 16:51:23 +00:00
|
|
|
fi
|
2021-02-05 16:39:48 +00:00
|
|
|
|
2022-02-16 08:51:43 +00:00
|
|
|
# check for alternate group ID env variables
|
2022-01-30 14:47:45 +00:00
|
|
|
if [[ -z ${PHOTOPRISM_GID} ]]; then
|
|
|
|
if [[ ${GID} =~ $re ]] && [[ ${GID} != "0" ]]; then
|
|
|
|
PHOTOPRISM_GID=${GID}
|
|
|
|
elif [[ ${PGID} =~ $re ]] && [[ ${PGID} != "0" ]]; then
|
|
|
|
PHOTOPRISM_GID=${PGID}
|
|
|
|
fi
|
2021-02-05 16:39:48 +00:00
|
|
|
fi
|
|
|
|
|
2022-02-16 08:51:43 +00:00
|
|
|
# create missing user/group if needed
|
2021-09-28 16:51:23 +00:00
|
|
|
if [[ ${PHOTOPRISM_UID} =~ $re ]] && [[ ${PHOTOPRISM_UID} != "0" ]] && [[ ${PHOTOPRISM_GID} =~ $re ]] && [[ ${PHOTOPRISM_GID} != "0" ]]; then
|
|
|
|
groupadd -g "${PHOTOPRISM_GID}" "group_${PHOTOPRISM_GID}" 2>/dev/null
|
|
|
|
useradd -o -u "${PHOTOPRISM_UID}" -g "${PHOTOPRISM_GID}" -d /photoprism "user_${PHOTOPRISM_UID}" 2>/dev/null
|
|
|
|
usermod -g "${PHOTOPRISM_GID}" "user_${PHOTOPRISM_UID}" 2>/dev/null
|
|
|
|
|
2021-09-29 07:01:57 +00:00
|
|
|
if [[ -z ${PHOTOPRISM_DISABLE_CHOWN} ]]; then
|
2021-09-28 16:51:23 +00:00
|
|
|
echo "set PHOTOPRISM_DISABLE_CHOWN: \"true\" to disable storage permission updates"
|
|
|
|
echo "updating storage permissions..."
|
2022-02-19 14:32:52 +00:00
|
|
|
chown -Rf "${PHOTOPRISM_UID}:${PHOTOPRISM_GID}" "${STORAGE_PATH}" /photoprism/import /var/lib/photoprism
|
2021-09-28 16:51:23 +00:00
|
|
|
fi
|
2021-02-05 16:39:48 +00:00
|
|
|
|
2021-09-28 16:51:23 +00:00
|
|
|
echo "running as uid ${PHOTOPRISM_UID}:${PHOTOPRISM_GID}"
|
|
|
|
echo "${@}"
|
2022-02-19 18:54:49 +00:00
|
|
|
|
|
|
|
gosu "${PHOTOPRISM_UID}:${PHOTOPRISM_GID}" doctor.sh && gosu "${PHOTOPRISM_UID}:${PHOTOPRISM_GID}" "$@" &
|
2021-09-28 16:51:23 +00:00
|
|
|
elif [[ ${PHOTOPRISM_UID} =~ $re ]] && [[ ${PHOTOPRISM_UID} != "0" ]]; then
|
2022-02-16 08:51:43 +00:00
|
|
|
# user ID only
|
2021-09-28 16:51:23 +00:00
|
|
|
useradd -o -u "${PHOTOPRISM_UID}" -g 1000 -d /photoprism "user_${PHOTOPRISM_UID}" 2>/dev/null
|
|
|
|
usermod -g 1000 "user_${PHOTOPRISM_UID}" 2>/dev/null
|
|
|
|
|
2021-09-29 07:01:57 +00:00
|
|
|
if [[ -z ${PHOTOPRISM_DISABLE_CHOWN} ]]; then
|
2021-09-28 16:51:23 +00:00
|
|
|
echo "set PHOTOPRISM_DISABLE_CHOWN: \"true\" to disable storage permission updates"
|
|
|
|
echo "updating storage permissions..."
|
2022-02-19 14:32:52 +00:00
|
|
|
chown -Rf "${PHOTOPRISM_UID}" "${STORAGE_PATH}" /photoprism/import /var/lib/photoprism
|
2021-09-28 16:51:23 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
echo "running as uid ${PHOTOPRISM_UID}"
|
|
|
|
echo "${@}"
|
2022-02-19 18:54:49 +00:00
|
|
|
|
|
|
|
gosu "${PHOTOPRISM_UID}" doctor.sh && gosu "${PHOTOPRISM_UID}" "$@" &
|
2021-09-28 16:51:23 +00:00
|
|
|
else
|
2022-02-16 08:51:43 +00:00
|
|
|
# no user or group ID set via end variable
|
2021-09-28 16:51:23 +00:00
|
|
|
echo "running as root"
|
|
|
|
echo "${@}"
|
2022-02-19 18:54:49 +00:00
|
|
|
|
|
|
|
doctor.sh && "$@" &
|
2021-09-28 16:51:23 +00:00
|
|
|
fi
|
2020-10-20 10:47:04 +00:00
|
|
|
else
|
2022-02-19 14:32:52 +00:00
|
|
|
|
2022-02-16 08:51:43 +00:00
|
|
|
# running as root
|
2021-02-22 20:09:50 +00:00
|
|
|
echo "running as uid $(id -u)"
|
|
|
|
echo "${@}"
|
2022-02-19 18:54:49 +00:00
|
|
|
|
|
|
|
doctor.sh && "$@" &
|
2020-10-20 10:47:04 +00:00
|
|
|
fi
|
|
|
|
|
|
|
|
PID=$!
|
|
|
|
|
|
|
|
trap "kill $PID" INT TERM
|
2021-09-29 07:01:57 +00:00
|
|
|
wait
|