Skip to content
Snippets Groups Projects
Select Git revision
  • github
  • master default protected
  • 133-fail2ban-page
  • reorganisation
  • 16-maintenace-service
  • 11-fail2ban
  • 6-monit-update
  • 7-dolibarr-fail2ban
  • 6-surveillance-interne-des-serveur
  • test-glpi
  • 2-migrate-to-phpfpm
  • jessie
12 results

upgradeNextcloud.sh

Blame
  • upgradeNextcloud.sh 3.11 KiB
    #!/bin/bash
    
    # Copyright (C) 2017  Tetras Libre <admin@tetras-libre.fr>
    # Author: Beniamine, David <David.Beniamine@tetras-libre.fr>
    #
    # This program is free software: you can redistribute it and/or modify
    # it under the terms of the GNU General Public License as published by
    # the Free Software Foundation, either version 3 of the License, or
    # (at your option) any later version.
    #
    # This program is distributed in the hope that it will be useful,
    # but WITHOUT ANY WARRANTY; without even the implied warranty of
    # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    # GNU General Public License for more details.
    #
    # You should have received a copy of the GNU General Public License
    # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    
    NEXTCLOUD_INSTALL_DIR=${NEXTCLOUD_INSTALL_DIR:-'/var/www/nextcloud'}
    NEXTCLOUD_INSTALL_DIR=`echo $NEXTCLOUD_INSTALL_DIR | sed 's@/*$@@'`
    htuser=${htuser:-'www-data'}
    ocupdater=${ocupdater:-"$NEXTCLOUD_INSTALL_DIR/updater/updater.phar"}
    occ=$NEXTCLOUD_INSTALL_DIR/occ
    APPS=`sudo -u $htuser php $occ app:list | awk 'BEGIN{ok=1} /^Disabled:/{ok=0} {if(ok==1){print $2}}' | sed 's/:$//'`
    
    if [ ! -d $NEXTCLOUD_INSTALL_DIR ]
    then
        echo "Nextcloud is not installed, aborting"
        exit 1
    fi
    
    if [ -z $MAINTENANCE_LEVEL ]
    then
        echo "Maintenance level cannot be detected, please update your main.env"
        exit 1
    fi
    
    current_vesion=`sudo -u www-data php /var/www/nextcloud/occ status \
        | awk '/versionstring/{print $3}'`
    echo "Nextclous is installed, version $current_vesion"
    if [ $MAINTENANCE_LEVEL == "upgrade" ]
    then
        echo "Checking version  from changelog page (upgrade)"
        target_version=`curl -silent https://nextcloud.com/changelog/ \
            | sed 's/>/>\n/g' | awk '/^<h3 id=/{print $2}' | head -n 1 \
            | sed -e 's/id="\(.*\)">/\1/' -e 's/-/./g'`
    else
        echo "Checking version  from install page (security)"
        target_version=`curl -silent \
            'https://nextcloud.com/install/#instructions-server' \
            | sed 's/>/>\n/g'  | awk '/href=.*server\/release/{print $0}' \
            | head -n 1 | sed 's/.*nextcloud-\(.*\).zip">/\1/'`
    fi
    
    echo "Upstream version is : $target_version"
    
    if [ "$current_vesion" == "$target_version" ]
    then
        echo "Nextcloud is already up to date"
        exit 0
    fi
    
    echo "Removing old backup"
    rm -rf $NEXTCLOUD_INSTALL_DIR.bak
    echo "backing up nextcloud"
    cp -r $NEXTCLOUD_INSTALL_DIR $NEXTCLOUD_INSTALL_DIR.bak
    echo "Entering maintenance mode"
    sudo -u $htuser php $occ maintenance:mode --on
    echo "Giving all permissions to $htuser"
    chown -R $htuser: $NEXTCLOUD_INSTALL_DIR
    sudo -u $htuser php $ocupdater --no-interaction --verbose
    sudo -u $htuser php $occ maintenance:mode --off
    echo "Removing backup htaccess file"
    rm $NEXTCLOUD_INSTALL_DIR/.htaccess.bak
    
    . `dirname $0`/nextcloudStrongDirectoryPermissions.sh
    FAILED=""
    for app in $APPS
    do
        sudo -u $htuser php $occ app:enable $app
        if [ $? -ne 0 ]
        then
            FAILED+=" $app"
        fi
    done
    echo "Done"
    if [ "$FAILED" != "" ]
    then
        echo "Failed to enable some apps: '$FAILED'"
    fi
    echo "Please check difference between old and new .htaccess file"
    vimdiff $NEXTCLOUD_INSTALL_DIR{,.bak}/.htacess