From 90b1a645720aa9f86d65f38bc1111de113e1e2ca Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Felix=20Sch=C3=A4fer?=
Date: Wed, 2 Jul 2025 11:27:26 +0200
Subject: [PATCH 001/524] Make elasticsearch connection configurable
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Felix Schäfer
---
Containers/nextcloud/entrypoint.sh | 4 ++--
manual-install/latest.yml | 3 +++
.../templates/nextcloud-aio-nextcloud-deployment.yaml | 6 ++++++
php/containers.json | 3 +++
4 files changed, 14 insertions(+), 2 deletions(-)
diff --git a/Containers/nextcloud/entrypoint.sh b/Containers/nextcloud/entrypoint.sh
index 4b6df98f..70e44984 100644
--- a/Containers/nextcloud/entrypoint.sh
+++ b/Containers/nextcloud/entrypoint.sh
@@ -809,7 +809,7 @@ fi
# Fulltextsearch
if [ "$FULLTEXTSEARCH_ENABLED" = 'yes' ]; then
- while ! nc -z "$FULLTEXTSEARCH_HOST" 9200; do
+ while ! nc -z "$FULLTEXTSEARCH_HOST" "$FULLTEXTSEARCH_PORT"; do
echo "waiting for Fulltextsearch to become available..."
sleep 5
done
@@ -835,7 +835,7 @@ if [ "$FULLTEXTSEARCH_ENABLED" = 'yes' ]; then
php /var/www/html/occ app:update files_fulltextsearch
fi
php /var/www/html/occ fulltextsearch:configure '{"search_platform":"OCA\\FullTextSearch_Elasticsearch\\Platform\\ElasticSearchPlatform"}'
- php /var/www/html/occ fulltextsearch_elasticsearch:configure "{\"elastic_host\":\"http://elastic:$FULLTEXTSEARCH_PASSWORD@$FULLTEXTSEARCH_HOST:9200\",\"elastic_index\":\"nextcloud-aio\"}"
+ php /var/www/html/occ fulltextsearch_elasticsearch:configure "{\"elastic_host\":\"http://$FULLTEXTSEARCH_USER:$FULLTEXTSEARCH_PASSWORD@$FULLTEXTSEARCH_HOST:$FULLTEXT_PORT\",\"elastic_index\":\"$FULLTEXT_INDEX\"}"
php /var/www/html/occ files_fulltextsearch:configure "{\"files_pdf\":\"1\",\"files_office\":\"1\"}"
# Do the index
diff --git a/manual-install/latest.yml b/manual-install/latest.yml
index 04ac9193..84b113d3 100644
--- a/manual-install/latest.yml
+++ b/manual-install/latest.yml
@@ -165,6 +165,9 @@ services:
- PHP_MEMORY_LIMIT=${NEXTCLOUD_MEMORY_LIMIT}
- FULLTEXTSEARCH_ENABLED
- FULLTEXTSEARCH_HOST=nextcloud-aio-fulltextsearch
+ - FULLTEXTSEARCH_PORT=9200
+ - FULLTEXTSEARCH_USER=elastic
+ - FULLTEXTSEARCH_INDEX=nextcloud-aio
- PHP_MAX_TIME=${NEXTCLOUD_MAX_TIME}
- TRUSTED_CACERTS_DIR=${NEXTCLOUD_TRUSTED_CACERTS_DIR}
- STARTUP_APPS=${NEXTCLOUD_STARTUP_APPS}
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml
index 688ac9b4..ca6704d4 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml
@@ -110,6 +110,12 @@ spec:
value: "{{ .Values.FULLTEXTSEARCH_ENABLED }}"
- name: FULLTEXTSEARCH_HOST
value: nextcloud-aio-fulltextsearch
+ - name: FULLTEXTSEARCH_PORT
+ value: 9200
+ - name: FULLTEXTSEARCH_USER
+ value: elastic
+ - name: FULLTEXTSEARCH_INDEX
+ value: nextcloud-aio
- name: FULLTEXTSEARCH_PASSWORD
value: "{{ .Values.FULLTEXTSEARCH_PASSWORD }}"
- name: IMAGINARY_ENABLED
diff --git a/php/containers.json b/php/containers.json
index 38fdb09a..cead6d32 100644
--- a/php/containers.json
+++ b/php/containers.json
@@ -236,6 +236,9 @@
"PHP_MEMORY_LIMIT=%NEXTCLOUD_MEMORY_LIMIT%",
"FULLTEXTSEARCH_ENABLED=%FULLTEXTSEARCH_ENABLED%",
"FULLTEXTSEARCH_HOST=nextcloud-aio-fulltextsearch",
+ "FULLTEXTSEARCH_PORT=9200",
+ "FULLTEXTSEARCH_USER=elastic",
+ "FULLTEXTSEARCH_INDEX=nextcloud-aio",
"PHP_MAX_TIME=%NEXTCLOUD_MAX_TIME%",
"TRUSTED_CACERTS_DIR=%NEXTCLOUD_TRUSTED_CACERTS_DIR%",
"STARTUP_APPS=%NEXTCLOUD_STARTUP_APPS%",
From 4cf1a3839b5ac274938d3aff6d4c376303599f3b Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Thu, 3 Jul 2025 15:12:00 +0200
Subject: [PATCH 002/524] collabora: change startup logs from trace to warning
Signed-off-by: Simon L.
---
php/containers.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/php/containers.json b/php/containers.json
index 38fdb09a..a03cee1a 100644
--- a/php/containers.json
+++ b/php/containers.json
@@ -377,7 +377,7 @@
"internal_port": "9980",
"environment": [
"aliasgroup1=https://%NC_DOMAIN%:443",
- "extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true %COLLABORA_SECCOMP_POLICY% --o:remote_font_config.url=https://%NC_DOMAIN%/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+",
+ "extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:logging.level_startup=warning --o:home_mode.enable=true %COLLABORA_SECCOMP_POLICY% --o:remote_font_config.url=https://%NC_DOMAIN%/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+",
"dictionaries=%COLLABORA_DICTIONARIES%",
"TZ=%TIMEZONE%",
"server_name=%NC_DOMAIN%",
From 4e25a56edcbc77c4c801bdfa1321c33643e8335a Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 4 Jul 2025 04:42:43 +0000
Subject: [PATCH 003/524] build(deps): bump php in /Containers/mastercontainer
Bumps php from 8.4.8-fpm-alpine3.21 to 8.4.10-fpm-alpine3.21.
---
updated-dependencies:
- dependency-name: php
dependency-version: 8.4.10-fpm-alpine3.21
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
Containers/mastercontainer/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/mastercontainer/Dockerfile b/Containers/mastercontainer/Dockerfile
index e5764d4c..8a8ac7ee 100644
--- a/Containers/mastercontainer/Dockerfile
+++ b/Containers/mastercontainer/Dockerfile
@@ -6,7 +6,7 @@ FROM docker:28.3.0-cli AS docker
FROM caddy:2.10.0-alpine AS caddy
# From https://github.com/docker-library/php/blob/master/8.4/alpine3.21/fpm/Dockerfile
-FROM php:8.4.8-fpm-alpine3.21
+FROM php:8.4.10-fpm-alpine3.21
ARG AIO_GIT_URL="https://github.com/nextcloud-releases/all-in-one.git"
ARG AIO_GIT_BRANCH="main"
From b593f0388edeabeba80f6fbcd7d18017b7c4d052 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 4 Jul 2025 04:42:45 +0000
Subject: [PATCH 004/524] build(deps): bump docker in
/Containers/mastercontainer
Bumps docker from 28.3.0-cli to 28.3.1-cli.
---
updated-dependencies:
- dependency-name: docker
dependency-version: 28.3.1-cli
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
Containers/mastercontainer/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/mastercontainer/Dockerfile b/Containers/mastercontainer/Dockerfile
index e5764d4c..3e8133c8 100644
--- a/Containers/mastercontainer/Dockerfile
+++ b/Containers/mastercontainer/Dockerfile
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# Docker CLI is a requirement
-FROM docker:28.3.0-cli AS docker
+FROM docker:28.3.1-cli AS docker
# Caddy is a requirement
FROM caddy:2.10.0-alpine AS caddy
From d0df45bf522368847e20ee37da169d4c2f028064 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 4 Jul 2025 04:43:06 +0000
Subject: [PATCH 005/524] build(deps): bump php in /Containers/nextcloud
Bumps php from 8.3.22-fpm-alpine3.21 to 8.3.23-fpm-alpine3.21.
---
updated-dependencies:
- dependency-name: php
dependency-version: 8.3.23-fpm-alpine3.21
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
Containers/nextcloud/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/nextcloud/Dockerfile b/Containers/nextcloud/Dockerfile
index da201e06..9dbf231c 100644
--- a/Containers/nextcloud/Dockerfile
+++ b/Containers/nextcloud/Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
-FROM php:8.3.22-fpm-alpine3.21
+FROM php:8.3.23-fpm-alpine3.21
ENV PHP_MEMORY_LIMIT=512M
ENV PHP_UPLOAD_LIMIT=16G
From fc0d21cc49bca931ac84ee131abe428f588e965b Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Fri, 4 Jul 2025 13:36:55 +0200
Subject: [PATCH 006/524] db-import: improve the import process by using the
`smart` mode and a higher timeout
Signed-off-by: Simon L.
---
Containers/postgresql/start.sh | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/Containers/postgresql/start.sh b/Containers/postgresql/start.sh
index dbb74196..551bb10e 100644
--- a/Containers/postgresql/start.sh
+++ b/Containers/postgresql/start.sh
@@ -128,7 +128,9 @@ EOSQL
fi
# Shut down the database to be able to start it again
- pg_ctl stop -m fast
+ # The smart mode disallows new connections, then waits for all existing clients to disconnect and any online backup to finish
+ # Wait for 1800s to make sure that a checkpoint is completed successfully
+ pg_ctl stop -m smart -t 1800
# Change database port back to default
export PGPORT=5432
From b538bc7155bd82b6aebe5f7e76a8300672164606 Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Fri, 4 Jul 2025 19:31:51 +0200
Subject: [PATCH 007/524] restore-instance: make hint more visible that backup
needs to be restored two times if the backup contained any community
container data
Signed-off-by: Simon L.
---
php/templates/containers.twig | 4 ++--
php/tests/tests/restore-instance.spec.js | 4 ++++
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/php/templates/containers.twig b/php/templates/containers.twig
index 6d50efd4..8f917380 100644
--- a/php/templates/containers.twig
+++ b/php/templates/containers.twig
@@ -163,7 +163,7 @@
{% endif %}
Choose the backup that you want to restore and click on the button below to restore the selected backup. This will restore the whole AIO instance. Please note that the current AIO passphrase will be kept and the previous AIO passphrase will not be restored from backup!
-
Please note: If the backup that you want to restore contained any community container, but you did not specify the same community containers via environmental variable while creating this new AIO instance, you need to restore the same backup a second time after this attempt so that the community container data is also correctly restored.
+
Important: If the backup that you want to restore contained any community container, you need to restore the same backup a second time after this attempt so that the community container data is also correctly restored.
{% endif %}
{% elseif borg_backup_mode == 'restore' %}
diff --git a/php/tests/tests/restore-instance.spec.js b/php/tests/tests/restore-instance.spec.js
index 217218e5..c16f6700 100644
--- a/php/tests/tests/restore-instance.spec.js
+++ b/php/tests/tests/restore-instance.spec.js
@@ -59,6 +59,10 @@ test('Restore instance', async ({ page: setupPage }) => {
// Check integrity and restore backup
await containersPage.getByRole('button', { name: 'Check backup integrity' }).click();
await expect(containersPage.getByRole('main')).toContainText('Last check successful!', { timeout: 5 * 60 * 1000 });
+ containersPage.once('dialog', dialog => {
+ console.log(`Dialog message: ${dialog.message()}`)
+ dialog.accept()
+ });
await containersPage.getByRole('button', { name: 'Restore selected backup' }).click();
await expect(containersPage.getByRole('main')).toContainText('Backup container is currently running:', { timeout: 1 * 60 * 1000 });
From 8d59472c3846e63f458b65e0fc78f90136abedd6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 7 Jul 2025 05:16:09 +0000
Subject: [PATCH 008/524] build(deps): bump collabora/code in
/Containers/collabora
Bumps collabora/code from 25.04.3.1.1 to 25.04.3.2.1.
---
updated-dependencies:
- dependency-name: collabora/code
dependency-version: 25.04.3.2.1
dependency-type: direct:production
...
Signed-off-by: dependabot[bot]
---
Containers/collabora/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/collabora/Dockerfile b/Containers/collabora/Dockerfile
index 5fd88186..d9086cb4 100644
--- a/Containers/collabora/Dockerfile
+++ b/Containers/collabora/Dockerfile
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# From a file located probably somewhere here: https://github.com/CollaboraOnline/online/blob/master/docker/from-packages/Dockerfile
-FROM collabora/code:25.04.3.1.1
+FROM collabora/code:25.04.3.2.1
USER root
ARG DEBIAN_FRONTEND=noninteractive
From 99b54546761f69b61c9d1236373afee8087c7934 Mon Sep 17 00:00:00 2001
From: Kai Biebel <38378574+seclution@users.noreply.github.com>
Date: Mon, 7 Jul 2025 09:59:34 +0200
Subject: [PATCH 009/524] Update reverse-proxy.md
Increase timeouts to prevent connection reset on uploads >100MB in clean Traefik setup
Signed-off-by: Kai Biebel <38378574+seclution@users.noreply.github.com>
---
reverse-proxy.md | 3 +++
1 file changed, 3 insertions(+)
diff --git a/reverse-proxy.md b/reverse-proxy.md
index 84aad3d1..785e9ace 100644
--- a/reverse-proxy.md
+++ b/reverse-proxy.md
@@ -765,6 +765,9 @@ The examples below define the dynamic configuration in YAML files. If you rather
entryPoints:
https:
address: ":443" # Create an entrypoint called "https" that uses port 443
+ transport:
+ respondingTimeouts:
+ readTimeout: 30m # Allows uploads > 100MB; prevents connection reset due to chunking (public upload-only links)
# If you want to enable HTTP/3 support, uncomment the line below
# http3: {}
From 80d23c01d6e44e77a22704e507d8d11246994264 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Tue, 8 Jul 2025 05:35:29 +0000
Subject: [PATCH 010/524] build(deps): bump redis in /Containers/redis
Bumps redis from 7.2.9-alpine to 7.2.10-alpine.
---
updated-dependencies:
- dependency-name: redis
dependency-version: 7.2.10-alpine
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
Containers/redis/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/redis/Dockerfile b/Containers/redis/Dockerfile
index 92f2b17c..98f3d3f0 100644
--- a/Containers/redis/Dockerfile
+++ b/Containers/redis/Dockerfile
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# From https://github.com/docker-library/redis/blob/master/7.2/alpine/Dockerfile
-FROM redis:7.2.9-alpine
+FROM redis:7.2.10-alpine
COPY --chmod=775 start.sh /start.sh
From c288949b432163765c7f9a8b935e95aa073880dd Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Tue, 8 Jul 2025 12:23:15 +0200
Subject: [PATCH 011/524] readme: add more explicit note that AIO is looking
for contributors
Signed-off-by: Simon L.
---
readme.md | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/readme.md b/readme.md
index 9338ea4a..81835401 100644
--- a/readme.md
+++ b/readme.md
@@ -1,4 +1,8 @@
# Nextcloud All-in-One
+
+> [!NOTE]
+> Nextcloud AIO is actively looking for contributors. See [the forum post](https://help.nextcloud.com/t/nextcloud-aio-is-looking-for-contributors/205234).
+
The official Nextcloud installation method. Nextcloud AIO provides easy deployment and maintenance with most features included in this one Nextcloud instance.
Included are:
From e07a27990a5d332d4d695d324c9a90eb4fd3b4da Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Tue, 8 Jul 2025 12:28:44 +0200
Subject: [PATCH 012/524] update config.yml and bug-report template
Signed-off-by: Simon L.
---
.github/ISSUE_TEMPLATE/Bug_report.md | 6 +++---
.github/ISSUE_TEMPLATE/config.yml | 5 +----
2 files changed, 4 insertions(+), 7 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md
index 66681d2e..f5dd328f 100644
--- a/.github/ISSUE_TEMPLATE/Bug_report.md
+++ b/.github/ISSUE_TEMPLATE/Bug_report.md
@@ -6,9 +6,9 @@ labels: 0. Needs triage
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index bbeee846..0f14f48e 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -3,15 +3,12 @@ contact_links:
- name: 📘 Documentation on Nextcloud AIO
url: https://github.com/nextcloud/all-in-one#faq
about: Please read the docs first before submitting any report or request!
- - name: ⛑️ General questions and support
+ - name: ⛑️ Questions and support
url: https://help.nextcloud.com/tag/aio
about: For general questions, support and help
- name: 💡 Suggest a new feature or discuss one
url: https://github.com/nextcloud/all-in-one/discussions/categories/ideas
about: For new feature requests and discussion of existing ones
- - name: ❓ Questions about Nextcloud AIO
- url: https://github.com/nextcloud/all-in-one/discussions/categories/questions
- about: For questions specifically about AIO
- name: 💼 Nextcloud Enterprise
url: https://portal.nextcloud.com/
about: If you are a Nextcloud Enterprise customer, or need Professional support, so it can be resolved directly by our dedicated engineers more quickly
From 61ed785c7201e96a25a2ab8c498c1973c6a82f23 Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Tue, 8 Jul 2025 12:31:03 +0200
Subject: [PATCH 013/524] fix detail
Signed-off-by: Simon L.
---
.github/ISSUE_TEMPLATE/config.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
index 0f14f48e..72ae238a 100644
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -5,7 +5,7 @@ contact_links:
about: Please read the docs first before submitting any report or request!
- name: ⛑️ Questions and support
url: https://help.nextcloud.com/tag/aio
- about: For general questions, support and help
+ about: For questions, support and help
- name: 💡 Suggest a new feature or discuss one
url: https://github.com/nextcloud/all-in-one/discussions/categories/ideas
about: For new feature requests and discussion of existing ones
From 7961dc2fc50ec67e8ddbeeb59dc622e623554014 Mon Sep 17 00:00:00 2001
From: szaimen <42591237+szaimen@users.noreply.github.com>
Date: Tue, 8 Jul 2025 12:03:32 +0000
Subject: [PATCH 014/524] php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
php/composer.lock | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/php/composer.lock b/php/composer.lock
index 73b56a53..825ff024 100644
--- a/php/composer.lock
+++ b/php/composer.lock
@@ -4504,16 +4504,16 @@
},
{
"name": "vimeo/psalm",
- "version": "6.12.0",
+ "version": "6.12.1",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
- "reference": "cf420941d061a57050b6c468ef2c778faf40aee2"
+ "reference": "e71404b0465be25cf7f8a631b298c01c5ddd864f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vimeo/psalm/zipball/cf420941d061a57050b6c468ef2c778faf40aee2",
- "reference": "cf420941d061a57050b6c468ef2c778faf40aee2",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/e71404b0465be25cf7f8a631b298c01c5ddd864f",
+ "reference": "e71404b0465be25cf7f8a631b298c01c5ddd864f",
"shasum": ""
},
"require": {
@@ -4618,7 +4618,7 @@
"issues": "https://github.com/vimeo/psalm/issues",
"source": "https://github.com/vimeo/psalm"
},
- "time": "2025-05-28T12:52:06+00:00"
+ "time": "2025-07-04T09:56:28+00:00"
},
{
"name": "wapmorgan/php-deprecation-detector",
From aeb133e86ca7e707d3e428fd9976deb8dcdb60bd Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Tue, 8 Jul 2025 15:53:30 +0200
Subject: [PATCH 015/524] CreateContainer: Also add `diun.enable: false` to all
managed containers
Signed-off-by: Simon L.
---
php/src/Docker/DockerActionManager.php | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/php/src/Docker/DockerActionManager.php b/php/src/Docker/DockerActionManager.php
index b3560968..206bc904 100644
--- a/php/src/Docker/DockerActionManager.php
+++ b/php/src/Docker/DockerActionManager.php
@@ -585,7 +585,8 @@ readonly class DockerActionManager {
}
// All AIO-managed containers should not be updated externally via watchtower but gracefully by AIO's backup and update feature.
- $requestBody['Labels'] = ["com.centurylinklabs.watchtower.enable" => "false", "org.label-schema.vendor" => "Nextcloud"];
+ // Also DIUN should not send update notifications. See https://crazymax.dev/diun/providers/docker/#docker-labels
+ $requestBody['Labels'] = ["com.centurylinklabs.watchtower.enable" => "false", "diun.enable" => "false", "org.label-schema.vendor" => "Nextcloud"];
// Containers should have a fixed host name. See https://github.com/nextcloud/all-in-one/discussions/6589
$requestBody['Hostname'] = $container->GetIdentifier();
From 3270767272bf79707eb3d3dd2eea1d058262f081 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 9 Jul 2025 04:44:55 +0000
Subject: [PATCH 016/524] build(deps): bump golang in /Containers/imaginary
Bumps golang from 1.24.4-alpine3.21 to 1.24.5-alpine3.21.
---
updated-dependencies:
- dependency-name: golang
dependency-version: 1.24.5-alpine3.21
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
Containers/imaginary/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/imaginary/Dockerfile b/Containers/imaginary/Dockerfile
index 08cabd2c..55e2a64a 100644
--- a/Containers/imaginary/Dockerfile
+++ b/Containers/imaginary/Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
-FROM golang:1.24.4-alpine3.21 AS go
+FROM golang:1.24.5-alpine3.21 AS go
ENV IMAGINARY_HASH=1d4e251cfcd58ea66f8361f8721d7b8cc85002a3
From 1c41122d393c15020ff8713fe47c0c937d697182 Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Wed, 9 Jul 2025 16:11:28 +0200
Subject: [PATCH 017/524] Bug-report-template: add link to existing feature
requests
Signed-off-by: Simon L.
---
.github/ISSUE_TEMPLATE/Bug_report.md | 1 +
1 file changed, 1 insertion(+)
diff --git a/.github/ISSUE_TEMPLATE/Bug_report.md b/.github/ISSUE_TEMPLATE/Bug_report.md
index f5dd328f..691221d7 100644
--- a/.github/ISSUE_TEMPLATE/Bug_report.md
+++ b/.github/ISSUE_TEMPLATE/Bug_report.md
@@ -9,6 +9,7 @@ labels: 0. Needs triage
- Additional documentation is available here: https://github.com/nextcloud/all-in-one/discussions/categories/wiki
- You should also read through existing questions and their answer here: https://github.com/nextcloud/all-in-one/discussions/categories/questions
- Additional threads can be found here: https://help.nextcloud.com/tag/aio
+- Existing feature requests are listed here: https://github.com/nextcloud/all-in-one/discussions/categories/ideas
--->
From 0bab98fdec083a5aad0581885d425f805722fae6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Thu, 10 Jul 2025 04:34:58 +0000
Subject: [PATCH 018/524] build(deps): bump haproxy in
/Containers/docker-socket-proxy
Bumps haproxy from 3.2.2-alpine to 3.2.3-alpine.
---
updated-dependencies:
- dependency-name: haproxy
dependency-version: 3.2.3-alpine
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
Containers/docker-socket-proxy/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/docker-socket-proxy/Dockerfile b/Containers/docker-socket-proxy/Dockerfile
index bcc7ac71..b14d553b 100644
--- a/Containers/docker-socket-proxy/Dockerfile
+++ b/Containers/docker-socket-proxy/Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
-FROM haproxy:3.2.2-alpine
+FROM haproxy:3.2.3-alpine
# hadolint ignore=DL3002
USER root
From a328f56fd08498d57f1668c2dd88d85cfbf6f00e Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Thu, 10 Jul 2025 10:39:43 +0200
Subject: [PATCH 019/524] mastercontainer: add mountpoint check for
`/var/www/docker-aio/php/containers.json`
Signed-off-by: Simon L.
---
Containers/mastercontainer/start.sh | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/Containers/mastercontainer/start.sh b/Containers/mastercontainer/start.sh
index 9b948776..adb91c39 100644
--- a/Containers/mastercontainer/start.sh
+++ b/Containers/mastercontainer/start.sh
@@ -43,6 +43,11 @@ elif ! mountpoint -q "/mnt/docker-aio-config"; then
echo "Please make sure to mount the nextcloud_aio_mastercontainer docker volume into /mnt/docker-aio-config inside the container!"
echo "If you are on TrueNas SCALE, see https://github.com/nextcloud/all-in-one#can-i-run-aio-on-truenas-scale"
exit 1
+elif mountpoint -q /var/www/docker-aio/php/containers.json; then
+ print_red "/var/www/docker-aio/php/containers.json is a mountpoint. Cannot proceed!"
+ echo "This is a not-supported customization of the mastercontainer!"
+ echo "Please remove this bind-mount from the mastercontainer."
+ exit 1
elif ! sudo -u www-data test -r /var/run/docker.sock; then
echo "Trying to fix docker.sock permissions internally..."
DOCKER_GROUP=$(stat -c '%G' /var/run/docker.sock)
From 1e868d4e5460ace4011a378156b9fcff7e4ef747 Mon Sep 17 00:00:00 2001
From: szaimen <42591237+szaimen@users.noreply.github.com>
Date: Thu, 10 Jul 2025 08:49:09 +0000
Subject: [PATCH 020/524] Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
nextcloud-aio-helm-chart/Chart.yaml | 2 +-
.../templates/nextcloud-aio-apache-deployment.yaml | 2 +-
.../templates/nextcloud-aio-clamav-deployment.yaml | 4 ++--
.../templates/nextcloud-aio-collabora-deployment.yaml | 2 +-
.../templates/nextcloud-aio-database-deployment.yaml | 4 ++--
.../templates/nextcloud-aio-fulltextsearch-deployment.yaml | 4 ++--
.../templates/nextcloud-aio-imaginary-deployment.yaml | 2 +-
.../templates/nextcloud-aio-nextcloud-deployment.yaml | 4 ++--
.../templates/nextcloud-aio-notify-push-deployment.yaml | 2 +-
.../templates/nextcloud-aio-onlyoffice-deployment.yaml | 4 ++--
.../templates/nextcloud-aio-redis-deployment.yaml | 2 +-
.../templates/nextcloud-aio-talk-deployment.yaml | 2 +-
.../templates/nextcloud-aio-talk-recording-deployment.yaml | 2 +-
.../templates/nextcloud-aio-whiteboard-deployment.yaml | 2 +-
14 files changed, 19 insertions(+), 19 deletions(-)
diff --git a/nextcloud-aio-helm-chart/Chart.yaml b/nextcloud-aio-helm-chart/Chart.yaml
index 9b9ef61e..1fd66dc9 100755
--- a/nextcloud-aio-helm-chart/Chart.yaml
+++ b/nextcloud-aio-helm-chart/Chart.yaml
@@ -1,6 +1,6 @@
name: nextcloud-aio-helm-chart
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
-version: 11.2.1
+version: 11.3.0
apiVersion: v2
keywords:
- latest
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-apache-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-apache-deployment.yaml
index 5751c7bf..65bcef36 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-apache-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-apache-deployment.yaml
@@ -61,7 +61,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: WHITEBOARD_HOST
value: nextcloud-aio-whiteboard
- image: ghcr.io/nextcloud-releases/aio-apache:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-apache:20250710_082355
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-clamav-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-clamav-deployment.yaml
index 6d2678f8..b40b4fd9 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-clamav-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-clamav-deployment.yaml
@@ -36,7 +36,7 @@ spec:
{{- end }}
initContainers:
- name: init-subpath
- image: ghcr.io/nextcloud-releases/aio-alpine:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-alpine:20250710_082355
command:
- mkdir
- "-p"
@@ -59,7 +59,7 @@ spec:
value: "{{ .Values.NEXTCLOUD_UPLOAD_LIMIT }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-clamav:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-clamav:20250710_082355
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-collabora-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-collabora-deployment.yaml
index ce2417e4..a58cc9a5 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-collabora-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-collabora-deployment.yaml
@@ -35,7 +35,7 @@ spec:
value: --o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
- name: server_name
value: "{{ .Values.NC_DOMAIN }}"
- image: ghcr.io/nextcloud-releases/aio-collabora:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-collabora:20250710_082355
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-database-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-database-deployment.yaml
index 450868ed..ee6fe5d3 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-database-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-database-deployment.yaml
@@ -35,7 +35,7 @@ spec:
{{- end }}
initContainers:
- name: init-subpath
- image: ghcr.io/nextcloud-releases/aio-alpine:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-alpine:20250710_082355
command:
- mkdir
- "-p"
@@ -64,7 +64,7 @@ spec:
value: nextcloud
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-postgresql:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-postgresql:20250710_082355
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-fulltextsearch-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-fulltextsearch-deployment.yaml
index 53180a99..49bf6fc6 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-fulltextsearch-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-fulltextsearch-deployment.yaml
@@ -24,7 +24,7 @@ spec:
spec:
initContainers:
- name: init-volumes
- image: ghcr.io/nextcloud-releases/aio-alpine:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-alpine:20250710_082355
command:
- chmod
- "777"
@@ -54,7 +54,7 @@ spec:
value: basic
- name: xpack.security.enabled
value: "false"
- image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20250710_082355
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-imaginary-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-imaginary-deployment.yaml
index a452962e..6d35fd39 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-imaginary-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-imaginary-deployment.yaml
@@ -38,7 +38,7 @@ spec:
value: "{{ .Values.IMAGINARY_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-imaginary:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-imaginary:20250710_082355
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml
index 688ac9b4..af427008 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml
@@ -38,7 +38,7 @@ spec:
# AIO settings start # Do not remove or change this line!
initContainers:
- name: init-volumes
- image: ghcr.io/nextcloud-releases/aio-alpine:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-alpine:20250710_082355
command:
- chmod
- "777"
@@ -182,7 +182,7 @@ spec:
value: "{{ .Values.WHITEBOARD_ENABLED }}"
- name: WHITEBOARD_SECRET
value: "{{ .Values.WHITEBOARD_SECRET }}"
- image: ghcr.io/nextcloud-releases/aio-nextcloud:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-nextcloud:20250710_082355
{{- if eq (.Values.RPSS_ENABLED | default "no") "yes" }} # AIO-config - do not change this comment!
securityContext:
# The items below only work in container context
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-notify-push-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-notify-push-deployment.yaml
index 480e046f..6c2f653b 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-notify-push-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-notify-push-deployment.yaml
@@ -55,7 +55,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-notify-push:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-notify-push:20250710_082355
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-onlyoffice-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-onlyoffice-deployment.yaml
index 0b79be44..2ece813f 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-onlyoffice-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-onlyoffice-deployment.yaml
@@ -24,7 +24,7 @@ spec:
spec:
initContainers:
- name: init-volumes
- image: ghcr.io/nextcloud-releases/aio-alpine:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-alpine:20250710_082355
command:
- chmod
- "777"
@@ -42,7 +42,7 @@ spec:
value: "{{ .Values.ONLYOFFICE_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-onlyoffice:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-onlyoffice:20250710_082355
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-redis-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-redis-deployment.yaml
index 4120a5f5..b461b489 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-redis-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-redis-deployment.yaml
@@ -39,7 +39,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-redis:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-redis:20250710_082355
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-deployment.yaml
index 4424d662..c55f6ee2 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-deployment.yaml
@@ -52,7 +52,7 @@ spec:
value: "{{ .Values.TURN_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-talk:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-talk:20250710_082355
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-recording-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-recording-deployment.yaml
index e121f2e6..290d6436 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-recording-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-recording-deployment.yaml
@@ -44,7 +44,7 @@ spec:
value: "{{ .Values.RECORDING_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-talk-recording:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-talk-recording:20250710_082355
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-whiteboard-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-whiteboard-deployment.yaml
index e3734f10..7cf1b406 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-whiteboard-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-whiteboard-deployment.yaml
@@ -48,7 +48,7 @@ spec:
value: redis
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-whiteboard:20250701_092737
+ image: ghcr.io/nextcloud-releases/aio-whiteboard:20250710_082355
readinessProbe:
exec:
command:
From 22d27028d161466b063e9bc8453c2adc98368d0c Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Thu, 10 Jul 2025 10:51:10 +0200
Subject: [PATCH 021/524] fix detail
Signed-off-by: Simon L.
---
php/templates/includes/optional-containers.twig | 2 --
1 file changed, 2 deletions(-)
diff --git a/php/templates/includes/optional-containers.twig b/php/templates/includes/optional-containers.twig
index 5f5b2d97..572af5f1 100644
--- a/php/templates/includes/optional-containers.twig
+++ b/php/templates/includes/optional-containers.twig
@@ -98,7 +98,6 @@
>
- {% if is_onlyoffice_enabled == true %}
- {% endif %}
Date: Thu, 10 Jul 2025 10:51:28 +0200
Subject: [PATCH 022/524] update OO
Signed-off-by: Simon L.
---
Containers/onlyoffice/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/onlyoffice/Dockerfile b/Containers/onlyoffice/Dockerfile
index 97587907..f23327cd 100644
--- a/Containers/onlyoffice/Dockerfile
+++ b/Containers/onlyoffice/Dockerfile
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# From https://github.com/ONLYOFFICE/Docker-DocumentServer/blob/master/Dockerfile
-FROM onlyoffice/documentserver:8.3.3.1
+FROM onlyoffice/documentserver:9.0.3.1
# USER root is probably used
From 78ec604a4b05c22bb39a2289636702e2b6d0b71a Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Thu, 10 Jul 2025 11:26:09 +0200
Subject: [PATCH 023/524] increase to 11.4.0
Signed-off-by: Simon L.
---
php/templates/containers.twig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/php/templates/containers.twig b/php/templates/containers.twig
index 8f917380..a7689126 100644
--- a/php/templates/containers.twig
+++ b/php/templates/containers.twig
@@ -17,7 +17,7 @@
-
Nextcloud AIO v11.3.0
+
Nextcloud AIO v11.4.0
{# Add 2nd tab warning #}
From 6ddcd3b1167473da1509ada3786651a68cce0357 Mon Sep 17 00:00:00 2001
From: szaimen <42591237+szaimen@users.noreply.github.com>
Date: Thu, 10 Jul 2025 11:47:59 +0000
Subject: [PATCH 024/524] nextcloud-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
Containers/nextcloud/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/nextcloud/Dockerfile b/Containers/nextcloud/Dockerfile
index 9dbf231c..915f7239 100644
--- a/Containers/nextcloud/Dockerfile
+++ b/Containers/nextcloud/Dockerfile
@@ -8,7 +8,7 @@ ENV SOURCE_LOCATION=/usr/src/nextcloud
ENV REDIS_DB_INDEX=0
# AIO settings start # Do not remove or change this line!
-ENV NEXTCLOUD_VERSION=31.0.6
+ENV NEXTCLOUD_VERSION=31.0.7
ENV AIO_TOKEN=123456
ENV AIO_URL=localhost
# AIO settings end # Do not remove or change this line!
From 382108c971c64a971465f792fd98c675aca81f66 Mon Sep 17 00:00:00 2001
From: szaimen <42591237+szaimen@users.noreply.github.com>
Date: Thu, 10 Jul 2025 12:03:56 +0000
Subject: [PATCH 025/524] Yaml updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
manual-install/latest.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/manual-install/latest.yml b/manual-install/latest.yml
index 04ac9193..9d62923c 100644
--- a/manual-install/latest.yml
+++ b/manual-install/latest.yml
@@ -253,7 +253,7 @@ services:
- "9980"
environment:
- aliasgroup1=https://${NC_DOMAIN}:443
- - extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true --o:remote_font_config.url=https://${NC_DOMAIN}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
+ - extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:logging.level_startup=warning --o:home_mode.enable=true --o:remote_font_config.url=https://${NC_DOMAIN}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
- dictionaries=${COLLABORA_DICTIONARIES}
- TZ=${TIMEZONE}
- server_name=${NC_DOMAIN}
From 754ab219a86a172d642e23baeb022f69b32829b6 Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Thu, 10 Jul 2025 15:56:42 +0200
Subject: [PATCH 026/524] add advice to
`/var/www/docker-aio/php/containers.json` mountpoint warning
Signed-off-by: Simon L.
---
Containers/mastercontainer/start.sh | 2 ++
1 file changed, 2 insertions(+)
diff --git a/Containers/mastercontainer/start.sh b/Containers/mastercontainer/start.sh
index adb91c39..46a0eef0 100644
--- a/Containers/mastercontainer/start.sh
+++ b/Containers/mastercontainer/start.sh
@@ -47,6 +47,8 @@ elif mountpoint -q /var/www/docker-aio/php/containers.json; then
print_red "/var/www/docker-aio/php/containers.json is a mountpoint. Cannot proceed!"
echo "This is a not-supported customization of the mastercontainer!"
echo "Please remove this bind-mount from the mastercontainer."
+ echo "If you need to customize things, feel free to use https://github.com/nextcloud/all-in-one/tree/main/manual-install"
+ echo "See https://github.com/nextcloud/all-in-one/blob/main/manual-install/latest.yml"
exit 1
elif ! sudo -u www-data test -r /var/run/docker.sock; then
echo "Trying to fix docker.sock permissions internally..."
From 34e82410cf9dccfb74ac4644ef4b1cf8147bd85a Mon Sep 17 00:00:00 2001
From: nextcloud-command
Date: Fri, 11 Jul 2025 04:20:57 +0000
Subject: [PATCH 027/524] Update psalm baseline
Signed-off-by: GitHub
---
php/psalm-baseline.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/php/psalm-baseline.xml b/php/psalm-baseline.xml
index c2056b48..a954c812 100644
--- a/php/psalm-baseline.xml
+++ b/php/psalm-baseline.xml
@@ -1,5 +1,5 @@
-
+
From 0350b9528f1c6e0cda83c919674a331088d7bc18 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Fri, 11 Jul 2025 05:16:11 +0000
Subject: [PATCH 028/524] build(deps): bump elasticsearch in
/Containers/fulltextsearch
Bumps elasticsearch from 8.18.2 to 8.18.3.
---
updated-dependencies:
- dependency-name: elasticsearch
dependency-version: 8.18.3
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
Containers/fulltextsearch/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/fulltextsearch/Dockerfile b/Containers/fulltextsearch/Dockerfile
index ae7eee63..1d1ca4b6 100644
--- a/Containers/fulltextsearch/Dockerfile
+++ b/Containers/fulltextsearch/Dockerfile
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# Probably from here https://github.com/elastic/elasticsearch/blob/main/distribution/docker/src/docker/Dockerfile
-FROM elasticsearch:8.18.2
+FROM elasticsearch:8.18.3
USER root
From a28f1b9c13d785e77d8f09ee8c96d8f0760a8118 Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Fri, 11 Jul 2025 16:14:58 +0200
Subject: [PATCH 029/524] mastercontainer: add check for http proxy variables
Signed-off-by: Simon L.
---
Containers/mastercontainer/start.sh | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/Containers/mastercontainer/start.sh b/Containers/mastercontainer/start.sh
index adb91c39..b356f1c0 100644
--- a/Containers/mastercontainer/start.sh
+++ b/Containers/mastercontainer/start.sh
@@ -37,6 +37,7 @@ if ! [ -a "/var/run/docker.sock" ]; then
print_red "Docker socket is not available. Cannot continue."
echo "Please make sure to mount the docker socket into /var/run/docker.sock inside the container!"
echo "If you did this by purpose because you don't want the container to have access to the docker socket, see https://github.com/nextcloud/all-in-one/tree/main/manual-install."
+ echo "And https://github.com/nextcloud/all-in-one/blob/main/manual-install/latest.yml"
exit 1
elif ! mountpoint -q "/mnt/docker-aio-config"; then
print_red "/mnt/docker-aio-config is not a mountpoint. Cannot proceed!"
@@ -274,6 +275,7 @@ if ! curl --no-progress-meter https://ghcr.io/v2/ >/dev/null; then
echo "Most likely is something blocking access to it."
echo "You should be able to fix this by following https://dockerlabs.collabnix.com/intermediate/networking/Configuring_DNS.html"
echo "Another solution is using https://github.com/nextcloud/all-in-one/tree/main/manual-install"
+ echo "See https://github.com/nextcloud/all-in-one/blob/main/manual-install/latest.yml"
exit 1
fi
@@ -284,6 +286,13 @@ if [ -n "$TZ" ]; then
# Disable exit since it seems to be by default set on unraid and we dont want to break these instances
# exit 1
fi
+# Check that http proxy or no_proxy variable is not set which AIO does not support
+if [ -n "$HTTP_PROXY" ] || [ -n "$http_proxy" ] || [ -n "$HTTPS_PROXY" ] || [ -n "$https_proxy" ] || [ -n "$NO_PROXY" ] || [ -n "$no_proxy" ]; then
+ print_red "The environmental variable HTTP_PROXY, http_proxy, HTTPS_PROXY, https_proxy, NO_PROXY or no_proxy has been set which is not supported by AIO."
+ echo "If you need this, then you should use https://github.com/nextcloud/all-in-one/tree/main/manual-install"
+ echo "See https://github.com/nextcloud/all-in-one/blob/main/manual-install/latest.yml"
+ exit 1
+fi
if mountpoint -q /etc/localtime; then
print_red "/etc/localtime has been mounted into the container which is not allowed because AIO only supports running in the default Etc/UTC timezone!"
echo "The correct timezone can be set in the AIO interface later on!"
From e6e93701c310d6826b00435e1ad3fac6d1715328 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Mon, 14 Jul 2025 06:14:44 +0000
Subject: [PATCH 030/524] build(deps): bump docker in
/Containers/mastercontainer
Bumps docker from 28.3.1-cli to 28.3.2-cli.
---
updated-dependencies:
- dependency-name: docker
dependency-version: 28.3.2-cli
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot]
---
Containers/mastercontainer/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/mastercontainer/Dockerfile b/Containers/mastercontainer/Dockerfile
index 663b7a30..685d92d5 100644
--- a/Containers/mastercontainer/Dockerfile
+++ b/Containers/mastercontainer/Dockerfile
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# Docker CLI is a requirement
-FROM docker:28.3.1-cli AS docker
+FROM docker:28.3.2-cli AS docker
# Caddy is a requirement
FROM caddy:2.10.0-alpine AS caddy
From ccb06b3525a4ce1d0b94f706873e50e3f9690c83 Mon Sep 17 00:00:00 2001
From: szaimen <42591237+szaimen@users.noreply.github.com>
Date: Mon, 14 Jul 2025 12:03:40 +0000
Subject: [PATCH 031/524] php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
php/composer.lock | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/php/composer.lock b/php/composer.lock
index 825ff024..98146e2f 100644
--- a/php/composer.lock
+++ b/php/composer.lock
@@ -3563,16 +3563,16 @@
},
{
"name": "phpstan/phpdoc-parser",
- "version": "2.1.0",
+ "version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68"
+ "reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
- "reference": "9b30d6fd026b2c132b3985ce6b23bec09ab3aa68",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/b9e61a61e39e02dd90944e9115241c7f7e76bfd8",
+ "reference": "b9e61a61e39e02dd90944e9115241c7f7e76bfd8",
"shasum": ""
},
"require": {
@@ -3604,9 +3604,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
- "source": "https://github.com/phpstan/phpdoc-parser/tree/2.1.0"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/2.2.0"
},
- "time": "2025-02-19T13:28:12+00:00"
+ "time": "2025-07-13T07:04:09+00:00"
},
{
"name": "revolt/event-loop",
@@ -4504,16 +4504,16 @@
},
{
"name": "vimeo/psalm",
- "version": "6.12.1",
+ "version": "6.13.0",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
- "reference": "e71404b0465be25cf7f8a631b298c01c5ddd864f"
+ "reference": "70cdf647255a1362b426bb0f522a85817b8c791c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vimeo/psalm/zipball/e71404b0465be25cf7f8a631b298c01c5ddd864f",
- "reference": "e71404b0465be25cf7f8a631b298c01c5ddd864f",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/70cdf647255a1362b426bb0f522a85817b8c791c",
+ "reference": "70cdf647255a1362b426bb0f522a85817b8c791c",
"shasum": ""
},
"require": {
@@ -4618,7 +4618,7 @@
"issues": "https://github.com/vimeo/psalm/issues",
"source": "https://github.com/vimeo/psalm"
},
- "time": "2025-07-04T09:56:28+00:00"
+ "time": "2025-07-14T09:59:17+00:00"
},
{
"name": "wapmorgan/php-deprecation-detector",
From e6ac9ad4f8b6cae1bfeddee2bccd8714574a31f6 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 16 Jul 2025 04:51:48 +0000
Subject: [PATCH 032/524] build(deps): bump alpine from 3.21.3 to 3.22.1 in
/Containers/alpine
Bumps alpine from 3.21.3 to 3.22.1.
---
updated-dependencies:
- dependency-name: alpine
dependency-version: 3.22.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
Containers/alpine/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/alpine/Dockerfile b/Containers/alpine/Dockerfile
index 8d180272..429485b3 100644
--- a/Containers/alpine/Dockerfile
+++ b/Containers/alpine/Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
-FROM alpine:3.21.3
+FROM alpine:3.22.1
RUN set -ex; \
apk upgrade --no-cache -a
From 74ce18856fd3a5bc6eb8d43b29a12acbce3355dc Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 16 Jul 2025 04:51:54 +0000
Subject: [PATCH 033/524] build(deps): bump alpine from 3.21.3 to 3.22.1 in
/Containers/borgbackup
Bumps alpine from 3.21.3 to 3.22.1.
---
updated-dependencies:
- dependency-name: alpine
dependency-version: 3.22.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
Containers/borgbackup/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/borgbackup/Dockerfile b/Containers/borgbackup/Dockerfile
index 70d2ea11..74d87f45 100644
--- a/Containers/borgbackup/Dockerfile
+++ b/Containers/borgbackup/Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
-FROM alpine:3.21.3
+FROM alpine:3.22.1
RUN set -ex; \
\
From 3b3dc1dcce1a210f8b50356b71cd4deb555a9c86 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 16 Jul 2025 04:51:57 +0000
Subject: [PATCH 034/524] build(deps): bump alpine from 3.21.3 to 3.22.1 in
/Containers/clamav
Bumps alpine from 3.21.3 to 3.22.1.
---
updated-dependencies:
- dependency-name: alpine
dependency-version: 3.22.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
Containers/clamav/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/clamav/Dockerfile b/Containers/clamav/Dockerfile
index 2b7bd30b..d00e34a7 100644
--- a/Containers/clamav/Dockerfile
+++ b/Containers/clamav/Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
-FROM alpine:3.21.3
+FROM alpine:3.22.1
RUN set -ex; \
apk upgrade --no-cache -a; \
From cc8414250f7665c0780d842827e3d194a7354c82 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 16 Jul 2025 04:52:03 +0000
Subject: [PATCH 035/524] build(deps): bump alpine in /Containers/domaincheck
Bumps alpine from 3.21.3 to 3.22.1.
---
updated-dependencies:
- dependency-name: alpine
dependency-version: 3.22.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
Containers/domaincheck/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/domaincheck/Dockerfile b/Containers/domaincheck/Dockerfile
index 9b248e39..99ae1184 100644
--- a/Containers/domaincheck/Dockerfile
+++ b/Containers/domaincheck/Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
-FROM alpine:3.21.3
+FROM alpine:3.22.1
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache bash lighttpd netcat-openbsd; \
From 93d3e9e601a7694e10f9c90755c6afc23716cfd3 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 16 Jul 2025 04:52:07 +0000
Subject: [PATCH 036/524] build(deps): bump alpine from 3.21.3 to 3.22.1 in
/Containers/imaginary
Bumps alpine from 3.21.3 to 3.22.1.
---
updated-dependencies:
- dependency-name: alpine
dependency-version: 3.22.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
Containers/imaginary/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/imaginary/Dockerfile b/Containers/imaginary/Dockerfile
index 55e2a64a..4fd508e5 100644
--- a/Containers/imaginary/Dockerfile
+++ b/Containers/imaginary/Dockerfile
@@ -14,7 +14,7 @@ RUN set -ex; \
build-base; \
go install github.com/h2non/imaginary@"$IMAGINARY_HASH";
-FROM alpine:3.21.3
+FROM alpine:3.22.1
RUN set -ex; \
apk upgrade --no-cache -a; \
apk add --no-cache \
From 235f190020b9255c971422ac79026971f84a7d20 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 16 Jul 2025 04:52:39 +0000
Subject: [PATCH 037/524] build(deps): bump alpine in /Containers/notify-push
Bumps alpine from 3.21.3 to 3.22.1.
---
updated-dependencies:
- dependency-name: alpine
dependency-version: 3.22.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
Containers/notify-push/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/notify-push/Dockerfile b/Containers/notify-push/Dockerfile
index 18cbc0c4..8138582d 100644
--- a/Containers/notify-push/Dockerfile
+++ b/Containers/notify-push/Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
-FROM alpine:3.21.3
+FROM alpine:3.22.1
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
From 7da05ca65bb0691f103be5a2118b47d3f99334c9 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 16 Jul 2025 04:52:47 +0000
Subject: [PATCH 038/524] build(deps): bump alpine from 3.21.3 to 3.22.1 in
/Containers/talk
Bumps alpine from 3.21.3 to 3.22.1.
---
updated-dependencies:
- dependency-name: alpine
dependency-version: 3.22.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
Containers/talk/Dockerfile | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/Containers/talk/Dockerfile b/Containers/talk/Dockerfile
index 67bb7e61..00560697 100644
--- a/Containers/talk/Dockerfile
+++ b/Containers/talk/Dockerfile
@@ -2,7 +2,7 @@
FROM nats:2.11.6-scratch AS nats
FROM eturnal/eturnal:1.12.1 AS eturnal
FROM strukturag/nextcloud-spreed-signaling:2.0.3 AS signaling
-FROM alpine:3.21.3 AS janus
+FROM alpine:3.22.1 AS janus
ARG JANUS_VERSION=v1.3.1
WORKDIR /src
@@ -35,7 +35,7 @@ RUN set -ex; \
make configs; \
rename -v ".jcfg.sample" ".jcfg" /usr/local/etc/janus/*.jcfg.sample
-FROM alpine:3.21.3
+FROM alpine:3.22.1
ENV ETURNAL_ETC_DIR="/conf"
ENV SKIP_CERT_VERIFY=false
COPY --from=janus --chmod=777 --chown=1000:1000 /usr/local /usr/local
From 2973eb7fc822732cf3738c3d83063580404c3935 Mon Sep 17 00:00:00 2001
From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com>
Date: Wed, 16 Jul 2025 04:53:03 +0000
Subject: [PATCH 039/524] build(deps): bump alpine from 3.21.3 to 3.22.1 in
/Containers/watchtower
Bumps alpine from 3.21.3 to 3.22.1.
---
updated-dependencies:
- dependency-name: alpine
dependency-version: 3.22.1
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot]
---
Containers/watchtower/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/watchtower/Dockerfile b/Containers/watchtower/Dockerfile
index 76cfd60f..63ac8163 100644
--- a/Containers/watchtower/Dockerfile
+++ b/Containers/watchtower/Dockerfile
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:latest
FROM ghcr.io/nicholas-fedor/watchtower:1.11.5 AS watchtower
-FROM alpine:3.21.3
+FROM alpine:3.22.1
RUN set -ex; \
apk upgrade --no-cache -a; \
From 6463a2b04f63591993d0731f3c39a17a213b2e4a Mon Sep 17 00:00:00 2001
From: szaimen <42591237+szaimen@users.noreply.github.com>
Date: Thu, 17 Jul 2025 09:23:52 +0000
Subject: [PATCH 040/524] Helm Chart updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
nextcloud-aio-helm-chart/Chart.yaml | 2 +-
.../templates/nextcloud-aio-apache-deployment.yaml | 2 +-
.../templates/nextcloud-aio-clamav-deployment.yaml | 4 ++--
.../templates/nextcloud-aio-collabora-deployment.yaml | 4 ++--
.../templates/nextcloud-aio-database-deployment.yaml | 4 ++--
.../templates/nextcloud-aio-fulltextsearch-deployment.yaml | 4 ++--
.../templates/nextcloud-aio-imaginary-deployment.yaml | 2 +-
.../templates/nextcloud-aio-nextcloud-deployment.yaml | 4 ++--
.../templates/nextcloud-aio-notify-push-deployment.yaml | 2 +-
.../templates/nextcloud-aio-onlyoffice-deployment.yaml | 4 ++--
.../templates/nextcloud-aio-redis-deployment.yaml | 2 +-
.../templates/nextcloud-aio-talk-deployment.yaml | 2 +-
.../templates/nextcloud-aio-talk-recording-deployment.yaml | 2 +-
.../templates/nextcloud-aio-whiteboard-deployment.yaml | 2 +-
14 files changed, 20 insertions(+), 20 deletions(-)
diff --git a/nextcloud-aio-helm-chart/Chart.yaml b/nextcloud-aio-helm-chart/Chart.yaml
index 1fd66dc9..7bf3cdaa 100755
--- a/nextcloud-aio-helm-chart/Chart.yaml
+++ b/nextcloud-aio-helm-chart/Chart.yaml
@@ -1,6 +1,6 @@
name: nextcloud-aio-helm-chart
description: A generated Helm Chart for Nextcloud AIO from Skippbox Kompose
-version: 11.3.0
+version: 11.4.0
apiVersion: v2
keywords:
- latest
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-apache-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-apache-deployment.yaml
index 65bcef36..1d60880b 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-apache-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-apache-deployment.yaml
@@ -61,7 +61,7 @@ spec:
value: "{{ .Values.TIMEZONE }}"
- name: WHITEBOARD_HOST
value: nextcloud-aio-whiteboard
- image: ghcr.io/nextcloud-releases/aio-apache:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-apache:20250717_090710
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-clamav-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-clamav-deployment.yaml
index b40b4fd9..df4d25d5 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-clamav-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-clamav-deployment.yaml
@@ -36,7 +36,7 @@ spec:
{{- end }}
initContainers:
- name: init-subpath
- image: ghcr.io/nextcloud-releases/aio-alpine:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-alpine:20250717_090710
command:
- mkdir
- "-p"
@@ -59,7 +59,7 @@ spec:
value: "{{ .Values.NEXTCLOUD_UPLOAD_LIMIT }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-clamav:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-clamav:20250717_090710
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-collabora-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-collabora-deployment.yaml
index a58cc9a5..ffb12a71 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-collabora-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-collabora-deployment.yaml
@@ -32,10 +32,10 @@ spec:
- name: dictionaries
value: "{{ .Values.COLLABORA_DICTIONARIES }}"
- name: extra_params
- value: --o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:home_mode.enable=true --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
+ value: --o:ssl.enable=false --o:ssl.termination=true --o:mount_jail_tree=false --o:logging.level=warning --o:logging.level_startup=warning --o:home_mode.enable=true --o:remote_font_config.url=https://{{ .Values.NC_DOMAIN }}/apps/richdocuments/settings/fonts.json --o:net.post_allow.host[0]=.+
- name: server_name
value: "{{ .Values.NC_DOMAIN }}"
- image: ghcr.io/nextcloud-releases/aio-collabora:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-collabora:20250717_090710
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-database-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-database-deployment.yaml
index ee6fe5d3..2fd6db2d 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-database-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-database-deployment.yaml
@@ -35,7 +35,7 @@ spec:
{{- end }}
initContainers:
- name: init-subpath
- image: ghcr.io/nextcloud-releases/aio-alpine:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-alpine:20250717_090710
command:
- mkdir
- "-p"
@@ -64,7 +64,7 @@ spec:
value: nextcloud
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-postgresql:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-postgresql:20250717_090710
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-fulltextsearch-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-fulltextsearch-deployment.yaml
index 49bf6fc6..8a46606f 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-fulltextsearch-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-fulltextsearch-deployment.yaml
@@ -24,7 +24,7 @@ spec:
spec:
initContainers:
- name: init-volumes
- image: ghcr.io/nextcloud-releases/aio-alpine:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-alpine:20250717_090710
command:
- chmod
- "777"
@@ -54,7 +54,7 @@ spec:
value: basic
- name: xpack.security.enabled
value: "false"
- image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-fulltextsearch:20250717_090710
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-imaginary-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-imaginary-deployment.yaml
index 6d35fd39..8877f8c4 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-imaginary-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-imaginary-deployment.yaml
@@ -38,7 +38,7 @@ spec:
value: "{{ .Values.IMAGINARY_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-imaginary:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-imaginary:20250717_090710
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml
index af427008..bbb343e5 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-nextcloud-deployment.yaml
@@ -38,7 +38,7 @@ spec:
# AIO settings start # Do not remove or change this line!
initContainers:
- name: init-volumes
- image: ghcr.io/nextcloud-releases/aio-alpine:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-alpine:20250717_090710
command:
- chmod
- "777"
@@ -182,7 +182,7 @@ spec:
value: "{{ .Values.WHITEBOARD_ENABLED }}"
- name: WHITEBOARD_SECRET
value: "{{ .Values.WHITEBOARD_SECRET }}"
- image: ghcr.io/nextcloud-releases/aio-nextcloud:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-nextcloud:20250717_090710
{{- if eq (.Values.RPSS_ENABLED | default "no") "yes" }} # AIO-config - do not change this comment!
securityContext:
# The items below only work in container context
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-notify-push-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-notify-push-deployment.yaml
index 6c2f653b..b1d771a1 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-notify-push-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-notify-push-deployment.yaml
@@ -55,7 +55,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-notify-push:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-notify-push:20250717_090710
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-onlyoffice-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-onlyoffice-deployment.yaml
index 2ece813f..3ff8701a 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-onlyoffice-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-onlyoffice-deployment.yaml
@@ -24,7 +24,7 @@ spec:
spec:
initContainers:
- name: init-volumes
- image: ghcr.io/nextcloud-releases/aio-alpine:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-alpine:20250717_090710
command:
- chmod
- "777"
@@ -42,7 +42,7 @@ spec:
value: "{{ .Values.ONLYOFFICE_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-onlyoffice:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-onlyoffice:20250717_090710
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-redis-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-redis-deployment.yaml
index b461b489..334b1a5d 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-redis-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-redis-deployment.yaml
@@ -39,7 +39,7 @@ spec:
value: "{{ .Values.REDIS_PASSWORD }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-redis:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-redis:20250717_090710
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-deployment.yaml
index c55f6ee2..efb9dab4 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-deployment.yaml
@@ -52,7 +52,7 @@ spec:
value: "{{ .Values.TURN_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-talk:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-talk:20250717_090710
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-recording-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-recording-deployment.yaml
index 290d6436..c4d09e8f 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-recording-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-talk-recording-deployment.yaml
@@ -44,7 +44,7 @@ spec:
value: "{{ .Values.RECORDING_SECRET }}"
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-talk-recording:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-talk-recording:20250717_090710
readinessProbe:
exec:
command:
diff --git a/nextcloud-aio-helm-chart/templates/nextcloud-aio-whiteboard-deployment.yaml b/nextcloud-aio-helm-chart/templates/nextcloud-aio-whiteboard-deployment.yaml
index 7cf1b406..6d1f7d10 100755
--- a/nextcloud-aio-helm-chart/templates/nextcloud-aio-whiteboard-deployment.yaml
+++ b/nextcloud-aio-helm-chart/templates/nextcloud-aio-whiteboard-deployment.yaml
@@ -48,7 +48,7 @@ spec:
value: redis
- name: TZ
value: "{{ .Values.TIMEZONE }}"
- image: ghcr.io/nextcloud-releases/aio-whiteboard:20250710_082355
+ image: ghcr.io/nextcloud-releases/aio-whiteboard:20250717_090710
readinessProbe:
exec:
command:
From b2a839a209a27c95b68125433c0021fc3d511f46 Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Thu, 17 Jul 2025 11:57:35 +0200
Subject: [PATCH 041/524] update remaining images and docs to alpine v3.22
Signed-off-by: Simon L.
---
Containers/apache/Dockerfile | 2 +-
Containers/imaginary/Dockerfile | 4 ++--
Containers/mastercontainer/Dockerfile | 4 ++--
Containers/nextcloud/Dockerfile | 2 +-
Containers/postgresql/Dockerfile | 2 +-
Containers/talk-recording/Dockerfile | 2 +-
readme.md | 2 +-
7 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/Containers/apache/Dockerfile b/Containers/apache/Dockerfile
index 615aeca4..bf342dca 100644
--- a/Containers/apache/Dockerfile
+++ b/Containers/apache/Dockerfile
@@ -2,7 +2,7 @@
FROM caddy:2.10.0-alpine AS caddy
# From https://github.com/docker-library/httpd/blob/master/2.4/alpine/Dockerfile
-FROM httpd:2.4.63-alpine3.21
+FROM httpd:2.4.63-alpine3.22
COPY --from=caddy /usr/bin/caddy /usr/bin/caddy
diff --git a/Containers/imaginary/Dockerfile b/Containers/imaginary/Dockerfile
index 4fd508e5..ddbbe6d1 100644
--- a/Containers/imaginary/Dockerfile
+++ b/Containers/imaginary/Dockerfile
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:latest
-FROM golang:1.24.5-alpine3.21 AS go
+FROM golang:1.24.5-alpine3.22 AS go
-ENV IMAGINARY_HASH=1d4e251cfcd58ea66f8361f8721d7b8cc85002a3
+ENV IMAGINARY_HASH=1d4e251cfcd58ea66f8361f8721d7b8cc85002a3
RUN set -ex; \
apk upgrade --no-cache -a; \
diff --git a/Containers/mastercontainer/Dockerfile b/Containers/mastercontainer/Dockerfile
index 685d92d5..852ea63d 100644
--- a/Containers/mastercontainer/Dockerfile
+++ b/Containers/mastercontainer/Dockerfile
@@ -5,8 +5,8 @@ FROM docker:28.3.2-cli AS docker
# Caddy is a requirement
FROM caddy:2.10.0-alpine AS caddy
-# From https://github.com/docker-library/php/blob/master/8.4/alpine3.21/fpm/Dockerfile
-FROM php:8.4.10-fpm-alpine3.21
+# From https://github.com/docker-library/php/blob/master/8.4/alpine3.22/fpm/Dockerfile
+FROM php:8.4.10-fpm-alpine3.22
ARG AIO_GIT_URL="https://github.com/nextcloud-releases/all-in-one.git"
ARG AIO_GIT_BRANCH="main"
diff --git a/Containers/nextcloud/Dockerfile b/Containers/nextcloud/Dockerfile
index 915f7239..10f3057d 100644
--- a/Containers/nextcloud/Dockerfile
+++ b/Containers/nextcloud/Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
-FROM php:8.3.23-fpm-alpine3.21
+FROM php:8.3.23-fpm-alpine3.22
ENV PHP_MEMORY_LIMIT=512M
ENV PHP_UPLOAD_LIMIT=16G
diff --git a/Containers/postgresql/Dockerfile b/Containers/postgresql/Dockerfile
index 36394b05..b29739d7 100644
--- a/Containers/postgresql/Dockerfile
+++ b/Containers/postgresql/Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
-# From https://github.com/docker-library/postgres/blob/master/17/alpine3.21/Dockerfile
+# From https://github.com/docker-library/postgres/blob/master/17/alpine3.22/Dockerfile
FROM postgres:17.5-alpine
COPY --chmod=775 start.sh /start.sh
diff --git a/Containers/talk-recording/Dockerfile b/Containers/talk-recording/Dockerfile
index 634a5de3..ea3f77f8 100644
--- a/Containers/talk-recording/Dockerfile
+++ b/Containers/talk-recording/Dockerfile
@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
-FROM python:3.13.5-alpine3.21
+FROM python:3.13.5-alpine3.22
COPY --chmod=775 start.sh /start.sh
COPY --chmod=775 healthcheck.sh /healthcheck.sh
diff --git a/readme.md b/readme.md
index 81835401..9dc1aab5 100644
--- a/readme.md
+++ b/readme.md
@@ -449,7 +449,7 @@ You might want to adjust the Nextcloud apps that are installed upon the first st
### How to add OS packages permanently to the Nextcloud container?
Some Nextcloud apps require additional external dependencies that must be bundled within Nextcloud container in order to work correctly. As we cannot put each and every dependency for all apps into the container - as this would make the project quickly unmaintainable - there is an official way in which you can add additional dependencies into the Nextcloud container. However note that doing this is disrecommended since we do not test Nextcloud apps that require external dependencies.
-You can do so by adding `--env NEXTCLOUD_ADDITIONAL_APKS="imagemagick dependency2 dependency3"` to the docker run command of the mastercontainer (but before the last line `ghcr.io/nextcloud-releases/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used) and customize the value to your fitting. It must be a string with small letters a-z, digits 0-9, spaces, dots and hyphens or '_'. You can find available packages here: https://pkgs.alpinelinux.org/packages?branch=v3.21. By default `imagemagick` is added. If you want to keep it, you need to specify it as well.
+You can do so by adding `--env NEXTCLOUD_ADDITIONAL_APKS="imagemagick dependency2 dependency3"` to the docker run command of the mastercontainer (but before the last line `ghcr.io/nextcloud-releases/all-in-one:latest`! If it was started already, you will need to stop the mastercontainer, remove it (no data will be lost) and recreate it using the docker run command that you initially used) and customize the value to your fitting. It must be a string with small letters a-z, digits 0-9, spaces, dots and hyphens or '_'. You can find available packages here: https://pkgs.alpinelinux.org/packages?branch=v3.22. By default `imagemagick` is added. If you want to keep it, you need to specify it as well.
### How to add PHP extensions permanently to the Nextcloud container?
Some Nextcloud apps require additional php extensions that must be bundled within Nextcloud container in order to work correctly. As we cannot put each and every dependency for all apps into the container - as this would make the project quickly unmaintainable - there is an official way in which you can add additional php extensions into the Nextcloud container. However note that doing this is disrecommended since we do not test Nextcloud apps that require additional php extensions.
From e1408dc76ebb5d52a856a52b9c317bfef7b37af1 Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Thu, 17 Jul 2025 13:57:18 +0200
Subject: [PATCH 042/524] adjust the naming of variables
Signed-off-by: Simon L.
---
Containers/nextcloud/entrypoint.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/nextcloud/entrypoint.sh b/Containers/nextcloud/entrypoint.sh
index 70e44984..1575fac1 100644
--- a/Containers/nextcloud/entrypoint.sh
+++ b/Containers/nextcloud/entrypoint.sh
@@ -835,7 +835,7 @@ if [ "$FULLTEXTSEARCH_ENABLED" = 'yes' ]; then
php /var/www/html/occ app:update files_fulltextsearch
fi
php /var/www/html/occ fulltextsearch:configure '{"search_platform":"OCA\\FullTextSearch_Elasticsearch\\Platform\\ElasticSearchPlatform"}'
- php /var/www/html/occ fulltextsearch_elasticsearch:configure "{\"elastic_host\":\"http://$FULLTEXTSEARCH_USER:$FULLTEXTSEARCH_PASSWORD@$FULLTEXTSEARCH_HOST:$FULLTEXT_PORT\",\"elastic_index\":\"$FULLTEXT_INDEX\"}"
+ php /var/www/html/occ fulltextsearch_elasticsearch:configure "{\"elastic_host\":\"http://$FULLTEXTSEARCH_USER:$FULLTEXTSEARCH_PASSWORD@$FULLTEXTSEARCH_HOST:$FULLTEXTSEARCH_PORT\",\"elastic_index\":\"$FULLTEXTSEARCH_INDEX\"}"
php /var/www/html/occ files_fulltextsearch:configure "{\"files_pdf\":\"1\",\"files_office\":\"1\"}"
# Do the index
From 64539d5b5cd8da8f43136fc3b268780f04ac451f Mon Sep 17 00:00:00 2001
From: szaimen <42591237+szaimen@users.noreply.github.com>
Date: Thu, 17 Jul 2025 12:03:42 +0000
Subject: [PATCH 043/524] imaginary-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
Containers/imaginary/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/imaginary/Dockerfile b/Containers/imaginary/Dockerfile
index ddbbe6d1..e53f1b02 100644
--- a/Containers/imaginary/Dockerfile
+++ b/Containers/imaginary/Dockerfile
@@ -1,7 +1,7 @@
# syntax=docker/dockerfile:latest
FROM golang:1.24.5-alpine3.22 AS go
-ENV IMAGINARY_HASH=1d4e251cfcd58ea66f8361f8721d7b8cc85002a3
+ENV IMAGINARY_HASH=1d4e251cfcd58ea66f8361f8721d7b8cc85002a3
RUN set -ex; \
apk upgrade --no-cache -a; \
From 2792994cc48142b3b6b371b60abb49209675a2ee Mon Sep 17 00:00:00 2001
From: szaimen <42591237+szaimen@users.noreply.github.com>
Date: Thu, 17 Jul 2025 12:04:56 +0000
Subject: [PATCH 044/524] talk-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
---
Containers/talk/Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Containers/talk/Dockerfile b/Containers/talk/Dockerfile
index 00560697..e34d9c1d 100644
--- a/Containers/talk/Dockerfile
+++ b/Containers/talk/Dockerfile
@@ -4,7 +4,7 @@ FROM eturnal/eturnal:1.12.1 AS eturnal
FROM strukturag/nextcloud-spreed-signaling:2.0.3 AS signaling
FROM alpine:3.22.1 AS janus
-ARG JANUS_VERSION=v1.3.1
+ARG JANUS_VERSION=v1.3.2
WORKDIR /src
RUN set -ex; \
apk upgrade --no-cache -a; \
From f5023ed88dd5e18c4de7e64d3c2c646c5b34ac18 Mon Sep 17 00:00:00 2001
From: Alan Savage <3028205+asavageiv@users.noreply.github.com>
Date: Thu, 19 Jun 2025 18:12:36 -0700
Subject: [PATCH 045/524] Factor out getPlaceholderValue from CreateContainer
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
---
php/src/Docker/DockerActionManager.php | 317 +++++++++++++------------
1 file changed, 160 insertions(+), 157 deletions(-)
diff --git a/php/src/Docker/DockerActionManager.php b/php/src/Docker/DockerActionManager.php
index 206bc904..e3c7456f 100644
--- a/php/src/Docker/DockerActionManager.php
+++ b/php/src/Docker/DockerActionManager.php
@@ -253,163 +253,7 @@ readonly class DockerActionManager {
if (preg_match($patterns[0], $env, $out) === 1) {
$replacements = array();
-
- if ($out[1] === 'NC_DOMAIN') {
- $replacements[1] = $this->configurationManager->GetDomain();
- } elseif ($out[1] === 'NC_BASE_DN') {
- $replacements[1] = $this->configurationManager->GetBaseDN();
- } elseif ($out[1] === 'AIO_TOKEN') {
- $replacements[1] = $this->configurationManager->GetToken();
- } elseif ($out[1] === 'BORGBACKUP_REMOTE_REPO') {
- $replacements[1] = $this->configurationManager->GetBorgRemoteRepo();
- } elseif ($out[1] === 'BORGBACKUP_MODE') {
- $replacements[1] = $this->configurationManager->GetBackupMode();
- } elseif ($out[1] === 'AIO_URL') {
- $replacements[1] = $this->configurationManager->GetAIOURL();
- } elseif ($out[1] === 'SELECTED_RESTORE_TIME') {
- $replacements[1] = $this->configurationManager->GetSelectedRestoreTime();
- } elseif ($out[1] === 'RESTORE_EXCLUDE_PREVIEWS') {
- $replacements[1] = $this->configurationManager->GetRestoreExcludePreviews();
- } elseif ($out[1] === 'APACHE_PORT') {
- $replacements[1] = $this->configurationManager->GetApachePort();
- } elseif ($out[1] === 'TALK_PORT') {
- $replacements[1] = $this->configurationManager->GetTalkPort();
- } elseif ($out[1] === 'NEXTCLOUD_MOUNT') {
- $replacements[1] = $this->configurationManager->GetNextcloudMount();
- } elseif ($out[1] === 'BACKUP_RESTORE_PASSWORD') {
- $replacements[1] = $this->configurationManager->GetBorgRestorePassword();
- } elseif ($out[1] === 'CLAMAV_ENABLED') {
- if ($this->configurationManager->isClamavEnabled()) {
- $replacements[1] = 'yes';
- } else {
- $replacements[1] = '';
- }
- } elseif ($out[1] === 'TALK_RECORDING_ENABLED') {
- if ($this->configurationManager->isTalkRecordingEnabled()) {
- $replacements[1] = 'yes';
- } else {
- $replacements[1] = '';
- }
- } elseif ($out[1] === 'ONLYOFFICE_ENABLED') {
- if ($this->configurationManager->isOnlyofficeEnabled()) {
- $replacements[1] = 'yes';
- } else {
- $replacements[1] = '';
- }
- } elseif ($out[1] === 'COLLABORA_ENABLED') {
- if ($this->configurationManager->isCollaboraEnabled()) {
- $replacements[1] = 'yes';
- } else {
- $replacements[1] = '';
- }
- } elseif ($out[1] === 'TALK_ENABLED') {
- if ($this->configurationManager->isTalkEnabled()) {
- $replacements[1] = 'yes';
- } else {
- $replacements[1] = '';
- }
- } elseif ($out[1] === 'UPDATE_NEXTCLOUD_APPS') {
- if ($this->configurationManager->isDailyBackupRunning() && $this->configurationManager->areAutomaticUpdatesEnabled()) {
- $replacements[1] = 'yes';
- } else {
- $replacements[1] = '';
- }
- } elseif ($out[1] === 'TIMEZONE') {
- if ($this->configurationManager->GetTimezone() === '') {
- $replacements[1] = 'Etc/UTC';
- } else {
- $replacements[1] = $this->configurationManager->GetTimezone();
- }
- } elseif ($out[1] === 'COLLABORA_DICTIONARIES') {
- if ($this->configurationManager->GetCollaboraDictionaries() === '') {
- $replacements[1] = 'de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru';
- } else {
- $replacements[1] = $this->configurationManager->GetCollaboraDictionaries();
- }
- } elseif ($out[1] === 'IMAGINARY_ENABLED') {
- if ($this->configurationManager->isImaginaryEnabled()) {
- $replacements[1] = 'yes';
- } else {
- $replacements[1] = '';
- }
- } elseif ($out[1] === 'FULLTEXTSEARCH_ENABLED') {
- if ($this->configurationManager->isFulltextsearchEnabled()) {
- $replacements[1] = 'yes';
- } else {
- $replacements[1] = '';
- }
- } elseif ($out[1] === 'DOCKER_SOCKET_PROXY_ENABLED') {
- if ($this->configurationManager->isDockerSocketProxyEnabled()) {
- $replacements[1] = 'yes';
- } else {
- $replacements[1] = '';
- }
- } elseif ($out[1] === 'NEXTCLOUD_UPLOAD_LIMIT') {
- $replacements[1] = $this->configurationManager->GetNextcloudUploadLimit();
- } elseif ($out[1] === 'NEXTCLOUD_MEMORY_LIMIT') {
- $replacements[1] = $this->configurationManager->GetNextcloudMemoryLimit();
- } elseif ($out[1] === 'NEXTCLOUD_MAX_TIME') {
- $replacements[1] = $this->configurationManager->GetNextcloudMaxTime();
- } elseif ($out[1] === 'BORG_RETENTION_POLICY') {
- $replacements[1] = $this->configurationManager->GetBorgRetentionPolicy();
- } elseif ($out[1] === 'FULLTEXTSEARCH_JAVA_OPTIONS') {
- $replacements[1] = $this->configurationManager->GetFulltextsearchJavaOptions();
- } elseif ($out[1] === 'NEXTCLOUD_TRUSTED_CACERTS_DIR') {
- $replacements[1] = $this->configurationManager->GetTrustedCacertsDir();
- } elseif ($out[1] === 'ADDITIONAL_DIRECTORIES_BACKUP') {
- if ($this->configurationManager->GetAdditionalBackupDirectoriesString() !== '') {
- $replacements[1] = 'yes';
- } else {
- $replacements[1] = '';
- }
- } elseif ($out[1] === 'BORGBACKUP_HOST_LOCATION') {
- $replacements[1] = $this->configurationManager->GetBorgBackupHostLocation();
- } elseif ($out[1] === 'APACHE_MAX_SIZE') {
- $replacements[1] = $this->configurationManager->GetApacheMaxSize();
- } elseif ($out[1] === 'COLLABORA_SECCOMP_POLICY') {
- $replacements[1] = $this->configurationManager->GetCollaboraSeccompPolicy();
- } elseif ($out[1] === 'NEXTCLOUD_STARTUP_APPS') {
- $replacements[1] = $this->configurationManager->GetNextcloudStartupApps();
- } elseif ($out[1] === 'NEXTCLOUD_ADDITIONAL_APKS') {
- $replacements[1] = $this->configurationManager->GetNextcloudAdditionalApks();
- } elseif ($out[1] === 'NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS') {
- $replacements[1] = $this->configurationManager->GetNextcloudAdditionalPhpExtensions();
- } elseif ($out[1] === 'INSTALL_LATEST_MAJOR') {
- if ($this->configurationManager->shouldLatestMajorGetInstalled()) {
- $replacements[1] = 'yes';
- } else {
- $replacements[1] = '';
- }
- } elseif ($out[1] === 'REMOVE_DISABLED_APPS') {
- if ($this->configurationManager->shouldDisabledAppsGetRemoved()) {
- $replacements[1] = 'yes';
- } else {
- $replacements[1] = '';
- }
- // Allow to get local ip-address of database container which allows to talk to it even in host mode (the container that requires this needs to be started first then)
- } elseif ($out[1] === 'AIO_DATABASE_HOST') {
- $replacements[1] = gethostbyname('nextcloud-aio-database');
- // Allow to get local ip-address of caddy container and add it to trusted proxies automatically
- } elseif ($out[1] === 'CADDY_IP_ADDRESS') {
- $replacements[1] = '';
- $communityContainers = $this->configurationManager->GetEnabledCommunityContainers();
- if (in_array('caddy', $communityContainers, true)) {
- $replacements[1] = gethostbyname('nextcloud-aio-caddy');
- }
- } elseif ($out[1] === 'WHITEBOARD_ENABLED') {
- if ($this->configurationManager->isWhiteboardEnabled()) {
- $replacements[1] = 'yes';
- } else {
- $replacements[1] = '';
- }
- } else {
- $secret = $this->configurationManager->GetSecret($out[1]);
- if ($secret === "") {
- throw new \Exception("The secret " . $out[1] . " is empty. Cannot substitute its value. Please check if it is defined in secrets of containers.json.");
- }
- $replacements[1] = $secret;
- }
-
+ $replacements[1] = $this->getPlaceholderValue($out[1]);
$envs[$key] = preg_replace($patterns, $replacements, $env);
}
}
@@ -644,6 +488,165 @@ readonly class DockerActionManager {
}
}
+ private function getPlaceholderValue($placeholder) {
+ if ($placeholder === 'NC_DOMAIN') {
+ return $this->configurationManager->GetDomain();
+ } elseif ($placeholder === 'NC_BASE_DN') {
+ return $this->configurationManager->GetBaseDN();
+ } elseif ($placeholder === 'AIO_TOKEN') {
+ return $this->configurationManager->GetToken();
+ } elseif ($placeholder === 'BORGBACKUP_REMOTE_REPO') {
+ return $this->configurationManager->GetBorgRemoteRepo();
+ } elseif ($placeholder === 'BORGBACKUP_MODE') {
+ return $this->configurationManager->GetBackupMode();
+ } elseif ($placeholder === 'AIO_URL') {
+ return $this->configurationManager->GetAIOURL();
+ } elseif ($placeholder === 'SELECTED_RESTORE_TIME') {
+ return $this->configurationManager->GetSelectedRestoreTime();
+ } elseif ($placeholder === 'RESTORE_EXCLUDE_PREVIEWS') {
+ return $this->configurationManager->GetRestoreExcludePreviews();
+ } elseif ($placeholder === 'APACHE_PORT') {
+ return $this->configurationManager->GetApachePort();
+ } elseif ($placeholder === 'TALK_PORT') {
+ return $this->configurationManager->GetTalkPort();
+ } elseif ($placeholder === 'NEXTCLOUD_MOUNT') {
+ return $this->configurationManager->GetNextcloudMount();
+ } elseif ($placeholder === 'BACKUP_RESTORE_PASSWORD') {
+ return $this->configurationManager->GetBorgRestorePassword();
+ } elseif ($placeholder === 'CLAMAV_ENABLED') {
+ if ($this->configurationManager->isClamavEnabled()) {
+ return 'yes';
+ } else {
+ return '';
+ }
+ } elseif ($placeholder === 'TALK_RECORDING_ENABLED') {
+ if ($this->configurationManager->isTalkRecordingEnabled()) {
+ return 'yes';
+ } else {
+ return '';
+ }
+ } elseif ($placeholder === 'ONLYOFFICE_ENABLED') {
+ if ($this->configurationManager->isOnlyofficeEnabled()) {
+ return 'yes';
+ } else {
+ return '';
+ }
+ } elseif ($placeholder === 'COLLABORA_ENABLED') {
+ if ($this->configurationManager->isCollaboraEnabled()) {
+ return 'yes';
+ } else {
+ return '';
+ }
+ } elseif ($placeholder === 'TALK_ENABLED') {
+ if ($this->configurationManager->isTalkEnabled()) {
+ return 'yes';
+ } else {
+ return '';
+ }
+ } elseif ($placeholder === 'UPDATE_NEXTCLOUD_APPS') {
+ if ($this->configurationManager->isDailyBackupRunning() && $this->configurationManager->areAutomaticUpdatesEnabled()) {
+ return 'yes';
+ } else {
+ return '';
+ }
+ } elseif ($placeholder === 'TIMEZONE') {
+ if ($this->configurationManager->GetTimezone() === '') {
+ return 'Etc/UTC';
+ } else {
+ return $this->configurationManager->GetTimezone();
+ }
+ } elseif ($placeholder === 'COLLABORA_DICTIONARIES') {
+ if ($this->configurationManager->GetCollaboraDictionaries() === '') {
+ return 'de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru';
+ } else {
+ return $this->configurationManager->GetCollaboraDictionaries();
+ }
+ } elseif ($placeholder === 'IMAGINARY_ENABLED') {
+ if ($this->configurationManager->isImaginaryEnabled()) {
+ return 'yes';
+ } else {
+ return '';
+ }
+ } elseif ($placeholder === 'FULLTEXTSEARCH_ENABLED') {
+ if ($this->configurationManager->isFulltextsearchEnabled()) {
+ return 'yes';
+ } else {
+ return '';
+ }
+ } elseif ($placeholder === 'DOCKER_SOCKET_PROXY_ENABLED') {
+ if ($this->configurationManager->isDockerSocketProxyEnabled()) {
+ return 'yes';
+ } else {
+ return '';
+ }
+ } elseif ($placeholder === 'NEXTCLOUD_UPLOAD_LIMIT') {
+ return $this->configurationManager->GetNextcloudUploadLimit();
+ } elseif ($placeholder === 'NEXTCLOUD_MEMORY_LIMIT') {
+ return $this->configurationManager->GetNextcloudMemoryLimit();
+ } elseif ($placeholder === 'NEXTCLOUD_MAX_TIME') {
+ return $this->configurationManager->GetNextcloudMaxTime();
+ } elseif ($placeholder === 'BORG_RETENTION_POLICY') {
+ return $this->configurationManager->GetBorgRetentionPolicy();
+ } elseif ($placeholder === 'FULLTEXTSEARCH_JAVA_OPTIONS') {
+ return $this->configurationManager->GetFulltextsearchJavaOptions();
+ } elseif ($placeholder === 'NEXTCLOUD_TRUSTED_CACERTS_DIR') {
+ return $this->configurationManager->GetTrustedCacertsDir();
+ } elseif ($placeholder === 'ADDITIONAL_DIRECTORIES_BACKUP') {
+ if ($this->configurationManager->GetAdditionalBackupDirectoriesString() !== '') {
+ return 'yes';
+ } else {
+ return '';
+ }
+ } elseif ($placeholder === 'BORGBACKUP_HOST_LOCATION') {
+ return $this->configurationManager->GetBorgBackupHostLocation();
+ } elseif ($placeholder === 'APACHE_MAX_SIZE') {
+ return $this->configurationManager->GetApacheMaxSize();
+ } elseif ($placeholder === 'COLLABORA_SECCOMP_POLICY') {
+ return $this->configurationManager->GetCollaboraSeccompPolicy();
+ } elseif ($placeholder === 'NEXTCLOUD_STARTUP_APPS') {
+ return $this->configurationManager->GetNextcloudStartupApps();
+ } elseif ($placeholder === 'NEXTCLOUD_ADDITIONAL_APKS') {
+ return $this->configurationManager->GetNextcloudAdditionalApks();
+ } elseif ($placeholder === 'NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS') {
+ return $this->configurationManager->GetNextcloudAdditionalPhpExtensions();
+ } elseif ($placeholder === 'INSTALL_LATEST_MAJOR') {
+ if ($this->configurationManager->shouldLatestMajorGetInstalled()) {
+ return 'yes';
+ } else {
+ return '';
+ }
+ } elseif ($placeholder === 'REMOVE_DISABLED_APPS') {
+ if ($this->configurationManager->shouldDisabledAppsGetRemoved()) {
+ return 'yes';
+ } else {
+ return '';
+ }
+ // Allow to get local ip-address of database container which allows to talk to it even in host mode (the container that requires this needs to be started first then)
+ } elseif ($placeholder === 'AIO_DATABASE_HOST') {
+ return gethostbyname('nextcloud-aio-database');
+ // Allow to get local ip-address of caddy container and add it to trusted proxies automatically
+ } elseif ($placeholder === 'CADDY_IP_ADDRESS') {
+ $communityContainers = $this->configurationManager->GetEnabledCommunityContainers();
+ if (in_array('caddy', $communityContainers, true)) {
+ return gethostbyname('nextcloud-aio-caddy');
+ } else {
+ return '';
+ }
+ } elseif ($placeholder === 'WHITEBOARD_ENABLED') {
+ if ($this->configurationManager->isWhiteboardEnabled()) {
+ return 'yes';
+ } else {
+ return '';
+ }
+ } else {
+ $secret = $this->configurationManager->GetSecret($placeholder);
+ if ($secret === "") {
+ throw new \Exception("The secret " . $placeholder . " is empty. Cannot substitute its value. Please check if it is defined in secrets of containers.json.");
+ }
+ return $secret;
+ }
+ }
+
private function isContainerUpdateAvailable(string $id): string {
$container = $this->containerDefinitionFetcher->GetContainerById($id);
From 026707240f37568a614091f1d5d17f3822b48904 Mon Sep 17 00:00:00 2001
From: Alan Savage <3028205+asavageiv@users.noreply.github.com>
Date: Thu, 19 Jun 2025 18:14:31 -0700
Subject: [PATCH 046/524] Support multiple placeholders in ENV values in
containers.json
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
---
php/src/Docker/DockerActionManager.php | 41 ++++++++++++++++----------
1 file changed, 25 insertions(+), 16 deletions(-)
diff --git a/php/src/Docker/DockerActionManager.php b/php/src/Docker/DockerActionManager.php
index e3c7456f..b43e7a8c 100644
--- a/php/src/Docker/DockerActionManager.php
+++ b/php/src/Docker/DockerActionManager.php
@@ -240,22 +240,7 @@ readonly class DockerActionManager {
$envs[] = $this->GetAllNextcloudExecCommands();
}
foreach ($envs as $key => $env) {
- // TODO: This whole block below is a hack and needs to get reworked in order to support multiple substitutions per line by default for all envs
- if (str_starts_with($env, 'extra_params=')) {
- $env = str_replace('%COLLABORA_SECCOMP_POLICY%', $this->configurationManager->GetCollaboraSeccompPolicy(), $env);
- $env = str_replace('%NC_DOMAIN%', $this->configurationManager->GetDomain(), $env);
- $envs[$key] = $env;
- continue;
- }
-
- // Original implementation
- $patterns = ['/%(.*)%/'];
-
- if (preg_match($patterns[0], $env, $out) === 1) {
- $replacements = array();
- $replacements[1] = $this->getPlaceholderValue($out[1]);
- $envs[$key] = preg_replace($patterns, $replacements, $env);
- }
+ $envs[$key] = $this->replaceEnvPlaceholders($env);
}
if (count($envs) > 0) {
@@ -488,6 +473,30 @@ readonly class DockerActionManager {
}
}
+ // Replaces placeholders in $envValue with their values.
+ // E.g. "%NC_DOMAIN%:%APACHE_PORT" becomes "my.nextcloud.com:11000"
+ private function replaceEnvPlaceholders($envValue) {
+ // $pattern breaks down as:
+ // % - matches a literal percent sign
+ // ([^%]+) - capture group that matches one or more characters that are NOT percent signs
+ // % - matches the closing percent sign
+ //
+ // Assumes literal percent signs are always matched and there is no
+ // escaping.
+ $pattern = '/%([^%]+)%/';
+ $matchCount = preg_match_all($pattern, $envValue, $matches);
+ if ($matchCount > 0) {
+ $placeholders = $matches[0]; // ["%PLACEHOLDER1%", "%PLACEHOLDER2%", ...]
+ $placeholderNames = $matches[1]; // ["PLACEHOLDER1", "PLACEHOLDER2", ...]
+ $placeholderToPattern = fn($placeholder) => '/' . $placeholder . '/';
+ $placeholderPatterns = array_map($placeholderToPattern, $placeholders); // ["/%PLACEHOLDER1%/", ...]
+ $placeholderValues = array_map([$this, 'getPlaceholderValue'], $placeholderNames); // ["val1", "val2"]
+ $result = preg_replace($placeholderPatterns, $placeholderValues, $envValue);
+ return $result;
+ }
+ return $envValue;
+ }
+
private function getPlaceholderValue($placeholder) {
if ($placeholder === 'NC_DOMAIN') {
return $this->configurationManager->GetDomain();
From d374fd2c1c9788205e2d6b1635b9daa683e1f7b1 Mon Sep 17 00:00:00 2001
From: Alan Savage <3028205+asavageiv@users.noreply.github.com>
Date: Thu, 19 Jun 2025 17:49:42 -0700
Subject: [PATCH 047/524] Refactor getPlaceholderValue to use `match`
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
---
php/src/Docker/DockerActionManager.php | 204 +++++++------------------
1 file changed, 51 insertions(+), 153 deletions(-)
diff --git a/php/src/Docker/DockerActionManager.php b/php/src/Docker/DockerActionManager.php
index b43e7a8c..35da8663 100644
--- a/php/src/Docker/DockerActionManager.php
+++ b/php/src/Docker/DockerActionManager.php
@@ -498,162 +498,60 @@ readonly class DockerActionManager {
}
private function getPlaceholderValue($placeholder) {
- if ($placeholder === 'NC_DOMAIN') {
- return $this->configurationManager->GetDomain();
- } elseif ($placeholder === 'NC_BASE_DN') {
- return $this->configurationManager->GetBaseDN();
- } elseif ($placeholder === 'AIO_TOKEN') {
- return $this->configurationManager->GetToken();
- } elseif ($placeholder === 'BORGBACKUP_REMOTE_REPO') {
- return $this->configurationManager->GetBorgRemoteRepo();
- } elseif ($placeholder === 'BORGBACKUP_MODE') {
- return $this->configurationManager->GetBackupMode();
- } elseif ($placeholder === 'AIO_URL') {
- return $this->configurationManager->GetAIOURL();
- } elseif ($placeholder === 'SELECTED_RESTORE_TIME') {
- return $this->configurationManager->GetSelectedRestoreTime();
- } elseif ($placeholder === 'RESTORE_EXCLUDE_PREVIEWS') {
- return $this->configurationManager->GetRestoreExcludePreviews();
- } elseif ($placeholder === 'APACHE_PORT') {
- return $this->configurationManager->GetApachePort();
- } elseif ($placeholder === 'TALK_PORT') {
- return $this->configurationManager->GetTalkPort();
- } elseif ($placeholder === 'NEXTCLOUD_MOUNT') {
- return $this->configurationManager->GetNextcloudMount();
- } elseif ($placeholder === 'BACKUP_RESTORE_PASSWORD') {
- return $this->configurationManager->GetBorgRestorePassword();
- } elseif ($placeholder === 'CLAMAV_ENABLED') {
- if ($this->configurationManager->isClamavEnabled()) {
- return 'yes';
- } else {
- return '';
- }
- } elseif ($placeholder === 'TALK_RECORDING_ENABLED') {
- if ($this->configurationManager->isTalkRecordingEnabled()) {
- return 'yes';
- } else {
- return '';
- }
- } elseif ($placeholder === 'ONLYOFFICE_ENABLED') {
- if ($this->configurationManager->isOnlyofficeEnabled()) {
- return 'yes';
- } else {
- return '';
- }
- } elseif ($placeholder === 'COLLABORA_ENABLED') {
- if ($this->configurationManager->isCollaboraEnabled()) {
- return 'yes';
- } else {
- return '';
- }
- } elseif ($placeholder === 'TALK_ENABLED') {
- if ($this->configurationManager->isTalkEnabled()) {
- return 'yes';
- } else {
- return '';
- }
- } elseif ($placeholder === 'UPDATE_NEXTCLOUD_APPS') {
- if ($this->configurationManager->isDailyBackupRunning() && $this->configurationManager->areAutomaticUpdatesEnabled()) {
- return 'yes';
- } else {
- return '';
- }
- } elseif ($placeholder === 'TIMEZONE') {
- if ($this->configurationManager->GetTimezone() === '') {
- return 'Etc/UTC';
- } else {
- return $this->configurationManager->GetTimezone();
- }
- } elseif ($placeholder === 'COLLABORA_DICTIONARIES') {
- if ($this->configurationManager->GetCollaboraDictionaries() === '') {
- return 'de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru';
- } else {
- return $this->configurationManager->GetCollaboraDictionaries();
- }
- } elseif ($placeholder === 'IMAGINARY_ENABLED') {
- if ($this->configurationManager->isImaginaryEnabled()) {
- return 'yes';
- } else {
- return '';
- }
- } elseif ($placeholder === 'FULLTEXTSEARCH_ENABLED') {
- if ($this->configurationManager->isFulltextsearchEnabled()) {
- return 'yes';
- } else {
- return '';
- }
- } elseif ($placeholder === 'DOCKER_SOCKET_PROXY_ENABLED') {
- if ($this->configurationManager->isDockerSocketProxyEnabled()) {
- return 'yes';
- } else {
- return '';
- }
- } elseif ($placeholder === 'NEXTCLOUD_UPLOAD_LIMIT') {
- return $this->configurationManager->GetNextcloudUploadLimit();
- } elseif ($placeholder === 'NEXTCLOUD_MEMORY_LIMIT') {
- return $this->configurationManager->GetNextcloudMemoryLimit();
- } elseif ($placeholder === 'NEXTCLOUD_MAX_TIME') {
- return $this->configurationManager->GetNextcloudMaxTime();
- } elseif ($placeholder === 'BORG_RETENTION_POLICY') {
- return $this->configurationManager->GetBorgRetentionPolicy();
- } elseif ($placeholder === 'FULLTEXTSEARCH_JAVA_OPTIONS') {
- return $this->configurationManager->GetFulltextsearchJavaOptions();
- } elseif ($placeholder === 'NEXTCLOUD_TRUSTED_CACERTS_DIR') {
- return $this->configurationManager->GetTrustedCacertsDir();
- } elseif ($placeholder === 'ADDITIONAL_DIRECTORIES_BACKUP') {
- if ($this->configurationManager->GetAdditionalBackupDirectoriesString() !== '') {
- return 'yes';
- } else {
- return '';
- }
- } elseif ($placeholder === 'BORGBACKUP_HOST_LOCATION') {
- return $this->configurationManager->GetBorgBackupHostLocation();
- } elseif ($placeholder === 'APACHE_MAX_SIZE') {
- return $this->configurationManager->GetApacheMaxSize();
- } elseif ($placeholder === 'COLLABORA_SECCOMP_POLICY') {
- return $this->configurationManager->GetCollaboraSeccompPolicy();
- } elseif ($placeholder === 'NEXTCLOUD_STARTUP_APPS') {
- return $this->configurationManager->GetNextcloudStartupApps();
- } elseif ($placeholder === 'NEXTCLOUD_ADDITIONAL_APKS') {
- return $this->configurationManager->GetNextcloudAdditionalApks();
- } elseif ($placeholder === 'NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS') {
- return $this->configurationManager->GetNextcloudAdditionalPhpExtensions();
- } elseif ($placeholder === 'INSTALL_LATEST_MAJOR') {
- if ($this->configurationManager->shouldLatestMajorGetInstalled()) {
- return 'yes';
- } else {
- return '';
- }
- } elseif ($placeholder === 'REMOVE_DISABLED_APPS') {
- if ($this->configurationManager->shouldDisabledAppsGetRemoved()) {
- return 'yes';
- } else {
- return '';
- }
+ return match ($placeholder) {
+ 'NC_DOMAIN' => $this->configurationManager->GetDomain(),
+ 'NC_BASE_DN' => $this->configurationManager->GetBaseDN(),
+ 'AIO_TOKEN' => $this->configurationManager->GetToken(),
+ 'BORGBACKUP_REMOTE_REPO' => $this->configurationManager->GetBorgRemoteRepo(),
+ 'BORGBACKUP_MODE' => $this->configurationManager->GetBackupMode(),
+ 'AIO_URL' => $this->configurationManager->GetAIOURL(),
+ 'SELECTED_RESTORE_TIME' => $this->configurationManager->GetSelectedRestoreTime(),
+ 'RESTORE_EXCLUDE_PREVIEWS' => $this->configurationManager->GetRestoreExcludePreviews(),
+ 'APACHE_PORT' => $this->configurationManager->GetApachePort(),
+ 'TALK_PORT' => $this->configurationManager->GetTalkPort(),
+ 'NEXTCLOUD_MOUNT' => $this->configurationManager->GetNextcloudMount(),
+ 'BACKUP_RESTORE_PASSWORD' => $this->configurationManager->GetBorgRestorePassword(),
+ 'CLAMAV_ENABLED' => $this->configurationManager->isClamavEnabled() ? 'yes' : '',
+ 'TALK_RECORDING_ENABLED' => $this->configurationManager->isTalkRecordingEnabled() ? 'yes' : '',
+ 'ONLYOFFICE_ENABLED' => $this->configurationManager->isOnlyofficeEnabled() ? 'yes' : '',
+ 'COLLABORA_ENABLED' => $this->configurationManager->isCollaboraEnabled() ? 'yes' : '',
+ 'TALK_ENABLED' => $this->configurationManager->isTalkEnabled() ? 'yes' : '',
+ 'UPDATE_NEXTCLOUD_APPS' => ($this->configurationManager->isDailyBackupRunning() && $this->configurationManager->areAutomaticUpdatesEnabled()) ? 'yes' : '',
+ 'TIMEZONE' => $this->configurationManager->GetTimezone() === '' ? 'Etc/UTC' : $this->configurationManager->GetTimezone(),
+ 'COLLABORA_DICTIONARIES' => $this->configurationManager->GetCollaboraDictionaries() === '' ? 'de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru' : $this->configurationManager->GetCollaboraDictionaries(),
+ 'IMAGINARY_ENABLED' => $this->configurationManager->isImaginaryEnabled() ? 'yes' : '',
+ 'FULLTEXTSEARCH_ENABLED' => $this->configurationManager->isFulltextsearchEnabled() ? 'yes' : '',
+ 'DOCKER_SOCKET_PROXY_ENABLED' => $this->configurationManager->isDockerSocketProxyEnabled() ? 'yes' : '',
+ 'NEXTCLOUD_UPLOAD_LIMIT' => $this->configurationManager->GetNextcloudUploadLimit(),
+ 'NEXTCLOUD_MEMORY_LIMIT' => $this->configurationManager->GetNextcloudMemoryLimit(),
+ 'NEXTCLOUD_MAX_TIME' => $this->configurationManager->GetNextcloudMaxTime(),
+ 'BORG_RETENTION_POLICY' => $this->configurationManager->GetBorgRetentionPolicy(),
+ 'FULLTEXTSEARCH_JAVA_OPTIONS' => $this->configurationManager->GetFulltextsearchJavaOptions(),
+ 'NEXTCLOUD_TRUSTED_CACERTS_DIR' => $this->configurationManager->GetTrustedCacertsDir(),
+ 'ADDITIONAL_DIRECTORIES_BACKUP' => $this->configurationManager->GetAdditionalBackupDirectoriesString() !== '' ? 'yes' : '',
+ 'BORGBACKUP_HOST_LOCATION' => $this->configurationManager->GetBorgBackupHostLocation(),
+ 'APACHE_MAX_SIZE' => $this->configurationManager->GetApacheMaxSize(),
+ 'COLLABORA_SECCOMP_POLICY' => $this->configurationManager->GetCollaboraSeccompPolicy(),
+ 'NEXTCLOUD_STARTUP_APPS' => $this->configurationManager->GetNextcloudStartupApps(),
+ 'NEXTCLOUD_ADDITIONAL_APKS' => $this->configurationManager->GetNextcloudAdditionalApks(),
+ 'NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS' => $this->configurationManager->GetNextcloudAdditionalPhpExtensions(),
+ 'INSTALL_LATEST_MAJOR' => $this->configurationManager->shouldLatestMajorGetInstalled() ? 'yes' : '',
+ 'REMOVE_DISABLED_APPS' => $this->configurationManager->shouldDisabledAppsGetRemoved() ? 'yes' : '',
// Allow to get local ip-address of database container which allows to talk to it even in host mode (the container that requires this needs to be started first then)
- } elseif ($placeholder === 'AIO_DATABASE_HOST') {
- return gethostbyname('nextcloud-aio-database');
+ 'AIO_DATABASE_HOST' => gethostbyname('nextcloud-aio-database'),
// Allow to get local ip-address of caddy container and add it to trusted proxies automatically
- } elseif ($placeholder === 'CADDY_IP_ADDRESS') {
- $communityContainers = $this->configurationManager->GetEnabledCommunityContainers();
- if (in_array('caddy', $communityContainers, true)) {
- return gethostbyname('nextcloud-aio-caddy');
- } else {
- return '';
- }
- } elseif ($placeholder === 'WHITEBOARD_ENABLED') {
- if ($this->configurationManager->isWhiteboardEnabled()) {
- return 'yes';
- } else {
- return '';
- }
- } else {
- $secret = $this->configurationManager->GetSecret($placeholder);
- if ($secret === "") {
- throw new \Exception("The secret " . $placeholder . " is empty. Cannot substitute its value. Please check if it is defined in secrets of containers.json.");
- }
- return $secret;
+ 'CADDY_IP_ADDRESS' => in_array('caddy', $this->configurationManager->GetEnabledCommunityContainers(), true) ? gethostbyname('nextcloud-aio-caddy') : '',
+ 'WHITEBOARD_ENABLED' => $this->configurationManager->isWhiteboardEnabled() ? 'yes' : '',
+ default => $this->getSecretOrThrow($placeholder),
+ };
+ }
+
+ private function getSecretOrThrow($secretName) {
+ $secret = $this->configurationManager->GetSecret($secretName);
+ if ($secret === "") {
+ throw new \Exception("The secret " . $secretName . " is empty. Cannot substitute its value. Please check if it is defined in secrets of containers.json.");
}
+ return $secret;
}
private function isContainerUpdateAvailable(string $id): string {
From 0f858dc3fe3738d5d5c0c93053197debb0cfc5c8 Mon Sep 17 00:00:00 2001
From: Alan Savage <3028205+asavageiv@users.noreply.github.com>
Date: Fri, 20 Jun 2025 20:32:26 +0000
Subject: [PATCH 048/524] Fix psalm errors in DockerActionManager env handling
code
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
---
php/src/Docker/DockerActionManager.php | 13 +++++++------
1 file changed, 7 insertions(+), 6 deletions(-)
diff --git a/php/src/Docker/DockerActionManager.php b/php/src/Docker/DockerActionManager.php
index 35da8663..5e113072 100644
--- a/php/src/Docker/DockerActionManager.php
+++ b/php/src/Docker/DockerActionManager.php
@@ -475,7 +475,7 @@ readonly class DockerActionManager {
// Replaces placeholders in $envValue with their values.
// E.g. "%NC_DOMAIN%:%APACHE_PORT" becomes "my.nextcloud.com:11000"
- private function replaceEnvPlaceholders($envValue) {
+ private function replaceEnvPlaceholders(string $envValue): string {
// $pattern breaks down as:
// % - matches a literal percent sign
// ([^%]+) - capture group that matches one or more characters that are NOT percent signs
@@ -488,16 +488,17 @@ readonly class DockerActionManager {
if ($matchCount > 0) {
$placeholders = $matches[0]; // ["%PLACEHOLDER1%", "%PLACEHOLDER2%", ...]
$placeholderNames = $matches[1]; // ["PLACEHOLDER1", "PLACEHOLDER2", ...]
- $placeholderToPattern = fn($placeholder) => '/' . $placeholder . '/';
+ $placeholderToPattern = fn(string $p): string => '/' . $p . '/';
$placeholderPatterns = array_map($placeholderToPattern, $placeholders); // ["/%PLACEHOLDER1%/", ...]
$placeholderValues = array_map([$this, 'getPlaceholderValue'], $placeholderNames); // ["val1", "val2"]
- $result = preg_replace($placeholderPatterns, $placeholderValues, $envValue);
+ // Guaranteed to be non-null because we found the placeholders in the preg_match_all.
+ $result = (string) preg_replace($placeholderPatterns, $placeholderValues, $envValue);
return $result;
}
return $envValue;
}
- private function getPlaceholderValue($placeholder) {
+ private function getPlaceholderValue(string $placeholder) : string {
return match ($placeholder) {
'NC_DOMAIN' => $this->configurationManager->GetDomain(),
'NC_BASE_DN' => $this->configurationManager->GetBaseDN(),
@@ -530,7 +531,7 @@ readonly class DockerActionManager {
'NEXTCLOUD_TRUSTED_CACERTS_DIR' => $this->configurationManager->GetTrustedCacertsDir(),
'ADDITIONAL_DIRECTORIES_BACKUP' => $this->configurationManager->GetAdditionalBackupDirectoriesString() !== '' ? 'yes' : '',
'BORGBACKUP_HOST_LOCATION' => $this->configurationManager->GetBorgBackupHostLocation(),
- 'APACHE_MAX_SIZE' => $this->configurationManager->GetApacheMaxSize(),
+ 'APACHE_MAX_SIZE' => (string)($this->configurationManager->GetApacheMaxSize()),
'COLLABORA_SECCOMP_POLICY' => $this->configurationManager->GetCollaboraSeccompPolicy(),
'NEXTCLOUD_STARTUP_APPS' => $this->configurationManager->GetNextcloudStartupApps(),
'NEXTCLOUD_ADDITIONAL_APKS' => $this->configurationManager->GetNextcloudAdditionalApks(),
@@ -546,7 +547,7 @@ readonly class DockerActionManager {
};
}
- private function getSecretOrThrow($secretName) {
+ private function getSecretOrThrow(string $secretName): string {
$secret = $this->configurationManager->GetSecret($secretName);
if ($secret === "") {
throw new \Exception("The secret " . $secretName . " is empty. Cannot substitute its value. Please check if it is defined in secrets of containers.json.");
From 0b929d74de9b42ddc0c3e9ad1cd06ea8473aa3a0 Mon Sep 17 00:00:00 2001
From: Alan Savage <3028205+asavageiv@users.noreply.github.com>
Date: Mon, 23 Jun 2025 14:57:34 +0000
Subject: [PATCH 049/524] Use guard clause in replaceEnvPlaceholders to reduce
indentation
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
---
php/src/Docker/DockerActionManager.php | 21 +++++++++++----------
1 file changed, 11 insertions(+), 10 deletions(-)
diff --git a/php/src/Docker/DockerActionManager.php b/php/src/Docker/DockerActionManager.php
index 5e113072..3667294c 100644
--- a/php/src/Docker/DockerActionManager.php
+++ b/php/src/Docker/DockerActionManager.php
@@ -485,17 +485,18 @@ readonly class DockerActionManager {
// escaping.
$pattern = '/%([^%]+)%/';
$matchCount = preg_match_all($pattern, $envValue, $matches);
- if ($matchCount > 0) {
- $placeholders = $matches[0]; // ["%PLACEHOLDER1%", "%PLACEHOLDER2%", ...]
- $placeholderNames = $matches[1]; // ["PLACEHOLDER1", "PLACEHOLDER2", ...]
- $placeholderToPattern = fn(string $p): string => '/' . $p . '/';
- $placeholderPatterns = array_map($placeholderToPattern, $placeholders); // ["/%PLACEHOLDER1%/", ...]
- $placeholderValues = array_map([$this, 'getPlaceholderValue'], $placeholderNames); // ["val1", "val2"]
- // Guaranteed to be non-null because we found the placeholders in the preg_match_all.
- $result = (string) preg_replace($placeholderPatterns, $placeholderValues, $envValue);
- return $result;
+
+ if ($matchCount === 0) {
+ return $envValue;
}
- return $envValue;
+
+ $placeholders = $matches[0]; // ["%PLACEHOLDER1%", "%PLACEHOLDER2%", ...]
+ $placeholderNames = $matches[1]; // ["PLACEHOLDER1", "PLACEHOLDER2", ...]
+ $placeholderToPattern = fn(string $p): string => '/' . $p . '/';
+ $placeholderPatterns = array_map($placeholderToPattern, $placeholders); // ["/%PLACEHOLDER1%/", ...]
+ $placeholderValues = array_map([$this, 'getPlaceholderValue'], $placeholderNames); // ["val1", "val2"]
+ // Guaranteed to be non-null because we found the placeholders in the preg_match_all.
+ return (string) preg_replace($placeholderPatterns, $placeholderValues, $envValue);
}
private function getPlaceholderValue(string $placeholder) : string {
From f81d22cf930b5cc6bdf25b8dea9f608179912cc3 Mon Sep 17 00:00:00 2001
From: Alan Savage <3028205+asavageiv@users.noreply.github.com>
Date: Mon, 23 Jun 2025 15:05:19 +0000
Subject: [PATCH 050/524] Inline placeholderToPattern and use preg_quote
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
---
php/src/Docker/DockerActionManager.php | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/php/src/Docker/DockerActionManager.php b/php/src/Docker/DockerActionManager.php
index 3667294c..8072b2fc 100644
--- a/php/src/Docker/DockerActionManager.php
+++ b/php/src/Docker/DockerActionManager.php
@@ -492,8 +492,7 @@ readonly class DockerActionManager {
$placeholders = $matches[0]; // ["%PLACEHOLDER1%", "%PLACEHOLDER2%", ...]
$placeholderNames = $matches[1]; // ["PLACEHOLDER1", "PLACEHOLDER2", ...]
- $placeholderToPattern = fn(string $p): string => '/' . $p . '/';
- $placeholderPatterns = array_map($placeholderToPattern, $placeholders); // ["/%PLACEHOLDER1%/", ...]
+ $placeholderPatterns = array_map(static fn(string $p) => '/' . preg_quote($p) . '/', $placeholders); // ["/%PLACEHOLDER1%/", ...]
$placeholderValues = array_map([$this, 'getPlaceholderValue'], $placeholderNames); // ["val1", "val2"]
// Guaranteed to be non-null because we found the placeholders in the preg_match_all.
return (string) preg_replace($placeholderPatterns, $placeholderValues, $envValue);
From f7d158c6322571116bd4d62d36b6706da1af560e Mon Sep 17 00:00:00 2001
From: Alan Savage <3028205+asavageiv@users.noreply.github.com>
Date: Mon, 23 Jun 2025 15:05:43 +0000
Subject: [PATCH 051/524] Use modern callable syntax for $placeholderValues
array_map
Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
---
php/src/Docker/DockerActionManager.php | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/php/src/Docker/DockerActionManager.php b/php/src/Docker/DockerActionManager.php
index 8072b2fc..0ccdcf58 100644
--- a/php/src/Docker/DockerActionManager.php
+++ b/php/src/Docker/DockerActionManager.php
@@ -493,7 +493,7 @@ readonly class DockerActionManager {
$placeholders = $matches[0]; // ["%PLACEHOLDER1%", "%PLACEHOLDER2%", ...]
$placeholderNames = $matches[1]; // ["PLACEHOLDER1", "PLACEHOLDER2", ...]
$placeholderPatterns = array_map(static fn(string $p) => '/' . preg_quote($p) . '/', $placeholders); // ["/%PLACEHOLDER1%/", ...]
- $placeholderValues = array_map([$this, 'getPlaceholderValue'], $placeholderNames); // ["val1", "val2"]
+ $placeholderValues = array_map($this->getPlaceholderValue(...), $placeholderNames); // ["val1", "val2"]
// Guaranteed to be non-null because we found the placeholders in the preg_match_all.
return (string) preg_replace($placeholderPatterns, $placeholderValues, $envValue);
}
From 1ce5430f77f59097f78f2e7069e0d395085dada2 Mon Sep 17 00:00:00 2001
From: "Simon L."
Date: Thu, 17 Jul 2025 14:16:43 +0200
Subject: [PATCH 052/524] increase to 11.5.0
Signed-off-by: Simon L.
---
php/templates/containers.twig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/php/templates/containers.twig b/php/templates/containers.twig
index a7689126..9eb25002 100644
--- a/php/templates/containers.twig
+++ b/php/templates/containers.twig
@@ -17,7 +17,7 @@
To store backups remotely instead, fill in the
remote borg repo url and submit it.
+ You will be provided with an SSH public key for authorization at the remote afterwards.