1
0
mirror of https://github.com/mail-in-a-box/mailinabox.git synced 2025-04-20 02:52:11 +00:00

Nextcloud Updater - Not Done

Upgrade to 18
Not finished
This commit is contained in:
Reese 2020-01-21 19:51:02 -06:00 committed by GitHub
parent 30885bcc8a
commit b6f2da3d84
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -2,7 +2,7 @@
# Nextcloud
##########################
source setup/functions.sh # load our functions
source ../setup/functions.sh # load our functions
source /etc/mailinabox.conf # load global vars
# ### Installing Nextcloud
@ -11,7 +11,7 @@ echo "Installing Nextcloud (contacts/calendar)..."
apt-get purge -qq -y owncloud* # we used to use the package manager
apt_install php php-fpm \
apt_install php php7.2-fpm \
php-cli php-sqlite3 php-gd php-imap php-curl php-pear curl \
php-dev php-gd php-xml php-mbstring php-zip php-apcu php-json \
php-intl php-imagick
@ -19,41 +19,70 @@ apt_install php php-fpm \
InstallNextcloud() {
version=$1
hash=$2
echo
echo "Upgrading to Nextcloud version $version"
echo
# Download and verify
wget_verify https://download.nextcloud.com/server/releases/nextcloud-$version.zip $hash /tmp/nextcloud.zip
wget --directory-prefix=/tmp/ https://download.nextcloud.com/server/releases/nextcloud-$version.zip
# Remove the current owncloud/Nextcloud
rm -rf /usr/local/lib/owncloud
# Extract ownCloud/Nextcloud
unzip -q /tmp/nextcloud.zip -d /usr/local/lib
unzip -q /tmp/nextcloud-$version.zip -d /usr/local/lib
mv /usr/local/lib/nextcloud /usr/local/lib/owncloud
rm -f /tmp/nextcloud.zip
rm -f /tmp/nextcloud-$version.zip
# The two apps we actually want are not in Nextcloud core. Download the releases from
# their github repositories.
mkdir -p /usr/local/lib/owncloud/apps
# their github repositories
if [[ $version =~ ^17]]; then
wget --directory-prefix=/tmp/ https://github.com/nextcloud/contacts/releases/download/v3.1.7/contacts.tar.gz
tar -xf /tmp/contacts.tar.gz -C /usr/local/lib/owncloud/apps/
rm /tmp/contacts.tar.gz
wget_verify https://github.com/nextcloud/contacts/releases/download/v3.1.6/contacts.tar.gz d331dc6db2ecf7c8e6166926a055dfa3b59722c3 /tmp/contacts.tgz
tar xf /tmp/contacts.tgz -C /usr/local/lib/owncloud/apps/
rm /tmp/contacts.tgz
wget --directory-prefix=/tmp/ https://github.com/nextcloud/calendar/releases/download/v2.0.1/calendar.tar.gz
tar -xf /tmp/calendar.tar.gz -C /usr/local/lib/owncloud/apps/
rm /tmp/calendar.tar.gz
elif [[ $version =~ ^16]]; then
wget --directory-prefix=/tmp/ https://github.com/nextcloud/contacts/releases/download/v3.1.6/contacts.tar.gz
tar -xf /tmp/contacts.tar.gz -C /usr/local/lib/owncloud/apps/
rm /tmp/contacts.tar.gz
wget_verify https://github.com/nextcloud/calendar/releases/download/v1.7.1/calendar.tar.gz bd7c846bad06da6d6ba04280f6fbf37ef846c2ad /tmp/calendar.tgz
tar xf /tmp/calendar.tgz -C /usr/local/lib/owncloud/apps/
rm /tmp/calendar.tgz
wget --directory-prefix=/tmp/ https://github.com/nextcloud/calendar/releases/download/v1.7.2/calendar.tar.gz
tar -xf /tmp/calendar.tar.gz -C /usr/local/lib/owncloud/apps/
rm /tmp/calendar.tar.gz
elif [[ $version =~ ^15 ]]; then
wget --directory-prefix=/tmp/ https://github.com/nextcloud/contacts/releases/download/v3.1.6/contacts.tar.gz
tar -xf /tmp/contacts.tar.gz -C /usr/local/lib/owncloud/apps/
rm /tmp/contacts.tar.gz
wget --directory-prefix=/tmp/ https://github.com/nextcloud/calendar/releases/download/v1.7.2/calendar.tar.gz
tar -xf /tmp/calendar.tar.gz -C /usr/local/lib/owncloud/apps/
rm /tmp/calendar.tar.gz
elif [[ $version =~ ^14]] then
wget --directory-prefix=/tmp/ https://github.com/nextcloud/contacts/releases/download/v2.1.8/contacts.tar.gz
tar -xf /tmp/contacts.tar.gz -C /usr/local/lib/owncloud/apps/
rm /tmp/contacts.tar.gz
wget --directory-prefix=/tmp/ https://github.com/nextcloud/calendar/releases/download/v1.6.6/calendar.tar.gz
tar -xf /tmp/calendar.tar.gz -C /usr/local/lib/owncloud/apps/
rm /tmp/calendar.tar.gz
elif [[$version =~ ^13]] then
wget --directory-prefix=/tmp/ https://github.com/nextcloud/contacts/releases/download/v3.1.6/contacts.tar.gz
tar -xf /tmp/contacts.tar.gz -C /usr/local/lib/owncloud/apps/
rm /tmp/contacts.tar.gz
wget --directory-prefix=/tmp/ https://github.com/nextcloud/calendar/releases/download/v1.7.2/calendar.tar.gz
tar -xf /tmp/calendar.tar.gz -C /usr/local/lib/owncloud/apps/
rm /tmp/calendar.tar.gz
# Starting with Nextcloud 15, the app user_external is no longer included in Nextcloud core,
# we will install from their github repository.
if [[ $version =~ ^1[567] ]]; then
wget_verify https://github.com/nextcloud/user_external/releases/download/v0.7.0/user_external-0.7.0.tar.gz 555a94811daaf5bdd336c5e48a78aa8567b86437 /tmp/user_external.tgz
tar -xf /tmp/user_external.tgz -C /usr/local/lib/owncloud/apps/
rm /tmp/user_external.tgz
if [[ $version =~ ^15 ]]; then
wget --directory-prefix=/tmp/ https://github.com/nextcloud/user_external/releases/download/v0.8.0/user_external-0.8.0.tar.gz
tar -xf /tmp/user_external-0.8.0.tar.gz -C /usr/local/lib/owncloud/apps/
rm /tmp/user_external-0.8.0.tar.gz
fi
# Fix weird permissions.
@ -91,8 +120,7 @@ InstallNextcloud() {
}
# Nextcloud Version to install. Checks are done down below to step through intermediate versions.
nextcloud_ver=17.0.1
nextcloud_hash=81e47f2288377927346a4b4cbbb2ecf1b6f4a0e1
nextcloud_ver=$version
# Current Nextcloud Version, #1623
# Checking /usr/local/lib/owncloud/version.php shows version of the Nextcloud application, not the DB
@ -108,7 +136,6 @@ else
fi
# If the Nextcloud directory is missing (never been installed before, or the nextcloud version to be installed is different
# from the version currently installed, do the install/upgrade
if [ ! -d /usr/local/lib/owncloud/ ] || [[ ! ${CURRENT_NEXTCLOUD_VER} =~ ^$nextcloud_ver ]]; then
# Stop php-fpm if running. If theyre not running (which happens on a previously failed install), dont bail.
@ -134,31 +161,30 @@ if [ ! -d /usr/local/lib/owncloud/ ] || [[ ! ${CURRENT_NEXTCLOUD_VER} =~ ^$nextc
# Database migrations from ownCloud are no longer possible because ownCloud cannot be run under
# PHP 7.
if [[ ${CURRENT_NEXTCLOUD_VER} =~ ^[89] ]]; then
echo "Upgrades from Mail-in-a-Box prior to v0.28 (dated July 30, 2018) with Nextcloud < 13.0.6 (you have ownCloud 8 or 9) are not supported. Upgrade to Mail-in-a-Box version v0.30 first. Setup aborting."
echo "Upgrades from Mail-in-a-Box prior to v0.28 (dated July 30, 2018) with Nextcloud < 13.0.6 (you have ownCloud 8 or 9) are not supported. Upgrade to Mail-in-a--in-a-Box version v0.30 first. Setup aborting."
exit 1
elif [[ ${CURRENT_NEXTCLOUD_VER} =~ ^1[012] ]]; then
echo "Upgrades from Mail-in-a-Box prior to v0.28 (dated July 30, 2018) with Nextcloud < 13.0.6 (you have ownCloud 10, 11 or 12) are not supported. Upgrade to Mail-in-a-Box version v0.30 first. Setup aborting."
echo "Upgrades from Mail-in-a-Box prior to v0.28 (dated July 30, 2018) with Nextcloud < 13.0.6 (you have ownCloud 10, 11 or 12) are not supported. Upgrade to Mail$
exit 1
elif [[ ${CURRENT_NEXTCLOUD_VER} =~ ^13 ]]; then
# If we are running Nextcloud 13, upgrade to Nextcloud 14
InstallNextcloud 14.0.6 4e43a57340f04c2da306c8eea98e30040399ae5a
CURRENT_NEXTCLOUD_VER="14.0.6"
fi
if [[ ${CURRENT_NEXTCLOUD_VER} =~ ^14 ]]; then
InstallNextcloud 14.0.6
elif [[ ${CURRENT_NEXTCLOUD_VER} =~ ^14 ]]; then
# During the upgrade from Nextcloud 14 to 15, user_external may cause the upgrade to fail.
# We will disable it here before the upgrade and install it again after the upgrade.
hide_output sudo -u www-data php /usr/local/lib/owncloud/console.php app:disable user_external
InstallNextcloud 15.0.8 4129d8d4021c435f2e86876225fb7f15adf764a3
CURRENT_NEXTCLOUD_VER="15.0.8"
fi
if [[ ${CURRENT_NEXTCLOUD_VER} =~ ^15 ]]; then
InstallNextcloud 16.0.6 0bb3098455ec89f5af77a652aad553ad40a88819
CURRENT_NEXTCLOUD_VER="16.0.6"
fi
fi
InstallNextcloud 15.0.0
elif [[ ${CURRENT_NEXTCLOUD_VER} =~ ^15 ]]; then
InstallNextcloud 16.0.0
InstallNextcloud $nextcloud_ver $nextcloud_hash
fi
elif [[ ${CURRENT_NEXTCLOUD_VER} =~ ^16 ]]; then
InstallNextcloud 17.0.0
elif [[ ${CURRENT_NEXTCLOUD_VER} =~ ^17 ]]; then
InstallNextcloud 18.0.0
fi
InstallNextcloud 18.0.0
# ### Configuring Nextcloud
@ -167,11 +193,10 @@ fi
if [ ! -f $STORAGE_ROOT/owncloud/owncloud.db ]; then
# Create user data directory
mkdir -p $STORAGE_ROOT/owncloud
# Create an initial configuration file.
instanceid=oc$(echo $PRIMARY_HOSTNAME | sha1sum | fold -w 10 | head -n 1)
cat > $STORAGE_ROOT/owncloud/config.php <<EOF;
<?php
<?php
\$CONFIG = array (
'datadirectory' => '$STORAGE_ROOT/owncloud',
@ -224,7 +249,6 @@ EOF
# Set permissions
chown -R www-data.www-data $STORAGE_ROOT/owncloud /usr/local/lib/owncloud
# Execute Nextcloud's setup step, which creates the Nextcloud sqlite database.
# It also wipes it if it exists. And it updates config.php with database
# settings and deletes the autoconfig.php file.
@ -275,7 +299,6 @@ chown www-data.www-data $STORAGE_ROOT/owncloud/config.php
hide_output sudo -u www-data php /usr/local/lib/owncloud/console.php app:disable firstrunwizard
hide_output sudo -u www-data php /usr/local/lib/owncloud/console.php app:enable user_external
hide_output sudo -u www-data php /usr/local/lib/owncloud/console.php app:enable contacts
hide_output sudo -u www-data php /usr/local/lib/owncloud/console.php app:enable calendar
# When upgrading, run the upgrade script again now that apps are enabled. It seems like
# the first upgrade at the top won't work because apps may be disabled during upgrade?
@ -285,7 +308,7 @@ if [ \( $? -ne 0 \) -a \( $? -ne 3 \) ]; then exit 1; fi
# Set PHP FPM values to support large file uploads
# (semicolon is the comment character in this file, hashes produce deprecation warnings)
tools/editconf.py /etc/php/7.2/fpm/php.ini -c ';' \
../tools/editconf.py /etc/php/7.2/fpm/php.ini -c ';' \
upload_max_filesize=16G \
post_max_size=16G \
output_buffering=16384 \
@ -294,31 +317,32 @@ tools/editconf.py /etc/php/7.2/fpm/php.ini -c ';' \
short_open_tag=On
# Set Nextcloud recommended opcache settings
tools/editconf.py /etc/php/7.2/cli/conf.d/10-opcache.ini -c ';' \
../tools/editconf.py /etc/php/7.2/cli/conf.d/10-opcache.ini -c ';' \
opcache.enable=1 \
opcache.enable_cli=1 \
opcache.enable_cli=1 \
opcache.interned_strings_buffer=8 \
opcache.max_accelerated_files=10000 \
opcache.memory_consumption=128 \
opcache.save_comments=1 \
opcache.revalidate_freq=1
# Configure the path environment for php-fpm
../tools/editconf.py /etc/php/7.2/fpm/pool.d/www.conf -c ';' \
env[PATH]=/usr/local/bin:/usr/bin:/bin
# If apc is explicitly disabled we need to enable it
if grep -q apc.enabled=0 /etc/php/7.2/mods-available/apcu.ini; then
tools/editconf.py /etc/php/7.2/mods-available/apcu.ini -c ';' \
../tools/editconf.py /etc/php/7.2/mods-available/apcu.ini -c ';' \
apc.enabled=1
fi
# Set up a cron job for Nextcloud.
cat > /etc/cron.d/mailinabox-nextcloud << EOF;
cat > /etc/cron.hourly/mailinabox-owncloud << EOF;
#!/bin/bash
# Mail-in-a-Box
*/5 * * * * root sudo -u www-data php -f /usr/local/lib/owncloud/cron.php
sudo -u www-data php -f /usr/local/lib/owncloud/cron.php
EOF
chmod +x /etc/cron.d/mailinabox-nextcloud
# Remove previous hourly cronjob
rm -f /etc/cron.hourly/mailinabox-owncloud
chmod +x /etc/cron.hourly/mailinabox-owncloud
# There's nothing much of interest that a user could do as an admin for Nextcloud,
# and there's a lot they could mess up, so we don't make any users admins of Nextcloud.