From b9a5042db19c60c03507dab0f47d841dba75d8e7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 12 May 2026 11:12:01 +0000 Subject: [PATCH] feat: add cpu_shares to mastercontainer for better responsiveness under heavy load Agent-Logs-Url: https://github.com/nextcloud/all-in-one/sessions/fb6684cd-3659-4b09-9cca-72d1c42e736c Co-authored-by: szaimen <42591237+szaimen@users.noreply.github.com> --- compose.yaml | 1 + multiple-instances.md | 1 + readme.md | 3 +++ reverse-proxy.md | 3 +++ 4 files changed, 8 insertions(+) diff --git a/compose.yaml b/compose.yaml index d3220cb0..b974764d 100644 --- a/compose.yaml +++ b/compose.yaml @@ -4,6 +4,7 @@ services: image: ghcr.io/nextcloud-releases/all-in-one:latest # This is the container image used. You can switch to ghcr.io/nextcloud-releases/all-in-one:beta if you want to help testing new releases. See https://github.com/nextcloud/all-in-one#how-to-switch-the-channel init: true # This setting makes sure that signals from main process inside the container are correctly forwarded to children. See https://docs.docker.com/reference/compose-file/services/#init restart: always # This makes sure that the container starts always together with the host OS. See https://docs.docker.com/reference/compose-file/services/#restart + cpu_shares: 1024 # This setting ensures the mastercontainer gets a higher CPU share compared to other containers for better responsiveness under heavy load. See https://docs.docker.com/reference/compose-file/services/#cpu_shares container_name: nextcloud-aio-mastercontainer # This line is not allowed to be changed as otherwise AIO will not work correctly volumes: - nextcloud_aio_mastercontainer:/mnt/docker-aio-config # This line is not allowed to be changed as otherwise the built-in backup solution will not work diff --git a/multiple-instances.md b/multiple-instances.md index a0822739..91ad8404 100644 --- a/multiple-instances.md +++ b/multiple-instances.md @@ -144,6 +144,7 @@ apt install --no-install-recommends qemu-system qemu-utils libvirt-clients libvi --name nextcloud-aio-mastercontainer \ --restart always \ --publish 8080:8080 \ + --cpu-shares 1024 \ --env APACHE_PORT=11000 \ --env APACHE_IP_BINDING=0.0.0.0 \ --env TALK_PORT=3478 \ diff --git a/readme.md b/readme.md index 0666472e..b0e85f1f 100644 --- a/readme.md +++ b/readme.md @@ -202,6 +202,7 @@ sudo docker run \ --publish 80:80 \ --publish 8080:8080 \ --publish 8443:8443 \ + --cpu-shares 1024 \ --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \ --volume /var/run/docker.sock:/var/run/docker.sock:ro \ ghcr.io/nextcloud-releases/all-in-one:latest @@ -218,6 +219,7 @@ sudo docker run \ - `--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. + - `--cpu-shares 1024` — sets the CPU shares for the mastercontainer to ensure it remains responsive under heavy load. The default value is 1024; increase this value (e.g. `2048`) to give the mastercontainer higher CPU priority relative to other containers. - `--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. - `--volume /var/run/docker.sock:/var/run/docker.sock:ro` — mounts the Docker socket (read-only) so the mastercontainer can manage other containers. On Windows/macOS or when using rootless Docker, this path may need adjustment; see the platform-specific docs. If you change the socket path, also set `WATCHTOWER_DOCKER_SOCKET_PATH` accordingly. If you prefer not to expose the socket, see the manual-install documentation: [Manual install without docker socket access](https://github.com/nextcloud/all-in-one/tree/main/manual-install) - `ghcr.io/nextcloud-releases/all-in-one:latest` — the mastercontainer image. @@ -703,6 +705,7 @@ docker run ^ --publish 80:80 ^ --publish 8080:8080 ^ --publish 8443:8443 ^ +--cpu-shares 1024 ^ --volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config ^ --volume //var/run/docker.sock:/var/run/docker.sock:ro ^ ghcr.io/nextcloud-releases/all-in-one:latest diff --git a/reverse-proxy.md b/reverse-proxy.md index ea81c844..cdee1f66 100644 --- a/reverse-proxy.md +++ b/reverse-proxy.md @@ -1105,6 +1105,7 @@ sudo docker run \ --name nextcloud-aio-mastercontainer \ --restart always \ --publish 8080:8080 \ +--cpu-shares 1024 \ --env APACHE_PORT=11000 \ --env APACHE_IP_BINDING=0.0.0.0 \ --env APACHE_ADDITIONAL_NETWORK="" \ @@ -1124,6 +1125,7 @@ ghcr.io/nextcloud-releases/all-in-one:latest - `--name nextcloud-aio-mastercontainer` This is the name of the container. This line is not allowed to be changed, since mastercontainer updates would fail. - `--restart always` This is the "restart policy". `always` means that the container should always get started with the Docker daemon. See the Docker documentation for further detail about restart policies: https://docs.docker.com/config/containers/start-containers-automatically/ - `--publish 8080:8080` This means that port 8080 of the container should get published on the host using port 8080. This port is used for the AIO interface and uses a self-signed certificate by default. You can also use a different host port if port 8080 is already used on your host, for example `--publish 8081:8080` (only the first port can be changed for the host, the second port is for the container and must remain at 8080). +- `--cpu-shares 1024` This sets the CPU share weighting for the mastercontainer to ensure it remains responsive under heavy load. You can increase this value (e.g. `2048`) to give the mastercontainer a higher CPU priority relative to other containers. - `--env APACHE_PORT=11000` This is the port that is published on the host that runs Docker and Nextcloud AIO at which the reverse proxy should point at. - `--env APACHE_IP_BINDING=0.0.0.0` This can be modified to allow access to the published port on the host only from certain ip-addresses. [See this documentation](#3-limit-the-access-to-the-apache-container) - `--env APACHE_ADDITIONAL_NETWORK=""` This can be used to put the sibling apache container that is created by AIO into a specified network - useful if your reverse proxy runs as a container on the same host. [See this documentation](#adapting-the-sample-web-server-configurations-below) @@ -1154,6 +1156,7 @@ docker run ^ --name nextcloud-aio-mastercontainer ^ --restart always ^ --publish 8080:8080 ^ +--cpu-shares 1024 ^ --env APACHE_PORT=11000 ^ --env APACHE_IP_BINDING=0.0.0.0 ^ --env APACHE_ADDITIONAL_NETWORK="" ^