diff --git a/Containers/borgbackup/backupscript.sh b/Containers/borgbackup/backupscript.sh
index 50815f38..b7b96147 100644
--- a/Containers/borgbackup/backupscript.sh
+++ b/Containers/borgbackup/backupscript.sh
@@ -612,3 +612,12 @@ if [ "$BORG_MODE" = test ]; then
fi
fi
fi
+
+if [ "$BORG_MODE" = list ]; then
+ echo "Updating backup list..."
+ if ! borg info > /dev/null; then
+ echo "Could not update the backup list."
+ exit 1
+ fi
+ # The update gets done automatically in the wrapper start.sh script.
+fi
diff --git a/Containers/borgbackup/start.sh b/Containers/borgbackup/start.sh
index 9da0d840..bb7a8a6a 100644
--- a/Containers/borgbackup/start.sh
+++ b/Containers/borgbackup/start.sh
@@ -32,8 +32,8 @@ else
fi
# Validate BORG_MODE
-if [ "$BORG_MODE" != backup ] && [ "$BORG_MODE" != restore ] && [ "$BORG_MODE" != check ] && [ "$BORG_MODE" != "check-repair" ] && [ "$BORG_MODE" != test ]; then
- echo "No correct BORG_MODE mode applied. Valid are 'backup', 'check', 'restore' and 'test'."
+if [ "$BORG_MODE" != backup ] && [ "$BORG_MODE" != restore ] && [ "$BORG_MODE" != check ] && [ "$BORG_MODE" != "check-repair" ] && [ "$BORG_MODE" != "test" ] && [ "$BORG_MODE" != "list" ]; then
+ echo "No correct BORG_MODE mode applied. Valid are 'backup', 'check', 'restore', 'test' and 'list'."
exit 1
fi
diff --git a/Containers/collabora/Dockerfile b/Containers/collabora/Dockerfile
index 10f068ea..071d0751 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.7.1.1
+FROM collabora/code:25.04.7.3.1
USER root
ARG DEBIAN_FRONTEND=noninteractive
diff --git a/Containers/docker-socket-proxy/Dockerfile b/Containers/docker-socket-proxy/Dockerfile
index ccc283f9..ed2e9e2d 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.9-alpine
+FROM haproxy:3.3.0-alpine
# hadolint ignore=DL3002
USER root
diff --git a/Containers/mastercontainer/Dockerfile b/Containers/mastercontainer/Dockerfile
index 9c50af3f..f6ecd08e 100644
--- a/Containers/mastercontainer/Dockerfile
+++ b/Containers/mastercontainer/Dockerfile
@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# Docker CLI is a requirement
-FROM docker:29.0.4-cli AS docker
+FROM docker:29.1.1-cli AS docker
# Caddy is a requirement
FROM caddy:2.10.2-alpine AS caddy
diff --git a/Containers/onlyoffice/Dockerfile b/Containers/onlyoffice/Dockerfile
index be1d580f..c2b94d8c 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:9.1.0.1
+FROM onlyoffice/documentserver:9.2.0.1
# USER root is probably used
diff --git a/community-containers/borgbackup-viewer/readme.md b/community-containers/borgbackup-viewer/readme.md
index dc3d5806..ddd11be7 100644
--- a/community-containers/borgbackup-viewer/readme.md
+++ b/community-containers/borgbackup-viewer/readme.md
@@ -5,7 +5,7 @@ This container allows to view the local borg repository in a web session. It als
- After adding and starting the container, you need to visit `https://ip.address.of.this.server:5801` in order to log in with the user `nextcloud` and the password that you can see next to the container in the AIO interface. (The web page uses a self-signed certificate, so you need to accept the warning).
- Then, you should see a terminal. There type in `borg mount /mnt/borgbackup/borg /tmp/borg` to mount the backup archive at `/tmp/borg` inside the container. Afterwards type in `nautilus /tmp/borg` which will show a file explorer and allows you to see all the files. You can then copy files and folders back to their initial mountpoints inside `/nextcloud_aio_volumes/`, `/host_mounts/` and `/docker_volumes/`. ⚠️ Be very carefully while doing that as can break your instance!
- After you are done with the operation, click on the terminal in the background and press `[CTRL]+[c]` multiple times to close any open application. Then run `umount /tmp/borg` to unmount the mountpoint correctly.
-- You can also delete specific archives by running `borg list`, delete a specific archive e.g. via `borg delete --stats --progress "::20220223_174237-nextcloud-aio"` and compact the archives via `borg compact`. After doing so, make sure to update the backup archives list in the AIO interface! You can do so by clicking on the `Check backup integrity` button or `Create backup` button.
+- You can also delete specific archives by running `borg list`, delete a specific archive e.g. via `borg delete --stats --progress "::20220223_174237-nextcloud-aio"` and compact the archives via `borg compact`. After doing so, make sure to update the backup archives list in the AIO interface! You can do so by clicking on the `Update backup list` button in the `Update backup list` section inside the `Backup and restore` section.
- ⚠️ After you are done doing your operations, remove the container for better security again from the stack: https://github.com/nextcloud/all-in-one/tree/main/community-containers#how-to-remove-containers-from-aios-stack
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
diff --git a/community-containers/notifications/notifications.json b/community-containers/notifications/notifications.json
new file mode 100644
index 00000000..5d886ec9
--- /dev/null
+++ b/community-containers/notifications/notifications.json
@@ -0,0 +1,23 @@
+{
+ "aio_services_v1": [
+ {
+ "container_name": "nextcloud-aio-notifications",
+ "display_name": "Notifications",
+ "documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/notifications",
+ "image": "ghcr.io/szaimen/aio-notifications",
+ "image_tag": "v1",
+ "internal_port": "10000",
+ "restart": "unless-stopped",
+ "volumes": [
+ {
+ "source": "%WATCHTOWER_DOCKER_SOCKET_PATH%",
+ "destination": "/var/run/docker.sock",
+ "writeable": false
+ }
+ ],
+ "environment": [
+ "TZ=%TIMEZONE%"
+ ]
+ }
+ ]
+}
diff --git a/community-containers/notifications/readme.md b/community-containers/notifications/readme.md
new file mode 100644
index 00000000..78ec49b6
--- /dev/null
+++ b/community-containers/notifications/readme.md
@@ -0,0 +1,12 @@
+## Notifications
+This container allows other AIO community containers to send admin notifications to Nextcloud users.
+
+### Notes
+- It needs to be enabled for the [scrutiny container](https://github.com/nextcloud/all-in-one/tree/main/community-containers/scrutiny) for example to make use of admin notifications that are sent if a smartctl failure was found.
+- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
+
+### Repository
+https://github.com/szaimen/aio-notifications
+
+### Maintainer
+https://github.com/szaimen
diff --git a/community-containers/scrutiny/readme.md b/community-containers/scrutiny/readme.md
index dc972d44..3bb728f7 100644
--- a/community-containers/scrutiny/readme.md
+++ b/community-containers/scrutiny/readme.md
@@ -6,7 +6,7 @@ This container bundles Scrutiny which is a frontend for SMART stats and auto-con
- ⚠️ This container mounts all devices from the host inside the container in order to be able to access the drives and smartctl stats which is a security issue. However no better solution was found for the time being.
- This container only works on Linux and not on Docker-Desktop.
- After adding and starting the container, you need to visit `http://internal.ip.of.server:8000` which will show the dashboard for your drives.
-- It currently does not support sending notifications as no good solution was found yet that makes this possible. See https://github.com/szaimen/aio-scrutiny/issues/3
+- It supports sending notifications in case of a smartctl failure if you enable the notifications community container: https://github.com/nextcloud/all-in-one/tree/main/community-containers/notifications
- See https://github.com/nextcloud/all-in-one/tree/main/community-containers#community-containers how to add it to the AIO stack
### Repository
diff --git a/community-containers/scrutiny/scrutiny.json b/community-containers/scrutiny/scrutiny.json
index 4b368291..b367e497 100644
--- a/community-containers/scrutiny/scrutiny.json
+++ b/community-containers/scrutiny/scrutiny.json
@@ -5,7 +5,7 @@
"display_name": "Scrutiny",
"documentation": "https://github.com/nextcloud/all-in-one/tree/main/community-containers/scrutiny",
"image": "ghcr.io/szaimen/aio-scrutiny",
- "image_tag": "v1",
+ "image_tag": "v2",
"internal_port": "8000",
"init": false,
"restart": "unless-stopped",
diff --git a/manual-install/latest.yml b/manual-install/latest.yml
index 12545ac3..4e2cfaee 100644
--- a/manual-install/latest.yml
+++ b/manual-install/latest.yml
@@ -438,7 +438,7 @@ services:
environment:
- TZ=${TIMEZONE}
- ES_JAVA_OPTS=${FULLTEXTSEARCH_JAVA_OPTIONS}
- - bootstrap.memory_lock=true
+ - bootstrap.memory_lock=false
- cluster.name=nextcloud-aio
- discovery.type=single-node
- logger.level=WARN
diff --git a/php/composer.lock b/php/composer.lock
index fa856220..2fbf905c 100644
--- a/php/composer.lock
+++ b/php/composer.lock
@@ -1644,16 +1644,16 @@
},
{
"name": "twig/twig",
- "version": "v3.22.0",
+ "version": "v3.22.1",
"source": {
"type": "git",
"url": "https://github.com/twigphp/Twig.git",
- "reference": "4509984193026de413baf4ba80f68590a7f2c51d"
+ "reference": "1de2ec1fc43ab58a4b7e80b214b96bfc895750f3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/twigphp/Twig/zipball/4509984193026de413baf4ba80f68590a7f2c51d",
- "reference": "4509984193026de413baf4ba80f68590a7f2c51d",
+ "url": "https://api.github.com/repos/twigphp/Twig/zipball/1de2ec1fc43ab58a4b7e80b214b96bfc895750f3",
+ "reference": "1de2ec1fc43ab58a4b7e80b214b96bfc895750f3",
"shasum": ""
},
"require": {
@@ -1707,7 +1707,7 @@
],
"support": {
"issues": "https://github.com/twigphp/Twig/issues",
- "source": "https://github.com/twigphp/Twig/tree/v3.22.0"
+ "source": "https://github.com/twigphp/Twig/tree/v3.22.1"
},
"funding": [
{
@@ -1719,7 +1719,7 @@
"type": "tidelift"
}
],
- "time": "2025-10-29T15:56:47+00:00"
+ "time": "2025-11-16T16:01:12+00:00"
}
],
"packages-dev": [
diff --git a/php/public/index.php b/php/public/index.php
index f2880ca7..46967c72 100644
--- a/php/public/index.php
+++ b/php/public/index.php
@@ -60,6 +60,7 @@ $app->get('/api/docker/getwatchtower', AIO\Controller\DockerController::class .
$app->post('/api/docker/start', AIO\Controller\DockerController::class . ':StartContainer');
$app->post('/api/docker/backup', AIO\Controller\DockerController::class . ':StartBackupContainerBackup');
$app->post('/api/docker/backup-check', AIO\Controller\DockerController::class . ':StartBackupContainerCheck');
+$app->post('/api/docker/backup-list', AIO\Controller\DockerController::class . ':StartBackupContainerList');
$app->post('/api/docker/backup-check-repair', AIO\Controller\DockerController::class . ':StartBackupContainerCheckRepair');
$app->post('/api/docker/backup-test', AIO\Controller\DockerController::class . ':StartBackupContainerTest');
$app->post('/api/docker/restore', AIO\Controller\DockerController::class . ':StartBackupContainerRestore');
diff --git a/php/src/Controller/DockerController.php b/php/src/Controller/DockerController.php
index ff33fbfd..a2573fa2 100644
--- a/php/src/Controller/DockerController.php
+++ b/php/src/Controller/DockerController.php
@@ -105,6 +105,11 @@ readonly class DockerController {
return $response->withStatus(201)->withHeader('Location', '.');
}
+ public function StartBackupContainerList(Request $request, Response $response, array $args) : Response {
+ $this->listBackup();
+ return $response->withStatus(201)->withHeader('Location', '.');
+ }
+
public function checkBackup() : void {
$config = $this->configurationManager->GetConfig();
$config['backup-mode'] = 'check';
@@ -114,6 +119,15 @@ readonly class DockerController {
$this->PerformRecursiveContainerStart($id);
}
+ private function listBackup() : void {
+ $config = $this->configurationManager->GetConfig();
+ $config['backup-mode'] = 'list';
+ $this->configurationManager->WriteConfig($config);
+
+ $id = 'nextcloud-aio-borgbackup';
+ $this->PerformRecursiveContainerStart($id);
+ }
+
public function StartBackupContainerRestore(Request $request, Response $response, array $args) : Response {
$config = $this->configurationManager->GetConfig();
$config['backup-mode'] = 'restore';
diff --git a/php/templates/containers.twig b/php/templates/containers.twig
index 6fda338c..2b381c90 100644
--- a/php/templates/containers.twig
+++ b/php/templates/containers.twig
@@ -17,7 +17,7 @@