From 28091effaa5ec58d390663b1c39d10de418c579a Mon Sep 17 00:00:00 2001 From: pierreozoux Date: Mon, 10 Feb 2020 15:16:16 +0100 Subject: [PATCH] Run update.sh Signed-off-by: pierreozoux --- .travis.yml | 14 +- 16.0/apache/Dockerfile | 25 +-- 16.0/apache/config/10.apps.config.php | 15 ++ 16.0/apache/config/apps.config.php | 15 -- 16.0/apache/config/autoconfig.php | 28 +-- 16.0/apache/config/language.config.php | 7 + 16.0/apache/config/s3.config.php | 20 +++ 16.0/apache/config/smtp.config.php | 4 + 16.0/apache/entrypoint.sh | 167 ++++++------------ 16.0/apache/upgrade.exclude | 5 - 16.0/fpm-alpine/Dockerfile | 26 +-- 16.0/fpm-alpine/config/10.apps.config.php | 15 ++ 16.0/fpm-alpine/config/apps.config.php | 15 -- 16.0/fpm-alpine/config/autoconfig.php | 28 +-- 16.0/fpm-alpine/config/language.config.php | 7 + 16.0/fpm-alpine/config/s3.config.php | 20 +++ 16.0/fpm-alpine/config/smtp.config.php | 4 + 16.0/fpm-alpine/entrypoint.sh | 167 ++++++------------ 16.0/fpm-alpine/upgrade.exclude | 5 - 16.0/fpm/Dockerfile | 25 +-- 16.0/fpm/config/10.apps.config.php | 15 ++ 16.0/fpm/config/apps.config.php | 15 -- 16.0/fpm/config/autoconfig.php | 28 +-- 16.0/fpm/config/language.config.php | 7 + 16.0/fpm/config/s3.config.php | 20 +++ 16.0/fpm/config/smtp.config.php | 4 + 16.0/fpm/entrypoint.sh | 167 ++++++------------ 16.0/fpm/upgrade.exclude | 5 - 17.0/apache/Dockerfile | 25 +-- 17.0/apache/config/10.apps.config.php | 15 ++ 17.0/apache/config/apps.config.php | 15 -- 17.0/apache/config/autoconfig.php | 28 +-- 17.0/apache/config/language.config.php | 7 + 17.0/apache/config/s3.config.php | 20 +++ 17.0/apache/config/smtp.config.php | 4 + 17.0/apache/entrypoint.sh | 167 ++++++------------ 17.0/apache/upgrade.exclude | 5 - 17.0/fpm-alpine/Dockerfile | 26 +-- 17.0/fpm-alpine/config/10.apps.config.php | 15 ++ 17.0/fpm-alpine/config/apps.config.php | 15 -- 17.0/fpm-alpine/config/autoconfig.php | 28 +-- 17.0/fpm-alpine/config/language.config.php | 7 + 17.0/fpm-alpine/config/s3.config.php | 20 +++ 17.0/fpm-alpine/config/smtp.config.php | 4 + 17.0/fpm-alpine/entrypoint.sh | 167 ++++++------------ 17.0/fpm-alpine/upgrade.exclude | 5 - 17.0/fpm/Dockerfile | 25 +-- 17.0/fpm/config/10.apps.config.php | 15 ++ 17.0/fpm/config/apps.config.php | 15 -- 17.0/fpm/config/autoconfig.php | 28 +-- 17.0/fpm/config/language.config.php | 7 + 17.0/fpm/config/s3.config.php | 20 +++ 17.0/fpm/config/smtp.config.php | 4 + 17.0/fpm/entrypoint.sh | 167 ++++++------------ 17.0/fpm/upgrade.exclude | 5 - 18.0-rc/apache/config/apps.config.php | 15 -- 18.0-rc/apache/config/autoconfig.php | 31 ---- 18.0-rc/apache/entrypoint.sh | 152 ---------------- 18.0-rc/apache/upgrade.exclude | 5 - 18.0-rc/fpm-alpine/config/apps.config.php | 15 -- 18.0-rc/fpm-alpine/config/autoconfig.php | 31 ---- 18.0-rc/fpm-alpine/entrypoint.sh | 152 ---------------- 18.0-rc/fpm-alpine/upgrade.exclude | 5 - 18.0-rc/fpm/config/apps.config.php | 15 -- 18.0-rc/fpm/config/autoconfig.php | 31 ---- 18.0-rc/fpm/entrypoint.sh | 152 ---------------- 18.0-rc/fpm/upgrade.exclude | 5 - 18.0/apache/Dockerfile | 25 +-- 18.0/apache/config/10.apps.config.php | 15 ++ 18.0/apache/config/apps.config.php | 15 -- 18.0/apache/config/autoconfig.php | 28 +-- 18.0/apache/config/language.config.php | 7 + 18.0/apache/config/s3.config.php | 20 +++ 18.0/apache/config/smtp.config.php | 4 + 18.0/apache/entrypoint.sh | 167 ++++++------------ 18.0/apache/upgrade.exclude | 5 - 18.0/fpm-alpine/Dockerfile | 26 +-- 18.0/fpm-alpine/config/10.apps.config.php | 15 ++ 18.0/fpm-alpine/config/apps.config.php | 15 -- 18.0/fpm-alpine/config/autoconfig.php | 28 +-- 18.0/fpm-alpine/config/language.config.php | 7 + 18.0/fpm-alpine/config/s3.config.php | 20 +++ 18.0/fpm-alpine/config/smtp.config.php | 4 + 18.0/fpm-alpine/entrypoint.sh | 167 ++++++------------ 18.0/fpm-alpine/upgrade.exclude | 5 - 18.0/fpm/Dockerfile | 25 +-- 18.0/fpm/config/10.apps.config.php | 15 ++ 18.0/fpm/config/apps.config.php | 15 -- 18.0/fpm/config/autoconfig.php | 28 +-- 18.0/fpm/config/language.config.php | 7 + 18.0/fpm/config/s3.config.php | 20 +++ 18.0/fpm/config/smtp.config.php | 4 + 18.0/fpm/entrypoint.sh | 167 ++++++------------ 18.0/fpm/upgrade.exclude | 5 - {18.0-rc => 19.0}/apache/Dockerfile | 29 +-- 19.0/apache/config/10.apps.config.php | 15 ++ .../config/apache-pretty-urls.config.php | 0 .../apache/config/apcu.config.php | 0 19.0/apache/config/autoconfig.php | 31 ++++ 19.0/apache/config/language.config.php | 7 + .../apache/config/redis.config.php | 0 19.0/apache/config/s3.config.php | 20 +++ .../apache}/config/smtp.config.php | 4 + {18.0-rc => 19.0}/apache/cron.sh | 0 19.0/apache/entrypoint.sh | 101 +++++++++++ {18.0-rc => 19.0}/fpm-alpine/Dockerfile | 30 ++-- 19.0/fpm-alpine/config/10.apps.config.php | 15 ++ .../fpm-alpine/config/apcu.config.php | 0 19.0/fpm-alpine/config/autoconfig.php | 31 ++++ 19.0/fpm-alpine/config/language.config.php | 7 + .../fpm-alpine/config/redis.config.php | 0 19.0/fpm-alpine/config/s3.config.php | 20 +++ .../fpm-alpine}/config/smtp.config.php | 4 + {18.0-rc => 19.0}/fpm-alpine/cron.sh | 0 19.0/fpm-alpine/entrypoint.sh | 101 +++++++++++ {18.0-rc => 19.0}/fpm/Dockerfile | 29 +-- 19.0/fpm/config/10.apps.config.php | 15 ++ {18.0-rc => 19.0}/fpm/config/apcu.config.php | 0 19.0/fpm/config/autoconfig.php | 31 ++++ 19.0/fpm/config/language.config.php | 7 + {18.0-rc => 19.0}/fpm/config/redis.config.php | 0 19.0/fpm/config/s3.config.php | 20 +++ .../fpm}/config/smtp.config.php | 4 + {18.0-rc => 19.0}/fpm/cron.sh | 0 19.0/fpm/entrypoint.sh | 101 +++++++++++ 125 files changed, 1781 insertions(+), 2041 deletions(-) create mode 100644 16.0/apache/config/10.apps.config.php delete mode 100644 16.0/apache/config/apps.config.php create mode 100644 16.0/apache/config/language.config.php create mode 100644 16.0/apache/config/s3.config.php delete mode 100644 16.0/apache/upgrade.exclude create mode 100644 16.0/fpm-alpine/config/10.apps.config.php delete mode 100644 16.0/fpm-alpine/config/apps.config.php create mode 100644 16.0/fpm-alpine/config/language.config.php create mode 100644 16.0/fpm-alpine/config/s3.config.php delete mode 100644 16.0/fpm-alpine/upgrade.exclude create mode 100644 16.0/fpm/config/10.apps.config.php delete mode 100644 16.0/fpm/config/apps.config.php create mode 100644 16.0/fpm/config/language.config.php create mode 100644 16.0/fpm/config/s3.config.php delete mode 100644 16.0/fpm/upgrade.exclude create mode 100644 17.0/apache/config/10.apps.config.php delete mode 100644 17.0/apache/config/apps.config.php create mode 100644 17.0/apache/config/language.config.php create mode 100644 17.0/apache/config/s3.config.php delete mode 100644 17.0/apache/upgrade.exclude create mode 100644 17.0/fpm-alpine/config/10.apps.config.php delete mode 100644 17.0/fpm-alpine/config/apps.config.php create mode 100644 17.0/fpm-alpine/config/language.config.php create mode 100644 17.0/fpm-alpine/config/s3.config.php delete mode 100644 17.0/fpm-alpine/upgrade.exclude create mode 100644 17.0/fpm/config/10.apps.config.php delete mode 100644 17.0/fpm/config/apps.config.php create mode 100644 17.0/fpm/config/language.config.php create mode 100644 17.0/fpm/config/s3.config.php delete mode 100644 17.0/fpm/upgrade.exclude delete mode 100644 18.0-rc/apache/config/apps.config.php delete mode 100644 18.0-rc/apache/config/autoconfig.php delete mode 100755 18.0-rc/apache/entrypoint.sh delete mode 100644 18.0-rc/apache/upgrade.exclude delete mode 100644 18.0-rc/fpm-alpine/config/apps.config.php delete mode 100644 18.0-rc/fpm-alpine/config/autoconfig.php delete mode 100755 18.0-rc/fpm-alpine/entrypoint.sh delete mode 100644 18.0-rc/fpm-alpine/upgrade.exclude delete mode 100644 18.0-rc/fpm/config/apps.config.php delete mode 100644 18.0-rc/fpm/config/autoconfig.php delete mode 100755 18.0-rc/fpm/entrypoint.sh delete mode 100644 18.0-rc/fpm/upgrade.exclude create mode 100644 18.0/apache/config/10.apps.config.php delete mode 100644 18.0/apache/config/apps.config.php create mode 100644 18.0/apache/config/language.config.php create mode 100644 18.0/apache/config/s3.config.php delete mode 100644 18.0/apache/upgrade.exclude create mode 100644 18.0/fpm-alpine/config/10.apps.config.php delete mode 100644 18.0/fpm-alpine/config/apps.config.php create mode 100644 18.0/fpm-alpine/config/language.config.php create mode 100644 18.0/fpm-alpine/config/s3.config.php delete mode 100644 18.0/fpm-alpine/upgrade.exclude create mode 100644 18.0/fpm/config/10.apps.config.php delete mode 100644 18.0/fpm/config/apps.config.php create mode 100644 18.0/fpm/config/language.config.php create mode 100644 18.0/fpm/config/s3.config.php delete mode 100644 18.0/fpm/upgrade.exclude rename {18.0-rc => 19.0}/apache/Dockerfile (86%) create mode 100644 19.0/apache/config/10.apps.config.php rename {18.0-rc => 19.0}/apache/config/apache-pretty-urls.config.php (100%) rename {18.0-rc => 19.0}/apache/config/apcu.config.php (100%) create mode 100644 19.0/apache/config/autoconfig.php create mode 100644 19.0/apache/config/language.config.php rename {18.0-rc => 19.0}/apache/config/redis.config.php (100%) create mode 100644 19.0/apache/config/s3.config.php rename {18.0-rc/fpm => 19.0/apache}/config/smtp.config.php (71%) rename {18.0-rc => 19.0}/apache/cron.sh (100%) create mode 100755 19.0/apache/entrypoint.sh rename {18.0-rc => 19.0}/fpm-alpine/Dockerfile (81%) create mode 100644 19.0/fpm-alpine/config/10.apps.config.php rename {18.0-rc => 19.0}/fpm-alpine/config/apcu.config.php (100%) create mode 100644 19.0/fpm-alpine/config/autoconfig.php create mode 100644 19.0/fpm-alpine/config/language.config.php rename {18.0-rc => 19.0}/fpm-alpine/config/redis.config.php (100%) create mode 100644 19.0/fpm-alpine/config/s3.config.php rename {18.0-rc/apache => 19.0/fpm-alpine}/config/smtp.config.php (71%) rename {18.0-rc => 19.0}/fpm-alpine/cron.sh (100%) create mode 100755 19.0/fpm-alpine/entrypoint.sh rename {18.0-rc => 19.0}/fpm/Dockerfile (85%) create mode 100644 19.0/fpm/config/10.apps.config.php rename {18.0-rc => 19.0}/fpm/config/apcu.config.php (100%) create mode 100644 19.0/fpm/config/autoconfig.php create mode 100644 19.0/fpm/config/language.config.php rename {18.0-rc => 19.0}/fpm/config/redis.config.php (100%) create mode 100644 19.0/fpm/config/s3.config.php rename {18.0-rc/fpm-alpine => 19.0/fpm}/config/smtp.config.php (71%) rename {18.0-rc => 19.0}/fpm/cron.sh (100%) create mode 100755 19.0/fpm/entrypoint.sh diff --git a/.travis.yml b/.travis.yml index ec082a65..271e82cd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -67,13 +67,7 @@ jobs: - travis_retry ./generate-stackbrew-library.sh - stage: test images - env: VERSION=18.0-rc VARIANT=fpm-alpine ARCH=amd64 - - env: VERSION=18.0-rc VARIANT=fpm-alpine ARCH=i386 - - env: VERSION=18.0-rc VARIANT=fpm ARCH=amd64 - - env: VERSION=18.0-rc VARIANT=fpm ARCH=i386 - - env: VERSION=18.0-rc VARIANT=apache ARCH=amd64 - - env: VERSION=18.0-rc VARIANT=apache ARCH=i386 - - env: VERSION=16.0 VARIANT=fpm-alpine ARCH=amd64 + env: VERSION=16.0 VARIANT=fpm-alpine ARCH=amd64 - env: VERSION=16.0 VARIANT=fpm-alpine ARCH=i386 - env: VERSION=16.0 VARIANT=fpm ARCH=amd64 - env: VERSION=16.0 VARIANT=fpm ARCH=i386 @@ -91,3 +85,9 @@ jobs: - env: VERSION=18.0 VARIANT=fpm ARCH=i386 - env: VERSION=18.0 VARIANT=apache ARCH=amd64 - env: VERSION=18.0 VARIANT=apache ARCH=i386 + - env: VERSION=19.0 VARIANT=fpm-alpine ARCH=amd64 + - env: VERSION=19.0 VARIANT=fpm-alpine ARCH=i386 + - env: VERSION=19.0 VARIANT=fpm ARCH=amd64 + - env: VERSION=19.0 VARIANT=fpm ARCH=i386 + - env: VERSION=19.0 VARIANT=apache ARCH=amd64 + - env: VERSION=19.0 VARIANT=apache ARCH=i386 diff --git a/16.0/apache/Dockerfile b/16.0/apache/Dockerfile index 3578109f..9ec7b039 100644 --- a/16.0/apache/Dockerfile +++ b/16.0/apache/Dockerfile @@ -104,7 +104,6 @@ RUN { \ chown -R www-data:root /var/www; \ chmod -R g=u /var/www -VOLUME /var/www/html RUN a2enmod rewrite remoteip ;\ {\ @@ -115,7 +114,7 @@ RUN a2enmod rewrite remoteip ;\ } > /etc/apache2/conf-available/remoteip.conf;\ a2enconf remoteip -ENV NEXTCLOUD_VERSION 16.0.8 +ENV NEXTCLOUD_VERSION 16.0.11 RUN set -ex; \ fetchDeps=" \ @@ -133,19 +132,23 @@ RUN set -ex; \ # gpg key from https://nextcloud.com/nextcloud.asc gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + tar -xjf nextcloud.tar.bz2 -C /var/www/; \ + rm -rf /var/www/html; \ + mv /var/www/nextcloud /var/www/html; \ gpgconf --kill all; \ - rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - rm -rf /usr/src/nextcloud/updater; \ - mkdir -p /usr/src/nextcloud/data; \ - mkdir -p /usr/src/nextcloud/custom_apps; \ - chmod +x /usr/src/nextcloud/occ; \ - \ + rm -r "$GNUPGHOME"; \ + rm -rf /var/www/html/updater; \ + mkdir -p /var/www/html/data; \ + mkdir -p /var/www/html/custom_apps; \ + chmod +x /var/www/html/occ; \ + touch /var/www/html/data/.ocdata; \ + touch /var/www/html/config/config.php; \ + chown -R www-data:root /var/www/html; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ rm -rf /var/lib/apt/lists/* -COPY *.sh upgrade.exclude / -COPY config/* /usr/src/nextcloud/config/ +COPY *.sh / +COPY --chown=www-data:root config/* /var/www/html/config/ ENTRYPOINT ["/entrypoint.sh"] CMD ["apache2-foreground"] diff --git a/16.0/apache/config/10.apps.config.php b/16.0/apache/config/10.apps.config.php new file mode 100644 index 00000000..4c37f72a --- /dev/null +++ b/16.0/apache/config/10.apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => OC::$SERVERROOT.'/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), + ), +); diff --git a/16.0/apache/config/apps.config.php b/16.0/apache/config/apps.config.php deleted file mode 100644 index a4bed833..00000000 --- a/16.0/apache/config/apps.config.php +++ /dev/null @@ -1,15 +0,0 @@ - array ( - 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => false, - ), - 1 => array ( - "path" => OC::$SERVERROOT."/custom_apps", - "url" => "/custom_apps", - "writable" => true, - ), - ), -); diff --git a/16.0/apache/config/autoconfig.php b/16.0/apache/config/autoconfig.php index deeabe4e..a292dabb 100644 --- a/16.0/apache/config/autoconfig.php +++ b/16.0/apache/config/autoconfig.php @@ -3,29 +3,29 @@ $autoconfig_enabled = false; if (getenv('SQLITE_DATABASE')) { - $AUTOCONFIG["dbtype"] = "sqlite"; - $AUTOCONFIG["dbname"] = getenv('SQLITE_DATABASE'); + $AUTOCONFIG['dbtype'] = 'sqlite'; + $AUTOCONFIG['dbname'] = getenv('SQLITE_DATABASE'); $autoconfig_enabled = true; } elseif (getenv('MYSQL_DATABASE') && getenv('MYSQL_USER') && getenv('MYSQL_PASSWORD') && getenv('MYSQL_HOST')) { - $AUTOCONFIG["dbtype"] = "mysql"; - $AUTOCONFIG["dbname"] = getenv('MYSQL_DATABASE'); - $AUTOCONFIG["dbuser"] = getenv('MYSQL_USER'); - $AUTOCONFIG["dbpass"] = getenv('MYSQL_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('MYSQL_HOST'); + $AUTOCONFIG['dbtype'] = 'mysql'; + $AUTOCONFIG['dbname'] = getenv('MYSQL_DATABASE'); + $AUTOCONFIG['dbuser'] = getenv('MYSQL_USER'); + $AUTOCONFIG['dbpass'] = getenv('MYSQL_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('MYSQL_HOST'); $autoconfig_enabled = true; } elseif (getenv('POSTGRES_DB') && getenv('POSTGRES_USER') && getenv('POSTGRES_PASSWORD') && getenv('POSTGRES_HOST')) { - $AUTOCONFIG["dbtype"] = "pgsql"; - $AUTOCONFIG["dbname"] = getenv('POSTGRES_DB'); - $AUTOCONFIG["dbuser"] = getenv('POSTGRES_USER'); - $AUTOCONFIG["dbpass"] = getenv('POSTGRES_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('POSTGRES_HOST'); + $AUTOCONFIG['dbtype'] = 'pgsql'; + $AUTOCONFIG['dbname'] = getenv('POSTGRES_DB'); + $AUTOCONFIG['dbuser'] = getenv('POSTGRES_USER'); + $AUTOCONFIG['dbpass'] = getenv('POSTGRES_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('POSTGRES_HOST'); $autoconfig_enabled = true; } if ($autoconfig_enabled) { if (getenv('NEXTCLOUD_TABLE_PREFIX')) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + $AUTOCONFIG['dbtableprefix'] = getenv('NEXTCLOUD_TABLE_PREFIX'); } - $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; + $AUTOCONFIG['directory'] = getenv('NEXTCLOUD_DATA_DIR') ?: '/var/www/html/data'; } diff --git a/16.0/apache/config/language.config.php b/16.0/apache/config/language.config.php new file mode 100644 index 00000000..0528b6cf --- /dev/null +++ b/16.0/apache/config/language.config.php @@ -0,0 +1,7 @@ + getenv('DEFAULT_LANGUAGE') ?: 'en', + 'force_language' => getenv('FORCE_LANGUAGE') ?: false, + 'default_locale' => getenv('DEFAULT_LOCALE') ?: 'en_US', + 'force_locale' => getenv('FORCE_LOCALE') ?: false, +); diff --git a/16.0/apache/config/s3.config.php b/16.0/apache/config/s3.config.php new file mode 100644 index 00000000..a9171fdd --- /dev/null +++ b/16.0/apache/config/s3.config.php @@ -0,0 +1,20 @@ + array( + 'class' => '\\OC\\Files\\ObjectStore\\S3', + 'arguments' => array( + 'bucket' => getenv('OBJECTSTORE_S3_BUCKET'), + 'autocreate' => getenv('OBJECTSTORE_S3_AUTOCREATE') ?: true, + 'key' => getenv('OBJECTSTORE_S3_KEY'), + 'secret' => getenv('OBJECTSTORE_S3_SECRET'), + 'hostname' => getenv('OBJECTSTORE_S3_HOST'), + 'port' => getenv('OBJECTSTORE_S3_PORT'), + 'use_ssl' => getenv('OBJECTSTORE_S3_SSL') ?: true, + 'region' => getenv('OBJECTSTORE_S3_REGION') ?: "optional", + // required for some non Amazon S3 implementations + 'use_path_style' => getenv('OBJECTSTORE_S3_USEPATH_STYLE') ?: true, + ), + ), + ); +} diff --git a/16.0/apache/config/smtp.config.php b/16.0/apache/config/smtp.config.php index 59f1eaa1..6091dbcc 100644 --- a/16.0/apache/config/smtp.config.php +++ b/16.0/apache/config/smtp.config.php @@ -11,5 +11,9 @@ if (getenv('SMTP_HOST') && getenv('MAIL_FROM_ADDRESS') && getenv('MAIL_DOMAIN')) 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), 'mail_domain' => getenv('MAIL_DOMAIN'), + 'mail_smtpdebug' => getenv('SMTP_DEBUG') ?: false, + 'mail_template_class' => getenv('SMTP_TEMPLATE_CLASS') ?: '', + 'mail_send_plaintext_only' => getenv('SMTP_SEND_PLAINTEXT_ONLY') ?: false, + 'mail_sendmailmode' => getenv('SMTP_SENDMAIL_MODE') ?: 'smtp', ); } diff --git a/16.0/apache/entrypoint.sh b/16.0/apache/entrypoint.sh index fb2fe686..ad0eb222 100755 --- a/16.0/apache/entrypoint.sh +++ b/16.0/apache/entrypoint.sh @@ -1,16 +1,6 @@ #!/bin/sh set -eu -# 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" ] -} - -# return true if specified directory is empty -directory_empty() { - [ -z "$(ls -A "$1/")" ] -} - run_as() { if [ "$(id -u)" = 0 ]; then su -p www-data -s /bin/sh -c "$1" @@ -41,110 +31,69 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP } > /usr/local/etc/php/conf.d/redis-session.ini fi - installed_version="0.0.0.0" - if [ -f /var/www/html/version.php ]; then - # shellcheck disable=SC2016 - installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" - fi - # shellcheck disable=SC2016 - image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" + #upgrade + if php occ status | grep installed | grep true; then + run_as 'php /var/www/html/occ upgrade' + #install + else + echo "New nextcloud instance" - if version_greater "$installed_version" "$image_version"; then - echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" - exit 1 - fi - - if version_greater "$image_version" "$installed_version"; then - echo "Initializing nextcloud $image_version ..." - if [ "$installed_version" != "0.0.0.0" ]; then - echo "Upgrading nextcloud from $installed_version ..." - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before - fi - if [ "$(id -u)" = 0 ]; then - rsync_options="-rlDog --chown www-data:root" - else - rsync_options="-rlD" - fi - rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ - - for dir in config data custom_apps themes; do - if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then - rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - fi - done - rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - echo "Initializing finished" - - #install - if [ "$installed_version" = "0.0.0.0" ]; then - echo "New nextcloud instance" - - if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 - install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' - if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - fi - if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' - fi - - install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then - echo "Installing with SQLite database" - # 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 - 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 - 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"' - install=true - fi - - if [ "$install" = true ]; then - echo "starting nextcloud installation" - max_retries=10 - try=0 - until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] - do - echo "retrying install..." - try=$((try+1)) - sleep 10s - done - if [ "$try" -gt "$max_retries" ]; then - echo "installing of nextcloud failed!" - exit 1 - fi - if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then - echo "setting trusted domains…" - NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" - NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) - done - fi - else - echo "running web-based installer on first connect!" - fi + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi - #upgrade - else - run_as 'php /var/www/html/occ upgrade' - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after - echo "The following apps have been disabled:" - diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 - rm -f /tmp/list_before /tmp/list_after + install=false + if [ -n "${SQLITE_DATABASE+x}" ]; then + echo "Installing with SQLite database" + # 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 + 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 + 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"' + install=true + fi + if [ "$install" = true ]; then + echo "starting nextcloud installation" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 10s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + NC_TRUSTED_DOMAIN_IDX=1 + for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do + DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi fi fi fi diff --git a/16.0/apache/upgrade.exclude b/16.0/apache/upgrade.exclude deleted file mode 100644 index 354864da..00000000 --- a/16.0/apache/upgrade.exclude +++ /dev/null @@ -1,5 +0,0 @@ -/config/ -/data/ -/custom_apps/ -/themes/ -/version.php diff --git a/16.0/fpm-alpine/Dockerfile b/16.0/fpm-alpine/Dockerfile index d2ab77ea..84387770 100644 --- a/16.0/fpm-alpine/Dockerfile +++ b/16.0/fpm-alpine/Dockerfile @@ -91,10 +91,9 @@ RUN { \ chown -R www-data:root /var/www; \ chmod -R g=u /var/www -VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 16.0.8 +ENV NEXTCLOUD_VERSION 16.0.11 RUN set -ex; \ apk add --no-cache --virtual .fetch-deps \ @@ -110,17 +109,22 @@ RUN set -ex; \ # gpg key from https://nextcloud.com/nextcloud.asc gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + tar -xjf nextcloud.tar.bz2 -C /var/www/; \ + rm -rf /var/www/html; \ + mv /var/www/nextcloud /var/www/html; \ gpgconf --kill all; \ - rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - rm -rf /usr/src/nextcloud/updater; \ - mkdir -p /usr/src/nextcloud/data; \ - mkdir -p /usr/src/nextcloud/custom_apps; \ - chmod +x /usr/src/nextcloud/occ; \ - apk del .fetch-deps + rm -r "$GNUPGHOME"; \ + rm -rf /var/www/html/updater; \ + mkdir -p /var/www/html/data; \ + mkdir -p /var/www/html/custom_apps; \ + chmod +x /var/www/html/occ; \ + apk del .fetch-deps; \ + touch /var/www/html/data/.ocdata; \ + touch /var/www/html/config/config.php; \ + chown -R www-data:root /var/www/html -COPY *.sh upgrade.exclude / -COPY config/* /usr/src/nextcloud/config/ +COPY *.sh / +COPY --chown=www-data:root config/* /var/www/html/config/ ENTRYPOINT ["/entrypoint.sh"] CMD ["php-fpm"] diff --git a/16.0/fpm-alpine/config/10.apps.config.php b/16.0/fpm-alpine/config/10.apps.config.php new file mode 100644 index 00000000..4c37f72a --- /dev/null +++ b/16.0/fpm-alpine/config/10.apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => OC::$SERVERROOT.'/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), + ), +); diff --git a/16.0/fpm-alpine/config/apps.config.php b/16.0/fpm-alpine/config/apps.config.php deleted file mode 100644 index a4bed833..00000000 --- a/16.0/fpm-alpine/config/apps.config.php +++ /dev/null @@ -1,15 +0,0 @@ - array ( - 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => false, - ), - 1 => array ( - "path" => OC::$SERVERROOT."/custom_apps", - "url" => "/custom_apps", - "writable" => true, - ), - ), -); diff --git a/16.0/fpm-alpine/config/autoconfig.php b/16.0/fpm-alpine/config/autoconfig.php index deeabe4e..a292dabb 100644 --- a/16.0/fpm-alpine/config/autoconfig.php +++ b/16.0/fpm-alpine/config/autoconfig.php @@ -3,29 +3,29 @@ $autoconfig_enabled = false; if (getenv('SQLITE_DATABASE')) { - $AUTOCONFIG["dbtype"] = "sqlite"; - $AUTOCONFIG["dbname"] = getenv('SQLITE_DATABASE'); + $AUTOCONFIG['dbtype'] = 'sqlite'; + $AUTOCONFIG['dbname'] = getenv('SQLITE_DATABASE'); $autoconfig_enabled = true; } elseif (getenv('MYSQL_DATABASE') && getenv('MYSQL_USER') && getenv('MYSQL_PASSWORD') && getenv('MYSQL_HOST')) { - $AUTOCONFIG["dbtype"] = "mysql"; - $AUTOCONFIG["dbname"] = getenv('MYSQL_DATABASE'); - $AUTOCONFIG["dbuser"] = getenv('MYSQL_USER'); - $AUTOCONFIG["dbpass"] = getenv('MYSQL_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('MYSQL_HOST'); + $AUTOCONFIG['dbtype'] = 'mysql'; + $AUTOCONFIG['dbname'] = getenv('MYSQL_DATABASE'); + $AUTOCONFIG['dbuser'] = getenv('MYSQL_USER'); + $AUTOCONFIG['dbpass'] = getenv('MYSQL_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('MYSQL_HOST'); $autoconfig_enabled = true; } elseif (getenv('POSTGRES_DB') && getenv('POSTGRES_USER') && getenv('POSTGRES_PASSWORD') && getenv('POSTGRES_HOST')) { - $AUTOCONFIG["dbtype"] = "pgsql"; - $AUTOCONFIG["dbname"] = getenv('POSTGRES_DB'); - $AUTOCONFIG["dbuser"] = getenv('POSTGRES_USER'); - $AUTOCONFIG["dbpass"] = getenv('POSTGRES_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('POSTGRES_HOST'); + $AUTOCONFIG['dbtype'] = 'pgsql'; + $AUTOCONFIG['dbname'] = getenv('POSTGRES_DB'); + $AUTOCONFIG['dbuser'] = getenv('POSTGRES_USER'); + $AUTOCONFIG['dbpass'] = getenv('POSTGRES_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('POSTGRES_HOST'); $autoconfig_enabled = true; } if ($autoconfig_enabled) { if (getenv('NEXTCLOUD_TABLE_PREFIX')) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + $AUTOCONFIG['dbtableprefix'] = getenv('NEXTCLOUD_TABLE_PREFIX'); } - $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; + $AUTOCONFIG['directory'] = getenv('NEXTCLOUD_DATA_DIR') ?: '/var/www/html/data'; } diff --git a/16.0/fpm-alpine/config/language.config.php b/16.0/fpm-alpine/config/language.config.php new file mode 100644 index 00000000..0528b6cf --- /dev/null +++ b/16.0/fpm-alpine/config/language.config.php @@ -0,0 +1,7 @@ + getenv('DEFAULT_LANGUAGE') ?: 'en', + 'force_language' => getenv('FORCE_LANGUAGE') ?: false, + 'default_locale' => getenv('DEFAULT_LOCALE') ?: 'en_US', + 'force_locale' => getenv('FORCE_LOCALE') ?: false, +); diff --git a/16.0/fpm-alpine/config/s3.config.php b/16.0/fpm-alpine/config/s3.config.php new file mode 100644 index 00000000..a9171fdd --- /dev/null +++ b/16.0/fpm-alpine/config/s3.config.php @@ -0,0 +1,20 @@ + array( + 'class' => '\\OC\\Files\\ObjectStore\\S3', + 'arguments' => array( + 'bucket' => getenv('OBJECTSTORE_S3_BUCKET'), + 'autocreate' => getenv('OBJECTSTORE_S3_AUTOCREATE') ?: true, + 'key' => getenv('OBJECTSTORE_S3_KEY'), + 'secret' => getenv('OBJECTSTORE_S3_SECRET'), + 'hostname' => getenv('OBJECTSTORE_S3_HOST'), + 'port' => getenv('OBJECTSTORE_S3_PORT'), + 'use_ssl' => getenv('OBJECTSTORE_S3_SSL') ?: true, + 'region' => getenv('OBJECTSTORE_S3_REGION') ?: "optional", + // required for some non Amazon S3 implementations + 'use_path_style' => getenv('OBJECTSTORE_S3_USEPATH_STYLE') ?: true, + ), + ), + ); +} diff --git a/16.0/fpm-alpine/config/smtp.config.php b/16.0/fpm-alpine/config/smtp.config.php index 59f1eaa1..6091dbcc 100644 --- a/16.0/fpm-alpine/config/smtp.config.php +++ b/16.0/fpm-alpine/config/smtp.config.php @@ -11,5 +11,9 @@ if (getenv('SMTP_HOST') && getenv('MAIL_FROM_ADDRESS') && getenv('MAIL_DOMAIN')) 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), 'mail_domain' => getenv('MAIL_DOMAIN'), + 'mail_smtpdebug' => getenv('SMTP_DEBUG') ?: false, + 'mail_template_class' => getenv('SMTP_TEMPLATE_CLASS') ?: '', + 'mail_send_plaintext_only' => getenv('SMTP_SEND_PLAINTEXT_ONLY') ?: false, + 'mail_sendmailmode' => getenv('SMTP_SENDMAIL_MODE') ?: 'smtp', ); } diff --git a/16.0/fpm-alpine/entrypoint.sh b/16.0/fpm-alpine/entrypoint.sh index fb2fe686..ad0eb222 100755 --- a/16.0/fpm-alpine/entrypoint.sh +++ b/16.0/fpm-alpine/entrypoint.sh @@ -1,16 +1,6 @@ #!/bin/sh set -eu -# 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" ] -} - -# return true if specified directory is empty -directory_empty() { - [ -z "$(ls -A "$1/")" ] -} - run_as() { if [ "$(id -u)" = 0 ]; then su -p www-data -s /bin/sh -c "$1" @@ -41,110 +31,69 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP } > /usr/local/etc/php/conf.d/redis-session.ini fi - installed_version="0.0.0.0" - if [ -f /var/www/html/version.php ]; then - # shellcheck disable=SC2016 - installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" - fi - # shellcheck disable=SC2016 - image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" + #upgrade + if php occ status | grep installed | grep true; then + run_as 'php /var/www/html/occ upgrade' + #install + else + echo "New nextcloud instance" - if version_greater "$installed_version" "$image_version"; then - echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" - exit 1 - fi - - if version_greater "$image_version" "$installed_version"; then - echo "Initializing nextcloud $image_version ..." - if [ "$installed_version" != "0.0.0.0" ]; then - echo "Upgrading nextcloud from $installed_version ..." - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before - fi - if [ "$(id -u)" = 0 ]; then - rsync_options="-rlDog --chown www-data:root" - else - rsync_options="-rlD" - fi - rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ - - for dir in config data custom_apps themes; do - if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then - rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - fi - done - rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - echo "Initializing finished" - - #install - if [ "$installed_version" = "0.0.0.0" ]; then - echo "New nextcloud instance" - - if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 - install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' - if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - fi - if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' - fi - - install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then - echo "Installing with SQLite database" - # 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 - 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 - 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"' - install=true - fi - - if [ "$install" = true ]; then - echo "starting nextcloud installation" - max_retries=10 - try=0 - until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] - do - echo "retrying install..." - try=$((try+1)) - sleep 10s - done - if [ "$try" -gt "$max_retries" ]; then - echo "installing of nextcloud failed!" - exit 1 - fi - if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then - echo "setting trusted domains…" - NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" - NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) - done - fi - else - echo "running web-based installer on first connect!" - fi + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi - #upgrade - else - run_as 'php /var/www/html/occ upgrade' - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after - echo "The following apps have been disabled:" - diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 - rm -f /tmp/list_before /tmp/list_after + install=false + if [ -n "${SQLITE_DATABASE+x}" ]; then + echo "Installing with SQLite database" + # 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 + 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 + 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"' + install=true + fi + if [ "$install" = true ]; then + echo "starting nextcloud installation" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 10s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + NC_TRUSTED_DOMAIN_IDX=1 + for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do + DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi fi fi fi diff --git a/16.0/fpm-alpine/upgrade.exclude b/16.0/fpm-alpine/upgrade.exclude deleted file mode 100644 index 354864da..00000000 --- a/16.0/fpm-alpine/upgrade.exclude +++ /dev/null @@ -1,5 +0,0 @@ -/config/ -/data/ -/custom_apps/ -/themes/ -/version.php diff --git a/16.0/fpm/Dockerfile b/16.0/fpm/Dockerfile index 30f4bd39..6a486d4f 100644 --- a/16.0/fpm/Dockerfile +++ b/16.0/fpm/Dockerfile @@ -104,10 +104,9 @@ RUN { \ chown -R www-data:root /var/www; \ chmod -R g=u /var/www -VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 16.0.8 +ENV NEXTCLOUD_VERSION 16.0.11 RUN set -ex; \ fetchDeps=" \ @@ -125,19 +124,23 @@ RUN set -ex; \ # gpg key from https://nextcloud.com/nextcloud.asc gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + tar -xjf nextcloud.tar.bz2 -C /var/www/; \ + rm -rf /var/www/html; \ + mv /var/www/nextcloud /var/www/html; \ gpgconf --kill all; \ - rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - rm -rf /usr/src/nextcloud/updater; \ - mkdir -p /usr/src/nextcloud/data; \ - mkdir -p /usr/src/nextcloud/custom_apps; \ - chmod +x /usr/src/nextcloud/occ; \ - \ + rm -r "$GNUPGHOME"; \ + rm -rf /var/www/html/updater; \ + mkdir -p /var/www/html/data; \ + mkdir -p /var/www/html/custom_apps; \ + chmod +x /var/www/html/occ; \ + touch /var/www/html/data/.ocdata; \ + touch /var/www/html/config/config.php; \ + chown -R www-data:root /var/www/html; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ rm -rf /var/lib/apt/lists/* -COPY *.sh upgrade.exclude / -COPY config/* /usr/src/nextcloud/config/ +COPY *.sh / +COPY --chown=www-data:root config/* /var/www/html/config/ ENTRYPOINT ["/entrypoint.sh"] CMD ["php-fpm"] diff --git a/16.0/fpm/config/10.apps.config.php b/16.0/fpm/config/10.apps.config.php new file mode 100644 index 00000000..4c37f72a --- /dev/null +++ b/16.0/fpm/config/10.apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => OC::$SERVERROOT.'/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), + ), +); diff --git a/16.0/fpm/config/apps.config.php b/16.0/fpm/config/apps.config.php deleted file mode 100644 index a4bed833..00000000 --- a/16.0/fpm/config/apps.config.php +++ /dev/null @@ -1,15 +0,0 @@ - array ( - 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => false, - ), - 1 => array ( - "path" => OC::$SERVERROOT."/custom_apps", - "url" => "/custom_apps", - "writable" => true, - ), - ), -); diff --git a/16.0/fpm/config/autoconfig.php b/16.0/fpm/config/autoconfig.php index deeabe4e..a292dabb 100644 --- a/16.0/fpm/config/autoconfig.php +++ b/16.0/fpm/config/autoconfig.php @@ -3,29 +3,29 @@ $autoconfig_enabled = false; if (getenv('SQLITE_DATABASE')) { - $AUTOCONFIG["dbtype"] = "sqlite"; - $AUTOCONFIG["dbname"] = getenv('SQLITE_DATABASE'); + $AUTOCONFIG['dbtype'] = 'sqlite'; + $AUTOCONFIG['dbname'] = getenv('SQLITE_DATABASE'); $autoconfig_enabled = true; } elseif (getenv('MYSQL_DATABASE') && getenv('MYSQL_USER') && getenv('MYSQL_PASSWORD') && getenv('MYSQL_HOST')) { - $AUTOCONFIG["dbtype"] = "mysql"; - $AUTOCONFIG["dbname"] = getenv('MYSQL_DATABASE'); - $AUTOCONFIG["dbuser"] = getenv('MYSQL_USER'); - $AUTOCONFIG["dbpass"] = getenv('MYSQL_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('MYSQL_HOST'); + $AUTOCONFIG['dbtype'] = 'mysql'; + $AUTOCONFIG['dbname'] = getenv('MYSQL_DATABASE'); + $AUTOCONFIG['dbuser'] = getenv('MYSQL_USER'); + $AUTOCONFIG['dbpass'] = getenv('MYSQL_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('MYSQL_HOST'); $autoconfig_enabled = true; } elseif (getenv('POSTGRES_DB') && getenv('POSTGRES_USER') && getenv('POSTGRES_PASSWORD') && getenv('POSTGRES_HOST')) { - $AUTOCONFIG["dbtype"] = "pgsql"; - $AUTOCONFIG["dbname"] = getenv('POSTGRES_DB'); - $AUTOCONFIG["dbuser"] = getenv('POSTGRES_USER'); - $AUTOCONFIG["dbpass"] = getenv('POSTGRES_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('POSTGRES_HOST'); + $AUTOCONFIG['dbtype'] = 'pgsql'; + $AUTOCONFIG['dbname'] = getenv('POSTGRES_DB'); + $AUTOCONFIG['dbuser'] = getenv('POSTGRES_USER'); + $AUTOCONFIG['dbpass'] = getenv('POSTGRES_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('POSTGRES_HOST'); $autoconfig_enabled = true; } if ($autoconfig_enabled) { if (getenv('NEXTCLOUD_TABLE_PREFIX')) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + $AUTOCONFIG['dbtableprefix'] = getenv('NEXTCLOUD_TABLE_PREFIX'); } - $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; + $AUTOCONFIG['directory'] = getenv('NEXTCLOUD_DATA_DIR') ?: '/var/www/html/data'; } diff --git a/16.0/fpm/config/language.config.php b/16.0/fpm/config/language.config.php new file mode 100644 index 00000000..0528b6cf --- /dev/null +++ b/16.0/fpm/config/language.config.php @@ -0,0 +1,7 @@ + getenv('DEFAULT_LANGUAGE') ?: 'en', + 'force_language' => getenv('FORCE_LANGUAGE') ?: false, + 'default_locale' => getenv('DEFAULT_LOCALE') ?: 'en_US', + 'force_locale' => getenv('FORCE_LOCALE') ?: false, +); diff --git a/16.0/fpm/config/s3.config.php b/16.0/fpm/config/s3.config.php new file mode 100644 index 00000000..a9171fdd --- /dev/null +++ b/16.0/fpm/config/s3.config.php @@ -0,0 +1,20 @@ + array( + 'class' => '\\OC\\Files\\ObjectStore\\S3', + 'arguments' => array( + 'bucket' => getenv('OBJECTSTORE_S3_BUCKET'), + 'autocreate' => getenv('OBJECTSTORE_S3_AUTOCREATE') ?: true, + 'key' => getenv('OBJECTSTORE_S3_KEY'), + 'secret' => getenv('OBJECTSTORE_S3_SECRET'), + 'hostname' => getenv('OBJECTSTORE_S3_HOST'), + 'port' => getenv('OBJECTSTORE_S3_PORT'), + 'use_ssl' => getenv('OBJECTSTORE_S3_SSL') ?: true, + 'region' => getenv('OBJECTSTORE_S3_REGION') ?: "optional", + // required for some non Amazon S3 implementations + 'use_path_style' => getenv('OBJECTSTORE_S3_USEPATH_STYLE') ?: true, + ), + ), + ); +} diff --git a/16.0/fpm/config/smtp.config.php b/16.0/fpm/config/smtp.config.php index 59f1eaa1..6091dbcc 100644 --- a/16.0/fpm/config/smtp.config.php +++ b/16.0/fpm/config/smtp.config.php @@ -11,5 +11,9 @@ if (getenv('SMTP_HOST') && getenv('MAIL_FROM_ADDRESS') && getenv('MAIL_DOMAIN')) 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), 'mail_domain' => getenv('MAIL_DOMAIN'), + 'mail_smtpdebug' => getenv('SMTP_DEBUG') ?: false, + 'mail_template_class' => getenv('SMTP_TEMPLATE_CLASS') ?: '', + 'mail_send_plaintext_only' => getenv('SMTP_SEND_PLAINTEXT_ONLY') ?: false, + 'mail_sendmailmode' => getenv('SMTP_SENDMAIL_MODE') ?: 'smtp', ); } diff --git a/16.0/fpm/entrypoint.sh b/16.0/fpm/entrypoint.sh index fb2fe686..ad0eb222 100755 --- a/16.0/fpm/entrypoint.sh +++ b/16.0/fpm/entrypoint.sh @@ -1,16 +1,6 @@ #!/bin/sh set -eu -# 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" ] -} - -# return true if specified directory is empty -directory_empty() { - [ -z "$(ls -A "$1/")" ] -} - run_as() { if [ "$(id -u)" = 0 ]; then su -p www-data -s /bin/sh -c "$1" @@ -41,110 +31,69 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP } > /usr/local/etc/php/conf.d/redis-session.ini fi - installed_version="0.0.0.0" - if [ -f /var/www/html/version.php ]; then - # shellcheck disable=SC2016 - installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" - fi - # shellcheck disable=SC2016 - image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" + #upgrade + if php occ status | grep installed | grep true; then + run_as 'php /var/www/html/occ upgrade' + #install + else + echo "New nextcloud instance" - if version_greater "$installed_version" "$image_version"; then - echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" - exit 1 - fi - - if version_greater "$image_version" "$installed_version"; then - echo "Initializing nextcloud $image_version ..." - if [ "$installed_version" != "0.0.0.0" ]; then - echo "Upgrading nextcloud from $installed_version ..." - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before - fi - if [ "$(id -u)" = 0 ]; then - rsync_options="-rlDog --chown www-data:root" - else - rsync_options="-rlD" - fi - rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ - - for dir in config data custom_apps themes; do - if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then - rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - fi - done - rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - echo "Initializing finished" - - #install - if [ "$installed_version" = "0.0.0.0" ]; then - echo "New nextcloud instance" - - if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 - install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' - if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - fi - if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' - fi - - install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then - echo "Installing with SQLite database" - # 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 - 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 - 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"' - install=true - fi - - if [ "$install" = true ]; then - echo "starting nextcloud installation" - max_retries=10 - try=0 - until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] - do - echo "retrying install..." - try=$((try+1)) - sleep 10s - done - if [ "$try" -gt "$max_retries" ]; then - echo "installing of nextcloud failed!" - exit 1 - fi - if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then - echo "setting trusted domains…" - NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" - NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) - done - fi - else - echo "running web-based installer on first connect!" - fi + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi - #upgrade - else - run_as 'php /var/www/html/occ upgrade' - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after - echo "The following apps have been disabled:" - diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 - rm -f /tmp/list_before /tmp/list_after + install=false + if [ -n "${SQLITE_DATABASE+x}" ]; then + echo "Installing with SQLite database" + # 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 + 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 + 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"' + install=true + fi + if [ "$install" = true ]; then + echo "starting nextcloud installation" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 10s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + NC_TRUSTED_DOMAIN_IDX=1 + for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do + DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi fi fi fi diff --git a/16.0/fpm/upgrade.exclude b/16.0/fpm/upgrade.exclude deleted file mode 100644 index 354864da..00000000 --- a/16.0/fpm/upgrade.exclude +++ /dev/null @@ -1,5 +0,0 @@ -/config/ -/data/ -/custom_apps/ -/themes/ -/version.php diff --git a/17.0/apache/Dockerfile b/17.0/apache/Dockerfile index e98ef1d2..69b4c423 100644 --- a/17.0/apache/Dockerfile +++ b/17.0/apache/Dockerfile @@ -104,7 +104,6 @@ RUN { \ chown -R www-data:root /var/www; \ chmod -R g=u /var/www -VOLUME /var/www/html RUN a2enmod rewrite remoteip ;\ {\ @@ -115,7 +114,7 @@ RUN a2enmod rewrite remoteip ;\ } > /etc/apache2/conf-available/remoteip.conf;\ a2enconf remoteip -ENV NEXTCLOUD_VERSION 17.0.3 +ENV NEXTCLOUD_VERSION 17.0.7 RUN set -ex; \ fetchDeps=" \ @@ -133,19 +132,23 @@ RUN set -ex; \ # gpg key from https://nextcloud.com/nextcloud.asc gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + tar -xjf nextcloud.tar.bz2 -C /var/www/; \ + rm -rf /var/www/html; \ + mv /var/www/nextcloud /var/www/html; \ gpgconf --kill all; \ - rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - rm -rf /usr/src/nextcloud/updater; \ - mkdir -p /usr/src/nextcloud/data; \ - mkdir -p /usr/src/nextcloud/custom_apps; \ - chmod +x /usr/src/nextcloud/occ; \ - \ + rm -r "$GNUPGHOME"; \ + rm -rf /var/www/html/updater; \ + mkdir -p /var/www/html/data; \ + mkdir -p /var/www/html/custom_apps; \ + chmod +x /var/www/html/occ; \ + touch /var/www/html/data/.ocdata; \ + touch /var/www/html/config/config.php; \ + chown -R www-data:root /var/www/html; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ rm -rf /var/lib/apt/lists/* -COPY *.sh upgrade.exclude / -COPY config/* /usr/src/nextcloud/config/ +COPY *.sh / +COPY --chown=www-data:root config/* /var/www/html/config/ ENTRYPOINT ["/entrypoint.sh"] CMD ["apache2-foreground"] diff --git a/17.0/apache/config/10.apps.config.php b/17.0/apache/config/10.apps.config.php new file mode 100644 index 00000000..4c37f72a --- /dev/null +++ b/17.0/apache/config/10.apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => OC::$SERVERROOT.'/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), + ), +); diff --git a/17.0/apache/config/apps.config.php b/17.0/apache/config/apps.config.php deleted file mode 100644 index a4bed833..00000000 --- a/17.0/apache/config/apps.config.php +++ /dev/null @@ -1,15 +0,0 @@ - array ( - 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => false, - ), - 1 => array ( - "path" => OC::$SERVERROOT."/custom_apps", - "url" => "/custom_apps", - "writable" => true, - ), - ), -); diff --git a/17.0/apache/config/autoconfig.php b/17.0/apache/config/autoconfig.php index deeabe4e..a292dabb 100644 --- a/17.0/apache/config/autoconfig.php +++ b/17.0/apache/config/autoconfig.php @@ -3,29 +3,29 @@ $autoconfig_enabled = false; if (getenv('SQLITE_DATABASE')) { - $AUTOCONFIG["dbtype"] = "sqlite"; - $AUTOCONFIG["dbname"] = getenv('SQLITE_DATABASE'); + $AUTOCONFIG['dbtype'] = 'sqlite'; + $AUTOCONFIG['dbname'] = getenv('SQLITE_DATABASE'); $autoconfig_enabled = true; } elseif (getenv('MYSQL_DATABASE') && getenv('MYSQL_USER') && getenv('MYSQL_PASSWORD') && getenv('MYSQL_HOST')) { - $AUTOCONFIG["dbtype"] = "mysql"; - $AUTOCONFIG["dbname"] = getenv('MYSQL_DATABASE'); - $AUTOCONFIG["dbuser"] = getenv('MYSQL_USER'); - $AUTOCONFIG["dbpass"] = getenv('MYSQL_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('MYSQL_HOST'); + $AUTOCONFIG['dbtype'] = 'mysql'; + $AUTOCONFIG['dbname'] = getenv('MYSQL_DATABASE'); + $AUTOCONFIG['dbuser'] = getenv('MYSQL_USER'); + $AUTOCONFIG['dbpass'] = getenv('MYSQL_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('MYSQL_HOST'); $autoconfig_enabled = true; } elseif (getenv('POSTGRES_DB') && getenv('POSTGRES_USER') && getenv('POSTGRES_PASSWORD') && getenv('POSTGRES_HOST')) { - $AUTOCONFIG["dbtype"] = "pgsql"; - $AUTOCONFIG["dbname"] = getenv('POSTGRES_DB'); - $AUTOCONFIG["dbuser"] = getenv('POSTGRES_USER'); - $AUTOCONFIG["dbpass"] = getenv('POSTGRES_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('POSTGRES_HOST'); + $AUTOCONFIG['dbtype'] = 'pgsql'; + $AUTOCONFIG['dbname'] = getenv('POSTGRES_DB'); + $AUTOCONFIG['dbuser'] = getenv('POSTGRES_USER'); + $AUTOCONFIG['dbpass'] = getenv('POSTGRES_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('POSTGRES_HOST'); $autoconfig_enabled = true; } if ($autoconfig_enabled) { if (getenv('NEXTCLOUD_TABLE_PREFIX')) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + $AUTOCONFIG['dbtableprefix'] = getenv('NEXTCLOUD_TABLE_PREFIX'); } - $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; + $AUTOCONFIG['directory'] = getenv('NEXTCLOUD_DATA_DIR') ?: '/var/www/html/data'; } diff --git a/17.0/apache/config/language.config.php b/17.0/apache/config/language.config.php new file mode 100644 index 00000000..0528b6cf --- /dev/null +++ b/17.0/apache/config/language.config.php @@ -0,0 +1,7 @@ + getenv('DEFAULT_LANGUAGE') ?: 'en', + 'force_language' => getenv('FORCE_LANGUAGE') ?: false, + 'default_locale' => getenv('DEFAULT_LOCALE') ?: 'en_US', + 'force_locale' => getenv('FORCE_LOCALE') ?: false, +); diff --git a/17.0/apache/config/s3.config.php b/17.0/apache/config/s3.config.php new file mode 100644 index 00000000..a9171fdd --- /dev/null +++ b/17.0/apache/config/s3.config.php @@ -0,0 +1,20 @@ + array( + 'class' => '\\OC\\Files\\ObjectStore\\S3', + 'arguments' => array( + 'bucket' => getenv('OBJECTSTORE_S3_BUCKET'), + 'autocreate' => getenv('OBJECTSTORE_S3_AUTOCREATE') ?: true, + 'key' => getenv('OBJECTSTORE_S3_KEY'), + 'secret' => getenv('OBJECTSTORE_S3_SECRET'), + 'hostname' => getenv('OBJECTSTORE_S3_HOST'), + 'port' => getenv('OBJECTSTORE_S3_PORT'), + 'use_ssl' => getenv('OBJECTSTORE_S3_SSL') ?: true, + 'region' => getenv('OBJECTSTORE_S3_REGION') ?: "optional", + // required for some non Amazon S3 implementations + 'use_path_style' => getenv('OBJECTSTORE_S3_USEPATH_STYLE') ?: true, + ), + ), + ); +} diff --git a/17.0/apache/config/smtp.config.php b/17.0/apache/config/smtp.config.php index 59f1eaa1..6091dbcc 100644 --- a/17.0/apache/config/smtp.config.php +++ b/17.0/apache/config/smtp.config.php @@ -11,5 +11,9 @@ if (getenv('SMTP_HOST') && getenv('MAIL_FROM_ADDRESS') && getenv('MAIL_DOMAIN')) 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), 'mail_domain' => getenv('MAIL_DOMAIN'), + 'mail_smtpdebug' => getenv('SMTP_DEBUG') ?: false, + 'mail_template_class' => getenv('SMTP_TEMPLATE_CLASS') ?: '', + 'mail_send_plaintext_only' => getenv('SMTP_SEND_PLAINTEXT_ONLY') ?: false, + 'mail_sendmailmode' => getenv('SMTP_SENDMAIL_MODE') ?: 'smtp', ); } diff --git a/17.0/apache/entrypoint.sh b/17.0/apache/entrypoint.sh index fb2fe686..ad0eb222 100755 --- a/17.0/apache/entrypoint.sh +++ b/17.0/apache/entrypoint.sh @@ -1,16 +1,6 @@ #!/bin/sh set -eu -# 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" ] -} - -# return true if specified directory is empty -directory_empty() { - [ -z "$(ls -A "$1/")" ] -} - run_as() { if [ "$(id -u)" = 0 ]; then su -p www-data -s /bin/sh -c "$1" @@ -41,110 +31,69 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP } > /usr/local/etc/php/conf.d/redis-session.ini fi - installed_version="0.0.0.0" - if [ -f /var/www/html/version.php ]; then - # shellcheck disable=SC2016 - installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" - fi - # shellcheck disable=SC2016 - image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" + #upgrade + if php occ status | grep installed | grep true; then + run_as 'php /var/www/html/occ upgrade' + #install + else + echo "New nextcloud instance" - if version_greater "$installed_version" "$image_version"; then - echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" - exit 1 - fi - - if version_greater "$image_version" "$installed_version"; then - echo "Initializing nextcloud $image_version ..." - if [ "$installed_version" != "0.0.0.0" ]; then - echo "Upgrading nextcloud from $installed_version ..." - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before - fi - if [ "$(id -u)" = 0 ]; then - rsync_options="-rlDog --chown www-data:root" - else - rsync_options="-rlD" - fi - rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ - - for dir in config data custom_apps themes; do - if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then - rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - fi - done - rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - echo "Initializing finished" - - #install - if [ "$installed_version" = "0.0.0.0" ]; then - echo "New nextcloud instance" - - if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 - install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' - if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - fi - if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' - fi - - install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then - echo "Installing with SQLite database" - # 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 - 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 - 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"' - install=true - fi - - if [ "$install" = true ]; then - echo "starting nextcloud installation" - max_retries=10 - try=0 - until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] - do - echo "retrying install..." - try=$((try+1)) - sleep 10s - done - if [ "$try" -gt "$max_retries" ]; then - echo "installing of nextcloud failed!" - exit 1 - fi - if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then - echo "setting trusted domains…" - NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" - NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) - done - fi - else - echo "running web-based installer on first connect!" - fi + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi - #upgrade - else - run_as 'php /var/www/html/occ upgrade' - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after - echo "The following apps have been disabled:" - diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 - rm -f /tmp/list_before /tmp/list_after + install=false + if [ -n "${SQLITE_DATABASE+x}" ]; then + echo "Installing with SQLite database" + # 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 + 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 + 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"' + install=true + fi + if [ "$install" = true ]; then + echo "starting nextcloud installation" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 10s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + NC_TRUSTED_DOMAIN_IDX=1 + for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do + DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi fi fi fi diff --git a/17.0/apache/upgrade.exclude b/17.0/apache/upgrade.exclude deleted file mode 100644 index 354864da..00000000 --- a/17.0/apache/upgrade.exclude +++ /dev/null @@ -1,5 +0,0 @@ -/config/ -/data/ -/custom_apps/ -/themes/ -/version.php diff --git a/17.0/fpm-alpine/Dockerfile b/17.0/fpm-alpine/Dockerfile index f05bfec4..b2063f30 100644 --- a/17.0/fpm-alpine/Dockerfile +++ b/17.0/fpm-alpine/Dockerfile @@ -91,10 +91,9 @@ RUN { \ chown -R www-data:root /var/www; \ chmod -R g=u /var/www -VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 17.0.3 +ENV NEXTCLOUD_VERSION 17.0.7 RUN set -ex; \ apk add --no-cache --virtual .fetch-deps \ @@ -110,17 +109,22 @@ RUN set -ex; \ # gpg key from https://nextcloud.com/nextcloud.asc gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + tar -xjf nextcloud.tar.bz2 -C /var/www/; \ + rm -rf /var/www/html; \ + mv /var/www/nextcloud /var/www/html; \ gpgconf --kill all; \ - rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - rm -rf /usr/src/nextcloud/updater; \ - mkdir -p /usr/src/nextcloud/data; \ - mkdir -p /usr/src/nextcloud/custom_apps; \ - chmod +x /usr/src/nextcloud/occ; \ - apk del .fetch-deps + rm -r "$GNUPGHOME"; \ + rm -rf /var/www/html/updater; \ + mkdir -p /var/www/html/data; \ + mkdir -p /var/www/html/custom_apps; \ + chmod +x /var/www/html/occ; \ + apk del .fetch-deps; \ + touch /var/www/html/data/.ocdata; \ + touch /var/www/html/config/config.php; \ + chown -R www-data:root /var/www/html -COPY *.sh upgrade.exclude / -COPY config/* /usr/src/nextcloud/config/ +COPY *.sh / +COPY --chown=www-data:root config/* /var/www/html/config/ ENTRYPOINT ["/entrypoint.sh"] CMD ["php-fpm"] diff --git a/17.0/fpm-alpine/config/10.apps.config.php b/17.0/fpm-alpine/config/10.apps.config.php new file mode 100644 index 00000000..4c37f72a --- /dev/null +++ b/17.0/fpm-alpine/config/10.apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => OC::$SERVERROOT.'/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), + ), +); diff --git a/17.0/fpm-alpine/config/apps.config.php b/17.0/fpm-alpine/config/apps.config.php deleted file mode 100644 index a4bed833..00000000 --- a/17.0/fpm-alpine/config/apps.config.php +++ /dev/null @@ -1,15 +0,0 @@ - array ( - 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => false, - ), - 1 => array ( - "path" => OC::$SERVERROOT."/custom_apps", - "url" => "/custom_apps", - "writable" => true, - ), - ), -); diff --git a/17.0/fpm-alpine/config/autoconfig.php b/17.0/fpm-alpine/config/autoconfig.php index deeabe4e..a292dabb 100644 --- a/17.0/fpm-alpine/config/autoconfig.php +++ b/17.0/fpm-alpine/config/autoconfig.php @@ -3,29 +3,29 @@ $autoconfig_enabled = false; if (getenv('SQLITE_DATABASE')) { - $AUTOCONFIG["dbtype"] = "sqlite"; - $AUTOCONFIG["dbname"] = getenv('SQLITE_DATABASE'); + $AUTOCONFIG['dbtype'] = 'sqlite'; + $AUTOCONFIG['dbname'] = getenv('SQLITE_DATABASE'); $autoconfig_enabled = true; } elseif (getenv('MYSQL_DATABASE') && getenv('MYSQL_USER') && getenv('MYSQL_PASSWORD') && getenv('MYSQL_HOST')) { - $AUTOCONFIG["dbtype"] = "mysql"; - $AUTOCONFIG["dbname"] = getenv('MYSQL_DATABASE'); - $AUTOCONFIG["dbuser"] = getenv('MYSQL_USER'); - $AUTOCONFIG["dbpass"] = getenv('MYSQL_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('MYSQL_HOST'); + $AUTOCONFIG['dbtype'] = 'mysql'; + $AUTOCONFIG['dbname'] = getenv('MYSQL_DATABASE'); + $AUTOCONFIG['dbuser'] = getenv('MYSQL_USER'); + $AUTOCONFIG['dbpass'] = getenv('MYSQL_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('MYSQL_HOST'); $autoconfig_enabled = true; } elseif (getenv('POSTGRES_DB') && getenv('POSTGRES_USER') && getenv('POSTGRES_PASSWORD') && getenv('POSTGRES_HOST')) { - $AUTOCONFIG["dbtype"] = "pgsql"; - $AUTOCONFIG["dbname"] = getenv('POSTGRES_DB'); - $AUTOCONFIG["dbuser"] = getenv('POSTGRES_USER'); - $AUTOCONFIG["dbpass"] = getenv('POSTGRES_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('POSTGRES_HOST'); + $AUTOCONFIG['dbtype'] = 'pgsql'; + $AUTOCONFIG['dbname'] = getenv('POSTGRES_DB'); + $AUTOCONFIG['dbuser'] = getenv('POSTGRES_USER'); + $AUTOCONFIG['dbpass'] = getenv('POSTGRES_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('POSTGRES_HOST'); $autoconfig_enabled = true; } if ($autoconfig_enabled) { if (getenv('NEXTCLOUD_TABLE_PREFIX')) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + $AUTOCONFIG['dbtableprefix'] = getenv('NEXTCLOUD_TABLE_PREFIX'); } - $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; + $AUTOCONFIG['directory'] = getenv('NEXTCLOUD_DATA_DIR') ?: '/var/www/html/data'; } diff --git a/17.0/fpm-alpine/config/language.config.php b/17.0/fpm-alpine/config/language.config.php new file mode 100644 index 00000000..0528b6cf --- /dev/null +++ b/17.0/fpm-alpine/config/language.config.php @@ -0,0 +1,7 @@ + getenv('DEFAULT_LANGUAGE') ?: 'en', + 'force_language' => getenv('FORCE_LANGUAGE') ?: false, + 'default_locale' => getenv('DEFAULT_LOCALE') ?: 'en_US', + 'force_locale' => getenv('FORCE_LOCALE') ?: false, +); diff --git a/17.0/fpm-alpine/config/s3.config.php b/17.0/fpm-alpine/config/s3.config.php new file mode 100644 index 00000000..a9171fdd --- /dev/null +++ b/17.0/fpm-alpine/config/s3.config.php @@ -0,0 +1,20 @@ + array( + 'class' => '\\OC\\Files\\ObjectStore\\S3', + 'arguments' => array( + 'bucket' => getenv('OBJECTSTORE_S3_BUCKET'), + 'autocreate' => getenv('OBJECTSTORE_S3_AUTOCREATE') ?: true, + 'key' => getenv('OBJECTSTORE_S3_KEY'), + 'secret' => getenv('OBJECTSTORE_S3_SECRET'), + 'hostname' => getenv('OBJECTSTORE_S3_HOST'), + 'port' => getenv('OBJECTSTORE_S3_PORT'), + 'use_ssl' => getenv('OBJECTSTORE_S3_SSL') ?: true, + 'region' => getenv('OBJECTSTORE_S3_REGION') ?: "optional", + // required for some non Amazon S3 implementations + 'use_path_style' => getenv('OBJECTSTORE_S3_USEPATH_STYLE') ?: true, + ), + ), + ); +} diff --git a/17.0/fpm-alpine/config/smtp.config.php b/17.0/fpm-alpine/config/smtp.config.php index 59f1eaa1..6091dbcc 100644 --- a/17.0/fpm-alpine/config/smtp.config.php +++ b/17.0/fpm-alpine/config/smtp.config.php @@ -11,5 +11,9 @@ if (getenv('SMTP_HOST') && getenv('MAIL_FROM_ADDRESS') && getenv('MAIL_DOMAIN')) 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), 'mail_domain' => getenv('MAIL_DOMAIN'), + 'mail_smtpdebug' => getenv('SMTP_DEBUG') ?: false, + 'mail_template_class' => getenv('SMTP_TEMPLATE_CLASS') ?: '', + 'mail_send_plaintext_only' => getenv('SMTP_SEND_PLAINTEXT_ONLY') ?: false, + 'mail_sendmailmode' => getenv('SMTP_SENDMAIL_MODE') ?: 'smtp', ); } diff --git a/17.0/fpm-alpine/entrypoint.sh b/17.0/fpm-alpine/entrypoint.sh index fb2fe686..ad0eb222 100755 --- a/17.0/fpm-alpine/entrypoint.sh +++ b/17.0/fpm-alpine/entrypoint.sh @@ -1,16 +1,6 @@ #!/bin/sh set -eu -# 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" ] -} - -# return true if specified directory is empty -directory_empty() { - [ -z "$(ls -A "$1/")" ] -} - run_as() { if [ "$(id -u)" = 0 ]; then su -p www-data -s /bin/sh -c "$1" @@ -41,110 +31,69 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP } > /usr/local/etc/php/conf.d/redis-session.ini fi - installed_version="0.0.0.0" - if [ -f /var/www/html/version.php ]; then - # shellcheck disable=SC2016 - installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" - fi - # shellcheck disable=SC2016 - image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" + #upgrade + if php occ status | grep installed | grep true; then + run_as 'php /var/www/html/occ upgrade' + #install + else + echo "New nextcloud instance" - if version_greater "$installed_version" "$image_version"; then - echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" - exit 1 - fi - - if version_greater "$image_version" "$installed_version"; then - echo "Initializing nextcloud $image_version ..." - if [ "$installed_version" != "0.0.0.0" ]; then - echo "Upgrading nextcloud from $installed_version ..." - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before - fi - if [ "$(id -u)" = 0 ]; then - rsync_options="-rlDog --chown www-data:root" - else - rsync_options="-rlD" - fi - rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ - - for dir in config data custom_apps themes; do - if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then - rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - fi - done - rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - echo "Initializing finished" - - #install - if [ "$installed_version" = "0.0.0.0" ]; then - echo "New nextcloud instance" - - if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 - install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' - if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - fi - if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' - fi - - install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then - echo "Installing with SQLite database" - # 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 - 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 - 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"' - install=true - fi - - if [ "$install" = true ]; then - echo "starting nextcloud installation" - max_retries=10 - try=0 - until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] - do - echo "retrying install..." - try=$((try+1)) - sleep 10s - done - if [ "$try" -gt "$max_retries" ]; then - echo "installing of nextcloud failed!" - exit 1 - fi - if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then - echo "setting trusted domains…" - NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" - NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) - done - fi - else - echo "running web-based installer on first connect!" - fi + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi - #upgrade - else - run_as 'php /var/www/html/occ upgrade' - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after - echo "The following apps have been disabled:" - diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 - rm -f /tmp/list_before /tmp/list_after + install=false + if [ -n "${SQLITE_DATABASE+x}" ]; then + echo "Installing with SQLite database" + # 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 + 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 + 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"' + install=true + fi + if [ "$install" = true ]; then + echo "starting nextcloud installation" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 10s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + NC_TRUSTED_DOMAIN_IDX=1 + for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do + DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi fi fi fi diff --git a/17.0/fpm-alpine/upgrade.exclude b/17.0/fpm-alpine/upgrade.exclude deleted file mode 100644 index 354864da..00000000 --- a/17.0/fpm-alpine/upgrade.exclude +++ /dev/null @@ -1,5 +0,0 @@ -/config/ -/data/ -/custom_apps/ -/themes/ -/version.php diff --git a/17.0/fpm/Dockerfile b/17.0/fpm/Dockerfile index 6e9385f3..1b46bb7c 100644 --- a/17.0/fpm/Dockerfile +++ b/17.0/fpm/Dockerfile @@ -104,10 +104,9 @@ RUN { \ chown -R www-data:root /var/www; \ chmod -R g=u /var/www -VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 17.0.3 +ENV NEXTCLOUD_VERSION 17.0.7 RUN set -ex; \ fetchDeps=" \ @@ -125,19 +124,23 @@ RUN set -ex; \ # gpg key from https://nextcloud.com/nextcloud.asc gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + tar -xjf nextcloud.tar.bz2 -C /var/www/; \ + rm -rf /var/www/html; \ + mv /var/www/nextcloud /var/www/html; \ gpgconf --kill all; \ - rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - rm -rf /usr/src/nextcloud/updater; \ - mkdir -p /usr/src/nextcloud/data; \ - mkdir -p /usr/src/nextcloud/custom_apps; \ - chmod +x /usr/src/nextcloud/occ; \ - \ + rm -r "$GNUPGHOME"; \ + rm -rf /var/www/html/updater; \ + mkdir -p /var/www/html/data; \ + mkdir -p /var/www/html/custom_apps; \ + chmod +x /var/www/html/occ; \ + touch /var/www/html/data/.ocdata; \ + touch /var/www/html/config/config.php; \ + chown -R www-data:root /var/www/html; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ rm -rf /var/lib/apt/lists/* -COPY *.sh upgrade.exclude / -COPY config/* /usr/src/nextcloud/config/ +COPY *.sh / +COPY --chown=www-data:root config/* /var/www/html/config/ ENTRYPOINT ["/entrypoint.sh"] CMD ["php-fpm"] diff --git a/17.0/fpm/config/10.apps.config.php b/17.0/fpm/config/10.apps.config.php new file mode 100644 index 00000000..4c37f72a --- /dev/null +++ b/17.0/fpm/config/10.apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => OC::$SERVERROOT.'/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), + ), +); diff --git a/17.0/fpm/config/apps.config.php b/17.0/fpm/config/apps.config.php deleted file mode 100644 index a4bed833..00000000 --- a/17.0/fpm/config/apps.config.php +++ /dev/null @@ -1,15 +0,0 @@ - array ( - 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => false, - ), - 1 => array ( - "path" => OC::$SERVERROOT."/custom_apps", - "url" => "/custom_apps", - "writable" => true, - ), - ), -); diff --git a/17.0/fpm/config/autoconfig.php b/17.0/fpm/config/autoconfig.php index deeabe4e..a292dabb 100644 --- a/17.0/fpm/config/autoconfig.php +++ b/17.0/fpm/config/autoconfig.php @@ -3,29 +3,29 @@ $autoconfig_enabled = false; if (getenv('SQLITE_DATABASE')) { - $AUTOCONFIG["dbtype"] = "sqlite"; - $AUTOCONFIG["dbname"] = getenv('SQLITE_DATABASE'); + $AUTOCONFIG['dbtype'] = 'sqlite'; + $AUTOCONFIG['dbname'] = getenv('SQLITE_DATABASE'); $autoconfig_enabled = true; } elseif (getenv('MYSQL_DATABASE') && getenv('MYSQL_USER') && getenv('MYSQL_PASSWORD') && getenv('MYSQL_HOST')) { - $AUTOCONFIG["dbtype"] = "mysql"; - $AUTOCONFIG["dbname"] = getenv('MYSQL_DATABASE'); - $AUTOCONFIG["dbuser"] = getenv('MYSQL_USER'); - $AUTOCONFIG["dbpass"] = getenv('MYSQL_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('MYSQL_HOST'); + $AUTOCONFIG['dbtype'] = 'mysql'; + $AUTOCONFIG['dbname'] = getenv('MYSQL_DATABASE'); + $AUTOCONFIG['dbuser'] = getenv('MYSQL_USER'); + $AUTOCONFIG['dbpass'] = getenv('MYSQL_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('MYSQL_HOST'); $autoconfig_enabled = true; } elseif (getenv('POSTGRES_DB') && getenv('POSTGRES_USER') && getenv('POSTGRES_PASSWORD') && getenv('POSTGRES_HOST')) { - $AUTOCONFIG["dbtype"] = "pgsql"; - $AUTOCONFIG["dbname"] = getenv('POSTGRES_DB'); - $AUTOCONFIG["dbuser"] = getenv('POSTGRES_USER'); - $AUTOCONFIG["dbpass"] = getenv('POSTGRES_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('POSTGRES_HOST'); + $AUTOCONFIG['dbtype'] = 'pgsql'; + $AUTOCONFIG['dbname'] = getenv('POSTGRES_DB'); + $AUTOCONFIG['dbuser'] = getenv('POSTGRES_USER'); + $AUTOCONFIG['dbpass'] = getenv('POSTGRES_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('POSTGRES_HOST'); $autoconfig_enabled = true; } if ($autoconfig_enabled) { if (getenv('NEXTCLOUD_TABLE_PREFIX')) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + $AUTOCONFIG['dbtableprefix'] = getenv('NEXTCLOUD_TABLE_PREFIX'); } - $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; + $AUTOCONFIG['directory'] = getenv('NEXTCLOUD_DATA_DIR') ?: '/var/www/html/data'; } diff --git a/17.0/fpm/config/language.config.php b/17.0/fpm/config/language.config.php new file mode 100644 index 00000000..0528b6cf --- /dev/null +++ b/17.0/fpm/config/language.config.php @@ -0,0 +1,7 @@ + getenv('DEFAULT_LANGUAGE') ?: 'en', + 'force_language' => getenv('FORCE_LANGUAGE') ?: false, + 'default_locale' => getenv('DEFAULT_LOCALE') ?: 'en_US', + 'force_locale' => getenv('FORCE_LOCALE') ?: false, +); diff --git a/17.0/fpm/config/s3.config.php b/17.0/fpm/config/s3.config.php new file mode 100644 index 00000000..a9171fdd --- /dev/null +++ b/17.0/fpm/config/s3.config.php @@ -0,0 +1,20 @@ + array( + 'class' => '\\OC\\Files\\ObjectStore\\S3', + 'arguments' => array( + 'bucket' => getenv('OBJECTSTORE_S3_BUCKET'), + 'autocreate' => getenv('OBJECTSTORE_S3_AUTOCREATE') ?: true, + 'key' => getenv('OBJECTSTORE_S3_KEY'), + 'secret' => getenv('OBJECTSTORE_S3_SECRET'), + 'hostname' => getenv('OBJECTSTORE_S3_HOST'), + 'port' => getenv('OBJECTSTORE_S3_PORT'), + 'use_ssl' => getenv('OBJECTSTORE_S3_SSL') ?: true, + 'region' => getenv('OBJECTSTORE_S3_REGION') ?: "optional", + // required for some non Amazon S3 implementations + 'use_path_style' => getenv('OBJECTSTORE_S3_USEPATH_STYLE') ?: true, + ), + ), + ); +} diff --git a/17.0/fpm/config/smtp.config.php b/17.0/fpm/config/smtp.config.php index 59f1eaa1..6091dbcc 100644 --- a/17.0/fpm/config/smtp.config.php +++ b/17.0/fpm/config/smtp.config.php @@ -11,5 +11,9 @@ if (getenv('SMTP_HOST') && getenv('MAIL_FROM_ADDRESS') && getenv('MAIL_DOMAIN')) 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), 'mail_domain' => getenv('MAIL_DOMAIN'), + 'mail_smtpdebug' => getenv('SMTP_DEBUG') ?: false, + 'mail_template_class' => getenv('SMTP_TEMPLATE_CLASS') ?: '', + 'mail_send_plaintext_only' => getenv('SMTP_SEND_PLAINTEXT_ONLY') ?: false, + 'mail_sendmailmode' => getenv('SMTP_SENDMAIL_MODE') ?: 'smtp', ); } diff --git a/17.0/fpm/entrypoint.sh b/17.0/fpm/entrypoint.sh index fb2fe686..ad0eb222 100755 --- a/17.0/fpm/entrypoint.sh +++ b/17.0/fpm/entrypoint.sh @@ -1,16 +1,6 @@ #!/bin/sh set -eu -# 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" ] -} - -# return true if specified directory is empty -directory_empty() { - [ -z "$(ls -A "$1/")" ] -} - run_as() { if [ "$(id -u)" = 0 ]; then su -p www-data -s /bin/sh -c "$1" @@ -41,110 +31,69 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP } > /usr/local/etc/php/conf.d/redis-session.ini fi - installed_version="0.0.0.0" - if [ -f /var/www/html/version.php ]; then - # shellcheck disable=SC2016 - installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" - fi - # shellcheck disable=SC2016 - image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" + #upgrade + if php occ status | grep installed | grep true; then + run_as 'php /var/www/html/occ upgrade' + #install + else + echo "New nextcloud instance" - if version_greater "$installed_version" "$image_version"; then - echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" - exit 1 - fi - - if version_greater "$image_version" "$installed_version"; then - echo "Initializing nextcloud $image_version ..." - if [ "$installed_version" != "0.0.0.0" ]; then - echo "Upgrading nextcloud from $installed_version ..." - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before - fi - if [ "$(id -u)" = 0 ]; then - rsync_options="-rlDog --chown www-data:root" - else - rsync_options="-rlD" - fi - rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ - - for dir in config data custom_apps themes; do - if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then - rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - fi - done - rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - echo "Initializing finished" - - #install - if [ "$installed_version" = "0.0.0.0" ]; then - echo "New nextcloud instance" - - if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 - install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' - if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - fi - if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' - fi - - install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then - echo "Installing with SQLite database" - # 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 - 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 - 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"' - install=true - fi - - if [ "$install" = true ]; then - echo "starting nextcloud installation" - max_retries=10 - try=0 - until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] - do - echo "retrying install..." - try=$((try+1)) - sleep 10s - done - if [ "$try" -gt "$max_retries" ]; then - echo "installing of nextcloud failed!" - exit 1 - fi - if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then - echo "setting trusted domains…" - NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" - NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) - done - fi - else - echo "running web-based installer on first connect!" - fi + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi - #upgrade - else - run_as 'php /var/www/html/occ upgrade' - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after - echo "The following apps have been disabled:" - diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 - rm -f /tmp/list_before /tmp/list_after + install=false + if [ -n "${SQLITE_DATABASE+x}" ]; then + echo "Installing with SQLite database" + # 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 + 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 + 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"' + install=true + fi + if [ "$install" = true ]; then + echo "starting nextcloud installation" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 10s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + NC_TRUSTED_DOMAIN_IDX=1 + for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do + DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi fi fi fi diff --git a/17.0/fpm/upgrade.exclude b/17.0/fpm/upgrade.exclude deleted file mode 100644 index 354864da..00000000 --- a/17.0/fpm/upgrade.exclude +++ /dev/null @@ -1,5 +0,0 @@ -/config/ -/data/ -/custom_apps/ -/themes/ -/version.php diff --git a/18.0-rc/apache/config/apps.config.php b/18.0-rc/apache/config/apps.config.php deleted file mode 100644 index a4bed833..00000000 --- a/18.0-rc/apache/config/apps.config.php +++ /dev/null @@ -1,15 +0,0 @@ - array ( - 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => false, - ), - 1 => array ( - "path" => OC::$SERVERROOT."/custom_apps", - "url" => "/custom_apps", - "writable" => true, - ), - ), -); diff --git a/18.0-rc/apache/config/autoconfig.php b/18.0-rc/apache/config/autoconfig.php deleted file mode 100644 index deeabe4e..00000000 --- a/18.0-rc/apache/config/autoconfig.php +++ /dev/null @@ -1,31 +0,0 @@ - B -version_greater() { - [ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ] -} - -# return true if specified directory is empty -directory_empty() { - [ -z "$(ls -A "$1/")" ] -} - -run_as() { - if [ "$(id -u)" = 0 ]; then - su -p www-data -s /bin/sh -c "$1" - else - sh -c "$1" - fi -} - -if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UPDATE:-0}" -eq 1 ]; then - if [ -n "${REDIS_HOST+x}" ]; then - - echo "Configuring Redis as session handler" - { - echo 'session.save_handler = redis' - # check if redis host is an unix socket path - if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then - if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" - else - echo "session.save_path = \"unix://${REDIS_HOST}\"" - fi - # check if redis password has been set - elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" - else - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" - fi - } > /usr/local/etc/php/conf.d/redis-session.ini - fi - - installed_version="0.0.0.0" - if [ -f /var/www/html/version.php ]; then - # shellcheck disable=SC2016 - installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" - fi - # shellcheck disable=SC2016 - image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" - - if version_greater "$installed_version" "$image_version"; then - echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" - exit 1 - fi - - if version_greater "$image_version" "$installed_version"; then - echo "Initializing nextcloud $image_version ..." - if [ "$installed_version" != "0.0.0.0" ]; then - echo "Upgrading nextcloud from $installed_version ..." - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before - fi - if [ "$(id -u)" = 0 ]; then - rsync_options="-rlDog --chown www-data:root" - else - rsync_options="-rlD" - fi - rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ - - for dir in config data custom_apps themes; do - if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then - rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - fi - done - rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - echo "Initializing finished" - - #install - if [ "$installed_version" = "0.0.0.0" ]; then - echo "New nextcloud instance" - - if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then - # shellcheck disable=SC2016 - install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' - if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - fi - if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' - fi - - install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then - echo "Installing with SQLite database" - # 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 - 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 - 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"' - install=true - fi - - if [ "$install" = true ]; then - echo "starting nextcloud installation" - max_retries=10 - try=0 - until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] - do - echo "retrying install..." - try=$((try+1)) - sleep 10s - done - if [ "$try" -gt "$max_retries" ]; then - echo "installing of nextcloud failed!" - exit 1 - fi - if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then - echo "setting trusted domains…" - NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" - NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) - done - fi - else - echo "running web-based installer on first connect!" - fi - fi - #upgrade - else - run_as 'php /var/www/html/occ upgrade' - - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after - echo "The following apps have been disabled:" - diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 - rm -f /tmp/list_before /tmp/list_after - - fi - fi -fi - -exec "$@" diff --git a/18.0-rc/apache/upgrade.exclude b/18.0-rc/apache/upgrade.exclude deleted file mode 100644 index 354864da..00000000 --- a/18.0-rc/apache/upgrade.exclude +++ /dev/null @@ -1,5 +0,0 @@ -/config/ -/data/ -/custom_apps/ -/themes/ -/version.php diff --git a/18.0-rc/fpm-alpine/config/apps.config.php b/18.0-rc/fpm-alpine/config/apps.config.php deleted file mode 100644 index a4bed833..00000000 --- a/18.0-rc/fpm-alpine/config/apps.config.php +++ /dev/null @@ -1,15 +0,0 @@ - array ( - 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => false, - ), - 1 => array ( - "path" => OC::$SERVERROOT."/custom_apps", - "url" => "/custom_apps", - "writable" => true, - ), - ), -); diff --git a/18.0-rc/fpm-alpine/config/autoconfig.php b/18.0-rc/fpm-alpine/config/autoconfig.php deleted file mode 100644 index deeabe4e..00000000 --- a/18.0-rc/fpm-alpine/config/autoconfig.php +++ /dev/null @@ -1,31 +0,0 @@ - B -version_greater() { - [ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ] -} - -# return true if specified directory is empty -directory_empty() { - [ -z "$(ls -A "$1/")" ] -} - -run_as() { - if [ "$(id -u)" = 0 ]; then - su -p www-data -s /bin/sh -c "$1" - else - sh -c "$1" - fi -} - -if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UPDATE:-0}" -eq 1 ]; then - if [ -n "${REDIS_HOST+x}" ]; then - - echo "Configuring Redis as session handler" - { - echo 'session.save_handler = redis' - # check if redis host is an unix socket path - if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then - if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" - else - echo "session.save_path = \"unix://${REDIS_HOST}\"" - fi - # check if redis password has been set - elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" - else - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" - fi - } > /usr/local/etc/php/conf.d/redis-session.ini - fi - - installed_version="0.0.0.0" - if [ -f /var/www/html/version.php ]; then - # shellcheck disable=SC2016 - installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" - fi - # shellcheck disable=SC2016 - image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" - - if version_greater "$installed_version" "$image_version"; then - echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" - exit 1 - fi - - if version_greater "$image_version" "$installed_version"; then - echo "Initializing nextcloud $image_version ..." - if [ "$installed_version" != "0.0.0.0" ]; then - echo "Upgrading nextcloud from $installed_version ..." - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before - fi - if [ "$(id -u)" = 0 ]; then - rsync_options="-rlDog --chown www-data:root" - else - rsync_options="-rlD" - fi - rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ - - for dir in config data custom_apps themes; do - if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then - rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - fi - done - rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - echo "Initializing finished" - - #install - if [ "$installed_version" = "0.0.0.0" ]; then - echo "New nextcloud instance" - - if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then - # shellcheck disable=SC2016 - install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' - if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - fi - if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' - fi - - install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then - echo "Installing with SQLite database" - # 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 - 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 - 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"' - install=true - fi - - if [ "$install" = true ]; then - echo "starting nextcloud installation" - max_retries=10 - try=0 - until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] - do - echo "retrying install..." - try=$((try+1)) - sleep 10s - done - if [ "$try" -gt "$max_retries" ]; then - echo "installing of nextcloud failed!" - exit 1 - fi - if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then - echo "setting trusted domains…" - NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" - NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) - done - fi - else - echo "running web-based installer on first connect!" - fi - fi - #upgrade - else - run_as 'php /var/www/html/occ upgrade' - - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after - echo "The following apps have been disabled:" - diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 - rm -f /tmp/list_before /tmp/list_after - - fi - fi -fi - -exec "$@" diff --git a/18.0-rc/fpm-alpine/upgrade.exclude b/18.0-rc/fpm-alpine/upgrade.exclude deleted file mode 100644 index 354864da..00000000 --- a/18.0-rc/fpm-alpine/upgrade.exclude +++ /dev/null @@ -1,5 +0,0 @@ -/config/ -/data/ -/custom_apps/ -/themes/ -/version.php diff --git a/18.0-rc/fpm/config/apps.config.php b/18.0-rc/fpm/config/apps.config.php deleted file mode 100644 index a4bed833..00000000 --- a/18.0-rc/fpm/config/apps.config.php +++ /dev/null @@ -1,15 +0,0 @@ - array ( - 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => false, - ), - 1 => array ( - "path" => OC::$SERVERROOT."/custom_apps", - "url" => "/custom_apps", - "writable" => true, - ), - ), -); diff --git a/18.0-rc/fpm/config/autoconfig.php b/18.0-rc/fpm/config/autoconfig.php deleted file mode 100644 index deeabe4e..00000000 --- a/18.0-rc/fpm/config/autoconfig.php +++ /dev/null @@ -1,31 +0,0 @@ - B -version_greater() { - [ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ] -} - -# return true if specified directory is empty -directory_empty() { - [ -z "$(ls -A "$1/")" ] -} - -run_as() { - if [ "$(id -u)" = 0 ]; then - su -p www-data -s /bin/sh -c "$1" - else - sh -c "$1" - fi -} - -if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UPDATE:-0}" -eq 1 ]; then - if [ -n "${REDIS_HOST+x}" ]; then - - echo "Configuring Redis as session handler" - { - echo 'session.save_handler = redis' - # check if redis host is an unix socket path - if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then - if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" - else - echo "session.save_path = \"unix://${REDIS_HOST}\"" - fi - # check if redis password has been set - elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" - else - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" - fi - } > /usr/local/etc/php/conf.d/redis-session.ini - fi - - installed_version="0.0.0.0" - if [ -f /var/www/html/version.php ]; then - # shellcheck disable=SC2016 - installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" - fi - # shellcheck disable=SC2016 - image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" - - if version_greater "$installed_version" "$image_version"; then - echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" - exit 1 - fi - - if version_greater "$image_version" "$installed_version"; then - echo "Initializing nextcloud $image_version ..." - if [ "$installed_version" != "0.0.0.0" ]; then - echo "Upgrading nextcloud from $installed_version ..." - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before - fi - if [ "$(id -u)" = 0 ]; then - rsync_options="-rlDog --chown www-data:root" - else - rsync_options="-rlD" - fi - rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ - - for dir in config data custom_apps themes; do - if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then - rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - fi - done - rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - echo "Initializing finished" - - #install - if [ "$installed_version" = "0.0.0.0" ]; then - echo "New nextcloud instance" - - if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then - # shellcheck disable=SC2016 - install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' - if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - fi - if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' - fi - - install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then - echo "Installing with SQLite database" - # 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 - 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 - 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"' - install=true - fi - - if [ "$install" = true ]; then - echo "starting nextcloud installation" - max_retries=10 - try=0 - until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] - do - echo "retrying install..." - try=$((try+1)) - sleep 10s - done - if [ "$try" -gt "$max_retries" ]; then - echo "installing of nextcloud failed!" - exit 1 - fi - if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then - echo "setting trusted domains…" - NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" - NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) - done - fi - else - echo "running web-based installer on first connect!" - fi - fi - #upgrade - else - run_as 'php /var/www/html/occ upgrade' - - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after - echo "The following apps have been disabled:" - diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 - rm -f /tmp/list_before /tmp/list_after - - fi - fi -fi - -exec "$@" diff --git a/18.0-rc/fpm/upgrade.exclude b/18.0-rc/fpm/upgrade.exclude deleted file mode 100644 index 354864da..00000000 --- a/18.0-rc/fpm/upgrade.exclude +++ /dev/null @@ -1,5 +0,0 @@ -/config/ -/data/ -/custom_apps/ -/themes/ -/version.php diff --git a/18.0/apache/Dockerfile b/18.0/apache/Dockerfile index 9486e9c2..b987dc3e 100644 --- a/18.0/apache/Dockerfile +++ b/18.0/apache/Dockerfile @@ -104,7 +104,6 @@ RUN { \ chown -R www-data:root /var/www; \ chmod -R g=u /var/www -VOLUME /var/www/html RUN a2enmod rewrite remoteip ;\ {\ @@ -115,7 +114,7 @@ RUN a2enmod rewrite remoteip ;\ } > /etc/apache2/conf-available/remoteip.conf;\ a2enconf remoteip -ENV NEXTCLOUD_VERSION 18.0.0 +ENV NEXTCLOUD_VERSION 18.0.6 RUN set -ex; \ fetchDeps=" \ @@ -133,19 +132,23 @@ RUN set -ex; \ # gpg key from https://nextcloud.com/nextcloud.asc gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + tar -xjf nextcloud.tar.bz2 -C /var/www/; \ + rm -rf /var/www/html; \ + mv /var/www/nextcloud /var/www/html; \ gpgconf --kill all; \ - rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - rm -rf /usr/src/nextcloud/updater; \ - mkdir -p /usr/src/nextcloud/data; \ - mkdir -p /usr/src/nextcloud/custom_apps; \ - chmod +x /usr/src/nextcloud/occ; \ - \ + rm -r "$GNUPGHOME"; \ + rm -rf /var/www/html/updater; \ + mkdir -p /var/www/html/data; \ + mkdir -p /var/www/html/custom_apps; \ + chmod +x /var/www/html/occ; \ + touch /var/www/html/data/.ocdata; \ + touch /var/www/html/config/config.php; \ + chown -R www-data:root /var/www/html; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ rm -rf /var/lib/apt/lists/* -COPY *.sh upgrade.exclude / -COPY config/* /usr/src/nextcloud/config/ +COPY *.sh / +COPY --chown=www-data:root config/* /var/www/html/config/ ENTRYPOINT ["/entrypoint.sh"] CMD ["apache2-foreground"] diff --git a/18.0/apache/config/10.apps.config.php b/18.0/apache/config/10.apps.config.php new file mode 100644 index 00000000..4c37f72a --- /dev/null +++ b/18.0/apache/config/10.apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => OC::$SERVERROOT.'/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), + ), +); diff --git a/18.0/apache/config/apps.config.php b/18.0/apache/config/apps.config.php deleted file mode 100644 index a4bed833..00000000 --- a/18.0/apache/config/apps.config.php +++ /dev/null @@ -1,15 +0,0 @@ - array ( - 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => false, - ), - 1 => array ( - "path" => OC::$SERVERROOT."/custom_apps", - "url" => "/custom_apps", - "writable" => true, - ), - ), -); diff --git a/18.0/apache/config/autoconfig.php b/18.0/apache/config/autoconfig.php index deeabe4e..a292dabb 100644 --- a/18.0/apache/config/autoconfig.php +++ b/18.0/apache/config/autoconfig.php @@ -3,29 +3,29 @@ $autoconfig_enabled = false; if (getenv('SQLITE_DATABASE')) { - $AUTOCONFIG["dbtype"] = "sqlite"; - $AUTOCONFIG["dbname"] = getenv('SQLITE_DATABASE'); + $AUTOCONFIG['dbtype'] = 'sqlite'; + $AUTOCONFIG['dbname'] = getenv('SQLITE_DATABASE'); $autoconfig_enabled = true; } elseif (getenv('MYSQL_DATABASE') && getenv('MYSQL_USER') && getenv('MYSQL_PASSWORD') && getenv('MYSQL_HOST')) { - $AUTOCONFIG["dbtype"] = "mysql"; - $AUTOCONFIG["dbname"] = getenv('MYSQL_DATABASE'); - $AUTOCONFIG["dbuser"] = getenv('MYSQL_USER'); - $AUTOCONFIG["dbpass"] = getenv('MYSQL_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('MYSQL_HOST'); + $AUTOCONFIG['dbtype'] = 'mysql'; + $AUTOCONFIG['dbname'] = getenv('MYSQL_DATABASE'); + $AUTOCONFIG['dbuser'] = getenv('MYSQL_USER'); + $AUTOCONFIG['dbpass'] = getenv('MYSQL_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('MYSQL_HOST'); $autoconfig_enabled = true; } elseif (getenv('POSTGRES_DB') && getenv('POSTGRES_USER') && getenv('POSTGRES_PASSWORD') && getenv('POSTGRES_HOST')) { - $AUTOCONFIG["dbtype"] = "pgsql"; - $AUTOCONFIG["dbname"] = getenv('POSTGRES_DB'); - $AUTOCONFIG["dbuser"] = getenv('POSTGRES_USER'); - $AUTOCONFIG["dbpass"] = getenv('POSTGRES_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('POSTGRES_HOST'); + $AUTOCONFIG['dbtype'] = 'pgsql'; + $AUTOCONFIG['dbname'] = getenv('POSTGRES_DB'); + $AUTOCONFIG['dbuser'] = getenv('POSTGRES_USER'); + $AUTOCONFIG['dbpass'] = getenv('POSTGRES_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('POSTGRES_HOST'); $autoconfig_enabled = true; } if ($autoconfig_enabled) { if (getenv('NEXTCLOUD_TABLE_PREFIX')) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + $AUTOCONFIG['dbtableprefix'] = getenv('NEXTCLOUD_TABLE_PREFIX'); } - $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; + $AUTOCONFIG['directory'] = getenv('NEXTCLOUD_DATA_DIR') ?: '/var/www/html/data'; } diff --git a/18.0/apache/config/language.config.php b/18.0/apache/config/language.config.php new file mode 100644 index 00000000..0528b6cf --- /dev/null +++ b/18.0/apache/config/language.config.php @@ -0,0 +1,7 @@ + getenv('DEFAULT_LANGUAGE') ?: 'en', + 'force_language' => getenv('FORCE_LANGUAGE') ?: false, + 'default_locale' => getenv('DEFAULT_LOCALE') ?: 'en_US', + 'force_locale' => getenv('FORCE_LOCALE') ?: false, +); diff --git a/18.0/apache/config/s3.config.php b/18.0/apache/config/s3.config.php new file mode 100644 index 00000000..a9171fdd --- /dev/null +++ b/18.0/apache/config/s3.config.php @@ -0,0 +1,20 @@ + array( + 'class' => '\\OC\\Files\\ObjectStore\\S3', + 'arguments' => array( + 'bucket' => getenv('OBJECTSTORE_S3_BUCKET'), + 'autocreate' => getenv('OBJECTSTORE_S3_AUTOCREATE') ?: true, + 'key' => getenv('OBJECTSTORE_S3_KEY'), + 'secret' => getenv('OBJECTSTORE_S3_SECRET'), + 'hostname' => getenv('OBJECTSTORE_S3_HOST'), + 'port' => getenv('OBJECTSTORE_S3_PORT'), + 'use_ssl' => getenv('OBJECTSTORE_S3_SSL') ?: true, + 'region' => getenv('OBJECTSTORE_S3_REGION') ?: "optional", + // required for some non Amazon S3 implementations + 'use_path_style' => getenv('OBJECTSTORE_S3_USEPATH_STYLE') ?: true, + ), + ), + ); +} diff --git a/18.0/apache/config/smtp.config.php b/18.0/apache/config/smtp.config.php index 59f1eaa1..6091dbcc 100644 --- a/18.0/apache/config/smtp.config.php +++ b/18.0/apache/config/smtp.config.php @@ -11,5 +11,9 @@ if (getenv('SMTP_HOST') && getenv('MAIL_FROM_ADDRESS') && getenv('MAIL_DOMAIN')) 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), 'mail_domain' => getenv('MAIL_DOMAIN'), + 'mail_smtpdebug' => getenv('SMTP_DEBUG') ?: false, + 'mail_template_class' => getenv('SMTP_TEMPLATE_CLASS') ?: '', + 'mail_send_plaintext_only' => getenv('SMTP_SEND_PLAINTEXT_ONLY') ?: false, + 'mail_sendmailmode' => getenv('SMTP_SENDMAIL_MODE') ?: 'smtp', ); } diff --git a/18.0/apache/entrypoint.sh b/18.0/apache/entrypoint.sh index fb2fe686..ad0eb222 100755 --- a/18.0/apache/entrypoint.sh +++ b/18.0/apache/entrypoint.sh @@ -1,16 +1,6 @@ #!/bin/sh set -eu -# 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" ] -} - -# return true if specified directory is empty -directory_empty() { - [ -z "$(ls -A "$1/")" ] -} - run_as() { if [ "$(id -u)" = 0 ]; then su -p www-data -s /bin/sh -c "$1" @@ -41,110 +31,69 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP } > /usr/local/etc/php/conf.d/redis-session.ini fi - installed_version="0.0.0.0" - if [ -f /var/www/html/version.php ]; then - # shellcheck disable=SC2016 - installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" - fi - # shellcheck disable=SC2016 - image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" + #upgrade + if php occ status | grep installed | grep true; then + run_as 'php /var/www/html/occ upgrade' + #install + else + echo "New nextcloud instance" - if version_greater "$installed_version" "$image_version"; then - echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" - exit 1 - fi - - if version_greater "$image_version" "$installed_version"; then - echo "Initializing nextcloud $image_version ..." - if [ "$installed_version" != "0.0.0.0" ]; then - echo "Upgrading nextcloud from $installed_version ..." - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before - fi - if [ "$(id -u)" = 0 ]; then - rsync_options="-rlDog --chown www-data:root" - else - rsync_options="-rlD" - fi - rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ - - for dir in config data custom_apps themes; do - if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then - rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - fi - done - rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - echo "Initializing finished" - - #install - if [ "$installed_version" = "0.0.0.0" ]; then - echo "New nextcloud instance" - - if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 - install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' - if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - fi - if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' - fi - - install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then - echo "Installing with SQLite database" - # 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 - 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 - 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"' - install=true - fi - - if [ "$install" = true ]; then - echo "starting nextcloud installation" - max_retries=10 - try=0 - until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] - do - echo "retrying install..." - try=$((try+1)) - sleep 10s - done - if [ "$try" -gt "$max_retries" ]; then - echo "installing of nextcloud failed!" - exit 1 - fi - if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then - echo "setting trusted domains…" - NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" - NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) - done - fi - else - echo "running web-based installer on first connect!" - fi + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi - #upgrade - else - run_as 'php /var/www/html/occ upgrade' - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after - echo "The following apps have been disabled:" - diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 - rm -f /tmp/list_before /tmp/list_after + install=false + if [ -n "${SQLITE_DATABASE+x}" ]; then + echo "Installing with SQLite database" + # 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 + 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 + 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"' + install=true + fi + if [ "$install" = true ]; then + echo "starting nextcloud installation" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 10s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + NC_TRUSTED_DOMAIN_IDX=1 + for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do + DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi fi fi fi diff --git a/18.0/apache/upgrade.exclude b/18.0/apache/upgrade.exclude deleted file mode 100644 index 354864da..00000000 --- a/18.0/apache/upgrade.exclude +++ /dev/null @@ -1,5 +0,0 @@ -/config/ -/data/ -/custom_apps/ -/themes/ -/version.php diff --git a/18.0/fpm-alpine/Dockerfile b/18.0/fpm-alpine/Dockerfile index e532ca50..0187afe8 100644 --- a/18.0/fpm-alpine/Dockerfile +++ b/18.0/fpm-alpine/Dockerfile @@ -91,10 +91,9 @@ RUN { \ chown -R www-data:root /var/www; \ chmod -R g=u /var/www -VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 18.0.0 +ENV NEXTCLOUD_VERSION 18.0.6 RUN set -ex; \ apk add --no-cache --virtual .fetch-deps \ @@ -110,17 +109,22 @@ RUN set -ex; \ # gpg key from https://nextcloud.com/nextcloud.asc gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + tar -xjf nextcloud.tar.bz2 -C /var/www/; \ + rm -rf /var/www/html; \ + mv /var/www/nextcloud /var/www/html; \ gpgconf --kill all; \ - rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - rm -rf /usr/src/nextcloud/updater; \ - mkdir -p /usr/src/nextcloud/data; \ - mkdir -p /usr/src/nextcloud/custom_apps; \ - chmod +x /usr/src/nextcloud/occ; \ - apk del .fetch-deps + rm -r "$GNUPGHOME"; \ + rm -rf /var/www/html/updater; \ + mkdir -p /var/www/html/data; \ + mkdir -p /var/www/html/custom_apps; \ + chmod +x /var/www/html/occ; \ + apk del .fetch-deps; \ + touch /var/www/html/data/.ocdata; \ + touch /var/www/html/config/config.php; \ + chown -R www-data:root /var/www/html -COPY *.sh upgrade.exclude / -COPY config/* /usr/src/nextcloud/config/ +COPY *.sh / +COPY --chown=www-data:root config/* /var/www/html/config/ ENTRYPOINT ["/entrypoint.sh"] CMD ["php-fpm"] diff --git a/18.0/fpm-alpine/config/10.apps.config.php b/18.0/fpm-alpine/config/10.apps.config.php new file mode 100644 index 00000000..4c37f72a --- /dev/null +++ b/18.0/fpm-alpine/config/10.apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => OC::$SERVERROOT.'/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), + ), +); diff --git a/18.0/fpm-alpine/config/apps.config.php b/18.0/fpm-alpine/config/apps.config.php deleted file mode 100644 index a4bed833..00000000 --- a/18.0/fpm-alpine/config/apps.config.php +++ /dev/null @@ -1,15 +0,0 @@ - array ( - 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => false, - ), - 1 => array ( - "path" => OC::$SERVERROOT."/custom_apps", - "url" => "/custom_apps", - "writable" => true, - ), - ), -); diff --git a/18.0/fpm-alpine/config/autoconfig.php b/18.0/fpm-alpine/config/autoconfig.php index deeabe4e..a292dabb 100644 --- a/18.0/fpm-alpine/config/autoconfig.php +++ b/18.0/fpm-alpine/config/autoconfig.php @@ -3,29 +3,29 @@ $autoconfig_enabled = false; if (getenv('SQLITE_DATABASE')) { - $AUTOCONFIG["dbtype"] = "sqlite"; - $AUTOCONFIG["dbname"] = getenv('SQLITE_DATABASE'); + $AUTOCONFIG['dbtype'] = 'sqlite'; + $AUTOCONFIG['dbname'] = getenv('SQLITE_DATABASE'); $autoconfig_enabled = true; } elseif (getenv('MYSQL_DATABASE') && getenv('MYSQL_USER') && getenv('MYSQL_PASSWORD') && getenv('MYSQL_HOST')) { - $AUTOCONFIG["dbtype"] = "mysql"; - $AUTOCONFIG["dbname"] = getenv('MYSQL_DATABASE'); - $AUTOCONFIG["dbuser"] = getenv('MYSQL_USER'); - $AUTOCONFIG["dbpass"] = getenv('MYSQL_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('MYSQL_HOST'); + $AUTOCONFIG['dbtype'] = 'mysql'; + $AUTOCONFIG['dbname'] = getenv('MYSQL_DATABASE'); + $AUTOCONFIG['dbuser'] = getenv('MYSQL_USER'); + $AUTOCONFIG['dbpass'] = getenv('MYSQL_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('MYSQL_HOST'); $autoconfig_enabled = true; } elseif (getenv('POSTGRES_DB') && getenv('POSTGRES_USER') && getenv('POSTGRES_PASSWORD') && getenv('POSTGRES_HOST')) { - $AUTOCONFIG["dbtype"] = "pgsql"; - $AUTOCONFIG["dbname"] = getenv('POSTGRES_DB'); - $AUTOCONFIG["dbuser"] = getenv('POSTGRES_USER'); - $AUTOCONFIG["dbpass"] = getenv('POSTGRES_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('POSTGRES_HOST'); + $AUTOCONFIG['dbtype'] = 'pgsql'; + $AUTOCONFIG['dbname'] = getenv('POSTGRES_DB'); + $AUTOCONFIG['dbuser'] = getenv('POSTGRES_USER'); + $AUTOCONFIG['dbpass'] = getenv('POSTGRES_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('POSTGRES_HOST'); $autoconfig_enabled = true; } if ($autoconfig_enabled) { if (getenv('NEXTCLOUD_TABLE_PREFIX')) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + $AUTOCONFIG['dbtableprefix'] = getenv('NEXTCLOUD_TABLE_PREFIX'); } - $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; + $AUTOCONFIG['directory'] = getenv('NEXTCLOUD_DATA_DIR') ?: '/var/www/html/data'; } diff --git a/18.0/fpm-alpine/config/language.config.php b/18.0/fpm-alpine/config/language.config.php new file mode 100644 index 00000000..0528b6cf --- /dev/null +++ b/18.0/fpm-alpine/config/language.config.php @@ -0,0 +1,7 @@ + getenv('DEFAULT_LANGUAGE') ?: 'en', + 'force_language' => getenv('FORCE_LANGUAGE') ?: false, + 'default_locale' => getenv('DEFAULT_LOCALE') ?: 'en_US', + 'force_locale' => getenv('FORCE_LOCALE') ?: false, +); diff --git a/18.0/fpm-alpine/config/s3.config.php b/18.0/fpm-alpine/config/s3.config.php new file mode 100644 index 00000000..a9171fdd --- /dev/null +++ b/18.0/fpm-alpine/config/s3.config.php @@ -0,0 +1,20 @@ + array( + 'class' => '\\OC\\Files\\ObjectStore\\S3', + 'arguments' => array( + 'bucket' => getenv('OBJECTSTORE_S3_BUCKET'), + 'autocreate' => getenv('OBJECTSTORE_S3_AUTOCREATE') ?: true, + 'key' => getenv('OBJECTSTORE_S3_KEY'), + 'secret' => getenv('OBJECTSTORE_S3_SECRET'), + 'hostname' => getenv('OBJECTSTORE_S3_HOST'), + 'port' => getenv('OBJECTSTORE_S3_PORT'), + 'use_ssl' => getenv('OBJECTSTORE_S3_SSL') ?: true, + 'region' => getenv('OBJECTSTORE_S3_REGION') ?: "optional", + // required for some non Amazon S3 implementations + 'use_path_style' => getenv('OBJECTSTORE_S3_USEPATH_STYLE') ?: true, + ), + ), + ); +} diff --git a/18.0/fpm-alpine/config/smtp.config.php b/18.0/fpm-alpine/config/smtp.config.php index 59f1eaa1..6091dbcc 100644 --- a/18.0/fpm-alpine/config/smtp.config.php +++ b/18.0/fpm-alpine/config/smtp.config.php @@ -11,5 +11,9 @@ if (getenv('SMTP_HOST') && getenv('MAIL_FROM_ADDRESS') && getenv('MAIL_DOMAIN')) 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), 'mail_domain' => getenv('MAIL_DOMAIN'), + 'mail_smtpdebug' => getenv('SMTP_DEBUG') ?: false, + 'mail_template_class' => getenv('SMTP_TEMPLATE_CLASS') ?: '', + 'mail_send_plaintext_only' => getenv('SMTP_SEND_PLAINTEXT_ONLY') ?: false, + 'mail_sendmailmode' => getenv('SMTP_SENDMAIL_MODE') ?: 'smtp', ); } diff --git a/18.0/fpm-alpine/entrypoint.sh b/18.0/fpm-alpine/entrypoint.sh index fb2fe686..ad0eb222 100755 --- a/18.0/fpm-alpine/entrypoint.sh +++ b/18.0/fpm-alpine/entrypoint.sh @@ -1,16 +1,6 @@ #!/bin/sh set -eu -# 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" ] -} - -# return true if specified directory is empty -directory_empty() { - [ -z "$(ls -A "$1/")" ] -} - run_as() { if [ "$(id -u)" = 0 ]; then su -p www-data -s /bin/sh -c "$1" @@ -41,110 +31,69 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP } > /usr/local/etc/php/conf.d/redis-session.ini fi - installed_version="0.0.0.0" - if [ -f /var/www/html/version.php ]; then - # shellcheck disable=SC2016 - installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" - fi - # shellcheck disable=SC2016 - image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" + #upgrade + if php occ status | grep installed | grep true; then + run_as 'php /var/www/html/occ upgrade' + #install + else + echo "New nextcloud instance" - if version_greater "$installed_version" "$image_version"; then - echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" - exit 1 - fi - - if version_greater "$image_version" "$installed_version"; then - echo "Initializing nextcloud $image_version ..." - if [ "$installed_version" != "0.0.0.0" ]; then - echo "Upgrading nextcloud from $installed_version ..." - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before - fi - if [ "$(id -u)" = 0 ]; then - rsync_options="-rlDog --chown www-data:root" - else - rsync_options="-rlD" - fi - rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ - - for dir in config data custom_apps themes; do - if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then - rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - fi - done - rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - echo "Initializing finished" - - #install - if [ "$installed_version" = "0.0.0.0" ]; then - echo "New nextcloud instance" - - if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 - install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' - if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - fi - if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' - fi - - install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then - echo "Installing with SQLite database" - # 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 - 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 - 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"' - install=true - fi - - if [ "$install" = true ]; then - echo "starting nextcloud installation" - max_retries=10 - try=0 - until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] - do - echo "retrying install..." - try=$((try+1)) - sleep 10s - done - if [ "$try" -gt "$max_retries" ]; then - echo "installing of nextcloud failed!" - exit 1 - fi - if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then - echo "setting trusted domains…" - NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" - NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) - done - fi - else - echo "running web-based installer on first connect!" - fi + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi - #upgrade - else - run_as 'php /var/www/html/occ upgrade' - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after - echo "The following apps have been disabled:" - diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 - rm -f /tmp/list_before /tmp/list_after + install=false + if [ -n "${SQLITE_DATABASE+x}" ]; then + echo "Installing with SQLite database" + # 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 + 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 + 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"' + install=true + fi + if [ "$install" = true ]; then + echo "starting nextcloud installation" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 10s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + NC_TRUSTED_DOMAIN_IDX=1 + for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do + DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi fi fi fi diff --git a/18.0/fpm-alpine/upgrade.exclude b/18.0/fpm-alpine/upgrade.exclude deleted file mode 100644 index 354864da..00000000 --- a/18.0/fpm-alpine/upgrade.exclude +++ /dev/null @@ -1,5 +0,0 @@ -/config/ -/data/ -/custom_apps/ -/themes/ -/version.php diff --git a/18.0/fpm/Dockerfile b/18.0/fpm/Dockerfile index 801e3080..4d7b9542 100644 --- a/18.0/fpm/Dockerfile +++ b/18.0/fpm/Dockerfile @@ -104,10 +104,9 @@ RUN { \ chown -R www-data:root /var/www; \ chmod -R g=u /var/www -VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 18.0.0 +ENV NEXTCLOUD_VERSION 18.0.6 RUN set -ex; \ fetchDeps=" \ @@ -125,19 +124,23 @@ RUN set -ex; \ # gpg key from https://nextcloud.com/nextcloud.asc gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + tar -xjf nextcloud.tar.bz2 -C /var/www/; \ + rm -rf /var/www/html; \ + mv /var/www/nextcloud /var/www/html; \ gpgconf --kill all; \ - rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - rm -rf /usr/src/nextcloud/updater; \ - mkdir -p /usr/src/nextcloud/data; \ - mkdir -p /usr/src/nextcloud/custom_apps; \ - chmod +x /usr/src/nextcloud/occ; \ - \ + rm -r "$GNUPGHOME"; \ + rm -rf /var/www/html/updater; \ + mkdir -p /var/www/html/data; \ + mkdir -p /var/www/html/custom_apps; \ + chmod +x /var/www/html/occ; \ + touch /var/www/html/data/.ocdata; \ + touch /var/www/html/config/config.php; \ + chown -R www-data:root /var/www/html; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ rm -rf /var/lib/apt/lists/* -COPY *.sh upgrade.exclude / -COPY config/* /usr/src/nextcloud/config/ +COPY *.sh / +COPY --chown=www-data:root config/* /var/www/html/config/ ENTRYPOINT ["/entrypoint.sh"] CMD ["php-fpm"] diff --git a/18.0/fpm/config/10.apps.config.php b/18.0/fpm/config/10.apps.config.php new file mode 100644 index 00000000..4c37f72a --- /dev/null +++ b/18.0/fpm/config/10.apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => OC::$SERVERROOT.'/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), + ), +); diff --git a/18.0/fpm/config/apps.config.php b/18.0/fpm/config/apps.config.php deleted file mode 100644 index a4bed833..00000000 --- a/18.0/fpm/config/apps.config.php +++ /dev/null @@ -1,15 +0,0 @@ - array ( - 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => false, - ), - 1 => array ( - "path" => OC::$SERVERROOT."/custom_apps", - "url" => "/custom_apps", - "writable" => true, - ), - ), -); diff --git a/18.0/fpm/config/autoconfig.php b/18.0/fpm/config/autoconfig.php index deeabe4e..a292dabb 100644 --- a/18.0/fpm/config/autoconfig.php +++ b/18.0/fpm/config/autoconfig.php @@ -3,29 +3,29 @@ $autoconfig_enabled = false; if (getenv('SQLITE_DATABASE')) { - $AUTOCONFIG["dbtype"] = "sqlite"; - $AUTOCONFIG["dbname"] = getenv('SQLITE_DATABASE'); + $AUTOCONFIG['dbtype'] = 'sqlite'; + $AUTOCONFIG['dbname'] = getenv('SQLITE_DATABASE'); $autoconfig_enabled = true; } elseif (getenv('MYSQL_DATABASE') && getenv('MYSQL_USER') && getenv('MYSQL_PASSWORD') && getenv('MYSQL_HOST')) { - $AUTOCONFIG["dbtype"] = "mysql"; - $AUTOCONFIG["dbname"] = getenv('MYSQL_DATABASE'); - $AUTOCONFIG["dbuser"] = getenv('MYSQL_USER'); - $AUTOCONFIG["dbpass"] = getenv('MYSQL_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('MYSQL_HOST'); + $AUTOCONFIG['dbtype'] = 'mysql'; + $AUTOCONFIG['dbname'] = getenv('MYSQL_DATABASE'); + $AUTOCONFIG['dbuser'] = getenv('MYSQL_USER'); + $AUTOCONFIG['dbpass'] = getenv('MYSQL_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('MYSQL_HOST'); $autoconfig_enabled = true; } elseif (getenv('POSTGRES_DB') && getenv('POSTGRES_USER') && getenv('POSTGRES_PASSWORD') && getenv('POSTGRES_HOST')) { - $AUTOCONFIG["dbtype"] = "pgsql"; - $AUTOCONFIG["dbname"] = getenv('POSTGRES_DB'); - $AUTOCONFIG["dbuser"] = getenv('POSTGRES_USER'); - $AUTOCONFIG["dbpass"] = getenv('POSTGRES_PASSWORD'); - $AUTOCONFIG["dbhost"] = getenv('POSTGRES_HOST'); + $AUTOCONFIG['dbtype'] = 'pgsql'; + $AUTOCONFIG['dbname'] = getenv('POSTGRES_DB'); + $AUTOCONFIG['dbuser'] = getenv('POSTGRES_USER'); + $AUTOCONFIG['dbpass'] = getenv('POSTGRES_PASSWORD'); + $AUTOCONFIG['dbhost'] = getenv('POSTGRES_HOST'); $autoconfig_enabled = true; } if ($autoconfig_enabled) { if (getenv('NEXTCLOUD_TABLE_PREFIX')) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + $AUTOCONFIG['dbtableprefix'] = getenv('NEXTCLOUD_TABLE_PREFIX'); } - $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; + $AUTOCONFIG['directory'] = getenv('NEXTCLOUD_DATA_DIR') ?: '/var/www/html/data'; } diff --git a/18.0/fpm/config/language.config.php b/18.0/fpm/config/language.config.php new file mode 100644 index 00000000..0528b6cf --- /dev/null +++ b/18.0/fpm/config/language.config.php @@ -0,0 +1,7 @@ + getenv('DEFAULT_LANGUAGE') ?: 'en', + 'force_language' => getenv('FORCE_LANGUAGE') ?: false, + 'default_locale' => getenv('DEFAULT_LOCALE') ?: 'en_US', + 'force_locale' => getenv('FORCE_LOCALE') ?: false, +); diff --git a/18.0/fpm/config/s3.config.php b/18.0/fpm/config/s3.config.php new file mode 100644 index 00000000..a9171fdd --- /dev/null +++ b/18.0/fpm/config/s3.config.php @@ -0,0 +1,20 @@ + array( + 'class' => '\\OC\\Files\\ObjectStore\\S3', + 'arguments' => array( + 'bucket' => getenv('OBJECTSTORE_S3_BUCKET'), + 'autocreate' => getenv('OBJECTSTORE_S3_AUTOCREATE') ?: true, + 'key' => getenv('OBJECTSTORE_S3_KEY'), + 'secret' => getenv('OBJECTSTORE_S3_SECRET'), + 'hostname' => getenv('OBJECTSTORE_S3_HOST'), + 'port' => getenv('OBJECTSTORE_S3_PORT'), + 'use_ssl' => getenv('OBJECTSTORE_S3_SSL') ?: true, + 'region' => getenv('OBJECTSTORE_S3_REGION') ?: "optional", + // required for some non Amazon S3 implementations + 'use_path_style' => getenv('OBJECTSTORE_S3_USEPATH_STYLE') ?: true, + ), + ), + ); +} diff --git a/18.0/fpm/config/smtp.config.php b/18.0/fpm/config/smtp.config.php index 59f1eaa1..6091dbcc 100644 --- a/18.0/fpm/config/smtp.config.php +++ b/18.0/fpm/config/smtp.config.php @@ -11,5 +11,9 @@ if (getenv('SMTP_HOST') && getenv('MAIL_FROM_ADDRESS') && getenv('MAIL_DOMAIN')) 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), 'mail_domain' => getenv('MAIL_DOMAIN'), + 'mail_smtpdebug' => getenv('SMTP_DEBUG') ?: false, + 'mail_template_class' => getenv('SMTP_TEMPLATE_CLASS') ?: '', + 'mail_send_plaintext_only' => getenv('SMTP_SEND_PLAINTEXT_ONLY') ?: false, + 'mail_sendmailmode' => getenv('SMTP_SENDMAIL_MODE') ?: 'smtp', ); } diff --git a/18.0/fpm/entrypoint.sh b/18.0/fpm/entrypoint.sh index fb2fe686..ad0eb222 100755 --- a/18.0/fpm/entrypoint.sh +++ b/18.0/fpm/entrypoint.sh @@ -1,16 +1,6 @@ #!/bin/sh set -eu -# 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" ] -} - -# return true if specified directory is empty -directory_empty() { - [ -z "$(ls -A "$1/")" ] -} - run_as() { if [ "$(id -u)" = 0 ]; then su -p www-data -s /bin/sh -c "$1" @@ -41,110 +31,69 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP } > /usr/local/etc/php/conf.d/redis-session.ini fi - installed_version="0.0.0.0" - if [ -f /var/www/html/version.php ]; then - # shellcheck disable=SC2016 - installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" - fi - # shellcheck disable=SC2016 - image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" + #upgrade + if php occ status | grep installed | grep true; then + run_as 'php /var/www/html/occ upgrade' + #install + else + echo "New nextcloud instance" - if version_greater "$installed_version" "$image_version"; then - echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" - exit 1 - fi - - if version_greater "$image_version" "$installed_version"; then - echo "Initializing nextcloud $image_version ..." - if [ "$installed_version" != "0.0.0.0" ]; then - echo "Upgrading nextcloud from $installed_version ..." - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before - fi - if [ "$(id -u)" = 0 ]; then - rsync_options="-rlDog --chown www-data:root" - else - rsync_options="-rlD" - fi - rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ - - for dir in config data custom_apps themes; do - if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then - rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - fi - done - rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ - echo "Initializing finished" - - #install - if [ "$installed_version" = "0.0.0.0" ]; then - echo "New nextcloud instance" - - if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 - install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' - if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - fi - if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then - # shellcheck disable=SC2016 - install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' - fi - - install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then - echo "Installing with SQLite database" - # 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 - 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 - 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"' - install=true - fi - - if [ "$install" = true ]; then - echo "starting nextcloud installation" - max_retries=10 - try=0 - until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] - do - echo "retrying install..." - try=$((try+1)) - sleep 10s - done - if [ "$try" -gt "$max_retries" ]; then - echo "installing of nextcloud failed!" - exit 1 - fi - if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then - echo "setting trusted domains…" - NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" - NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) - done - fi - else - echo "running web-based installer on first connect!" - fi + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi - #upgrade - else - run_as 'php /var/www/html/occ upgrade' - run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after - echo "The following apps have been disabled:" - diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 - rm -f /tmp/list_before /tmp/list_after + install=false + if [ -n "${SQLITE_DATABASE+x}" ]; then + echo "Installing with SQLite database" + # 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 + 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 + 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"' + install=true + fi + if [ "$install" = true ]; then + echo "starting nextcloud installation" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 10s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + NC_TRUSTED_DOMAIN_IDX=1 + for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do + DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi fi fi fi diff --git a/18.0/fpm/upgrade.exclude b/18.0/fpm/upgrade.exclude deleted file mode 100644 index 354864da..00000000 --- a/18.0/fpm/upgrade.exclude +++ /dev/null @@ -1,5 +0,0 @@ -/config/ -/data/ -/custom_apps/ -/themes/ -/version.php diff --git a/18.0-rc/apache/Dockerfile b/19.0/apache/Dockerfile similarity index 86% rename from 18.0-rc/apache/Dockerfile rename to 19.0/apache/Dockerfile index 7bad4abf..503577f5 100644 --- a/18.0-rc/apache/Dockerfile +++ b/19.0/apache/Dockerfile @@ -104,7 +104,6 @@ RUN { \ chown -R www-data:root /var/www; \ chmod -R g=u /var/www -VOLUME /var/www/html RUN a2enmod rewrite remoteip ;\ {\ @@ -115,7 +114,7 @@ RUN a2enmod rewrite remoteip ;\ } > /etc/apache2/conf-available/remoteip.conf;\ a2enconf remoteip -ENV NEXTCLOUD_VERSION 18.0.1RC3 +ENV NEXTCLOUD_VERSION 19.0.0 RUN set -ex; \ fetchDeps=" \ @@ -126,26 +125,30 @@ RUN set -ex; \ apt-get install -y --no-install-recommends $fetchDeps; \ \ curl -fsSL -o nextcloud.tar.bz2 \ - "https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \ + "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \ curl -fsSL -o nextcloud.tar.bz2.asc \ - "https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \ + "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \ export GNUPGHOME="$(mktemp -d)"; \ # gpg key from https://nextcloud.com/nextcloud.asc gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + tar -xjf nextcloud.tar.bz2 -C /var/www/; \ + rm -rf /var/www/html; \ + mv /var/www/nextcloud /var/www/html; \ gpgconf --kill all; \ - rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - rm -rf /usr/src/nextcloud/updater; \ - mkdir -p /usr/src/nextcloud/data; \ - mkdir -p /usr/src/nextcloud/custom_apps; \ - chmod +x /usr/src/nextcloud/occ; \ - \ + rm -r "$GNUPGHOME"; \ + rm -rf /var/www/html/updater; \ + mkdir -p /var/www/html/data; \ + mkdir -p /var/www/html/custom_apps; \ + chmod +x /var/www/html/occ; \ + touch /var/www/html/data/.ocdata; \ + touch /var/www/html/config/config.php; \ + chown -R www-data:root /var/www/html; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ rm -rf /var/lib/apt/lists/* -COPY *.sh upgrade.exclude / -COPY config/* /usr/src/nextcloud/config/ +COPY *.sh / +COPY --chown=www-data:root config/* /var/www/html/config/ ENTRYPOINT ["/entrypoint.sh"] CMD ["apache2-foreground"] diff --git a/19.0/apache/config/10.apps.config.php b/19.0/apache/config/10.apps.config.php new file mode 100644 index 00000000..4c37f72a --- /dev/null +++ b/19.0/apache/config/10.apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => OC::$SERVERROOT.'/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), + ), +); diff --git a/18.0-rc/apache/config/apache-pretty-urls.config.php b/19.0/apache/config/apache-pretty-urls.config.php similarity index 100% rename from 18.0-rc/apache/config/apache-pretty-urls.config.php rename to 19.0/apache/config/apache-pretty-urls.config.php diff --git a/18.0-rc/apache/config/apcu.config.php b/19.0/apache/config/apcu.config.php similarity index 100% rename from 18.0-rc/apache/config/apcu.config.php rename to 19.0/apache/config/apcu.config.php diff --git a/19.0/apache/config/autoconfig.php b/19.0/apache/config/autoconfig.php new file mode 100644 index 00000000..a292dabb --- /dev/null +++ b/19.0/apache/config/autoconfig.php @@ -0,0 +1,31 @@ + getenv('DEFAULT_LANGUAGE') ?: 'en', + 'force_language' => getenv('FORCE_LANGUAGE') ?: false, + 'default_locale' => getenv('DEFAULT_LOCALE') ?: 'en_US', + 'force_locale' => getenv('FORCE_LOCALE') ?: false, +); diff --git a/18.0-rc/apache/config/redis.config.php b/19.0/apache/config/redis.config.php similarity index 100% rename from 18.0-rc/apache/config/redis.config.php rename to 19.0/apache/config/redis.config.php diff --git a/19.0/apache/config/s3.config.php b/19.0/apache/config/s3.config.php new file mode 100644 index 00000000..a9171fdd --- /dev/null +++ b/19.0/apache/config/s3.config.php @@ -0,0 +1,20 @@ + array( + 'class' => '\\OC\\Files\\ObjectStore\\S3', + 'arguments' => array( + 'bucket' => getenv('OBJECTSTORE_S3_BUCKET'), + 'autocreate' => getenv('OBJECTSTORE_S3_AUTOCREATE') ?: true, + 'key' => getenv('OBJECTSTORE_S3_KEY'), + 'secret' => getenv('OBJECTSTORE_S3_SECRET'), + 'hostname' => getenv('OBJECTSTORE_S3_HOST'), + 'port' => getenv('OBJECTSTORE_S3_PORT'), + 'use_ssl' => getenv('OBJECTSTORE_S3_SSL') ?: true, + 'region' => getenv('OBJECTSTORE_S3_REGION') ?: "optional", + // required for some non Amazon S3 implementations + 'use_path_style' => getenv('OBJECTSTORE_S3_USEPATH_STYLE') ?: true, + ), + ), + ); +} diff --git a/18.0-rc/fpm/config/smtp.config.php b/19.0/apache/config/smtp.config.php similarity index 71% rename from 18.0-rc/fpm/config/smtp.config.php rename to 19.0/apache/config/smtp.config.php index 59f1eaa1..6091dbcc 100644 --- a/18.0-rc/fpm/config/smtp.config.php +++ b/19.0/apache/config/smtp.config.php @@ -11,5 +11,9 @@ if (getenv('SMTP_HOST') && getenv('MAIL_FROM_ADDRESS') && getenv('MAIL_DOMAIN')) 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), 'mail_domain' => getenv('MAIL_DOMAIN'), + 'mail_smtpdebug' => getenv('SMTP_DEBUG') ?: false, + 'mail_template_class' => getenv('SMTP_TEMPLATE_CLASS') ?: '', + 'mail_send_plaintext_only' => getenv('SMTP_SEND_PLAINTEXT_ONLY') ?: false, + 'mail_sendmailmode' => getenv('SMTP_SENDMAIL_MODE') ?: 'smtp', ); } diff --git a/18.0-rc/apache/cron.sh b/19.0/apache/cron.sh similarity index 100% rename from 18.0-rc/apache/cron.sh rename to 19.0/apache/cron.sh diff --git a/19.0/apache/entrypoint.sh b/19.0/apache/entrypoint.sh new file mode 100755 index 00000000..ad0eb222 --- /dev/null +++ b/19.0/apache/entrypoint.sh @@ -0,0 +1,101 @@ +#!/bin/sh +set -eu + +run_as() { + if [ "$(id -u)" = 0 ]; then + su -p www-data -s /bin/sh -c "$1" + else + sh -c "$1" + fi +} + +if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UPDATE:-0}" -eq 1 ]; then + if [ -n "${REDIS_HOST+x}" ]; then + + echo "Configuring Redis as session handler" + { + echo 'session.save_handler = redis' + # check if redis host is an unix socket path + if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then + if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then + echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"unix://${REDIS_HOST}\"" + fi + # check if redis password has been set + elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" + fi + } > /usr/local/etc/php/conf.d/redis-session.ini + fi + + #upgrade + if php occ status | grep installed | grep true; then + run_as 'php /var/www/html/occ upgrade' + #install + else + echo "New nextcloud instance" + + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' + fi + + install=false + if [ -n "${SQLITE_DATABASE+x}" ]; then + echo "Installing with SQLite database" + # 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 + 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 + 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"' + install=true + fi + + if [ "$install" = true ]; then + echo "starting nextcloud installation" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 10s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + NC_TRUSTED_DOMAIN_IDX=1 + for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do + DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi + fi + fi +fi + +exec "$@" diff --git a/18.0-rc/fpm-alpine/Dockerfile b/19.0/fpm-alpine/Dockerfile similarity index 81% rename from 18.0-rc/fpm-alpine/Dockerfile rename to 19.0/fpm-alpine/Dockerfile index 98902a0f..3bb9bf72 100644 --- a/18.0-rc/fpm-alpine/Dockerfile +++ b/19.0/fpm-alpine/Dockerfile @@ -91,10 +91,9 @@ RUN { \ chown -R www-data:root /var/www; \ chmod -R g=u /var/www -VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 18.0.1RC3 +ENV NEXTCLOUD_VERSION 19.0.0 RUN set -ex; \ apk add --no-cache --virtual .fetch-deps \ @@ -103,24 +102,29 @@ RUN set -ex; \ ; \ \ curl -fsSL -o nextcloud.tar.bz2 \ - "https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \ + "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \ curl -fsSL -o nextcloud.tar.bz2.asc \ - "https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \ + "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \ export GNUPGHOME="$(mktemp -d)"; \ # gpg key from https://nextcloud.com/nextcloud.asc gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + tar -xjf nextcloud.tar.bz2 -C /var/www/; \ + rm -rf /var/www/html; \ + mv /var/www/nextcloud /var/www/html; \ gpgconf --kill all; \ - rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - rm -rf /usr/src/nextcloud/updater; \ - mkdir -p /usr/src/nextcloud/data; \ - mkdir -p /usr/src/nextcloud/custom_apps; \ - chmod +x /usr/src/nextcloud/occ; \ - apk del .fetch-deps + rm -r "$GNUPGHOME"; \ + rm -rf /var/www/html/updater; \ + mkdir -p /var/www/html/data; \ + mkdir -p /var/www/html/custom_apps; \ + chmod +x /var/www/html/occ; \ + apk del .fetch-deps; \ + touch /var/www/html/data/.ocdata; \ + touch /var/www/html/config/config.php; \ + chown -R www-data:root /var/www/html -COPY *.sh upgrade.exclude / -COPY config/* /usr/src/nextcloud/config/ +COPY *.sh / +COPY --chown=www-data:root config/* /var/www/html/config/ ENTRYPOINT ["/entrypoint.sh"] CMD ["php-fpm"] diff --git a/19.0/fpm-alpine/config/10.apps.config.php b/19.0/fpm-alpine/config/10.apps.config.php new file mode 100644 index 00000000..4c37f72a --- /dev/null +++ b/19.0/fpm-alpine/config/10.apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => OC::$SERVERROOT.'/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), + ), +); diff --git a/18.0-rc/fpm-alpine/config/apcu.config.php b/19.0/fpm-alpine/config/apcu.config.php similarity index 100% rename from 18.0-rc/fpm-alpine/config/apcu.config.php rename to 19.0/fpm-alpine/config/apcu.config.php diff --git a/19.0/fpm-alpine/config/autoconfig.php b/19.0/fpm-alpine/config/autoconfig.php new file mode 100644 index 00000000..a292dabb --- /dev/null +++ b/19.0/fpm-alpine/config/autoconfig.php @@ -0,0 +1,31 @@ + getenv('DEFAULT_LANGUAGE') ?: 'en', + 'force_language' => getenv('FORCE_LANGUAGE') ?: false, + 'default_locale' => getenv('DEFAULT_LOCALE') ?: 'en_US', + 'force_locale' => getenv('FORCE_LOCALE') ?: false, +); diff --git a/18.0-rc/fpm-alpine/config/redis.config.php b/19.0/fpm-alpine/config/redis.config.php similarity index 100% rename from 18.0-rc/fpm-alpine/config/redis.config.php rename to 19.0/fpm-alpine/config/redis.config.php diff --git a/19.0/fpm-alpine/config/s3.config.php b/19.0/fpm-alpine/config/s3.config.php new file mode 100644 index 00000000..a9171fdd --- /dev/null +++ b/19.0/fpm-alpine/config/s3.config.php @@ -0,0 +1,20 @@ + array( + 'class' => '\\OC\\Files\\ObjectStore\\S3', + 'arguments' => array( + 'bucket' => getenv('OBJECTSTORE_S3_BUCKET'), + 'autocreate' => getenv('OBJECTSTORE_S3_AUTOCREATE') ?: true, + 'key' => getenv('OBJECTSTORE_S3_KEY'), + 'secret' => getenv('OBJECTSTORE_S3_SECRET'), + 'hostname' => getenv('OBJECTSTORE_S3_HOST'), + 'port' => getenv('OBJECTSTORE_S3_PORT'), + 'use_ssl' => getenv('OBJECTSTORE_S3_SSL') ?: true, + 'region' => getenv('OBJECTSTORE_S3_REGION') ?: "optional", + // required for some non Amazon S3 implementations + 'use_path_style' => getenv('OBJECTSTORE_S3_USEPATH_STYLE') ?: true, + ), + ), + ); +} diff --git a/18.0-rc/apache/config/smtp.config.php b/19.0/fpm-alpine/config/smtp.config.php similarity index 71% rename from 18.0-rc/apache/config/smtp.config.php rename to 19.0/fpm-alpine/config/smtp.config.php index 59f1eaa1..6091dbcc 100644 --- a/18.0-rc/apache/config/smtp.config.php +++ b/19.0/fpm-alpine/config/smtp.config.php @@ -11,5 +11,9 @@ if (getenv('SMTP_HOST') && getenv('MAIL_FROM_ADDRESS') && getenv('MAIL_DOMAIN')) 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), 'mail_domain' => getenv('MAIL_DOMAIN'), + 'mail_smtpdebug' => getenv('SMTP_DEBUG') ?: false, + 'mail_template_class' => getenv('SMTP_TEMPLATE_CLASS') ?: '', + 'mail_send_plaintext_only' => getenv('SMTP_SEND_PLAINTEXT_ONLY') ?: false, + 'mail_sendmailmode' => getenv('SMTP_SENDMAIL_MODE') ?: 'smtp', ); } diff --git a/18.0-rc/fpm-alpine/cron.sh b/19.0/fpm-alpine/cron.sh similarity index 100% rename from 18.0-rc/fpm-alpine/cron.sh rename to 19.0/fpm-alpine/cron.sh diff --git a/19.0/fpm-alpine/entrypoint.sh b/19.0/fpm-alpine/entrypoint.sh new file mode 100755 index 00000000..ad0eb222 --- /dev/null +++ b/19.0/fpm-alpine/entrypoint.sh @@ -0,0 +1,101 @@ +#!/bin/sh +set -eu + +run_as() { + if [ "$(id -u)" = 0 ]; then + su -p www-data -s /bin/sh -c "$1" + else + sh -c "$1" + fi +} + +if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UPDATE:-0}" -eq 1 ]; then + if [ -n "${REDIS_HOST+x}" ]; then + + echo "Configuring Redis as session handler" + { + echo 'session.save_handler = redis' + # check if redis host is an unix socket path + if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then + if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then + echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"unix://${REDIS_HOST}\"" + fi + # check if redis password has been set + elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" + fi + } > /usr/local/etc/php/conf.d/redis-session.ini + fi + + #upgrade + if php occ status | grep installed | grep true; then + run_as 'php /var/www/html/occ upgrade' + #install + else + echo "New nextcloud instance" + + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' + fi + + install=false + if [ -n "${SQLITE_DATABASE+x}" ]; then + echo "Installing with SQLite database" + # 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 + 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 + 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"' + install=true + fi + + if [ "$install" = true ]; then + echo "starting nextcloud installation" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 10s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + NC_TRUSTED_DOMAIN_IDX=1 + for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do + DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi + fi + fi +fi + +exec "$@" diff --git a/18.0-rc/fpm/Dockerfile b/19.0/fpm/Dockerfile similarity index 85% rename from 18.0-rc/fpm/Dockerfile rename to 19.0/fpm/Dockerfile index f9b6dbdc..01ce12bb 100644 --- a/18.0-rc/fpm/Dockerfile +++ b/19.0/fpm/Dockerfile @@ -104,10 +104,9 @@ RUN { \ chown -R www-data:root /var/www; \ chmod -R g=u /var/www -VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 18.0.1RC3 +ENV NEXTCLOUD_VERSION 19.0.0 RUN set -ex; \ fetchDeps=" \ @@ -118,26 +117,30 @@ RUN set -ex; \ apt-get install -y --no-install-recommends $fetchDeps; \ \ curl -fsSL -o nextcloud.tar.bz2 \ - "https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \ + "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \ curl -fsSL -o nextcloud.tar.bz2.asc \ - "https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \ + "https://download.nextcloud.com/server/releases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \ export GNUPGHOME="$(mktemp -d)"; \ # gpg key from https://nextcloud.com/nextcloud.asc gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + tar -xjf nextcloud.tar.bz2 -C /var/www/; \ + rm -rf /var/www/html; \ + mv /var/www/nextcloud /var/www/html; \ gpgconf --kill all; \ - rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ - rm -rf /usr/src/nextcloud/updater; \ - mkdir -p /usr/src/nextcloud/data; \ - mkdir -p /usr/src/nextcloud/custom_apps; \ - chmod +x /usr/src/nextcloud/occ; \ - \ + rm -r "$GNUPGHOME"; \ + rm -rf /var/www/html/updater; \ + mkdir -p /var/www/html/data; \ + mkdir -p /var/www/html/custom_apps; \ + chmod +x /var/www/html/occ; \ + touch /var/www/html/data/.ocdata; \ + touch /var/www/html/config/config.php; \ + chown -R www-data:root /var/www/html; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ rm -rf /var/lib/apt/lists/* -COPY *.sh upgrade.exclude / -COPY config/* /usr/src/nextcloud/config/ +COPY *.sh / +COPY --chown=www-data:root config/* /var/www/html/config/ ENTRYPOINT ["/entrypoint.sh"] CMD ["php-fpm"] diff --git a/19.0/fpm/config/10.apps.config.php b/19.0/fpm/config/10.apps.config.php new file mode 100644 index 00000000..4c37f72a --- /dev/null +++ b/19.0/fpm/config/10.apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => OC::$SERVERROOT.'/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), + ), +); diff --git a/18.0-rc/fpm/config/apcu.config.php b/19.0/fpm/config/apcu.config.php similarity index 100% rename from 18.0-rc/fpm/config/apcu.config.php rename to 19.0/fpm/config/apcu.config.php diff --git a/19.0/fpm/config/autoconfig.php b/19.0/fpm/config/autoconfig.php new file mode 100644 index 00000000..a292dabb --- /dev/null +++ b/19.0/fpm/config/autoconfig.php @@ -0,0 +1,31 @@ + getenv('DEFAULT_LANGUAGE') ?: 'en', + 'force_language' => getenv('FORCE_LANGUAGE') ?: false, + 'default_locale' => getenv('DEFAULT_LOCALE') ?: 'en_US', + 'force_locale' => getenv('FORCE_LOCALE') ?: false, +); diff --git a/18.0-rc/fpm/config/redis.config.php b/19.0/fpm/config/redis.config.php similarity index 100% rename from 18.0-rc/fpm/config/redis.config.php rename to 19.0/fpm/config/redis.config.php diff --git a/19.0/fpm/config/s3.config.php b/19.0/fpm/config/s3.config.php new file mode 100644 index 00000000..a9171fdd --- /dev/null +++ b/19.0/fpm/config/s3.config.php @@ -0,0 +1,20 @@ + array( + 'class' => '\\OC\\Files\\ObjectStore\\S3', + 'arguments' => array( + 'bucket' => getenv('OBJECTSTORE_S3_BUCKET'), + 'autocreate' => getenv('OBJECTSTORE_S3_AUTOCREATE') ?: true, + 'key' => getenv('OBJECTSTORE_S3_KEY'), + 'secret' => getenv('OBJECTSTORE_S3_SECRET'), + 'hostname' => getenv('OBJECTSTORE_S3_HOST'), + 'port' => getenv('OBJECTSTORE_S3_PORT'), + 'use_ssl' => getenv('OBJECTSTORE_S3_SSL') ?: true, + 'region' => getenv('OBJECTSTORE_S3_REGION') ?: "optional", + // required for some non Amazon S3 implementations + 'use_path_style' => getenv('OBJECTSTORE_S3_USEPATH_STYLE') ?: true, + ), + ), + ); +} diff --git a/18.0-rc/fpm-alpine/config/smtp.config.php b/19.0/fpm/config/smtp.config.php similarity index 71% rename from 18.0-rc/fpm-alpine/config/smtp.config.php rename to 19.0/fpm/config/smtp.config.php index 59f1eaa1..6091dbcc 100644 --- a/18.0-rc/fpm-alpine/config/smtp.config.php +++ b/19.0/fpm/config/smtp.config.php @@ -11,5 +11,9 @@ if (getenv('SMTP_HOST') && getenv('MAIL_FROM_ADDRESS') && getenv('MAIL_DOMAIN')) 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), 'mail_domain' => getenv('MAIL_DOMAIN'), + 'mail_smtpdebug' => getenv('SMTP_DEBUG') ?: false, + 'mail_template_class' => getenv('SMTP_TEMPLATE_CLASS') ?: '', + 'mail_send_plaintext_only' => getenv('SMTP_SEND_PLAINTEXT_ONLY') ?: false, + 'mail_sendmailmode' => getenv('SMTP_SENDMAIL_MODE') ?: 'smtp', ); } diff --git a/18.0-rc/fpm/cron.sh b/19.0/fpm/cron.sh similarity index 100% rename from 18.0-rc/fpm/cron.sh rename to 19.0/fpm/cron.sh diff --git a/19.0/fpm/entrypoint.sh b/19.0/fpm/entrypoint.sh new file mode 100755 index 00000000..ad0eb222 --- /dev/null +++ b/19.0/fpm/entrypoint.sh @@ -0,0 +1,101 @@ +#!/bin/sh +set -eu + +run_as() { + if [ "$(id -u)" = 0 ]; then + su -p www-data -s /bin/sh -c "$1" + else + sh -c "$1" + fi +} + +if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UPDATE:-0}" -eq 1 ]; then + if [ -n "${REDIS_HOST+x}" ]; then + + echo "Configuring Redis as session handler" + { + echo 'session.save_handler = redis' + # check if redis host is an unix socket path + if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then + if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then + echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"unix://${REDIS_HOST}\"" + fi + # check if redis password has been set + elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" + fi + } > /usr/local/etc/php/conf.d/redis-session.ini + fi + + #upgrade + if php occ status | grep installed | grep true; then + run_as 'php /var/www/html/occ upgrade' + #install + else + echo "New nextcloud instance" + + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' + fi + + install=false + if [ -n "${SQLITE_DATABASE+x}" ]; then + echo "Installing with SQLite database" + # 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 + 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 + 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"' + install=true + fi + + if [ "$install" = true ]; then + echo "starting nextcloud installation" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 10s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + NC_TRUSTED_DOMAIN_IDX=1 + for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do + DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi + fi + fi +fi + +exec "$@"