Files
nextcloud-docker/scripts/setup-hub-update-cron.sh
2026-04-17 11:39:16 +05:30

51 lines
1.5 KiB
Bash
Executable File

#!/usr/bin/env bash
# scripts/setup-hub-update-cron.sh
# Installs/updates a cron entry for automated Nextcloud Hub updates.
set -euo pipefail
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
HUB_ENV_FILE="${REPO_DIR}/.hub-update.env"
LOG_DIR="${REPO_DIR}/logs"
LOG_FILE="${LOG_DIR}/hub-update.log"
CRON_MARKER="# nextcloud-docker hub update"
CRON_SCHEDULE="${HUB_UPDATE_CRON_SCHEDULE:-30 2 * * 0}"
if [ -f "${HUB_ENV_FILE}" ]; then
# shellcheck disable=SC1090
set -a
source "${HUB_ENV_FILE}"
set +a
fi
RUN_APP_UPDATES="${RUN_APP_UPDATES:-1}"
RUN_EXPENSIVE_REPAIR="${RUN_EXPENSIVE_REPAIR:-1}"
STRICT_TLS="${STRICT_TLS:-0}"
ENABLE_WEB_UPDATER="${ENABLE_WEB_UPDATER:-1}"
UPDATER_RELEASE_CHANNEL="${UPDATER_RELEASE_CHANNEL:-stable}"
mkdir -p "${LOG_DIR}"
chmod 700 "${LOG_DIR}"
cat > "${HUB_ENV_FILE}" <<ENVFILE
RUN_APP_UPDATES=${RUN_APP_UPDATES}
RUN_EXPENSIVE_REPAIR=${RUN_EXPENSIVE_REPAIR}
STRICT_TLS=${STRICT_TLS}
ENABLE_WEB_UPDATER=${ENABLE_WEB_UPDATER}
UPDATER_RELEASE_CHANNEL=${UPDATER_RELEASE_CHANNEL}
ENVFILE
chmod 600 "${HUB_ENV_FILE}"
CRON_COMMAND="cd ${REPO_DIR} && /usr/bin/env bash ${REPO_DIR}/scripts/update-nextcloud-hub.sh >> ${LOG_FILE} 2>&1"
CRON_LINE="${CRON_SCHEDULE} ${CRON_COMMAND} ${CRON_MARKER}"
{
crontab -l 2>/dev/null | grep -v "${CRON_MARKER}" || true
echo "${CRON_LINE}"
} | crontab -
echo "==> Installed Hub update cron job:"
echo " ${CRON_LINE}"
echo "==> Stored update defaults in ${HUB_ENV_FILE}"
echo "==> Logs will be written to ${LOG_FILE}"