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:
parent
30885bcc8a
commit
b6f2da3d84
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user