From 63df3417e0aba8ce701692d5bc4ec5cc27754d2c Mon Sep 17 00:00:00 2001 From: twojstaryzdomu Date: Sat, 4 Jan 2025 15:22:34 +0100 Subject: [PATCH] install.sh,library.sh,README.md,build-lxd.yml,build-sd-images.yml,vm-tests.yml: Default data directory defined as NCDATA in nc-datadir.cfg, allowing NCDATA env var override --- .github/workflows/build-lxd.yml | 18 +++++++++++------ .github/workflows/build-sd-images.yml | 29 ++++++++++++++++----------- .github/workflows/vm-tests.yml | 3 ++- README.md | 1 + etc/library.sh | 6 ++++++ install.sh | 5 +++-- 6 files changed, 41 insertions(+), 21 deletions(-) diff --git a/.github/workflows/build-lxd.yml b/.github/workflows/build-lxd.yml index c5b2992a..dabefb55 100644 --- a/.github/workflows/build-lxd.yml +++ b/.github/workflows/build-lxd.yml @@ -239,7 +239,8 @@ jobs: # systemd-run --user --scope -p "Delegate=yes" "$LXC" launch -q "ncp/test" ncp || \ # sudo systemd-run --scope -p "Delegate=yes" "$LXC" launch -q "ncp/test" ncp # sudo "$LXC" exec ncp -- bash -c 'while [ "$(systemctl is-system-running 2>/dev/null)" != "running" ] && [ "$(systemctl is-system-running 2>/dev/null)" != "degraded" ]; do :; done' -# sudo "$LXC" exec ncp -- rm -f /opt/ncdata/data/nextcloud.log +# NCDATA="$("$LXC" exec ncp -- jq -r .params[].value < /usr/local/etc/ncp-config.d/nc-datadir.cfg)" +# sudo "$LXC" exec ncp -- rm -f "${NCDATA}"/data/nextcloud.log # sleep 30 # ip="$(sudo "$LXC" list -c n4 -f csv | grep '^ncp' | cut -d ',' -f2)" # ip="${ip/% *}" @@ -304,7 +305,8 @@ jobs: # sudo "$LXC" exec ncp -- bash -c "DBG=x ncp-update-nc ${latest_nc_version?}" # fi # -# sudo "$LXC" exec ncp -- rm -f /opt/ncdata/data/nextcloud.log +# NCDATA="$("$LXC" exec ncp -- jq -r .params[].value < /usr/local/etc/ncp-config.d/nc-datadir.cfg)" +# sudo "$LXC" exec ncp -- rm -f "${NCDATA}"/data/nextcloud.log # # sudo "$LXC" stop ncp # - name: Relaunch container @@ -403,7 +405,8 @@ jobs: systemd-run --user --scope -p "Delegate=yes" "$LXC" launch -q "${LXC_ARGS[@]}" "ncp/update" ncp || \ sudo systemd-run --scope -p "Delegate=yes" "$LXC" launch -q "${LXC_ARGS[@]}" "ncp/update" ncp sudo "$LXC" exec ncp -- bash -c 'while [ "$(systemctl is-system-running 2>/dev/null)" != "running" ] && [ "$(systemctl is-system-running 2>/dev/null)" != "degraded" ]; do :; done' - sudo "$LXC" exec ncp -- rm -f /opt/ncdata/data/nextcloud.log + NCDATA="$("$LXC" exec ncp -- jq -r .params[].value < /usr/local/etc/ncp-config.d/nc-datadir.cfg)" + sudo "$LXC" exec ncp -- rm -f "${NCDATA}"/data/nextcloud.log sleep 30 ip="$(sudo "$LXC" list -c n4 -f csv | grep '^ncp' | cut -d ',' -f2)" ip="${ip/% *}" @@ -474,8 +477,9 @@ jobs: sudo "$LXC" exec ncp -- /usr/local/bin/ncc status fi - sudo "$LXC" exec ncp -- rm -f /opt/ncdata/data/nextcloud.log - + NCDATA="$("$LXC" exec ncp -- jq -r .params[].value < /usr/local/etc/ncp-config.d/nc-datadir.cfg)" + sudo "$LXC" exec ncp -- rm -f "${NCDATA}"/data/nextcloud.log + sudo "$LXC" stop ncp - name: Relaunch container run: | @@ -554,7 +558,9 @@ jobs: done fi - sudo "$LXC" exec ncp -- rm -f /opt/ncdata/data/nextcloud.log + NCDATA="$("$LXC" exec ncp -- jq -r .params[].value < /usr/local/etc/ncp-config.d/nc-datadir.cfg)" + sudo "$LXC" exec ncp -- rm -f "${NCDATA}"/data/nextcloud.log + sudo "$LXC" stop ncp - name: Relaunch container run: | diff --git a/.github/workflows/build-sd-images.yml b/.github/workflows/build-sd-images.yml index 12a4490d..5c041519 100644 --- a/.github/workflows/build-sd-images.yml +++ b/.github/workflows/build-sd-images.yml @@ -272,6 +272,7 @@ jobs: exit 1 } + NCDATA="$("${CONTAINER_CMD[@]}" jq -r .params[].value < /usr/local/etc/ncp-config.d/nc-datadir.cfg)" success=false for attempt in {1..5} do @@ -294,9 +295,9 @@ jobs: "${CONTAINER_CMD[@]}" --pipe ncp /bin/bash -c "tail -n20 /var/log/ncp.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true echo "================" echo "${LOG_DIAG} Nextcloud log: " - "${CONTAINER_CMD[@]}" --pipe -q ncp /bin/bash -c 'ls -l /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true - "${CONTAINER_CMD[@]}" --pipe -q ncp /bin/bash -c 'cat /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true - sudo cat ./raspbian_root/opt/ncdata/data/nextcloud.log |& awk "{ print \"${LOG_DIAG} \" \$0 }" + "${CONTAINER_CMD[@]}" --pipe -q ncp /bin/bash -c "ls -l ${NCDATA}/data/nextcloud.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true + "${CONTAINER_CMD[@]}" --pipe -q ncp /bin/bash -c "cat ${NCDATA}/data/nextcloud.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true + sudo cat ./raspbian_root/"${NCDATA}"/data/nextcloud.log |& awk "{ print \"${LOG_DIAG} \" \$0 }" sleep 12 continue } @@ -322,7 +323,7 @@ jobs: echo "====================" echo "Nextcloud logs:" - sudo cat ./raspbian_root/opt/ncdata/data/nextcloud.log + sudo cat ./raspbian_root/"${NCDATA}"/data/nextcloud.log echo "====================" echo "MySQL logs:" @@ -512,6 +513,7 @@ jobs: # exit 1 # } # +# NCDATA="$("${CONTAINER_CMD[@]}" jq -r .params[].value < /usr/local/etc/ncp-config.d/nc-datadir.cfg)" # success=false # for attempt in {1..5} # do @@ -526,8 +528,8 @@ jobs: # "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c "tail -n20 /var/log/ncp.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true # echo "================" # echo "${LOG_DIAG} Nextcloud log: " -# "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'ls -l /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true -# "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'cat /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true +# "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c "ls -l \"${NCDATA}\"/data/nextcloud.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true +# "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c "cat \"${NCDATA}\"/data/nextcloud.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true # sleep 12 # continue # } @@ -571,8 +573,9 @@ jobs: # # "${CONTAINER_CMD[@]}" bash -c "DBG=x ncp-update-nc ${latest_nc_version?}" # # fi # +# NCDATA="$("${CONTAINER_CMD[@]}" jq -r .params[].value < /usr/local/etc/ncp-config.d/nc-datadir.cfg)" # sudo machinectl terminate ncp -# sudo rm -f ./raspbian_root/opt/ncdata/data/nextcloud.log +# sudo rm -f ./raspbian_root/"${NCDATA}"/data/nextcloud.log # - name: Test image after update # if: ${{ steps.download-previous-image.outputs.skipped == 'false' }} # run: | @@ -660,6 +663,7 @@ jobs: # exit 1 # } # +# NCDATA="$("${CONTAINER_CMD[@]}" jq -r .params[].value < /usr/local/etc/ncp-config.d/nc-datadir.cfg)" # success=false # for attempt in {1..5} # do @@ -674,8 +678,8 @@ jobs: # "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c "tail -n20 /var/log/ncp.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true # echo "================" # echo "${LOG_DIAG} Nextcloud log: " -# "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'ls -l /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true -# "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'cat /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true +# "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c "ls -l \"${NCDATA}\"/data/nextcloud.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true +# "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c "cat \"${NCDATA}\"/data/nextcloud.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true # sleep 12 # continue # } @@ -705,8 +709,9 @@ jobs: # } # "${CONTAINER_CMD[@]}" DBG=x ncp-dist-upgrade "$VERSION" # +# NCDATA="$("${CONTAINER_CMD[@]}" jq -r .params[].value < /usr/local/etc/ncp-config.d/nc-datadir.cfg)" # sudo machinectl terminate ncp -# sudo rm -f ./raspbian_root/opt/ncdata/data/nextcloud.log +# sudo rm -f ./raspbian_root/"${NCDATA}"/data/nextcloud.log # # - name: Test image after dist-upgrade # if: ${{ steps.download-previous-image.outputs.skipped == 'false' }} @@ -833,8 +838,8 @@ jobs: # "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c "tail -n20 /var/log/ncp.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true # echo "================" # echo "${LOG_DIAG} Nextcloud log: " -# "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'ls -l /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true -# "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c 'cat /opt/ncdata/data/nextcloud.log' |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true +# "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c "ls -l \"${NCDATA}\"/data/nextcloud.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true +# "${CONTAINER_CMD[@]}" -q ncp /bin/bash -c "cat \"${NCDATA}\"/data/nextcloud.log" |& awk "{ print \"${LOG_DIAG} \" \$0 }" || true # sleep 12 # continue # } diff --git a/.github/workflows/vm-tests.yml b/.github/workflows/vm-tests.yml index a6cf114a..258b1838 100644 --- a/.github/workflows/vm-tests.yml +++ b/.github/workflows/vm-tests.yml @@ -489,7 +489,8 @@ jobs: ssh "${SSH_OPTIONS[@]}" "root@${SERVER_ADDRESS}" tail /var/log/ncp.log; echo "===========================================" echo "nextcloud.log:" - ssh "${SSH_OPTIONS[@]}" "root@${SERVER_ADDRESS}" tail /opt/ncdata/data/nextcloud.log; + NCDATA="$(ssh "${SSH_OPTIONS[@]}" "root@${SERVER_ADDRESS}" jq -r .params[].value < /usr/local/etc/ncp-config.d/nc-datadir.cfg)" + ssh "${SSH_OPTIONS[@]}" "root@${SERVER_ADDRESS}" tail "${NCDATA}"/data/nextcloud.log; exit 1 } echo "test_result=success" >> "$GITHUB_OUTPUT" diff --git a/README.md b/README.md index 6c609fb2..f3692460 100644 --- a/README.md +++ b/README.md @@ -229,6 +229,7 @@ When set to any value: - `KEEP_TAR` - do not remove /var/www/nextcloud-${VER}.tar.bz2, useful when the script is re-run multiple times - `NCHOSTNAME` - overrides the default NC hostname, defined in `etc/ncp.cfg` - `REINIT` - re-initialise the configuration from scratch: drop NC database & user environment +- `NCDATA` - overrides the NC data directory, defined in `etc/ncp-config.d/nc-datadir.cfg` NOTE: `sudo -E` is needed to source non-root user environment i.e. diff --git a/etc/library.sh b/etc/library.sh index 0a4f5b49..72904bf1 100644 --- a/etc/library.sh +++ b/etc/library.sh @@ -58,6 +58,12 @@ NCHOSTNAME=${NCHOSTNAME:-$(jq -r '.nextcloud_hostname | select( . != null )' < " NCLATESTVER=$(jq -r .nextcloud_version < "$NCPCFG") PHPVER=$( jq -r .php_version < "$NCPCFG") RELEASE=$( jq -r .release < "$NCPCFG") +[ -n "${NCDATA}" ] || { + NCDDCFG="${CFGDIR}/nc-datadir.cfg" + [ -f "$NCDDCFG" ] || NCDDCFG="${CFGDIR#/usr/local/}/nc-datadir.cfg" + export NCDATA=$(jq -r .params[].value < "$NCDDCFG") +} +echo "Data directory $NCDATA" >&2 # the default repo in bullseye is bullseye-security grep -Eh '^deb ' /etc/apt/sources.list | grep "${RELEASE}-security" > /dev/null && RELEASE="${RELEASE}-security" command -v ncc &>/dev/null && NCVER="$(ncc status 2>/dev/null | grep "version:" | awk '{ print $3 }')" diff --git a/install.sh b/install.sh index 0935f411..5bf8c972 100644 --- a/install.sh +++ b/install.sh @@ -77,15 +77,16 @@ install_app ncp.sh run_app_unsafe bin/ncp/CONFIG/nc-init.sh echo 'Moving data directory to a more sensible location' df -h -mkdir -p /opt/ncdata +mkdir -p "${NCDATA}" [[ -f "/usr/local/etc/ncp-config.d/nc-datadir.cfg" ]] || { should_rm_datadir_cfg=true cp etc/ncp-config.d/nc-datadir.cfg /usr/local/etc/ncp-config.d/nc-datadir.cfg } +set_app_param nc-datadir.sh DATADIR "${NCDATA}" DISABLE_FS_CHECK=1 NCPCFG="/usr/local/etc/ncp.cfg" run_app_unsafe bin/ncp/CONFIG/nc-datadir.sh [[ -z "$should_rm_datadir_cfg" ]] || rm /usr/local/etc/ncp-config.d/nc-datadir.cfg rm /.ncp-image -rm -f /opt/ncdata/data/nextcloud.log +rm -f "${NCDATA}"/data/nextcloud.log # skip on Armbian / Vagrant / LXD ... [[ "${CODE_DIR}" != "" ]] || bash /usr/local/bin/ncp-provisioning.sh