228 lines
8.3 KiB
Bash
228 lines
8.3 KiB
Bash
#!/bin/bash
|
|
# Nextcloud-Updateskript
|
|
# --------------------------------------------------------------
|
|
# Bitte setzen Sie diese Parameter entsprechend Ihrer Nextcloud
|
|
# --------------------------------------------------------------
|
|
WEBSERVER="nginx"
|
|
# alternativ "apache2"
|
|
|
|
PHPVERSION="8.3"
|
|
# alternativ "8.1" oder "8.2"
|
|
|
|
DPATH="/var/www/nextcloud"
|
|
# alternativ "/Pfad/zur/Nextcloud-Software"
|
|
|
|
NCALIASGROUP="https://ihre.hhf.technology:443,https://ihre\\.domain\\.de:443"
|
|
# ersetzen Sie "ihre", "domain" und "de"
|
|
|
|
NCOUSERNAME="NextcloudOfficeAdmin-Benutzername"
|
|
# ersetzen Sie "NextcloudOfficeAdmin-Benutzername"
|
|
|
|
NCOUSERPWD="NextcloudOfficeAdmin-Passwort"
|
|
# ersetzen Sie "NextcloudOfficeAdmin-Passwort"
|
|
|
|
SPATH="/sicherung/sql"
|
|
SNPATH="/sicherung/nextcloud"
|
|
# Sicherungverzeichnisse angeben
|
|
|
|
# --------------------------------------------------------------
|
|
# »»» Ab hier KEINE Änderungen mehr vornehmen! «««
|
|
# --------------------------------------------------------------
|
|
if [ -f /tmp/ncupdateskript ]; then
|
|
clear
|
|
clear
|
|
echo " ++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
|
echo ""
|
|
echo " » Das Updateskript ist bereits aktiv - *ABBRUCH*"
|
|
echo " » Oder wurde ein vorheriger Prozess abgebrochen?"
|
|
echo ""
|
|
echo " » "$(ls /tmp/ncupdateskript)
|
|
echo ""
|
|
echo " » Entfernen Sie ggf. die Datei mit diesem Befehl:"
|
|
echo " » sudo rm -f /tmp/ncupdateskript"
|
|
echo ""
|
|
echo " ++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
if [ "$USER" != "root" ]
|
|
then
|
|
clear
|
|
echo ""
|
|
echo " » KEINE ROOT-BERECHTIGUNGEN | NO ROOT PERMISSIONS"
|
|
echo ""
|
|
echo "----------------------------------------------------------"
|
|
echo " » Bitte starten Sie das Skript als root: 'sudo ./zero.sh'"
|
|
echo " » Please run this script as root using: 'sudo ./zero.sh'"
|
|
echo "----------------------------------------------------------"
|
|
echo ""
|
|
exit 1
|
|
fi
|
|
touch /tmp/ncupdateskript
|
|
clear
|
|
echo ""
|
|
echo " » Die Parameter der Nextcloud werden ermittelt..."
|
|
echo ""
|
|
NEXTCLOUDVERSION=$(sudo -u www-data php $DPATH/occ config:system:get version)
|
|
NEXTCLOUDDATEN=$(sudo -u www-data php $DPATH/occ config:system:get datadirectory)
|
|
NEXTCLOUDDBTYPE=$(sudo -u www-data php $DPATH/occ config:system:get dbtype)
|
|
NEXTCLOUDDBHOST=$(sudo -u www-data php $DPATH/occ config:system:get dbhost)
|
|
NEXTCLOUDDB=$(sudo -u www-data php $DPATH/occ config:system:get dbname)
|
|
NEXTCLOUDDBUSER=$(sudo -u www-data php $DPATH/occ config:system:get dbuser)
|
|
NEXTCLOUDDBPASSWORD=$(sudo -u www-data php $DPATH/occ config:system:get dbpassword)
|
|
NEXTCLOUDDBTYPE=$(sudo -u www-data php $DPATH/occ config:system:get dbtype)
|
|
SDATE="nextcloud.sql"
|
|
apt update
|
|
if [ $NEXTCLOUDDBTYPE = "pgsql" ]; then
|
|
apt-mark unhold pgsql*
|
|
apt-mark unhold postgresql*
|
|
else
|
|
apt-mark unhold mariadb-*
|
|
apt-mark unhold mysql-*
|
|
apt-mark unhold galera-*
|
|
fi
|
|
apt-mark unhold $WEBSERVER*
|
|
apt-mark unhold redis*
|
|
apt-mark unhold php-* php$PHPVERSION-*
|
|
apt-mark unhold elasticsearch*
|
|
apt upgrade -V
|
|
if [ $NEXTCLOUDDBTYPE = "pgsql" ]; then
|
|
apt-mark hold pgsql*
|
|
apt-mark hold postgresql*
|
|
else
|
|
apt-mark hold mariadb-*
|
|
apt-mark hold mysql-*
|
|
apt-mark hold galera-*
|
|
fi
|
|
apt-mark hold $WEBSERVER*
|
|
apt-mark hold redis*
|
|
apt-mark hold php-* php$PHPVERSION-*
|
|
apt-mark hold elasticsearch*
|
|
apt autoremove
|
|
apt autoclean
|
|
chown -R www-data:www-data $DPATH
|
|
find $DPATH/ -type d -exec chmod 750 {} \;
|
|
find $DPATH/ -type f -exec chmod 640 {} \;
|
|
if [ -d "$DPATH/apps/notify_push" ]; then
|
|
sudo chmod ug+x $DPATH/apps/notify_push/bin/x86_64/notify_push
|
|
fi
|
|
clear
|
|
echo ""
|
|
echo -n " » Soll eine DB- und Nextcloud-Dateisicherung erstellt werden [y|n]?"
|
|
read answer
|
|
if [ "$answer" != "${answer#[YyjJ]}" ];then
|
|
echo -n " » Sollen die vorherigen Sicherungen gelöscht werden [y|n]?"
|
|
read answer
|
|
if [ "$answer" != "${answer#[YyjJ]}" ];then
|
|
rm -Rf $SPATH-* $SNPATH-*
|
|
fi
|
|
if [ ! -d $SPATH-$NEXTCLOUDVERSION ]; then
|
|
mkdir -p $SPATH-$NEXTCLOUDVERSION
|
|
fi
|
|
if [ ! -d $SNPATH-$NEXTCLOUDVERSION ]; then
|
|
mkdir -p $SNPATH-$NEXTCLOUDVERSION
|
|
fi
|
|
echo ""
|
|
sudo -u www-data php $DPATH/occ maintenance:mode --on
|
|
echo ""
|
|
echo " » Die Datenbanksicherung wird gestartet..."
|
|
if [ $NEXTCLOUDDBTYPE = "pgsql" ]; then
|
|
PGPASSWORD="$NEXTCLOUDDBPASSWORD" pg_dump $NEXTCLOUDDB -h $NEXTCLOUDDBHOST -U $NEXTCLOUDDBUSER -f $SPATH-$NEXTCLOUDVERSION/$SDATE
|
|
else
|
|
mysqldump --single-transaction --routines -h $NEXTCLOUDDBHOST -u$NEXTCLOUDDBUSER -p$NEXTCLOUDDBPASSWORD -e $NEXTCLOUDDB > $SPATH-$NEXTCLOUDVERSION/$SDATE
|
|
fi
|
|
echo ""
|
|
echo " » Die Datenbankgröße wird ermittelt..."
|
|
echo -e "\033[32m » $(du -sh $SPATH-$NEXTCLOUDVERSION/$SDATE | awk '{ print $1 }')\033[0m"
|
|
echo ""
|
|
echo " » Das Nextcloudverzeichnis wird gesichert..."
|
|
rsync -a --exclude="data/" $DPATH/ $SNPATH-$NEXTCLOUDVERSION
|
|
echo -e "\033[32m » $(du -sh $SNPATH-$NEXTCLOUDVERSION | awk '{ print $1 }')\033[0m"
|
|
echo ""
|
|
sudo -u www-data php $DPATH/occ maintenance:mode --off
|
|
echo ""
|
|
fi
|
|
echo ""
|
|
echo -n " » Nextcloud Updates gewünscht [y|n]?"
|
|
read answer
|
|
if [ "$answer" != "${answer#[YyjJ]}" ] ;then
|
|
echo ""
|
|
sudo -u www-data php $DPATH/updater/updater.phar --no-backup
|
|
sudo -u www-data php $DPATH/occ status
|
|
sudo -u www-data php $DPATH/occ -V
|
|
sudo -u www-data php $DPATH/occ db:add-missing-primary-keys
|
|
sudo -u www-data php $DPATH/occ db:add-missing-indices
|
|
sudo -u www-data php $DPATH/occ db:add-missing-columns
|
|
sudo -u www-data php $DPATH/occ db:convert-filecache-bigint
|
|
sudo -u www-data php $DPATH/occ maintenance:repair --include-expensive
|
|
sudo -u www-data sed -i "s/output_buffering=.*/output_buffering=0/" $DPATH/.user.ini
|
|
clear
|
|
echo ""
|
|
echo " » Liste zu aktualisierender Apps:"
|
|
echo ""
|
|
sudo -u www-data php $DPATH/occ app:update --showonly -v
|
|
echo ""
|
|
echo -n " » Möchten Sie die Nextcloud Apps aktualisieren [y|n]?"
|
|
read answer
|
|
if [ "$answer" != "${answer#[YyjJ]}" ] ;then
|
|
sudo -u www-data php $DPATH/occ app:update --all -v
|
|
sudo -u www-data php $DPATH/occ app:list | grep -i richdocuments &> /dev/null
|
|
if [ $? -eq 0 ]; then
|
|
sudo -u www-data php $DPATH/occ richdocuments:update-empty-templates
|
|
fi
|
|
else
|
|
clear
|
|
echo " » Nextcloud Apps wurden nicht aktualisiert."
|
|
echo ""
|
|
fi
|
|
else
|
|
clear
|
|
echo " » Nextcloud wurde nicht aktualisiert/überprüft."
|
|
echo ""
|
|
fi
|
|
echo -n " » Möchten Sie den Nextcloud Office Docker Container aktualisieren [y|n]?"
|
|
read answer
|
|
if [ "$answer" != "${answer#[YyjJ]}" ]
|
|
then
|
|
docker stop NEXTCLOUDOFFICE
|
|
docker rm NEXTCLOUDOFFICE
|
|
docker image rm $(docker image ls | grep collabora/code | awk '{ print $3 }')
|
|
docker run -t -d -p 127.0.0.1:9980:9980 -e "aliasgroup1=$NCALIASGROUP" -e "username=$NCOUSERNAME" -e "password=$NCOUSERPWD" --name NEXTCLOUDOFFICE --memory="4G" --memory-swap="4G" -e "lang=de_DE" -e "dictionaries=de_DE en_GB en_US" -e "extra_params=--o:home_mode.enable=true" --restart always collabora/code
|
|
sudo -u www-data php $DPATH/occ richdocuments:update-empty-templates
|
|
else
|
|
clear
|
|
echo " » Nextcloud Office Docker Container wird nicht aktualisiert"
|
|
echo ""
|
|
fi
|
|
clear
|
|
sudo -u www-data php $DPATH/occ setupchecks
|
|
echo ""
|
|
echo " ++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
|
echo ""
|
|
echo " » Dienste werden neu gestartet..."
|
|
echo ""
|
|
dpkg -s elasticsearch &> /dev/null
|
|
if [ $? -eq 0 ]; then
|
|
echo " » Elasticsearch wird zuerst neu gestartet"
|
|
systemctl restart elasticsearch.service
|
|
else
|
|
echo " » Elasticsearch ist nicht installiert!"
|
|
fi
|
|
echo ""
|
|
if [ $NEXTCLOUDDBTYPE = "pgsql" ]; then
|
|
sudo systemctl restart postgresql.service redis-server.service php$PHPVERSION-fpm.service $WEBSERVER.service
|
|
else
|
|
sudo systemctl restart mariadb.service redis-server.service php$PHPVERSION-fpm.service $WEBSERVER.service
|
|
fi
|
|
if [ -e /var/run/reboot-required ]; then
|
|
echo -e " »\e[1;31m ACHTUNG: ES IST EIN SERVERNEUSTART ERFORDERLICH.\033[0m"
|
|
echo ""
|
|
echo " ++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
|
else
|
|
echo -e " »\033[32m KEIN Serverneustart notwendig.\033[0m"
|
|
echo ""
|
|
echo " ++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
|
|
fi
|
|
echo ""
|
|
rm -f /tmp/ncupdateskript
|
|
exit 0
|