From 546dbcc20f4bda9c435bfeac56dab66fb92ea1e8 Mon Sep 17 00:00:00 2001 From: Josh Date: Sun, 26 May 2024 12:34:35 -0400 Subject: [PATCH 01/16] Update README.md Fixes #2224 Signed-off-by: Josh --- README.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4c69999b..f1c013c3 100644 --- a/README.md +++ b/README.md @@ -115,7 +115,20 @@ $ docker-compose exec --user www-data app php occ ``` ## Auto configuration via environment variables -The Nextcloud image supports auto configuration via environment variables. You can preconfigure everything that is asked on the install page on first run. To enable auto configuration, set your database connection via the following environment variables. You must specify all of the environment variables for a given database or the database environment variables defaults to SQLITE. ONLY use one database type! + +The Nextcloud image supports auto configuration of the initial installation via environment variables. You can preconfigure everything that is asked on the install page on first run. + +In addition, support for adjusting several other key aspects of Nextcloud and the container's runtime environment are supported by the image. + +Keep in mind the intention is to auto configure initial installation. Only a few variables may be used after initial deployment (i.e. changing them in your Compose file may not flow through to an existing installation). + +All variables below work at installation time, at a minimum. Other contraints are noted in the table. + +Variable | Description | After installation? | Dependent on other variables? | Visible in  config.php? | Visible via  occ config:list system? | Will override config.php? | Can be a secret? | Rootless? | Injected via... +--- | --- | --- | --- | --- | --- | ---| --- | --- + + +Set your database connection via auto configuration using the following environment variables. You must specify all of the environment variables for a given database or the database environment variables defaults to SQLITE. ONLY use one database type! __SQLite__: - `SQLITE_DATABASE` Name of the database using sqlite From c45a9f41948765b0423af30e9721faed599b15de Mon Sep 17 00:00:00 2001 From: Josh Date: Sun, 26 May 2024 16:57:04 -0400 Subject: [PATCH 02/16] Update README.md Signed-off-by: Josh --- README.md | 34 +++++++++++++++++++++++++++++----- 1 file changed, 29 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f1c013c3..b84ed286 100644 --- a/README.md +++ b/README.md @@ -116,17 +116,41 @@ $ docker-compose exec --user www-data app php occ ## Auto configuration via environment variables -The Nextcloud image supports auto configuration of the initial installation via environment variables. You can preconfigure everything that is asked on the install page on first run. +The Nextcloud image supports auto configuration of the initial installation via environment variables. You can preconfigure everything that is usually asked on the install page on first run. In addition, support for adjusting several other key aspects of Nextcloud and the container's runtime environment are supported by the image. Keep in mind the intention is to auto configure initial installation. Only a few variables may be used after initial deployment (i.e. changing them in your Compose file may not flow through to an existing installation). -All variables below work at installation time, at a minimum. Other contraints are noted in the table. - -Variable | Description | After installation? | Dependent on other variables? | Visible in  config.php? | Visible via  occ config:list system? | Will override config.php? | Can be a secret? | Rootless? | Injected via... ---- | --- | --- | --- | --- | --- | ---| --- | --- +All variables below, at a minimum, work at installation time. Some may be used after installation time. Specific contraints are noted in the table below. Details about each variable follow the table. +| Variable | Default | After install? | Dependencies? | Visible in `config.php`? | Visible via `occ config:list`? | Overrides `config.php`? | Can be secret? | Rootless? | Injected via | +| ----------------------------- | ------------------ | ------------------- | ---------------------------------- | ------------------------ | -------------------------------| ------------------------ | -------------- | --------- | ---------------------------------------- | +| SQLITE_DATABASE | | No | No | Yes | Yes | n/a | n/a | Yes | `entrypoint.sh` or `autoconfig.php` | +| MYSQL_DATABASE | | No | All MYSQL_* variables | Yes | Yes | n/a | n/a | Yes | `entrypoint.sh` or `autoconfig.php` | +| MYSQL_USER | | No | All MYSQL_* variables | Yes | Yes | n/a | Yes | Yes | `entrypoint.sh` or `autoconfig.php` | +| MYSQL_PASSWORD | | No | All MYSQL_* variables | Yes | Yes | n/a | Yes | Yes | `entrypoint.sh` or `autoconfig.php` | +| MYSQL_HOST | | No | All MYSQL_* variables | Yes | Yes | n/a | No | Yes | `entrypoint.sh` or `autoconfig.php` | +| POSTGRES_DB | | No | All POSTGRES_* variables | Yes | Yes | n/a | n/a | Yes | `entrypoint.sh` or `autoconfig.php` | +| POSTGRES_USER +| POSTGRES_PASSWORD +| POSTGRES_HOST +| NEXTCLOUD_ADMIN_USER +| NEXTCLOUD_ADMIN_PASSWORD +| NEXTCLOUD_DATA_DIR +| NEXTCLOUD_TRUSTED_DOMAINS +| TRUSTED_PROXIES +| NEXTCLOUD_UPDATE +| NEXTCLOUD_INIT_HTACCESS +| REDIS_* +| SMTP_* +| MAIL_* +| OBJECTSTORE_* +| PHP_MEMORY_LIMIT +| PHP_UPLOAD_LIMIT +| APACHE_BODY_LIMIT +| APACHE_DISABLE_REWRITE_IP +| OVERWRITE* Set your database connection via auto configuration using the following environment variables. You must specify all of the environment variables for a given database or the database environment variables defaults to SQLITE. ONLY use one database type! From 5366de2a84f2365fc2504fc78c2b4e737293b96e Mon Sep 17 00:00:00 2001 From: Josh Date: Wed, 29 May 2024 18:03:44 -0400 Subject: [PATCH 03/16] Update README.md Signed-off-by: Josh --- README.md | 52 +++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 39 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index b84ed286..881e6d7f 100644 --- a/README.md +++ b/README.md @@ -122,20 +122,37 @@ In addition, support for adjusting several other key aspects of Nextcloud and th Keep in mind the intention is to auto configure initial installation. Only a few variables may be used after initial deployment (i.e. changing them in your Compose file may not flow through to an existing installation). -All variables below, at a minimum, work at installation time. Some may be used after installation time. Specific contraints are noted in the table below. Details about each variable follow the table. +All variables below, at a minimum, work at installation time. Some may be used after installation time and thus may override `config.php` and similar parameters. Specifics are noted in the tables below. Details about each variable follow the table. -| Variable | Default | After install? | Dependencies? | Visible in `config.php`? | Visible via `occ config:list`? | Overrides `config.php`? | Can be secret? | Rootless? | Injected via | -| ----------------------------- | ------------------ | ------------------- | ---------------------------------- | ------------------------ | -------------------------------| ------------------------ | -------------- | --------- | ---------------------------------------- | -| SQLITE_DATABASE | | No | No | Yes | Yes | n/a | n/a | Yes | `entrypoint.sh` or `autoconfig.php` | -| MYSQL_DATABASE | | No | All MYSQL_* variables | Yes | Yes | n/a | n/a | Yes | `entrypoint.sh` or `autoconfig.php` | -| MYSQL_USER | | No | All MYSQL_* variables | Yes | Yes | n/a | Yes | Yes | `entrypoint.sh` or `autoconfig.php` | -| MYSQL_PASSWORD | | No | All MYSQL_* variables | Yes | Yes | n/a | Yes | Yes | `entrypoint.sh` or `autoconfig.php` | -| MYSQL_HOST | | No | All MYSQL_* variables | Yes | Yes | n/a | No | Yes | `entrypoint.sh` or `autoconfig.php` | -| POSTGRES_DB | | No | All POSTGRES_* variables | Yes | Yes | n/a | n/a | Yes | `entrypoint.sh` or `autoconfig.php` | -| POSTGRES_USER -| POSTGRES_PASSWORD -| POSTGRES_HOST -| NEXTCLOUD_ADMIN_USER +* Usage + - Install + - Post-install +* Dependencies +* Visibility + - `config.php` + - `occ config:list` +* Priority + - Overrides `config.php` +* Secret? +* Compatibility + - Rootless +* Injection method(s) + - `entrypoint.sh` to Server installer + - `autoconfig.php` to Server installer + + +| Environment Variable | Description | Example | Secret[4] | Post-install[5] | Visibility | Notes | Method | +| :------------------: | :---------: | :-----: | :-----: | :-------------: | :--------: | ----- | ------ | +| SQLITE_DATABASE | Use SQLite as the database and use as the `dbname` | `ncdb` | No | No | `config.php` | Suitable to testing and minimal-instances only | Injected via `entrypoint.sh` to `occ maintenance:install` (when specified with `NEXTCLOUD_*`) otherwise via `autoconfig.php` | +| MYSQL_DATABASE | Use MySQL/MariaDB as the database and use as the `dbname` | `ncdb` | ✓ | No | `config.php` | Ignored unless all `MYSQL_*` variables are specified | Injected via `entrypoint.sh` to `occ maintenance:install` (when specified with `NEXTCLOUD_*`) otherwise via `autoconfig.php` | +| MYSQL_USER | the `dbuser` | `ncdbuser` | ✓ | No | `config.php` | See `MYSQL_DATABASE` | | +| MYSQL_PASSWORD | the `dbpass` | `ncdbpass` | ✓ | No | `config.php` | See `MYSQL_DATABASE` | | +| MYSQL_HOST | the `dbhost` | `db` or `localhost:/usr/local/run/mysql.sock` | ✓ | No | `config.php` | See `MYSQL_DATABASE` | | +| POSTGRES_DB | Use PostgreSQL as the database and use as the `dbname` | `ncdb` | ✓ | No | `config.php` | Ignored unless all `POSTGRES_*` variables are specified | Injected via `entrypoint.sh` to `occ maintenance:install` (when specified with `NEXTCLOUD_*`) otherwise via `autoconfig.php` | +| POSTGRES_USER | the `dbuser` | `ncdbuser` | ✓ | No | `config.php` | See `POSTGRES_DB` | | +| POSTGRES_PASSWORD | the `dbpass` | `ncdbpass` | ✓ | No | `config.php` | See `POSTGRES_DB` | | +| POSTGRES_HOST | the `dbhost` | `db` | ✓ | No | `config.php` | See `POSTGRES_DB` | | +| NEXTCLOUD_ADMIN_USER | the initial Nextcloud admin user | `ncadmin` | ✓ | No | Nextcloud Super `admin` group | Ignored unless `NEXTCLOUD_ADMIN_PASSWORD` + preferred database variables are specified | Injected via `entrypoint.sh` to `occ maintenance:install` | | NEXTCLOUD_ADMIN_PASSWORD | NEXTCLOUD_DATA_DIR | NEXTCLOUD_TRUSTED_DOMAINS @@ -152,6 +169,15 @@ All variables below, at a minimum, work at installation time. Some may be used a | APACHE_DISABLE_REWRITE_IP | OVERWRITE* + +[4] Can be specified as a Docker secret or pulled from a file available from within the container. See [#docker-secrets](Docker Secrets). + +[5] No = Installation only (i.e. cannot be modified post-installation via variable). + + + +--- + Set your database connection via auto configuration using the following environment variables. You must specify all of the environment variables for a given database or the database environment variables defaults to SQLITE. ONLY use one database type! __SQLite__: From 54bd7d5d30c9229cfbc7890483df7a061210d599 Mon Sep 17 00:00:00 2001 From: Josh Date: Sat, 1 Jun 2024 11:06:54 -0400 Subject: [PATCH 04/16] Update README.md Signed-off-by: Josh --- README.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 881e6d7f..5353af9c 100644 --- a/README.md +++ b/README.md @@ -141,20 +141,20 @@ All variables below, at a minimum, work at installation time. Some may be used a - `autoconfig.php` to Server installer -| Environment Variable | Description | Example | Secret[4] | Post-install[5] | Visibility | Notes | Method | -| :------------------: | :---------: | :-----: | :-----: | :-------------: | :--------: | ----- | ------ | -| SQLITE_DATABASE | Use SQLite as the database and use as the `dbname` | `ncdb` | No | No | `config.php` | Suitable to testing and minimal-instances only | Injected via `entrypoint.sh` to `occ maintenance:install` (when specified with `NEXTCLOUD_*`) otherwise via `autoconfig.php` | -| MYSQL_DATABASE | Use MySQL/MariaDB as the database and use as the `dbname` | `ncdb` | ✓ | No | `config.php` | Ignored unless all `MYSQL_*` variables are specified | Injected via `entrypoint.sh` to `occ maintenance:install` (when specified with `NEXTCLOUD_*`) otherwise via `autoconfig.php` | -| MYSQL_USER | the `dbuser` | `ncdbuser` | ✓ | No | `config.php` | See `MYSQL_DATABASE` | | -| MYSQL_PASSWORD | the `dbpass` | `ncdbpass` | ✓ | No | `config.php` | See `MYSQL_DATABASE` | | -| MYSQL_HOST | the `dbhost` | `db` or `localhost:/usr/local/run/mysql.sock` | ✓ | No | `config.php` | See `MYSQL_DATABASE` | | -| POSTGRES_DB | Use PostgreSQL as the database and use as the `dbname` | `ncdb` | ✓ | No | `config.php` | Ignored unless all `POSTGRES_*` variables are specified | Injected via `entrypoint.sh` to `occ maintenance:install` (when specified with `NEXTCLOUD_*`) otherwise via `autoconfig.php` | -| POSTGRES_USER | the `dbuser` | `ncdbuser` | ✓ | No | `config.php` | See `POSTGRES_DB` | | -| POSTGRES_PASSWORD | the `dbpass` | `ncdbpass` | ✓ | No | `config.php` | See `POSTGRES_DB` | | -| POSTGRES_HOST | the `dbhost` | `db` | ✓ | No | `config.php` | See `POSTGRES_DB` | | -| NEXTCLOUD_ADMIN_USER | the initial Nextcloud admin user | `ncadmin` | ✓ | No | Nextcloud Super `admin` group | Ignored unless `NEXTCLOUD_ADMIN_PASSWORD` + preferred database variables are specified | Injected via `entrypoint.sh` to `occ maintenance:install` | -| NEXTCLOUD_ADMIN_PASSWORD -| NEXTCLOUD_DATA_DIR +| Environment Variable | Description | Example | Default | Secret[4] | Post-install[5] | Visibility | Notes | Method | +| :------------------: | :---------: | :-----: | :------ | :-------: | :-------------: | :--------: | ----- | ------ | +| SQLITE_DATABASE | Use SQLite as the database and use as the `dbname` | `ncdb` | Yes | No | No | `config.php` | Suitable to testing and minimal-instances only | Injected via `entrypoint.sh` to `occ maintenance:install` (when specified with `NEXTCLOUD_ADMIN_*`) otherwise via `autoconfig.php` | +| MYSQL_DATABASE | Use MySQL/MariaDB as the database and use as the `dbname` | `ncdb` | n/a | ✓ | No | `config.php` | Ignored unless all `MYSQL_*` variables are specified | Injected via `entrypoint.sh` to `occ maintenance:install` (when specified with `NEXTCLOUD_ADMIN_*`) otherwise via `autoconfig.php` | +| MYSQL_USER | the `dbuser` | `ncdbuser` | n/a | ✓ | No | `config.php` | See `MYSQL_DATABASE` | | +| MYSQL_PASSWORD | the `dbpass` | `ncdbpass` | n/a | ✓ | No | `config.php` | See `MYSQL_DATABASE` | | +| MYSQL_HOST | the `dbhost` | `db` or `localhost:/usr/local/run/mysql.sock` | n/a | ✓ | No | `config.php` | See `MYSQL_DATABASE` | | +| POSTGRES_DB | Use PostgreSQL as the database and use as the `dbname` | `ncdb` | n/a | ✓ | No | `config.php` | Ignored unless all `POSTGRES_*` variables are specified | Injected via `entrypoint.sh` to `occ maintenance:install` (when specified with `NEXTCLOUD_ADMIN_*`) otherwise via `autoconfig.php` | +| POSTGRES_USER | the `dbuser` | `ncdbuser` | n/a | ✓ | No | `config.php` | See `POSTGRES_DB` | | +| POSTGRES_PASSWORD | the `dbpass` | `ncdbpass` | n/a | ✓ | No | `config.php` | See `POSTGRES_DB` | | +| POSTGRES_HOST | the `dbhost` | `db` | n/a | ✓ | No | `config.php` | See `POSTGRES_DB` | | +| NEXTCLOUD_ADMIN_USER | the initial Nextcloud admin user | `ncadmin` | n/a | ✓ | No | Nextcloud Super `admin` group | Ignored unless `NEXTCLOUD_ADMIN_PASSWORD` + preferred database variables are specified | Injected via `entrypoint.sh` to `occ maintenance:install` | +| NEXTCLOUD_ADMIN_PASSWORD | the initial Nextcloud admin password | `ncadminpass` | n/a | ✓ | No | Nextcloud Super `admin` group | Ignored unless `NEXTCLOUD_ADMIN_USER` + preferred database variables are specified | Injected via `entrypoint.sh` to `occ maintenance:install` | +| NEXTCLOUD_DATA_DIR | data directory where nextcloud stores all files from the users | `/var/www/html/data` | `/var/www/html/data` | No | No | `config.php` | | Injected via `entrypoint.sh` to `occ maintenance:install` (when specified with `NEXTCLOUD_ADMIN_*` + db parameters; otherwise via `autoconfig.php` | | NEXTCLOUD_TRUSTED_DOMAINS | TRUSTED_PROXIES | NEXTCLOUD_UPDATE From abd813f5fb0e5bba961f2029ad2eec06f73869a6 Mon Sep 17 00:00:00 2001 From: J0WI Date: Mon, 21 Oct 2024 16:44:25 +0000 Subject: [PATCH 05/16] Bump stable to 30.0.1 Signed-off-by: J0WI --- generate-stackbrew-library.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index a7718bc0..43c9aab0 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -Eeuo pipefail -stable_channel='29.0.7' +stable_channel='30.0.1' self="$(basename "$BASH_SOURCE")" cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" From 9b63f3e4dccf071b5ffaf7b7d228d3a829e135da Mon Sep 17 00:00:00 2001 From: Josh Date: Mon, 21 Oct 2024 17:38:50 -0400 Subject: [PATCH 06/16] fix(examples): volumes must match (insecure-mariadb-apache) Signed-off-by: Josh --- .examples/docker-compose/insecure/mariadb/apache/compose.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.examples/docker-compose/insecure/mariadb/apache/compose.yaml b/.examples/docker-compose/insecure/mariadb/apache/compose.yaml index 4d0fd8fd..daa51590 100644 --- a/.examples/docker-compose/insecure/mariadb/apache/compose.yaml +++ b/.examples/docker-compose/insecure/mariadb/apache/compose.yaml @@ -23,6 +23,7 @@ services: - 127.0.0.1:8080:80 volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match environment: - MYSQL_HOST=db - REDIS_HOST=redis @@ -37,6 +38,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match entrypoint: /cron.sh depends_on: - db From abf51f1cd76ba2d4f4c9598882e67bf03e2739a9 Mon Sep 17 00:00:00 2001 From: Josh Date: Mon, 21 Oct 2024 17:43:54 -0400 Subject: [PATCH 07/16] fix(examples): volumes must match (insecure-mariadb-fpm) Signed-off-by: Josh --- .examples/docker-compose/insecure/mariadb/fpm/compose.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.examples/docker-compose/insecure/mariadb/fpm/compose.yaml b/.examples/docker-compose/insecure/mariadb/fpm/compose.yaml index 06b12afb..25e5b717 100644 --- a/.examples/docker-compose/insecure/mariadb/fpm/compose.yaml +++ b/.examples/docker-compose/insecure/mariadb/fpm/compose.yaml @@ -21,6 +21,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match environment: - MYSQL_HOST=db - REDIS_HOST=redis @@ -37,6 +38,7 @@ services: - 127.0.0.1:8080:80 volumes: - nextcloud:/var/www/html:z,ro + # NOTE: The `volumes` included here should match those of the `app` container (unless you know what you're doing) depends_on: - app @@ -45,6 +47,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match entrypoint: /cron.sh depends_on: - db From 9395077d115d88817618652603519b5f53bdd6aa Mon Sep 17 00:00:00 2001 From: Josh Date: Mon, 21 Oct 2024 17:45:19 -0400 Subject: [PATCH 08/16] fix(examples): volumes must match (insecure-postgres-apache) Signed-off-by: Josh --- .../docker-compose/insecure/postgres/apache/compose.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.examples/docker-compose/insecure/postgres/apache/compose.yaml b/.examples/docker-compose/insecure/postgres/apache/compose.yaml index 646261d0..19c75ba4 100644 --- a/.examples/docker-compose/insecure/postgres/apache/compose.yaml +++ b/.examples/docker-compose/insecure/postgres/apache/compose.yaml @@ -18,6 +18,7 @@ services: - 127.0.0.1:8080:80 volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match environment: - POSTGRES_HOST=db - REDIS_HOST=redis @@ -32,6 +33,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match entrypoint: /cron.sh depends_on: - db @@ -39,4 +41,4 @@ services: volumes: db: - nextcloud: \ No newline at end of file + nextcloud: From e3dc1f3d62fcda80f35ae38a8748e75f3b50692e Mon Sep 17 00:00:00 2001 From: Josh Date: Mon, 21 Oct 2024 17:47:11 -0400 Subject: [PATCH 09/16] fix(examples): volumes must match (insecure-postgres-fpm) Signed-off-by: Josh --- .examples/docker-compose/insecure/postgres/fpm/compose.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.examples/docker-compose/insecure/postgres/fpm/compose.yaml b/.examples/docker-compose/insecure/postgres/fpm/compose.yaml index b5071d5c..4e268cab 100644 --- a/.examples/docker-compose/insecure/postgres/fpm/compose.yaml +++ b/.examples/docker-compose/insecure/postgres/fpm/compose.yaml @@ -16,6 +16,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match environment: - POSTGRES_HOST=db - REDIS_HOST=redis @@ -32,6 +33,7 @@ services: - 127.0.0.1:8080:80 volumes: - nextcloud:/var/www/html:z,ro + # NOTE: The `volumes` included here should match those of the `app` container (unless you know what you're doing) depends_on: - app @@ -40,6 +42,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match entrypoint: /cron.sh depends_on: - db From 60f205abeab9ad60df5d9a44cf8bdc8fa5536a73 Mon Sep 17 00:00:00 2001 From: Josh Date: Mon, 21 Oct 2024 17:49:39 -0400 Subject: [PATCH 10/16] fix(examples): volumes must match (with-nginx-proxy-mariadb-apache) Signed-off-by: Josh --- .../docker-compose/with-nginx-proxy/mariadb/apache/compose.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.examples/docker-compose/with-nginx-proxy/mariadb/apache/compose.yaml b/.examples/docker-compose/with-nginx-proxy/mariadb/apache/compose.yaml index 7a221407..2a0d57a5 100644 --- a/.examples/docker-compose/with-nginx-proxy/mariadb/apache/compose.yaml +++ b/.examples/docker-compose/with-nginx-proxy/mariadb/apache/compose.yaml @@ -21,6 +21,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match environment: - VIRTUAL_HOST= - LETSENCRYPT_HOST= @@ -45,6 +46,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match entrypoint: /cron.sh depends_on: - db From 7e188da4fa2f24edf41dd0efee49a2cdf3105eff Mon Sep 17 00:00:00 2001 From: Josh Date: Mon, 21 Oct 2024 17:51:06 -0400 Subject: [PATCH 11/16] fix(examples): volumes must match (with-nginx-proxy-mariadb-fpm) Signed-off-by: Josh --- .../docker-compose/with-nginx-proxy/mariadb/fpm/compose.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/compose.yaml b/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/compose.yaml index ff7a5388..20db19a9 100644 --- a/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/compose.yaml +++ b/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/compose.yaml @@ -21,6 +21,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match environment: - MYSQL_HOST=db - REDIS_HOST=redis @@ -36,6 +37,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z,ro + # NOTE: The `volumes` included here should match those of the `app` container (unless you know what you're doing) environment: - VIRTUAL_HOST= - LETSENCRYPT_HOST= @@ -51,6 +53,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match entrypoint: /cron.sh depends_on: - db From 24b67696829f015a2d7a03b4be9b190aeb274ca6 Mon Sep 17 00:00:00 2001 From: Josh Date: Mon, 21 Oct 2024 17:52:21 -0400 Subject: [PATCH 12/16] fix(examples): volumes must match (with-nginx-proxy-postgres-apache) Signed-off-by: Josh --- .../with-nginx-proxy/postgres/apache/compose.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/apache/compose.yaml b/.examples/docker-compose/with-nginx-proxy/postgres/apache/compose.yaml index a3dece4b..2eb4f638 100644 --- a/.examples/docker-compose/with-nginx-proxy/postgres/apache/compose.yaml +++ b/.examples/docker-compose/with-nginx-proxy/postgres/apache/compose.yaml @@ -16,6 +16,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match environment: - VIRTUAL_HOST= - LETSENCRYPT_HOST= @@ -37,6 +38,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match entrypoint: /cron.sh depends_on: - db From 9b245ac4a1c401a9890bd8ffa903058d2c83cf20 Mon Sep 17 00:00:00 2001 From: Josh Date: Mon, 21 Oct 2024 17:53:55 -0400 Subject: [PATCH 13/16] fix(examples): volumes must match (with-nginx-proxy-postgres-fpm) Signed-off-by: Josh --- .../docker-compose/with-nginx-proxy/postgres/fpm/compose.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/compose.yaml b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/compose.yaml index 09a80e7d..80be65a6 100644 --- a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/compose.yaml +++ b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/compose.yaml @@ -18,6 +18,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match environment: - POSTGRES_HOST=db - REDIS_HOST=redis @@ -33,6 +34,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z,ro + # NOTE: The `volumes` included here should match those of the `app` container (unless you know what you're doing) environment: - VIRTUAL_HOST= - LETSENCRYPT_HOST= @@ -48,6 +50,7 @@ services: restart: always volumes: - nextcloud:/var/www/html:z + # NOTE: The `volumes` config of the `cron` and `app` containers must match entrypoint: /cron.sh depends_on: - db From 090934d9b0e1eec99479f84ab0e0b0bf8ff74857 Mon Sep 17 00:00:00 2001 From: Josh Date: Tue, 22 Oct 2024 09:15:05 -0400 Subject: [PATCH 14/16] feat(readme): Viewing merged config via `occ config:list system` Signed-off-by: Josh --- README.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d8f41dcb..ab6608ad 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,8 @@ If mounting additional volumes under `/var/www/html`, you should consider: You should note that data inside the main folder (`/var/www/html`) will be overridden/removed during installation and upgrades, unless listed in [upgrade.exclude](https://github.com/nextcloud/docker/blob/master/upgrade.exclude). The additional volumes officially supported are already in that list, but custom volumes will need to be added by you. We suggest mounting custom storage volumes outside of `/var/www/html` and if possible read-only so that making this adjustment is unnecessary. If you must do so, however, you may build a custom image with a modified `/upgrade.exclude` file that incorporates your custom volume(s). -## Using the Nextcloud command-line interface +## Using the Nextcloud command-line interface (`occ`) + To use the [Nextcloud command-line interface](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html) (aka. `occ` command): ```console $ docker exec --user www-data CONTAINER_ID php occ @@ -112,6 +113,23 @@ or for docker compose: ```console $ docker compose exec --user www-data app php occ ``` +or even shorter: +```console +$ docker compose exec -u33 app ./occ +``` +Note: substitute `82` for `33` if using the Alpine-based images. + +## Viewing the Nextcloud configuration (`config.php`) + +The image takes advantage of Nextcloud's [Multiple config.php support](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/config_sample_php_parameters.html#multiple-config-php-file) to inject auto configuration environment variables and set image specific config values. + +This means that merely viewing your `config.php` will not give you an accurate view of your running config. Instead, you should use Nextcloud's [`occ config:list system` command](https://docs.nextcloud.com/server/latest/admin_manual/occ_command.html#config-commands-label) to get get a complete view of your merged configuration. This has the added benefit of automatically omitting sensitive values such as passwords and secrets from the output by default (e.g. useful for shared publicly or assisting others when troubleshooting or reporting a bug). + +```console +$ docker compose exec -u33 app ./occ config:list system +``` + +The `--private` flag can also be specified, in order to output all configuration values including passwords and secrets. ## Auto configuration via environment variables The Nextcloud image supports auto configuration via environment variables. You can preconfigure everything that is asked on the install page on first run. To enable auto configuration, set your database connection via the following environment variables. You must specify all of the environment variables for a given database or the database environment variables defaults to SQLITE. ONLY use one database type! From d3341b61c1d41ac7fa98a34b8a3c6bc14c534efe Mon Sep 17 00:00:00 2001 From: Valentin Brandl Date: Thu, 24 Oct 2024 21:52:36 +0200 Subject: [PATCH 15/16] Fix initialization of `autocreate` and `use_ssl` (#2309) According to the documentation, both `OBJECTSTORE_S3_SSL` and `OBJECTSTORE_S3_AUTOCREATE` should default to `true`. Currently, when these environment variables are not set, they default to `false`. (See https://github.com/nextcloud/docker/issues/2308). This fix works, because `strtolower(false)` returns the empty string. So when `OBJECTSTORE_S3_SSL` is not set and `getenv('OBJECTSTORE_S3_SSL')` returns `false`, the check `strtolower($use_ssl) !== 'false'` will evaluate to `true`. With this fix, both values will be `true` if they are * not set * the empty string * any string that is not equal to `false` when converted to lowercase This should now match the documented behavior. Signed-off-by: Valentin Brandl --- .config/s3.config.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.config/s3.config.php b/.config/s3.config.php index 9941c562..a17e4037 100644 --- a/.config/s3.config.php +++ b/.config/s3.config.php @@ -14,8 +14,8 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) { 'port' => getenv('OBJECTSTORE_S3_PORT') ?: '', 'storageClass' => getenv('OBJECTSTORE_S3_STORAGE_CLASS') ?: '', 'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:", - 'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true, - 'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true, + 'autocreate' => strtolower($autocreate) !== 'false', + 'use_ssl' => strtolower($use_ssl) !== 'false', // required for some non Amazon S3 implementations 'use_path_style' => $use_path == true && strtolower($use_path) !== 'false', // required for older protocol versions From 29d959acfdeccbc3603a37cc4201b6ad916290bd Mon Sep 17 00:00:00 2001 From: GitHub Workflow Date: Thu, 24 Oct 2024 19:52:51 +0000 Subject: [PATCH 16/16] Runs update.sh --- 28/apache/config/s3.config.php | 4 ++-- 28/fpm-alpine/config/s3.config.php | 4 ++-- 28/fpm/config/s3.config.php | 4 ++-- 29/apache/config/s3.config.php | 4 ++-- 29/fpm-alpine/config/s3.config.php | 4 ++-- 29/fpm/config/s3.config.php | 4 ++-- 30/apache/config/s3.config.php | 4 ++-- 30/fpm-alpine/config/s3.config.php | 4 ++-- 30/fpm/config/s3.config.php | 4 ++-- 9 files changed, 18 insertions(+), 18 deletions(-) diff --git a/28/apache/config/s3.config.php b/28/apache/config/s3.config.php index 9941c562..a17e4037 100644 --- a/28/apache/config/s3.config.php +++ b/28/apache/config/s3.config.php @@ -14,8 +14,8 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) { 'port' => getenv('OBJECTSTORE_S3_PORT') ?: '', 'storageClass' => getenv('OBJECTSTORE_S3_STORAGE_CLASS') ?: '', 'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:", - 'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true, - 'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true, + 'autocreate' => strtolower($autocreate) !== 'false', + 'use_ssl' => strtolower($use_ssl) !== 'false', // required for some non Amazon S3 implementations 'use_path_style' => $use_path == true && strtolower($use_path) !== 'false', // required for older protocol versions diff --git a/28/fpm-alpine/config/s3.config.php b/28/fpm-alpine/config/s3.config.php index 9941c562..a17e4037 100644 --- a/28/fpm-alpine/config/s3.config.php +++ b/28/fpm-alpine/config/s3.config.php @@ -14,8 +14,8 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) { 'port' => getenv('OBJECTSTORE_S3_PORT') ?: '', 'storageClass' => getenv('OBJECTSTORE_S3_STORAGE_CLASS') ?: '', 'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:", - 'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true, - 'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true, + 'autocreate' => strtolower($autocreate) !== 'false', + 'use_ssl' => strtolower($use_ssl) !== 'false', // required for some non Amazon S3 implementations 'use_path_style' => $use_path == true && strtolower($use_path) !== 'false', // required for older protocol versions diff --git a/28/fpm/config/s3.config.php b/28/fpm/config/s3.config.php index 9941c562..a17e4037 100644 --- a/28/fpm/config/s3.config.php +++ b/28/fpm/config/s3.config.php @@ -14,8 +14,8 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) { 'port' => getenv('OBJECTSTORE_S3_PORT') ?: '', 'storageClass' => getenv('OBJECTSTORE_S3_STORAGE_CLASS') ?: '', 'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:", - 'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true, - 'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true, + 'autocreate' => strtolower($autocreate) !== 'false', + 'use_ssl' => strtolower($use_ssl) !== 'false', // required for some non Amazon S3 implementations 'use_path_style' => $use_path == true && strtolower($use_path) !== 'false', // required for older protocol versions diff --git a/29/apache/config/s3.config.php b/29/apache/config/s3.config.php index 9941c562..a17e4037 100644 --- a/29/apache/config/s3.config.php +++ b/29/apache/config/s3.config.php @@ -14,8 +14,8 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) { 'port' => getenv('OBJECTSTORE_S3_PORT') ?: '', 'storageClass' => getenv('OBJECTSTORE_S3_STORAGE_CLASS') ?: '', 'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:", - 'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true, - 'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true, + 'autocreate' => strtolower($autocreate) !== 'false', + 'use_ssl' => strtolower($use_ssl) !== 'false', // required for some non Amazon S3 implementations 'use_path_style' => $use_path == true && strtolower($use_path) !== 'false', // required for older protocol versions diff --git a/29/fpm-alpine/config/s3.config.php b/29/fpm-alpine/config/s3.config.php index 9941c562..a17e4037 100644 --- a/29/fpm-alpine/config/s3.config.php +++ b/29/fpm-alpine/config/s3.config.php @@ -14,8 +14,8 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) { 'port' => getenv('OBJECTSTORE_S3_PORT') ?: '', 'storageClass' => getenv('OBJECTSTORE_S3_STORAGE_CLASS') ?: '', 'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:", - 'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true, - 'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true, + 'autocreate' => strtolower($autocreate) !== 'false', + 'use_ssl' => strtolower($use_ssl) !== 'false', // required for some non Amazon S3 implementations 'use_path_style' => $use_path == true && strtolower($use_path) !== 'false', // required for older protocol versions diff --git a/29/fpm/config/s3.config.php b/29/fpm/config/s3.config.php index 9941c562..a17e4037 100644 --- a/29/fpm/config/s3.config.php +++ b/29/fpm/config/s3.config.php @@ -14,8 +14,8 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) { 'port' => getenv('OBJECTSTORE_S3_PORT') ?: '', 'storageClass' => getenv('OBJECTSTORE_S3_STORAGE_CLASS') ?: '', 'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:", - 'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true, - 'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true, + 'autocreate' => strtolower($autocreate) !== 'false', + 'use_ssl' => strtolower($use_ssl) !== 'false', // required for some non Amazon S3 implementations 'use_path_style' => $use_path == true && strtolower($use_path) !== 'false', // required for older protocol versions diff --git a/30/apache/config/s3.config.php b/30/apache/config/s3.config.php index 9941c562..a17e4037 100644 --- a/30/apache/config/s3.config.php +++ b/30/apache/config/s3.config.php @@ -14,8 +14,8 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) { 'port' => getenv('OBJECTSTORE_S3_PORT') ?: '', 'storageClass' => getenv('OBJECTSTORE_S3_STORAGE_CLASS') ?: '', 'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:", - 'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true, - 'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true, + 'autocreate' => strtolower($autocreate) !== 'false', + 'use_ssl' => strtolower($use_ssl) !== 'false', // required for some non Amazon S3 implementations 'use_path_style' => $use_path == true && strtolower($use_path) !== 'false', // required for older protocol versions diff --git a/30/fpm-alpine/config/s3.config.php b/30/fpm-alpine/config/s3.config.php index 9941c562..a17e4037 100644 --- a/30/fpm-alpine/config/s3.config.php +++ b/30/fpm-alpine/config/s3.config.php @@ -14,8 +14,8 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) { 'port' => getenv('OBJECTSTORE_S3_PORT') ?: '', 'storageClass' => getenv('OBJECTSTORE_S3_STORAGE_CLASS') ?: '', 'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:", - 'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true, - 'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true, + 'autocreate' => strtolower($autocreate) !== 'false', + 'use_ssl' => strtolower($use_ssl) !== 'false', // required for some non Amazon S3 implementations 'use_path_style' => $use_path == true && strtolower($use_path) !== 'false', // required for older protocol versions diff --git a/30/fpm/config/s3.config.php b/30/fpm/config/s3.config.php index 9941c562..a17e4037 100644 --- a/30/fpm/config/s3.config.php +++ b/30/fpm/config/s3.config.php @@ -14,8 +14,8 @@ if (getenv('OBJECTSTORE_S3_BUCKET')) { 'port' => getenv('OBJECTSTORE_S3_PORT') ?: '', 'storageClass' => getenv('OBJECTSTORE_S3_STORAGE_CLASS') ?: '', 'objectPrefix' => getenv("OBJECTSTORE_S3_OBJECT_PREFIX") ? getenv("OBJECTSTORE_S3_OBJECT_PREFIX") : "urn:oid:", - 'autocreate' => (strtolower($autocreate) === 'false' || $autocreate == false) ? false : true, - 'use_ssl' => (strtolower($use_ssl) === 'false' || $use_ssl == false) ? false : true, + 'autocreate' => strtolower($autocreate) !== 'false', + 'use_ssl' => strtolower($use_ssl) !== 'false', // required for some non Amazon S3 implementations 'use_path_style' => $use_path == true && strtolower($use_path) !== 'false', // required for older protocol versions