From f4429bb0ffca70fa6d59cdd5ef342d19b374239d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20M=C3=A9lotte?= Date: Tue, 26 Sep 2023 11:38:07 +0200 Subject: [PATCH 1/6] README.md: clarify that _HOST variables cannot be files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The auto configuration sections seems to imply that POSTGRES_HOST and MYSQL_HOST can be file variables, while this is not supported. If all variables are set as files including the host, the installation will not be done automatically. This can be hard to figure out, as during the first start of the container nothing indicates why the auto configuration is not done. To try to make it a bit clearer in the README, explicitly mention that using a file for the hosts variable is not supported. Furthermore, in the docker secrets section it's currently easy to misread the fact that the last variable mentioned (the host) is not using '_FILE'. Since it's anyway not part of the group of variables that support secrets, remove it from the list to avoid confusion. Signed-off-by: Raphaël Mélotte --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a4592d70..2909c726 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ __PostgreSQL__: - `POSTGRES_PASSWORD` Password for the database user using postgres. - `POSTGRES_HOST` Hostname of the database server using postgres. -As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. See [Docker secrets](#docker-secrets) section below. +As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables (except for `POSTGRES_HOST` and `MYSQL_HOST`, which cannot be loaded from files), , causing the initialization script to load the values for those variables from files present in the container. See [Docker secrets](#docker-secrets) section below. If you set any group of values (i.e. all of `MYSQL_DATABASE`, `MYSQL_USER`, `MYSQL_PASSWORD`, `MYSQL_HOST`), they will not be asked in the install page on first run. With a complete configuration by using all variables for your database type, you can additionally configure your Nextcloud instance by setting admin user and password (only works if you set both): @@ -424,7 +424,7 @@ secrets: Currently, this is only supported for `NEXTCLOUD_ADMIN_PASSWORD`, `NEXTCLOUD_ADMIN_USER`, `MYSQL_DATABASE`, `MYSQL_PASSWORD`, `MYSQL_USER`, `POSTGRES_DB`, `POSTGRES_PASSWORD`, `POSTGRES_USER`, `REDIS_HOST_PASSWORD`, `SMTP_PASSWORD`, `OBJECTSTORE_S3_KEY`, and `OBJECTSTORE_S3_SECRET`. -If you set any group of values (i.e. all of `MYSQL_DATABASE_FILE`, `MYSQL_USER_FILE`, `MYSQL_PASSWORD_FILE`, `MYSQL_HOST`), the script will not use the corresponding group of environment variables (`MYSQL_DATABASE`, `MYSQL_USER`, `MYSQL_PASSWORD`, `MYSQL_HOST`). +If you set any group of values (i.e. all of `MYSQL_DATABASE_FILE`, `MYSQL_USER_FILE`, `MYSQL_PASSWORD_FILE`), the script will not use the corresponding group of environment variables (`MYSQL_DATABASE`, `MYSQL_USER`, `MYSQL_PASSWORD`). # Make your Nextcloud available from the internet Until here, your Nextcloud is just available from your docker host. If you want your Nextcloud available from the internet adding SSL encryption is mandatory. From 70358187fdfd4a50535cef1f36a2e4450db2d731 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20M=C3=A9lotte?= Date: Tue, 26 Sep 2023 13:23:50 +0200 Subject: [PATCH 2/6] docker-entrypoint.sh: exit if DB host not set MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since all DB variables but the host can be set using secrets (by appending '_FILE' to the variable name), it can be easy for a user to mis-configure their DB host variable by storing them in MYSQL_HOST_FILE or POSTGRESQL_HOST_FILE (which is not supported). When that happens, the auto configuration is skipped. Such a situation is a bit cumbersome to figure out as nothing indicates why the auto configuration is skipped. To make to make it obvious to the user, exit early if DB variables have been set (using secrets or not), but the host has not been set (for example, because it was set in MYSQL_HOST_FILE). Signed-off-by: Raphaël Mélotte --- docker-entrypoint.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 4c85f6ad..93787303 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -207,12 +207,20 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' install=true - elif [ -n "${MYSQL_DATABASE+x}" ] && [ -n "${MYSQL_USER+x}" ] && [ -n "${MYSQL_PASSWORD+x}" ] && [ -n "${MYSQL_HOST+x}" ]; then + elif [ -n "${MYSQL_DATABASE+x}" ] && [ -n "${MYSQL_USER+x}" ] && [ -n "${MYSQL_PASSWORD+x}" ]; then + if [ -z "${MYSQL_HOST}" ] ; then + echo "MySQL credentials set but no MySQL host set. Please make sure \$MYSQL_HOST is set." + exit 1 + fi echo "Installing with MySQL database" # shellcheck disable=SC2016 install_options=$install_options' --database mysql --database-name "$MYSQL_DATABASE" --database-user "$MYSQL_USER" --database-pass "$MYSQL_PASSWORD" --database-host "$MYSQL_HOST"' install=true - elif [ -n "${POSTGRES_DB+x}" ] && [ -n "${POSTGRES_USER+x}" ] && [ -n "${POSTGRES_PASSWORD+x}" ] && [ -n "${POSTGRES_HOST+x}" ]; then + elif [ -n "${POSTGRES_DB+x}" ] && [ -n "${POSTGRES_USER+x}" ] && [ -n "${POSTGRES_PASSWORD+x}" ]; then + if [ -z "${POSTGRES_HOST}" ] ; then + echo "PostgreSQL credentials set but no PostgreSQL host set. Please make sure \$POSTGRES_HOST is set." + exit 1 + fi echo "Installing with PostgreSQL database" # shellcheck disable=SC2016 install_options=$install_options' --database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST"' From a1e93f429cb2fbdd66c284aa4ea41ae217b4e482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6?= Date: Wed, 18 Sep 2024 21:43:16 +0200 Subject: [PATCH 3/6] Bump stable to 29.0.7 (#2297) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix #2294 Signed-off-by: John Molakvoæ --- generate-stackbrew-library.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index 8d90d85b..a7718bc0 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -Eeuo pipefail -stable_channel='29.0.6' +stable_channel='29.0.7' self="$(basename "$BASH_SOURCE")" cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" From 2bc1036e611992c56a2cb5e9808698990256574c Mon Sep 17 00:00:00 2001 From: Florian Latifi Date: Wed, 18 Sep 2024 22:45:15 +0200 Subject: [PATCH 4/6] Exclude autoconfig.php from user config check (#2290) Signed-off-by: Florian Latifi --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 4e06fcc4..8e178f2e 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -280,7 +280,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP for cfgPath in /usr/src/nextcloud/config/*.php; do cfgFile=$(basename "$cfgPath") - if [ "$cfgFile" != "config.sample.php" ]; then + if [ "$cfgFile" != "config.sample.php" ] && [ "$cfgFile" != "autoconfig.php" ]; then if ! cmp -s "/usr/src/nextcloud/config/$cfgFile" "/var/www/html/config/$cfgFile"; then echo "Warning: /var/www/html/config/$cfgFile differs from the latest version of this image at /usr/src/nextcloud/config/$cfgFile" fi From 30b570f0b553736d63dc63cf487ff1e5e5331474 Mon Sep 17 00:00:00 2001 From: GitHub Workflow Date: Wed, 18 Sep 2024 20:45:28 +0000 Subject: [PATCH 5/6] Runs update.sh --- 28/apache/entrypoint.sh | 2 +- 28/fpm-alpine/entrypoint.sh | 2 +- 28/fpm/entrypoint.sh | 2 +- 29/apache/entrypoint.sh | 2 +- 29/fpm-alpine/entrypoint.sh | 2 +- 29/fpm/entrypoint.sh | 2 +- 30/apache/entrypoint.sh | 2 +- 30/fpm-alpine/entrypoint.sh | 2 +- 30/fpm/entrypoint.sh | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/28/apache/entrypoint.sh b/28/apache/entrypoint.sh index 4e06fcc4..8e178f2e 100755 --- a/28/apache/entrypoint.sh +++ b/28/apache/entrypoint.sh @@ -280,7 +280,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP for cfgPath in /usr/src/nextcloud/config/*.php; do cfgFile=$(basename "$cfgPath") - if [ "$cfgFile" != "config.sample.php" ]; then + if [ "$cfgFile" != "config.sample.php" ] && [ "$cfgFile" != "autoconfig.php" ]; then if ! cmp -s "/usr/src/nextcloud/config/$cfgFile" "/var/www/html/config/$cfgFile"; then echo "Warning: /var/www/html/config/$cfgFile differs from the latest version of this image at /usr/src/nextcloud/config/$cfgFile" fi diff --git a/28/fpm-alpine/entrypoint.sh b/28/fpm-alpine/entrypoint.sh index 4e06fcc4..8e178f2e 100755 --- a/28/fpm-alpine/entrypoint.sh +++ b/28/fpm-alpine/entrypoint.sh @@ -280,7 +280,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP for cfgPath in /usr/src/nextcloud/config/*.php; do cfgFile=$(basename "$cfgPath") - if [ "$cfgFile" != "config.sample.php" ]; then + if [ "$cfgFile" != "config.sample.php" ] && [ "$cfgFile" != "autoconfig.php" ]; then if ! cmp -s "/usr/src/nextcloud/config/$cfgFile" "/var/www/html/config/$cfgFile"; then echo "Warning: /var/www/html/config/$cfgFile differs from the latest version of this image at /usr/src/nextcloud/config/$cfgFile" fi diff --git a/28/fpm/entrypoint.sh b/28/fpm/entrypoint.sh index 4e06fcc4..8e178f2e 100755 --- a/28/fpm/entrypoint.sh +++ b/28/fpm/entrypoint.sh @@ -280,7 +280,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP for cfgPath in /usr/src/nextcloud/config/*.php; do cfgFile=$(basename "$cfgPath") - if [ "$cfgFile" != "config.sample.php" ]; then + if [ "$cfgFile" != "config.sample.php" ] && [ "$cfgFile" != "autoconfig.php" ]; then if ! cmp -s "/usr/src/nextcloud/config/$cfgFile" "/var/www/html/config/$cfgFile"; then echo "Warning: /var/www/html/config/$cfgFile differs from the latest version of this image at /usr/src/nextcloud/config/$cfgFile" fi diff --git a/29/apache/entrypoint.sh b/29/apache/entrypoint.sh index 4e06fcc4..8e178f2e 100755 --- a/29/apache/entrypoint.sh +++ b/29/apache/entrypoint.sh @@ -280,7 +280,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP for cfgPath in /usr/src/nextcloud/config/*.php; do cfgFile=$(basename "$cfgPath") - if [ "$cfgFile" != "config.sample.php" ]; then + if [ "$cfgFile" != "config.sample.php" ] && [ "$cfgFile" != "autoconfig.php" ]; then if ! cmp -s "/usr/src/nextcloud/config/$cfgFile" "/var/www/html/config/$cfgFile"; then echo "Warning: /var/www/html/config/$cfgFile differs from the latest version of this image at /usr/src/nextcloud/config/$cfgFile" fi diff --git a/29/fpm-alpine/entrypoint.sh b/29/fpm-alpine/entrypoint.sh index 4e06fcc4..8e178f2e 100755 --- a/29/fpm-alpine/entrypoint.sh +++ b/29/fpm-alpine/entrypoint.sh @@ -280,7 +280,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP for cfgPath in /usr/src/nextcloud/config/*.php; do cfgFile=$(basename "$cfgPath") - if [ "$cfgFile" != "config.sample.php" ]; then + if [ "$cfgFile" != "config.sample.php" ] && [ "$cfgFile" != "autoconfig.php" ]; then if ! cmp -s "/usr/src/nextcloud/config/$cfgFile" "/var/www/html/config/$cfgFile"; then echo "Warning: /var/www/html/config/$cfgFile differs from the latest version of this image at /usr/src/nextcloud/config/$cfgFile" fi diff --git a/29/fpm/entrypoint.sh b/29/fpm/entrypoint.sh index 4e06fcc4..8e178f2e 100755 --- a/29/fpm/entrypoint.sh +++ b/29/fpm/entrypoint.sh @@ -280,7 +280,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP for cfgPath in /usr/src/nextcloud/config/*.php; do cfgFile=$(basename "$cfgPath") - if [ "$cfgFile" != "config.sample.php" ]; then + if [ "$cfgFile" != "config.sample.php" ] && [ "$cfgFile" != "autoconfig.php" ]; then if ! cmp -s "/usr/src/nextcloud/config/$cfgFile" "/var/www/html/config/$cfgFile"; then echo "Warning: /var/www/html/config/$cfgFile differs from the latest version of this image at /usr/src/nextcloud/config/$cfgFile" fi diff --git a/30/apache/entrypoint.sh b/30/apache/entrypoint.sh index 4e06fcc4..8e178f2e 100755 --- a/30/apache/entrypoint.sh +++ b/30/apache/entrypoint.sh @@ -280,7 +280,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP for cfgPath in /usr/src/nextcloud/config/*.php; do cfgFile=$(basename "$cfgPath") - if [ "$cfgFile" != "config.sample.php" ]; then + if [ "$cfgFile" != "config.sample.php" ] && [ "$cfgFile" != "autoconfig.php" ]; then if ! cmp -s "/usr/src/nextcloud/config/$cfgFile" "/var/www/html/config/$cfgFile"; then echo "Warning: /var/www/html/config/$cfgFile differs from the latest version of this image at /usr/src/nextcloud/config/$cfgFile" fi diff --git a/30/fpm-alpine/entrypoint.sh b/30/fpm-alpine/entrypoint.sh index 4e06fcc4..8e178f2e 100755 --- a/30/fpm-alpine/entrypoint.sh +++ b/30/fpm-alpine/entrypoint.sh @@ -280,7 +280,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP for cfgPath in /usr/src/nextcloud/config/*.php; do cfgFile=$(basename "$cfgPath") - if [ "$cfgFile" != "config.sample.php" ]; then + if [ "$cfgFile" != "config.sample.php" ] && [ "$cfgFile" != "autoconfig.php" ]; then if ! cmp -s "/usr/src/nextcloud/config/$cfgFile" "/var/www/html/config/$cfgFile"; then echo "Warning: /var/www/html/config/$cfgFile differs from the latest version of this image at /usr/src/nextcloud/config/$cfgFile" fi diff --git a/30/fpm/entrypoint.sh b/30/fpm/entrypoint.sh index 4e06fcc4..8e178f2e 100755 --- a/30/fpm/entrypoint.sh +++ b/30/fpm/entrypoint.sh @@ -280,7 +280,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP for cfgPath in /usr/src/nextcloud/config/*.php; do cfgFile=$(basename "$cfgPath") - if [ "$cfgFile" != "config.sample.php" ]; then + if [ "$cfgFile" != "config.sample.php" ] && [ "$cfgFile" != "autoconfig.php" ]; then if ! cmp -s "/usr/src/nextcloud/config/$cfgFile" "/var/www/html/config/$cfgFile"; then echo "Warning: /var/www/html/config/$cfgFile differs from the latest version of this image at /usr/src/nextcloud/config/$cfgFile" fi From f6d767efb1c8853952c138f4b6429a2441fbe6e6 Mon Sep 17 00:00:00 2001 From: GitHub Workflow Date: Sun, 22 Sep 2024 00:34:53 +0000 Subject: [PATCH 6/6] Runs update.sh --- 28/apache/Dockerfile | 2 +- 28/fpm-alpine/Dockerfile | 2 +- 28/fpm/Dockerfile | 2 +- 29/apache/Dockerfile | 2 +- 29/fpm-alpine/Dockerfile | 2 +- 29/fpm/Dockerfile | 2 +- 30/apache/Dockerfile | 2 +- 30/fpm-alpine/Dockerfile | 2 +- 30/fpm/Dockerfile | 2 +- 9 files changed, 9 insertions(+), 9 deletions(-) diff --git a/28/apache/Dockerfile b/28/apache/Dockerfile index 9ac2e524..f9637bd7 100644 --- a/28/apache/Dockerfile +++ b/28/apache/Dockerfile @@ -65,7 +65,7 @@ RUN set -ex; \ ; \ \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-5.1.23; \ + pecl install APCu-5.1.24; \ pecl install imagick-3.7.0; \ pecl install memcached-3.2.0; \ pecl install redis-6.0.2; \ diff --git a/28/fpm-alpine/Dockerfile b/28/fpm-alpine/Dockerfile index 02ab2450..24f4d938 100644 --- a/28/fpm-alpine/Dockerfile +++ b/28/fpm-alpine/Dockerfile @@ -63,7 +63,7 @@ RUN set -ex; \ ; \ \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-5.1.23; \ + pecl install APCu-5.1.24; \ pecl install imagick-3.7.0; \ pecl install memcached-3.2.0; \ pecl install redis-6.0.2; \ diff --git a/28/fpm/Dockerfile b/28/fpm/Dockerfile index 17432c85..4a8da235 100644 --- a/28/fpm/Dockerfile +++ b/28/fpm/Dockerfile @@ -65,7 +65,7 @@ RUN set -ex; \ ; \ \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-5.1.23; \ + pecl install APCu-5.1.24; \ pecl install imagick-3.7.0; \ pecl install memcached-3.2.0; \ pecl install redis-6.0.2; \ diff --git a/29/apache/Dockerfile b/29/apache/Dockerfile index 371d4cd7..a81658c2 100644 --- a/29/apache/Dockerfile +++ b/29/apache/Dockerfile @@ -65,7 +65,7 @@ RUN set -ex; \ ; \ \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-5.1.23; \ + pecl install APCu-5.1.24; \ pecl install imagick-3.7.0; \ pecl install memcached-3.2.0; \ pecl install redis-6.0.2; \ diff --git a/29/fpm-alpine/Dockerfile b/29/fpm-alpine/Dockerfile index 5e8aa0f8..017de203 100644 --- a/29/fpm-alpine/Dockerfile +++ b/29/fpm-alpine/Dockerfile @@ -63,7 +63,7 @@ RUN set -ex; \ ; \ \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-5.1.23; \ + pecl install APCu-5.1.24; \ pecl install imagick-3.7.0; \ pecl install memcached-3.2.0; \ pecl install redis-6.0.2; \ diff --git a/29/fpm/Dockerfile b/29/fpm/Dockerfile index a134d720..00776307 100644 --- a/29/fpm/Dockerfile +++ b/29/fpm/Dockerfile @@ -65,7 +65,7 @@ RUN set -ex; \ ; \ \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-5.1.23; \ + pecl install APCu-5.1.24; \ pecl install imagick-3.7.0; \ pecl install memcached-3.2.0; \ pecl install redis-6.0.2; \ diff --git a/30/apache/Dockerfile b/30/apache/Dockerfile index 93642f7b..907fc57e 100644 --- a/30/apache/Dockerfile +++ b/30/apache/Dockerfile @@ -65,7 +65,7 @@ RUN set -ex; \ ; \ \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-5.1.23; \ + pecl install APCu-5.1.24; \ pecl install imagick-3.7.0; \ pecl install memcached-3.2.0; \ pecl install redis-6.0.2; \ diff --git a/30/fpm-alpine/Dockerfile b/30/fpm-alpine/Dockerfile index 11c6e1ba..a8b5faa6 100644 --- a/30/fpm-alpine/Dockerfile +++ b/30/fpm-alpine/Dockerfile @@ -63,7 +63,7 @@ RUN set -ex; \ ; \ \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-5.1.23; \ + pecl install APCu-5.1.24; \ pecl install imagick-3.7.0; \ pecl install memcached-3.2.0; \ pecl install redis-6.0.2; \ diff --git a/30/fpm/Dockerfile b/30/fpm/Dockerfile index e9a09f6a..e2a52ed2 100644 --- a/30/fpm/Dockerfile +++ b/30/fpm/Dockerfile @@ -65,7 +65,7 @@ RUN set -ex; \ ; \ \ # pecl will claim success even if one install fails, so we need to perform each install separately - pecl install APCu-5.1.23; \ + pecl install APCu-5.1.24; \ pecl install imagick-3.7.0; \ pecl install memcached-3.2.0; \ pecl install redis-6.0.2; \