From 956eea46244bba67c4c5a4376e45fa518f20461f Mon Sep 17 00:00:00 2001 From: nachoparker Date: Mon, 16 Aug 2021 20:01:37 -0600 Subject: nc-restore: try to detect old datadir in dataless restoration Signed-off-by: nachoparker --- bin/ncp/BACKUPS/nc-restore.sh | 37 ++++++++++++++++++++++++------------- bin/ncp/CONFIG/nc-datadir.sh | 12 ++++++------ changelog.md | 8 ++++++-- etc/ncp-config.d/nc-backup.cfg | 4 ++-- updates/1.38.0.sh | 38 -------------------------------------- updates/1.39.0.sh | 40 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 78 insertions(+), 61 deletions(-) delete mode 100644 updates/1.38.0.sh create mode 100644 updates/1.39.0.sh diff --git a/bin/ncp/BACKUPS/nc-restore.sh b/bin/ncp/BACKUPS/nc-restore.sh index af2c77c7..f78f1a33 100644 --- a/bin/ncp/BACKUPS/nc-restore.sh +++ b/bin/ncp/BACKUPS/nc-restore.sh @@ -93,6 +93,9 @@ mysql -u root nextcloud < "$TMPDIR"/nextcloud-sqlbkp_*.bak || { echo "Error res ## RESTORE DATADIR +DATADIR=$( grep datadirectory "$NCDIR"/config/config.php | awk '{ print $3 }' | grep -oP "[^']*[^']" | head -1 ) +[[ "$DATADIR" == "" ]] && { echo "Error reading data directory"; exit 1; } + cd "$NCDIR" ### INCLUDEDATA=yes situation @@ -100,9 +103,6 @@ cd "$NCDIR" NUMFILES=2 if [[ $( ls "$TMPDIR" | wc -l ) -eq $NUMFILES ]]; then - DATADIR=$( grep datadirectory "$NCDIR"/config/config.php | awk '{ print $3 }' | grep -oP "[^']*[^']" | head -1 ) - [[ "$DATADIR" == "" ]] && { echo "Error reading data directory"; exit 1; } - [[ -e "$DATADIR" ]] && { echo "backing up existing $DATADIR to $DATADIR-$( date "+%m-%d-%y" )..." mv "$DATADIR" "$DATADIR-$( date "+%m-%d-%y" )" || exit 1 @@ -115,21 +115,29 @@ if [[ $( ls "$TMPDIR" | wc -l ) -eq $NUMFILES ]]; then rmdir "$DATADIR" || exit 1 btrfs subvolume create "$DATADIR" || exit 1 } - chown www-data:www-data "$DATADIR" + chown www-data: "$DATADIR" TMPDATA="$TMPDIR/$( basename "$DATADIR" )" mv "$TMPDATA"/* "$TMPDATA"/.[!.]* "$DATADIR" || exit 1 rmdir "$TMPDATA" || exit 1 - sudo -u www-data php occ maintenance:mode --off + ncc maintenance:mode --off ### INCLUDEDATA=no situation else - echo "no datadir found in backup" - DATADIR="$NCDIR"/data + echo "No datadir found in backup" + + [[ -e "$DATADIR" ]] || { + echo "${DATADIR} not found. Resetting to ${NCDIR}/data" + DATADIR="$NCDIR"/data + mkdir -p "${DATADIR}" + touch "${DATADIR}"/.ocdata + chown -R www-data: "${DATADIR}" + sed -i "s|'datadirectory' =>.*|'datadirectory' => '${DATADIR}',|" "$NCDIR"/config/config.php + } - sudo -u www-data php occ maintenance:mode --off - sudo -u www-data php occ files:scan --all + ncc maintenance:mode --off + ncc files:scan --all # cache needs to be cleaned as of NC 12 NEED_RESTART=1 @@ -140,12 +148,15 @@ sed -i "s|^opcache.file_cache=.*|opcache.file_cache=$DATADIR/.opcache|" /etc/php # tmp upload dir mkdir -p "$DATADIR/tmp" -chown www-data:www-data "$DATADIR/tmp" -sudo -u www-data php occ config:system:set tempdirectory --value "$DATADIR/tmp" +chown www-data: "$DATADIR/tmp" +ncc config:system:set tempdirectory --value "$DATADIR/tmp" sed -i "s|^;\?upload_tmp_dir =.*$|upload_tmp_dir = $DATADIR/tmp|" /etc/php/${PHPVER}/cli/php.ini sed -i "s|^;\?upload_tmp_dir =.*$|upload_tmp_dir = $DATADIR/tmp|" /etc/php/${PHPVER}/fpm/php.ini sed -i "s|^;\?sys_temp_dir =.*$|sys_temp_dir = $DATADIR/tmp|" /etc/php/${PHPVER}/fpm/php.ini +# logs +ncc config:system:set logfile --value="$DATADIR/nextcloud.log" + # update fail2ban logpath [[ ! -f /.docker-image ]] && { sed -i "s|logpath =.*|logpath = $DATADIR/nextcloud.log|" /etc/fail2ban/jail.conf @@ -156,10 +167,10 @@ sed -i "s|^;\?sys_temp_dir =.*$|sys_temp_dir = $DATADIR/tmp|" /etc/php/${PHP bash /usr/local/bin/nextcloud-domain.sh # update the systems data-fingerprint -sudo -u www-data php occ maintenance:data-fingerprint +ncc maintenance:data-fingerprint # refresh thumbnails -sudo -u www-data php occ files:scan-app-data +ncc files:scan-app-data # restart PHP if needed [[ "$NEED_RESTART" == "1" ]] && \ diff --git a/bin/ncp/CONFIG/nc-datadir.sh b/bin/ncp/CONFIG/nc-datadir.sh index f733cabe..a9be2df9 100644 --- a/bin/ncp/CONFIG/nc-datadir.sh +++ b/bin/ncp/CONFIG/nc-datadir.sh @@ -27,7 +27,7 @@ configure() ## CHECKS local SRCDIR - SRCDIR=$( cd /var/www/nextcloud; sudo -u www-data php occ config:system:get datadirectory ) || { + SRCDIR=$( cd /var/www/nextcloud; ncc config:system:get datadirectory ) || { echo -e "Error reading data directory. Is NextCloud running and configured?"; return 1; } @@ -65,7 +65,7 @@ configure() ## COPY cd /var/www/nextcloud - sudo -u www-data php occ maintenance:mode --on + ncc maintenance:mode --on echo "moving data directory from $SRCDIR to $DATADIR..." @@ -86,7 +86,7 @@ configure() # tmp upload dir mkdir -p "$DATADIR/tmp" chown www-data:www-data "$DATADIR/tmp" - sudo -u www-data php occ config:system:set tempdirectory --value "$DATADIR/tmp" + ncc config:system:set tempdirectory --value "$DATADIR/tmp" sed -i "s|^;\?upload_tmp_dir =.*$|uploadtmp_dir = $DATADIR/tmp|" /etc/php/${PHPVER}/cli/php.ini sed -i "s|^;\?upload_tmp_dir =.*$|upload_tmp_dir = $DATADIR/tmp|" /etc/php/${PHPVER}/fpm/php.ini sed -i "s|^;\?sys_temp_dir =.*$|sys_temp_dir = $DATADIR/tmp|" /etc/php/${PHPVER}/fpm/php.ini @@ -99,9 +99,9 @@ configure() sed -i "s|logpath =.*nextcloud.log|logpath = $DATADIR/nextcloud.log|" /etc/fail2ban/jail.local # datadir - sudo -u www-data php occ config:system:set datadirectory --value="$DATADIR" - sudo -u www-data php occ config:system:set logfile --value="$DATADIR/nextcloud.log" - sudo -u www-data php occ maintenance:mode --off + ncc config:system:set datadirectory --value="$DATADIR" + ncc config:system:set logfile --value="$DATADIR/nextcloud.log" + ncc maintenance:mode --off } # License diff --git a/changelog.md b/changelog.md index d370ebc8..450bcdac 100644 --- a/changelog.md +++ b/changelog.md @@ -1,7 +1,11 @@ -[v1.38.0](https://github.com/nextcloud/nextcloudpi/commit/d5f50a1) (2021-08-09) upgrade to NC20.0.12 +[v1.38.2](https://github.com/nextcloud/nextcloudpi/commit/537925c) (2021-08-16) nc-restore: try to detect old datadir in dataless restoration -[v1.37.9](https://github.com/nextcloud/nextcloudpi/commit/b8c1409) (2021-08-09) letsencrypt: ability to disable it and roll back to self-signed certificates +[v1.38.1 ](https://github.com/nextcloud/nextcloudpi/commit/4f29d94) (2021-08-16) nextcloud.conf.sh: Prevent apache config test output to end up in generated template + +[v1.38.0](https://github.com/nextcloud/nextcloudpi/commit/6e2dca5) (2021-08-09) upgrade to NC20.0.12 + +[v1.37.9 ](https://github.com/nextcloud/nextcloudpi/commit/b8c1409) (2021-08-09) letsencrypt: ability to disable it and roll back to self-signed certificates [v1.37.8 ](https://github.com/nextcloud/nextcloudpi/commit/5a05b89) (2021-08-08) nextcloud: remove beta option diff --git a/etc/ncp-config.d/nc-backup.cfg b/etc/ncp-config.d/nc-backup.cfg index 4933fbb7..eeb8762c 100644 --- a/etc/ncp-config.d/nc-backup.cfg +++ b/etc/ncp-config.d/nc-backup.cfg @@ -2,8 +2,8 @@ "id": "nc-backup", "name": "nc-backup", "title": "nc-backup", - "description": "Backup this NC instance to a file. This will always include the current Nextcloud directory and the Database. You can choose to include or exclude NC-data.", - "info": "", + "description": "Backup this NC instance to a file", + "info": "This will always include the current Nextcloud directory and the Database.\nYou can choose to include or exclude NC-data.", "infotitle": "", "params": [ { diff --git a/updates/1.38.0.sh b/updates/1.38.0.sh deleted file mode 100644 index da5d63fe..00000000 --- a/updates/1.38.0.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash - -set -e - -## BACKWARD FIXES ( for older images ) - -source /usr/local/etc/library.sh # sets NCVER PHPVER RELEASE - -# all images - -## fix raspbian origin -is_active_app unattended-upgrades && run_app unattended-upgrades - -## reduce cron interval to 5 minutes -crontab_tmp=$(mktemp -u -t crontab-www.XXXXXX) -echo "*/5 * * * * php -f /var/www/nextcloud/cron.php" > "${crontab_tmp}" -crontab -u www-data "${crontab_tmp}" -rm "${crontab_tmp}" - - -# docker images only -[[ -f /.docker-image ]] && { - # fix build bug on v1.32.0 - grep -q 'data-ro' /data/nextcloud/config/config.php && cp -raTn /data-ro/nextcloud /data/nextcloud - sed -i 's|data-ro|data|' /data/nextcloud/config/config.php - : -} - -# for non docker images -[[ ! -f /.docker-image ]] && { - : -} - -## enable TLSv1.3 -sed -i 's|SSLProtocol -all.*|SSLProtocol -all +TLSv1.2 +TLSv1.3|' /etc/apache2/conf-available/http2.conf -bash -c "sleep 2 && service apache2 reload" &>/dev/null & - -exit 0 diff --git a/updates/1.39.0.sh b/updates/1.39.0.sh new file mode 100644 index 00000000..1d7194e2 --- /dev/null +++ b/updates/1.39.0.sh @@ -0,0 +1,40 @@ +#!/bin/bash + +set -e + +## BACKWARD FIXES ( for older images ) + +source /usr/local/etc/library.sh # sets NCVER PHPVER RELEASE + +# all images + +## fix raspbian origin +is_active_app unattended-upgrades && run_app unattended-upgrades + +## reduce cron interval to 5 minutes +crontab_tmp=$(mktemp -u -t crontab-www.XXXXXX) +echo "*/5 * * * * php -f /var/www/nextcloud/cron.php" > "${crontab_tmp}" +crontab -u www-data "${crontab_tmp}" +rm "${crontab_tmp}" + +## update nc-restore +install_app nc-restore + +# docker images only +[[ -f /.docker-image ]] && { + # fix build bug on v1.32.0 + grep -q 'data-ro' /data/nextcloud/config/config.php && cp -raTn /data-ro/nextcloud /data/nextcloud + sed -i 's|data-ro|data|' /data/nextcloud/config/config.php + : +} + +# for non docker images +[[ ! -f /.docker-image ]] && { + : +} + +## enable TLSv1.3 +sed -i 's|SSLProtocol -all.*|SSLProtocol -all +TLSv1.2 +TLSv1.3|' /etc/apache2/conf-available/http2.conf +bash -c "sleep 2 && service apache2 reload" &>/dev/null & + +exit 0 -- cgit v1.2.3