#!/bin/bash # Update Nextcloud # Place in /etc/cron.daily and make executable with: chmod +x /etc/cron.daily/nextcloud-update user=www-data phpversion=php8.2 path=/var/www/nextcloud logfile="/var/log/nextcloud-update.log" ncc() { sudo -u "$user" "$phpversion" "$path/occ" "$@" } updater() { sudo -u "$user" "$phpversion" "$path/updater/updater.phar" "$@" } { echo "===== $(date): Nextcloud Update Start =====" updater --no-backup --no-interaction subcommands=( "db:add-missing-primary-keys" "db:add-missing-indices" "db:add-missing-columns" "db:convert-filecache-bigint" "files:scan-app-data" "upgrade" ) for cmd in "${subcommands[@]}"; do echo "Running: occ $cmd" ncc -n $cmd done # App Updates echo "Updating apps..." apps=$(ncc app:list | grep -Po 'Enabled:\s*\K.*' | tr -d ' ' | tr ',' '\n') for app in $apps; do echo "Updating app: $app" ncc app:update "$app" done echo "===== $(date): Nextcloud Update Finished =====" } >> "$logfile" 2>&1