diff --git a/README.md b/README.md index ab6608ad..fda5a1f8 100644 --- a/README.md +++ b/README.md @@ -242,6 +242,10 @@ During a fresh Nextcloud installation, the latest version (from the image) of th The copied files, however, are **not** automatically overwritten whenever you update your environment with a newer Nextcloud image. This is to prevent local changes in `/var/www/html/config` from being unexpectedly overwritten. This may lead to your image-specific configuration files becoming outdated and image functionality not matching that which is documented. A warning will be generated in the container log output when outdated image-specific configuration files are detected at startup in a running container. When you see this warning, you should manually compare (or copy) the files from `/usr/src/nextcloud/config` to `/var/www/html/config`. +A command to copy these configs would e.g. be: +```console +docker exec sh -c "cp /usr/src/nextcloud/config/*.php /var/www/html/config" +``` As long as you have not modified any of the provided config files in `/var/www/html/config` (other than `config.php`) or only added new ones with names that do not conflict with the image specific ones, copying the new ones into place should be safe (but check the source path `/usr/src/nextcloud/config` for any newly named config files to avoid new overlaps just in case). @@ -649,6 +653,15 @@ docker exec container-name chown -R www-data:root /var/www/html ``` After changing the permissions, restart the container and the permission errors should disappear. + +# Troubleshooting + +The Nextcloud image entrypoint supports a debug (verbose) mode that can be toggled on via an environment variable. This can be used to troubleshoot container start-up, Nextcloud installation, entrypoint changes, etc. + +- `IMAGE_DEBUG=1` + +Note the container log will be highly verbose with this on! + # Help (Questions / Issues) **If you have any questions or problems while using the image, please ask for assistance on the Help Forum first (https://help.nextcloud.com)**. diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 8e178f2e..9fa58bca 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,6 +1,11 @@ #!/bin/sh set -eu +if [ -n "${IMAGE_DEBUG+x}" ]; then + echo "**Image debugging enabled**" + set -x +fi + # version_greater A B returns whether A > B version_greater() { [ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ] @@ -165,10 +170,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP echo "Upgrading nextcloud from $installed_version ..." run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before fi + rsync_options='' + if [ -n "${IMAGE_DEBUG+x}" ]; then + rsync_options='-vv' + fi if [ "$(id -u)" = 0 ]; then - rsync_options="-rlDog --chown $user:$group" + rsync_options="$rsync_options -rlDog --chown $user:$group" else - rsync_options="-rlD" + rsync_options="$rsync_options -rlD" fi rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ @@ -188,8 +197,12 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP install=false if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + install_options='' + if [ -n "${IMAGE_DEBUG+x}" ]; then + install_options='-v ' + fi # shellcheck disable=SC2016 - install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + install_options=$install_options'-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then # shellcheck disable=SC2016 install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' @@ -227,9 +240,10 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP try=0 until [ "$try" -gt "$max_retries" ] || run_as "php /var/www/html/occ maintenance:install $install_options" do - echo "Retrying install..." + echo "Nextcloud installation failed; will retry in 10s..." try=$((try+1)) sleep 10s + echo "Retrying nextcloud install now... ($try of $max_retries attempts)" done if [ "$try" -gt "$max_retries" ]; then echo "Installing of nextcloud failed!"