Compare commits

...

37 Commits

Author SHA1 Message Date
Simon L.
b9b622755b increase to 12.9.2
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-07 11:37:52 +02:00
Simon L.
b7bf642ad8 Merge pull request #7851 from nextcloud/alan/fix-7850-avoid-post-resend-popup
aio-interface: avoid `Resend` popups on Firefox on start/stop containers
2026-04-07 11:37:20 +02:00
Alan Savage
0bad0849c1 Avoid Resend popups on Firefox on start/stop containers
Use `location.reload(true)` instead of `reload` or `reload(1)`
to ensure we use a GET request.

See also:
https://stackoverflow.com/a/41122753
https://developer.mozilla.org/en-US/docs/Web/API/Location/reload#forceget

Fixes #7850

Signed-off-by: Alan Savage <3028205+asavageiv@users.noreply.github.com>
2026-04-02 10:55:25 -07:00
Simon L.
1a7feba6bd Merge pull request #7845 from nextcloud/enh/noid/fix-automatic-reloading
aio-interface: fix page not automatic reloading after container starting progress spinner
2026-04-02 14:17:06 +02:00
Simon L.
7a9bab5776 aio-interface: fix page not automatic reloading after container starting progress spinner
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-02 14:06:39 +02:00
Simon L.
e45d34ab50 Merge pull request #7844 from nextcloud/enh/noid/disable-redirects
internal.Caddyfile: disable auto redirects
2026-04-02 13:52:52 +02:00
Simon L.
41c677abd9 internal.Caddyfile: disable auto redirects
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-02 13:50:47 +02:00
Simon L.
dbf796aba3 Merge pull request #7842 from nextcloud/nextcloud-container-update
Nextcloud dependency update
2026-04-02 13:20:30 +02:00
szaimen
a85641ceb9 nextcloud-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-02 11:19:39 +00:00
Simon L.
39d3a73088 Merge pull request #7837 from nextcloud/enh/7808/clarify-port-80
readme: clarify for which use case port 80 is used
2026-04-02 12:06:27 +02:00
Simon L.
c7f0aa8a19 Merge pull request #7840 from nextcloud/hash-equal
aio-interface: Use timeing-safe password comparison
2026-04-02 10:26:00 +02:00
Simon L.
2eeada43b5 Merge pull request #7839 from nextcloud/regenerate-session-id
aio-interface: regenerate session id on login to avoid session fixation attacks
2026-04-02 10:24:40 +02:00
Simon L.
1bbda0a5ce Merge pull request #7838 from nextcloud/enh/noid/caddy-internal
caddy-internal: adjust to different root path to separate from the acme caddy
2026-04-02 10:05:36 +02:00
Simon L.
af9e983b04 caddy-internal: adjust to different root path to separate from the acme caddy
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-02 10:01:03 +02:00
Simon L.
1d2149241d readme: clarify for which use case port 80 is used
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-04-02 09:45:31 +02:00
Simon L.
b9ec0f2ffe Merge pull request #7836 from nextcloud/aio-dependency-update
PHP dependency updates
2026-04-01 21:38:51 +02:00
szaimen
3586dbedb0 php dependency updates
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-04-01 12:14:25 +00:00
Pablo Zmdl
2a7c686247 Use timeing-safe password comparison
AI-assistant: Copilot v1.0.7 (Claude Opus 4.6)

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-03-31 23:56:03 +02:00
Pablo Zmdl
f9e6339044 Regenerate session id on login to avoid session fixation attacks
AI-assistant: Copilot v1.0.7 (Claude Opus 4.6)

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-03-31 23:54:56 +02:00
Simon L.
bb4790ed3a increase to 12.9.1
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-27 13:32:11 +01:00
Simon L.
b21b5535f2 Merge pull request #7827 from nextcloud/revert-7655-enh/7654/hide-harp
aio-interface: show harp again
2026-03-27 13:30:45 +01:00
Simon L.
75e18bb40a aio-interface: make Harp visible again
Signed-off-by: Simon L. <szaimen@e.mail.de>
2026-03-27 13:24:05 +01:00
Simon L.
4591d112c3 Merge pull request #7826 from nextcloud/nextcloud-container-update
Nextcloud dependency update
2026-03-27 13:21:49 +01:00
Simon L.
250f5cbe37 Merge pull request #7806 from nextcloud/fix-responsive-log-view
Fix log viewer on small screens
2026-03-27 13:19:40 +01:00
Simon L.
c0cabcf73f Merge pull request #7824 from nextcloud/dependabot/docker/Containers/mastercontainer/docker-29.3.1-cli
build(deps): bump docker from 29.3.0-cli to 29.3.1-cli in /Containers/mastercontainer
2026-03-27 13:19:25 +01:00
Simon L.
7deafec42d Merge pull request #7818 from nextcloud/dependabot/docker/Containers/talk/nats-2.12.6-scratch
build(deps): bump nats from 2.12.5-scratch to 2.12.6-scratch in /Containers/talk
2026-03-27 13:18:51 +01:00
Simon L.
a79b3475c4 Merge pull request #7817 from nextcloud/dependabot/docker/Containers/redis/redis-8.6.2-alpine
build(deps): bump redis from 8.6.1-alpine to 8.6.2-alpine in /Containers/redis
2026-03-27 13:18:29 +01:00
Simon L.
aa670af518 Merge pull request #7816 from hartmann-daniel/patch-1
smbserver: update json to enable the check of filesystem changes automatically
2026-03-27 13:18:10 +01:00
szaimen
960fe801df nextcloud-update automated change
Signed-off-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-03-27 12:16:30 +00:00
Simon L.
80c7e90ab4 Merge pull request #7822 from SomeMichael/patch-1
Update Docker rootless documentation
2026-03-26 11:19:19 +01:00
dependabot[bot]
bc9817873c build(deps): bump docker in /Containers/mastercontainer
Bumps docker from 29.3.0-cli to 29.3.1-cli.

---
updated-dependencies:
- dependency-name: docker
  dependency-version: 29.3.1-cli
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 04:07:17 +00:00
SomeMichael
cfea3ef7e6 Update Docker rootless documentation
Updated exposing privileged ports link

Signed-off-by: SomeMichael <43578183+SomeMichael@users.noreply.github.com>
2026-03-25 19:43:22 +01:00
dependabot[bot]
3838c49834 build(deps): bump nats in /Containers/talk
Bumps nats from 2.12.5-scratch to 2.12.6-scratch.

---
updated-dependencies:
- dependency-name: nats
  dependency-version: 2.12.6-scratch
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-25 04:08:02 +00:00
dependabot[bot]
188f0f89a0 build(deps): bump redis in /Containers/redis
Bumps redis from 8.6.1-alpine to 8.6.2-alpine.

---
updated-dependencies:
- dependency-name: redis
  dependency-version: 8.6.2-alpine
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-25 04:07:47 +00:00
Daniel Hartmann
ee41f1814f Update smbserver.json
Activate filesystem_check_changes
https://github.com/szaimen/aio-smbserver/issues/27

Signed-off-by: Daniel Hartmann <60435198+hartmann-daniel@users.noreply.github.com>
2026-03-24 23:18:02 +01:00
Pablo Zmdl
74693303a3 Force loading of changed JS despite possible caches
Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-03-24 08:03:37 +01:00
Pablo Zmdl
387b39099f Fix log viewer on small screens
Previously it showed a lot of white space at the bottom, and the floating box
didn't stick. Both is now fixed.

AI-assistant: Copilot v1.0.7 (Claude Sonnet 4.6)

Signed-off-by: Pablo Zmdl <pablo@nextcloud.com>
2026-03-23 13:39:04 +01:00
21 changed files with 62 additions and 47 deletions

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# Docker CLI is a requirement
FROM docker:29.3.0-cli AS docker
FROM docker:29.3.1-cli AS docker
ARG CADDY_REMOTE_HOST_HASH=b21775afa730ffb52a24ddff310c8a6d1fd37276

View File

@@ -1,8 +1,11 @@
{
admin off
# auto_https will be handled manually in acme.Caddyfile
auto_https disable_redirects
storage file_system {
root /mnt/docker-aio-config/caddy/
root /mnt/docker-aio-config/caddy-internal/
}
log {

View File

@@ -364,6 +364,7 @@ fi
mkdir -p /mnt/docker-aio-config/data/
mkdir -p /mnt/docker-aio-config/session/
mkdir -p /mnt/docker-aio-config/caddy/
mkdir -p /mnt/docker-aio-config/caddy-internal/
# Adjust permissions for all instances
chmod 770 -R /mnt/docker-aio-config
@@ -371,6 +372,7 @@ chmod 777 /mnt/docker-aio-config
chown www-data:www-data -R /mnt/docker-aio-config/data/
chown www-data:www-data -R /mnt/docker-aio-config/session/
chown www-data:www-data -R /mnt/docker-aio-config/caddy/
chown www-data:www-data -R /mnt/docker-aio-config/caddy-internal/
print_green "Initial startup of Nextcloud All-in-One complete!
You should be able to open the Nextcloud AIO Interface now on port 8080 of this server!

View File

@@ -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=32.0.6
ENV NEXTCLOUD_VERSION=32.0.8
ENV AIO_TOKEN=123456
ENV AIO_URL=localhost
# AIO settings end # Do not remove or change this line!

View File

@@ -1,6 +1,6 @@
# syntax=docker/dockerfile:latest
# From https://github.com/redis/docker-library-redis/blob/release/8.2/alpine/Dockerfile
FROM redis:8.6.1-alpine
FROM redis:8.6.2-alpine
COPY --chmod=775 start.sh /start.sh

View File

@@ -1,5 +1,5 @@
# syntax=docker/dockerfile:latest
FROM nats:2.12.5-scratch AS nats
FROM nats:2.12.6-scratch AS nats
FROM eturnal/eturnal:1.12.2-alpine AS eturnal
FROM strukturag/nextcloud-spreed-signaling:2.1.1 AS signaling
FROM alpine:3.23.3 AS janus

View File

@@ -54,6 +54,9 @@
"ui_secret": "SMBSERVER_PASSWORD",
"backup_volumes": [
"nextcloud_aio_smbserver"
],
"nextcloud_exec_commands": [
"php /var/www/html/occ config:system:set filesystem_check_changes --value=1 --type=integer"
]
}
]

View File

@@ -9,7 +9,7 @@ You can run AIO with docker rootless by following the steps below.
1. If you need ipv6 support, you should enable it by following https://github.com/nextcloud/all-in-one/blob/main/docker-ipv6-support.md.
1. Do not forget to set the mentioned environmental variables `PATH` and `DOCKER_HOST` and in best case add them to your `~/.bashrc` file as shown!
1. Also do not forget to run `loginctl enable-linger USERNAME` (and substitute USERNAME with the correct one) in order to make sure that user services are automatically started after every reboot.
1. Expose the privileged ports by following https://docs.docker.com/engine/security/rootless/#exposing-privileged-ports. (`sudo setcap cap_net_bind_service=ep $(which rootlesskit); systemctl --user restart docker`). If you require the correct source IP you must expose them via `/etc/sysctl.conf`, [see note below](#note-regarding-docker-network-driver).
1. Expose the privileged ports by following https://docs.docker.com/engine/security/rootless/tips/#exposing-privileged-ports. (`sudo setcap cap_net_bind_service=ep $(which rootlesskit); systemctl --user restart docker`). If you require the correct source IP you must expose them via `/etc/sysctl.conf`, [see note below](#note-regarding-docker-network-driver).
1. Use the official AIO startup command but use `--volume $XDG_RUNTIME_DIR/docker.sock:/var/run/docker.sock:ro` instead of `--volume /var/run/docker.sock:/var/run/docker.sock:ro` and also add `--env WATCHTOWER_DOCKER_SOCKET_PATH=$XDG_RUNTIME_DIR/docker.sock` to the initial container startup (which is needed for mastercontainer updates to work correctly). When you are using Portainer to deploy AIO, the variable `$XDG_RUNTIME_DIR` is not available. In this case, it is necessary to manually add the path (e.g. `/run/user/1000/docker.sock`) to the Docker compose file to replace the `$XDG_RUNTIME_DIR` variable. If you are not sure how to get the path, you can run on the host: `echo $XDG_RUNTIME_DIR`.
1. Now everything should work like without docker rootless. You can consider using docker-compose for this or running it behind a reverse proxy. Basically the only thing that needs to be adjusted always in the startup command or compose.yaml file (after installing docker rootles) are things that are mentioned in point 3.
1. ⚠️ **Important:** Please read through all notes below!

36
php/composer.lock generated
View File

@@ -4039,16 +4039,16 @@
},
{
"name": "symfony/console",
"version": "v6.4.35",
"version": "v6.4.36",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "49257c96304c508223815ee965c251e7c79e614e"
"reference": "9f481cfb580db8bcecc9b2d4c63f3e13df022ad5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/49257c96304c508223815ee965c251e7c79e614e",
"reference": "49257c96304c508223815ee965c251e7c79e614e",
"url": "https://api.github.com/repos/symfony/console/zipball/9f481cfb580db8bcecc9b2d4c63f3e13df022ad5",
"reference": "9f481cfb580db8bcecc9b2d4c63f3e13df022ad5",
"shasum": ""
},
"require": {
@@ -4113,7 +4113,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v6.4.35"
"source": "https://github.com/symfony/console/tree/v6.4.36"
},
"funding": [
{
@@ -4133,20 +4133,20 @@
"type": "tidelift"
}
],
"time": "2026-03-06T13:31:08+00:00"
"time": "2026-03-27T15:30:51+00:00"
},
{
"name": "symfony/filesystem",
"version": "v8.0.6",
"version": "v8.0.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
"reference": "7bf9162d7a0dff98d079b72948508fa48018a770"
"reference": "66b769ae743ce2d13e435528fbef4af03d623e5a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/7bf9162d7a0dff98d079b72948508fa48018a770",
"reference": "7bf9162d7a0dff98d079b72948508fa48018a770",
"url": "https://api.github.com/repos/symfony/filesystem/zipball/66b769ae743ce2d13e435528fbef4af03d623e5a",
"reference": "66b769ae743ce2d13e435528fbef4af03d623e5a",
"shasum": ""
},
"require": {
@@ -4183,7 +4183,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/filesystem/tree/v8.0.6"
"source": "https://github.com/symfony/filesystem/tree/v8.0.8"
},
"funding": [
{
@@ -4203,7 +4203,7 @@
"type": "tidelift"
}
],
"time": "2026-02-25T16:59:43+00:00"
"time": "2026-03-30T15:14:47+00:00"
},
{
"name": "symfony/finder",
@@ -4609,16 +4609,16 @@
},
{
"name": "symfony/string",
"version": "v7.4.6",
"version": "v7.4.8",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
"reference": "9f209231affa85aa930a5e46e6eb03381424b30b"
"reference": "114ac57257d75df748eda23dd003878080b8e688"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/string/zipball/9f209231affa85aa930a5e46e6eb03381424b30b",
"reference": "9f209231affa85aa930a5e46e6eb03381424b30b",
"url": "https://api.github.com/repos/symfony/string/zipball/114ac57257d75df748eda23dd003878080b8e688",
"reference": "114ac57257d75df748eda23dd003878080b8e688",
"shasum": ""
},
"require": {
@@ -4676,7 +4676,7 @@
"utf8"
],
"support": {
"source": "https://github.com/symfony/string/tree/v7.4.6"
"source": "https://github.com/symfony/string/tree/v7.4.8"
},
"funding": [
{
@@ -4696,7 +4696,7 @@
"type": "tidelift"
}
],
"time": "2026-02-09T09:33:46+00:00"
"time": "2026-03-24T13:12:05+00:00"
},
{
"name": "vimeo/psalm",

View File

@@ -1,4 +1,4 @@
document.addEventListener("DOMContentLoaded", function(event) {
window.addEventListener("load", function(event) {
if (document.hasFocus()) {
// hide reload button if the site reloads automatically
let list = document.getElementsByClassName("reload button");
@@ -9,7 +9,7 @@ document.addEventListener("DOMContentLoaded", function(event) {
// set timeout for reload
setTimeout(function(){
window.location.reload(1);
window.location.reload(true);
}, 5000);
} else {
window.addEventListener("beforeunload", function() {

View File

@@ -121,10 +121,8 @@ document.addEventListener("DOMContentLoaded", function () {
function handleDockerSocketProxyWarning() {
if (document.getElementById("docker-socket-proxy").checked) {
// TODO: remove the line below and uncomment the lines further down once https://github.com/nextcloud/app_api/pull/800 is included
alert('⚠️ Warning! Enabling this container comes with possible Security problems since you are exposing the docker socket and all its privileges to the Nextcloud container. Enable this only if you are sure what you are doing!');
// alert('⚠️ The docker socket proxy container is deprecated. Please use the HaRP (High-availability Reverse Proxy for Nextcloud ExApps) instead!');
// document.getElementById("docker-socket-proxy").checked = false
alert('⚠️ The docker socket proxy container is deprecated. Please use the HaRP (High-availability Reverse Proxy for Nextcloud ExApps) instead!');
document.getElementById("docker-socket-proxy").checked = false
}
}

View File

@@ -36,11 +36,11 @@ function showPassword(id) {
showError("Server error. Please check the mastercontainer logs for details. This page will reload after 10s automatically. Then you can check the mastercontainer logs.");
// Reload after 10s since it is expected that the updated view is shown (e.g. after starting containers)
setTimeout(function(){
window.location.reload(1);
window.location.reload(true);
}, 10000);
} else {
// If the responose is not one of the above, we should reload to show the latest content
window.location.reload(1);
window.location.reload(true);
}
}
@@ -84,7 +84,7 @@ function showPassword(id) {
document.getElementById('overlay-log')?.classList.add('visible');
// Reload the page after the response was fully loaded into the iframe.
document.querySelector('iframe[name="overlay-log"]').addEventListener('load', () => {
location.reload();
location.reload(true);
});
};
}

View File

@@ -96,7 +96,7 @@ class LogViewer {
}
scrollToBottom() {
window.scrollTo(0, document.body.scrollHeight);
this.logElem.scrollTop = this.logElem.scrollHeight;
}
initAutoloadingControls() {

View File

@@ -26,6 +26,7 @@ readonly class AuthManager {
public function SetAuthState(bool $isLoggedIn) : void {
if (!$this->IsAuthenticated() && $isLoggedIn === true) {
session_regenerate_id(true);
$date = new DateTime();
$dateTime = $date->getTimestamp();
$_SESSION['date_time'] = $dateTime;

View File

@@ -657,7 +657,7 @@ class ConfigurationManager
throw new InvalidSettingConfigurationException("Please enter your current password.");
}
if ($currentPassword !== $this->password) {
if (!hash_equals($this->password, $currentPassword)) {
throw new InvalidSettingConfigurationException("The entered current password is not correct.");
}

View File

@@ -27,7 +27,7 @@
<script type="text/javascript" src="timezone.js"></script>
{# js for optional containers and additional containers forms #}
<script type="text/javascript" src="containers-form-submit.js?v6"></script>
<script type="text/javascript" src="containers-form-submit.js?v7"></script>
{% set hasBackupLocation = borg_backup_host_location or borg_remote_repo %}
{% set isAnyRunning = false %}
@@ -635,7 +635,7 @@
{% endif %}
{% if isApacheStarting == true or is_backup_container_running == true or isWatchtowerRunning == true or is_daily_backup_running == true %}
<script type="text/javascript" src="automatic_reload.js"></script>
<script type="text/javascript" src="automatic_reload.js?v2"></script>
{% else %}
<script type="text/javascript" src="before-unload.js"></script>
{% endif %}

View File

@@ -1 +1 @@
12.9.0
12.9.2

View File

@@ -198,7 +198,6 @@
>
<label for="docker-socket-proxy">Docker Socket Proxy (needed for <a target="_blank" href="https://github.com/cloud-py-api/app_api#nextcloud-appapi">Nextcloud App API</a>) ⚠️ The docker socket proxy container is deprecated. Please use the HaRP (High-availability Reverse Proxy for Nextcloud ExApps) instead!</label>
</p>
{#
<p>
<input
type="checkbox"
@@ -213,7 +212,6 @@
>
<label for="harp">HaRP (<a target="_blank" href="https://github.com/nextcloud/HaRP">High-availability Reverse Proxy</a> for Nextcloud ExApps)</label>
</p>
#}
<p>
<input
type="checkbox"

View File

@@ -3,7 +3,7 @@
<title>AIO</title>
<link rel="stylesheet" href="style.css?v9" media="all" />
<link rel="icon" href="img/favicon.png">
<script type="text/javascript" src="forms.js?v1"></script>
<script type="text/javascript" src="forms.js?v2"></script>
<script type="text/javascript" src="toggle-dark-mode.js?v1"></script>
</head>

View File

@@ -3,15 +3,25 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<link rel="stylesheet" href="style.css">
<style>
body {
html, body {
height: 100%;
overflow: hidden;
padding: 0;
margin: 0;
}
pre {
height: 100%;
overflow: auto;
margin: 0;
padding: 1rem;
box-sizing: border-box;
}
#floating-box {
position: sticky;
position: fixed;
top: 1rem;
float: right;
right: 1rem;
width: 20rem;
max-width: calc(100vw - 2rem);
z-index: 10;
display: flex;
justify-content: end;
align-items: center;
@@ -43,7 +53,7 @@
transition: opacity 1s, display 1s allow-discrete;
}
</style>
<script src="log-view.js"></script>
<script src="log-view.js?v1"></script>
</head>
<body data-container-id="{{ id }}">
<div id="floating-box">

View File

@@ -151,7 +151,7 @@ sudo docker run \
- `--sig-proxy=false` — prevents Ctrl+C in the attached terminal from stopping the container.
- `--name nextcloud-aio-mastercontainer` — the container name. Do not change this name; mastercontainer updates rely on it.
- `--restart always` — ensures the container restarts automatically with the Docker daemon.
- `--publish 80:80` — publishes container port 80 on host port 80 (used for ACME http-challenge when obtaining certificates). Not required if you run AIO behind a reverse proxy.
- `--publish 80:80` — publishes container port 80 on host port 80 (used for ACME http-challenge when obtaining certificates, used for for the AIO-interface running inside the mastercontainer). Not required if you run AIO behind a reverse proxy.
- `--publish 8080:8080` — publishes the AIO interface (self-signed certificate) on host port 8080. You may map a different host port if 8080 is in use (e.g. `--publish 8081:8080`).
- `--publish 8443:8443` — publishes the AIO interface with a valid certificate on host port 8443 (requires ports 80 and 8443 to be reachable and a domain pointing to your server). Not required if you run AIO behind a reverse proxy.
- `--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config` — stores mastercontainer configuration in the named Docker volume. Do not change this volume name; built-in backups depend on it.