[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-8193":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":20,"compositeScore":21,"rankGlobal":10,"rankLanguage":10,"license":22,"archived":23,"fork":23,"defaultBranch":24,"hasWiki":23,"hasPages":25,"topics":26,"createdAt":10,"pushedAt":10,"updatedAt":30,"readmeContent":31,"aiSummary":32,"trendingCount":16,"starSnapshotCount":16,"syncStatus":33,"lastSyncTime":34,"discoverSource":35},8193,"all-in-one","nextcloud\u002Fall-in-one","nextcloud","📦 The official Nextcloud installation method. Provides easy deployment and maintenance with most features included in this one Nextcloud instance.","https:\u002F\u002Fnextcloud.com\u002Fblog\u002Fhow-to-install-the-nextcloud-all-in-one-on-linux\u002F",null,"PHP",9904,1046,65,18,0,12,57,199,61,40.06,"GNU Affero General Public License v3.0",false,"main",true,[27,28,7,29],"backup","docker","restore","2026-06-12 02:01:50","# Nextcloud All-in-One\n\n> [!NOTE]\n> Nextcloud AIO is actively looking for contributors. See [the forum post](https:\u002F\u002Fhelp.nextcloud.com\u002Ft\u002Fnextcloud-aio-is-looking-for-contributors\u002F205234).\n\nThe official Nextcloud installation method. Nextcloud AIO provides easy deployment and maintenance with most features included in this one Nextcloud instance. \n\nIncluded are:\n- Nextcloud\n- High performance backend for Nextcloud Files (Client Push)\n- Redis & APCU for performant caching\n- PostgreSQL as database\n- Nextcloud Office (optional)\n- High performance backend for Nextcloud Talk and TURN-server (optional)\n- Nextcloud Talk Recording-server (optional)\n- Backup solution (optional, based on [BorgBackup](https:\u002F\u002Fgithub.com\u002Fborgbackup\u002Fborg#what-is-borgbackup))\n- Imaginary (optional, for previews of heic, heif, illustrator, pdf, svg, tiff and webp)\n- ClamAV (optional, Antivirus backend for Nextcloud)\n- Fulltextsearch (optional)\n- Whiteboard (optional)\n- Docker Socket Proxy (optional, needed for [Nextcloud App API](https:\u002F\u002Fgithub.com\u002Fcloud-py-api\u002Fapp_api#nextcloud-appapi))\n- [Community containers](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Ftree\u002Fmain\u002Fcommunity-containers#community-containers)\n\u003Cdetails>\u003Csummary>And much more:\u003C\u002Fsummary>\n\n- Simple web interface included that enables easy installation and maintenance\n- [Easy updates included](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-update-the-containers)\n- Update and backup notifications included\n- Daily backups can be enabled from the AIO interface which also allows updating all containers, Nextcloud and its apps afterwards automatically\n- Instance restore from backup archive via the AIO interface included (you only need the archive and the password in order to restore the whole instance on a new AIO instance)\n- APCu as local cache\n- Redis as distributed cache and for file locking\n- Postgresql as database\n- PHP-FPM with performance-optimized config (e.g. Opcache and JIT enabled by default)\n- A+ security in Nextcloud security scan\n- Ready to be used behind existing [Reverse proxies](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fblob\u002Fmain\u002Freverse-proxy.md)\n- Can be used behind [Cloudflare Tunnel](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-run-nextcloud-behind-a-cloudflare-tunnel)\n- Can be used via [Tailscale](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F6817)\n- Ready for big file uploads up to 10 GB on public links, [adjustable](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-adjust-the-upload-limit-for-nextcloud) (logged in users can upload much bigger files using the webinterface or the mobile\u002Fdesktop clients since chunking is used in that case)\n- PHP and web server timeouts set to 3600s, [adjustable](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-adjust-the-max-execution-time-for-nextcloud) (important for big file uploads)\n- Defaults to a max of 512 MB RAM per PHP process, [adjustable](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-adjust-the-php-memory-limit-for-nextcloud)\n- Automatic TLS included (by using Let's Encrypt)\n- Brotli compression enabled by default for javascript, css and svg files which reduces Nextcloud load times\n- HTTP\u002F2 and HTTP\u002F3 enabled\n- \"Pretty URLs\" for Nextcloud are enabled by default (removes the index.php from all links)\n- Video previews work out of the box and when Imaginary is enabled, many recent image formats as well!\n- Only one domain and not multiple domains are required for everything to work (usually you would need to have one domain for each service which is much more complex)\n- [Adjustable location](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-change-the-default-location-of-nextclouds-datadir) of Nextcloud's datadir (e.g. good for easy file-sharing with host system on Windows and MacOS)\n- By default confined (good for security) but can [allow access to additional storages](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host) in order to enable the usage of the local external storage feature\n- Possibility included to [adjust default installed Nextcloud apps](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup)\n- Nextcloud installation is not read only - that means you can apply patches if you should need them (instead of having to wait for the next release for them getting applied)\n- `ffmpeg`, `smbclient` and `nodejs` are included by default\n- Possibility included to [permanently add additional OS packages into the Nextcloud container](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup) without having to build your own Docker image\n- Possibility included to [permanently add additional PHP extensions into the Nextcloud container](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-add-php-extensions-permanently-to-the-nextcloud-container) without having to build your own Docker image\n- Possibility included to [pass the needed device for hardware transcoding](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-enable-hardware-acceleration-for-nextcloud) to the Nextcloud container\n- Possibility included to [store all docker related files on a separate drive](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-store-the-filesinstallation-on-a-separate-drive)\n- [LDAP can be used as user backend for Nextcloud](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Ftree\u002Fmain#ldap)\n- Migration from any former Nextcloud installation to AIO is possible. See [this documentation](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fblob\u002Fmain\u002Fmigration.md). \n- Migration in the other direction (e.g. from AIO to a VM-based installation) is also possible.\n- [Fail2Ban can be added](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#fail2ban)\n- [phpMyAdmin, Adminer or pgAdmin can be added](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#phpmyadmin-adminer-or-pgadmin)\n- [Mail server can be added](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#mail-server)\n- Nextcloud can be [accessed locally via the domain](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-can-i-access-nextcloud-locally)\n- Can [be installed locally](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fblob\u002Fmain\u002Flocal-instance.md) (if you don't want or cannot make the instance publicly reachable)\n- [IPv6-ready](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fblob\u002Fmain\u002Fdocker-ipv6-support.md)\n- Can be used with [Docker rootless](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fblob\u002Fmain\u002Fdocker-rootless.md) (good for additional security)\n- Runs on all platforms Docker supports (e.g. also on Windows and Macos)\n- Included containers easy to debug by having the possibility to check their logs directly from the AIO interface\n- [Docker-compose ready](.\u002Fcompose.yaml)\n- Can be installed [without a container having access to the docker socket](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Ftree\u002Fmain\u002Fmanual-install)\n- Can be installed with [Docker Swarm](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#can-i-run-this-with-docker-swarm)\n- Can be installed with [Kubernetes](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Ftree\u002Fmain\u002Fnextcloud-aio-helm-chart)\n- Almost all included containers Alpine Linux based (good for security and size)\n- Many of the included containers run as non-root user (good for security)\n- Many of the included containers have a read-only root-FS (good for security)\n- Included containers run in its own docker network (good for security) and only really necessary ports are exposed on the host\n- [Multiple instances on one server](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fblob\u002Fmain\u002Fmultiple-instances.md) are doable without having to deal with VMs\n- Adjustable backup path or remote borg repository from the AIO interface (good to put the backups e.g. on a different drive if using a local backup path)\n- Possibility included to also back up external Docker Volumes or Host paths (can be used for host backups)\n- Borg backup can be completely managed from the AIO interface, including backup creation, backup restore, backup integrity check and integrity-repair\n- Other forms of [remote backup](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#are-remote-borg-backups-supported) are indirectly possible\n- Updates and backups can be [run from an external script](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-stopstartupdate-containers-or-trigger-the-daily-backup-from-a-script-externally). See [this documentation](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-enable-automatic-updates-without-creating-a-backup-beforehand) for a complete example.\n\n\u003C\u002Fdetails>\n\n## Screenshots\n| First setup | After installation |\n|---|---|\n| ![image](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F6ef5d7b5-86f2-402c-bc6c-b633af2ca7dd) | ![image](https:\u002F\u002Fgithub.com\u002Fuser-attachments\u002Fassets\u002F939d0fdf-436f-433d-82d3-27548263a040) |\n\n## Architecture overview\n\n```mermaid\nflowchart TB\n    %% ── Styles ───────────────────────────────────────────────────────────────────\n    classDef user      fill:#FFF3CD,stroke:#F0AD4E,color:#333\n    classDef master    fill:#E8D5F5,stroke:#9B59B6,color:#222\n    classDef core      fill:#D6EAF8,stroke:#2E86C1,color:#222\n    classDef opt       fill:#D5F5E3,stroke:#27AE60,color:#222\n    classDef community fill:#FDEBD0,stroke:#E67E22,color:#222\n    classDef access    fill:#EAFAF1,stroke:#1E8449,color:#222\n\n    %% ── Top row: people ─────────────────────────────────────────────────────────\n    YOU([\"🧑‍💻 Admin\\n(You)\"]):::user\n    ENDUSER([\"🧑‍🤝‍🧑 Users\\n(family \u002F team)\"]):::user\n\n    %% ── Everything that runs inside AIO ─────────────────────────────────────────\n    subgraph AIO[\"  🐳  Nextcloud AIO  \"]\n        MC([\"🧠 Mastercontainer\\n─────────────────────────\\n▸ AIO interface :8080 \u002F :8443\\n▸ Manages & updates containers\\n▸ Handles backups\"]):::master\n\n        subgraph CORE[\"  📦  Core Stack  (auto-started)  \"]\n            PROXY([\"🔀 Apache\\nProxy & HTTPS\"]):::core\n            NC([\"☁️ Nextcloud\\nApp Server\"]):::core\n            DB([\"🗄️ PostgreSQL\\nDatabase\"]):::core\n            CACHE([\"⚡ Redis\\nCache\"]):::core\n            PUSH([\"🔔 Notify Push\\nReal-time sync\"]):::core\n        end\n\n        subgraph OPT[\"  🧩  Optional Built-in Containers  (enable in AIO interface)  \"]\n            COLLA([\"📄 Nextcloud Office\"]):::opt\n            OO([\"📄 OnlyOffice\\nDocument Server\"]):::opt\n            TALK([\"🎙️ Talk\\nVideo & Voice calls\"]):::opt\n            TALKREC([\"🎬 Talk Recording\"]):::opt\n            FTS([\"🔎 Full-text Search\\n(Elasticsearch)\"]):::opt\n            IMAG([\"🖼️ Imaginary\\nImage previews\"]):::opt\n            CLAM([\"🦠 ClamAV\\nAntivirus\"]):::opt\n            WB([\"🖊️ Whiteboard\"]):::opt\n        end\n\n        COMM([\"🌍 Community Containers\\n──────────────────────\\n30+ optional add-ons\\nSee community-containers\u002F\"]):::community\n        click COMM \"https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Ftree\u002Fmain\u002Fcommunity-containers#community-containers\" \"Browse community containers\"\n    end\n\n    %% ── Result node (outside AIO) ────────────────────────────────────────────────\n    NC_URL([\"🌐 https:\u002F\u002Fyour-domain.com\\n✅ Nextcloud — ready to use!\"]):::access\n\n    %% ── Flows ────────────────────────────────────────────────────────────────────\n    YOU -->|\"① open :8080 or :8443 in browser\"| MC\n    MC -->|\"② auto-starts & wires up\"| CORE\n    MC -. \"③ enable in AIO interface\" .-> OPT\n    MC -. \"④ add via AIO interface\" .-> COMM\n\n    PROXY --> NC\n    NC --- DB\n    NC --- CACHE\n    NC --- PUSH\n    OPT -->|\"integrate with\"| NC\n    COMM -.->|\"integrate with\"| NC\n\n    CORE -->|\"⑤ stack is ready!\"| NC_URL\n    ENDUSER -->|\"⑥ browser \u002F app\"| NC_URL\n    YOU -->|\"⑥ use normally\"| NC_URL\n```\n\n## How to use this?\n\nThe steps below are written for Linux. For platform-specific guidance see:\n- macOS: [How to run AIO on macOS?](#how-to-run-aio-on-macos)\n- Windows: [How to run AIO on Windows?](#how-to-run-aio-on-windows)\n- Unraid: [How to run AIO on Unraid?](#how-to-run-aio-on-unraid)\n- Synology DSM: [How to run AIO on Synology DSM?](#how-to-run-aio-on-synology-dsm)\n- TrueNAS SCALE: [Can I run AIO on TrueNAS SCALE?](#can-i-run-aio-on-truenas-scale)\n\n> [!IMPORTANT]  \n> These instructions assume there is no existing web server or reverse proxy (for example Apache, Nginx, Caddy, or Cloudflare Tunnel) that you intend to place in front of AIO. If you plan to run AIO behind an existing web server or reverse proxy, follow the AIO reverse proxy documentation: [Reverse proxy docs](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fblob\u002Fmain\u002Freverse-proxy.md)\n\nYou're encouraged to skim the attached [FAQ](#faq). While we've tried to make things straightforward, Nextcloud is a large and flexible platform. Reading the FAQ will save you time, particularly if edge cases come up.\n\n> [!TIP]  \n> Don't worry about getting everything perfect on the first try — test deployments are cheap and disposable.\n\n1. Install Docker on your Linux host by following the official documentation: [Docker install — supported platforms](https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002F#supported-platforms)\n\n> [!WARNING]  \n> Snap-based Docker installations are not supported. Make sure you are not using a snap-based Docker installation (generally only applicable to Ubuntu). To check, run:\n> ```sh\n> sudo docker info | grep \"Docker Root Dir\" | grep \"\u002Fvar\u002Fsnap\u002Fdocker\u002F\"\n> ```\n> If you see the following output:\n> ```\n> \u002Fvar\u002Fsnap\u002Fdocker\u002F\n> ```\n> you should migrate to a standard Docker installation and remove the snap-based package before proceeding: [Install Docker on Ubuntu](https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Finstall\u002Fubuntu\u002F).\n>\n> ⚠️ To avoid losing data or interrupting services, only remove the Docker snap after you are certain you're not running any existing containers in it.\n>\n> Consult the official Docker documentation or other guides for instructions on migrating existing containers. Once you are certain it's safe, remove the snap-based Docker installation with:\n> ```sh\n> sudo snap remove docker\n> ```\n\n2. If you need IPv6 support, enable it by following: [Docker IPv6 support for AIO](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fblob\u002Fmain\u002Fdocker-ipv6-support.md)\n\n3. AIO uses a special `mastercontainer` to orchestrate the various pieces of the Nextcloud stack. To start AIO, launch the `mastercontainer` with the command below:\n\n```sh\n# For Linux and without a web server or reverse proxy already in place:\nsudo docker run \\\n  --init \\\n  --sig-proxy=false \\\n  --name nextcloud-aio-mastercontainer \\\n  --restart always \\\n  --publish 80:80 \\\n  --publish 8080:8080 \\\n  --publish 8443:8443 \\\n  --volume nextcloud_aio_mastercontainer:\u002Fmnt\u002Fdocker-aio-config \\\n  --volume \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro \\\n  ghcr.io\u002Fnextcloud-releases\u002Fall-in-one:latest\n```\n\n\u003Cdetails>\n  \u003Csummary>Explanation of the command\u003C\u002Fsummary>\n\n  - `sudo docker run` — starts a new Docker container. Omit `sudo` if your user is in the `docker` group.  \n  - `--init` — runs an init process inside the container to handle zombie processes.  \n  - `--sig-proxy=false` — prevents Ctrl+C in the attached terminal from stopping the container.  \n  - `--name nextcloud-aio-mastercontainer` — the container name. Do not change this name; mastercontainer updates rely on it.  \n  - `--restart always` — ensures the container restarts automatically with the Docker daemon.  \n  - `--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.\n  - `--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`).  \n  - `--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.  \n  - `--volume nextcloud_aio_mastercontainer:\u002Fmnt\u002Fdocker-aio-config` — stores mastercontainer configuration in the named Docker volume. Do not change this volume name; built-in backups depend on it.  \n  - `--volume \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock:ro` — mounts the Docker socket (read-only) so the mastercontainer can manage other containers. On Windows\u002FmacOS 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:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Ftree\u002Fmain\u002Fmanual-install)  \n  - `ghcr.io\u002Fnextcloud-releases\u002Fall-in-one:latest` — the mastercontainer image.\n\n  Additional options can be set with environment variables (for example `--env NEXTCLOUD_DATADIR=\"\u002Fmnt\u002Fncdata\"` to change Nextcloud's datadir on first startup). See the Customization section and example compose file: [compose.yaml](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fblob\u002Fmain\u002Fcompose.yaml) for more options.\n\u003C\u002Fdetails>\n\n> [!TIP]\n> If you want Nextcloud’s data directory in a different location than the default Docker volume, see \"How to change the default location of Nextcloud's Datadir\" in this README: [How to change the default location of Nextcloud's Datadir](#how-to-change-the-default-location-of-nextclouds-datadir)\n\n> [!NOTE]\n> For production usage (and ease of upgrades and changes), we suggest using the example [Compose file](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fblob\u002Fmain\u002Fcompose.yaml) rather than `docker run`.\n\n4. After the initial startup, open the Nextcloud AIO interface on port 8080 of this server **by IP address**, for example:\n```txt\nhttps:\u002F\u002F192.168.5.5:8080\n```\n\n> [!CAUTION]\n> Use an IP address (not a domain) when accessing the AIO interface on port 8080. Accessing via a domain may work temporarily but is likely to break later due to HSTS.\n\nPort 8080 uses a self-signed certificate that you must accept in your browser.\n\nIt is also possible to obtain a valid certificate automatically if your firewall\u002Frouter forwards ports 80 and 8443 and you point a domain to your server. In that case, access the AIO interface using the dedicated port for this purpose (8443), for example:\n```txt\nhttps:\u002F\u002Fyour-domain-that-points-to-this-server.tld:8443\n```\n\n5. If you enable Nextcloud Talk, open port `3478\u002FTCP` and `3478\u002FUDP` in your firewall\u002Frouter for the Talk (TURN) container.\n\n# FAQ\n- [TOC](#faq)\n    - [Where can I find additional documentation?](#where-can-i-find-additional-documentation)\n    - [How does it work?](#how-does-it-work)\n    - [How to contribute?](#how-to-contribute)\n    - [How many users are possible?](#how-many-users-are-possible)\n- [Network](#network)\n    - [Are reverse proxies supported?](#are-reverse-proxies-supported)\n    - [Which ports are mandatory to be open in your firewall\u002Frouter?](#which-ports-are-mandatory-to-be-open-in-your-firewallrouter)\n    - [Explanation of used ports](#explanation-of-used-ports)\n    - [Notes on Cloudflare (proxy\u002Ftunnel)](#notes-on-cloudflare-proxytunnel)\n    - [How to run Nextcloud behind a Cloudflare Tunnel?](#how-to-run-nextcloud-behind-a-cloudflare-tunnel)\n    - [How to run Nextcloud via Tailscale?](#how-to-run-nextcloud-via-tailscale)\n    - [How to get Nextcloud running using the ACME DNS-challenge?](#how-to-get-nextcloud-running-using-the-acme-dns-challenge)\n    - [How to run Nextcloud locally? No domain wanted, or wanting intranet access within your LAN.](#how-to-run-nextcloud-locally-no-domain-wanted-or-wanting-intranet-access-within-your-lan)\n    - [Can I use an ip-address for Nextcloud instead of a domain?](#can-i-use-an-ip-address-for-nextcloud-instead-of-a-domain)\n    - [Can I run AIO offline or in an airgapped system?](#can-i-run-aio-offline-or-in-an-airgapped-system)\n    - [Are self-signed certificates supported for Nextcloud?](#are-self-signed-certificates-supported-for-nextcloud)\n    - [Can I use AIO with multiple domains?](#can-i-use-aio-with-multiple-domains)\n    - [Are other ports than the default 443 for Nextcloud supported?](#are-other-ports-than-the-default-443-for-nextcloud-supported)\n    - [Can I run Nextcloud in a subdirectory on my domain?](#can-i-run-nextcloud-in-a-subdirectory-on-my-domain)\n    - [How can I access Nextcloud locally?](#how-can-i-access-nextcloud-locally)\n    - [How to overwrite the local DNS resolution for some domains or add extra hosts to the containers?](#how-to-overwrite-the-local-dns-resolution-for-some-domains-or-add-extra-hosts-to-the-containers)\n    - [How to skip the domain validation?](#how-to-skip-the-domain-validation)\n    - [How to resolve firewall problems with Fedora Linux, RHEL OS, CentOS, SUSE Linux and others?](#how-to-resolve-firewall-problems-with-fedora-linux-rhel-os-centos-suse-linux-and-others)\n    - [What can I do to fix the internal or reserved ip-address error?](#what-can-i-do-to-fix-the-internal-or-reserved-ip-address-error)\n    - [How to adjust the MTU size of the docker network](#how-to-adjust-the-mtu-size-of-the-docker-network)\n- [Infrastructure](#infrastructure)\n    - [Which CPU architectures are supported?](#which-cpu-architectures-are-supported)\n    - [Disrecommended VPS providers](#disrecommended-vps-providers)\n    - [Recommended VPS](#recommended-vps)\n    - [Note on storage options](#note-on-storage-options)\n    - [Are there known problems when SELinux is enabled?](#are-there-known-problems-when-selinux-is-enabled)\n- [Customization](#customization)\n    - [How to adjust the internally used docker api version?](#how-to-adjust-the-internally-used-docker-api-version)\n    - [How to adjust the log level for AIO components?](#how-to-adjust-the-log-level-for-aio-components)\n    - [How to change the default location of Nextcloud's Datadir?](#how-to-change-the-default-location-of-nextclouds-datadir)\n    - [How to configure custom UID\u002FGID?](#how-to-configure-custom-uidgid)\n    - [How to move the appdata folder from the datadir to an ssd to improve the performance?](#how-to-move-the-appdata-folder-from-the-datadir-to-an-ssd-to-improve-the-performance)\n    - [How to store the files\u002Finstallation on a separate drive?](#how-to-store-the-filesinstallation-on-a-separate-drive)\n    - [How to limit the resource usage of AIO?](#how-to-limit-the-resource-usage-of-aio)\n    - [How to allow the Nextcloud container to access directories on the host?](#how-to-allow-the-nextcloud-container-to-access-directories-on-the-host)\n    - [How to adjust the Talk port?](#how-to-adjust-the-talk-port)\n    - [How to adjust the upload limit for Nextcloud?](#how-to-adjust-the-upload-limit-for-nextcloud)\n    - [How to adjust the max execution time for Nextcloud?](#how-to-adjust-the-max-execution-time-for-nextcloud)\n    - [How to adjust the PHP memory limit for Nextcloud?](#how-to-adjust-the-php-memory-limit-for-nextcloud)\n    - [How to change the Nextcloud apps that are installed on the first startup?](#how-to-change-the-nextcloud-apps-that-are-installed-on-the-first-startup)\n    - [How to add OS packages permanently to the Nextcloud container?](#how-to-add-os-packages-permanently-to-the-nextcloud-container)\n    - [How to add PHP extensions permanently to the Nextcloud container?](#how-to-add-php-extensions-permanently-to-the-nextcloud-container)\n    - [What about the pdlib PHP extension for the facerecognition app?](#what-about-the-pdlib-php-extension-for-the-facerecognition-app)\n    - [How to enable hardware acceleration for Nextcloud?](#how-to-enable-hardware-acceleration-for-nextcloud)\n        - [With open source drivers MESA for AMD, Intel and **new** drivers `Nouveau` for Nvidia](#with-open-source-drivers-mesa-for-amd-intel-and-new-drivers-nouveau-for-nvidia)\n        - [With proprietary drivers for Nvidia :warning: BETA](#with-proprietary-drivers-for-nvidia-warning-beta)\n    - [How to keep disabled apps?](#how-to-keep-disabled-apps)\n    - [How to trust user-defined Certification Authorities (CA)?](#how-to-trust-user-defined-certification-authorities-ca)\n    - [How to disable Collabora's Seccomp feature?](#how-to-disable-collaboras-seccomp-feature)\n    - [How to adjust the Fulltextsearch Java options?](#how-to-adjust-the-fulltextsearch-java-options)\n- [Guides](#guides)\n    - [How to run AIO on macOS?](#how-to-run-aio-on-macos)\n    - [How to run AIO on Windows?](#how-to-run-aio-on-windows)\n    - [How to run AIO on Unraid?](#how-to-run-aio-on-unraid)\n    - [How to run AIO on Synology DSM](#how-to-run-aio-on-synology-dsm)\n    - [How to run AIO with Portainer?](#how-to-run-aio-with-portainer)\n    - [Can I run AIO on TrueNAS SCALE?](#can-i-run-aio-on-truenas-scale)\n    - [How to run `occ` commands?](#how-to-run-occ-commands)\n    - [How to resolve `Security & setup warnings displays the \"missing default phone region\" after initial install`?](#how-to-resolve-security--setup-warnings-displays-the-missing-default-phone-region-after-initial-install)\n    - [How to run multiple AIO instances on one server?](#how-to-run-multiple-aio-instances-on-one-server)\n    - [Bruteforce protection FAQ](#bruteforce-protection-faq)\n    - [How to switch the channel?](#how-to-switch-the-channel)\n    - [How to update the containers?](#how-to-update-the-containers)\n    - [How to easily log in to the AIO interface?](#how-to-easily-log-in-to-the-aio-interface)\n    - [How to change the domain?](#how-to-change-the-domain)\n    - [How to properly reset the instance?](#how-to-properly-reset-the-instance)\n    - [Can I use a CIFS\u002FSMB share as Nextcloud's datadir?](#can-i-use-a-cifssmb-share-as-nextclouds-datadir)\n    - [Can I run this with Docker swarm?](#can-i-run-this-with-docker-swarm)\n    - [Can I run this with Kubernetes?](#can-i-run-this-with-kubernetes)\n    - [How to run this with Docker rootless?](#can-i-run-this-with-podman-instead-of-docker)\n    - [Can I run this with Podman instead of Docker?](#can-i-run-this-with-podman-instead-of-docker)\n    - [Access\u002FEdit Nextcloud files\u002Ffolders manually](#accessedit-nextcloud-filesfolders-manually)\n    - [How to edit Nextclouds config.php file with a texteditor?](#how-to-edit-nextclouds-configphp-file-with-a-texteditor)\n    - [How to change default files by creating a custom skeleton directory?](#how-to-change-default-files-by-creating-a-custom-skeleton-directory)\n    - [How to adjust the version retention policy and trashbin retention policy?](#how-to-adjust-the-version-retention-policy-and-trashbin-retention-policy)\n    - [How to enable automatic updates without creating a backup beforehand?](#how-to-enable-automatic-updates-without-creating-a-backup-beforehand)\n    - [Securing the AIO interface from unauthorized ACME challenges](#securing-the-aio-interface-from-unauthorized-acme-challenges)\n    - [How to migrate from an already existing Nextcloud installation to Nextcloud AIO?](#how-to-migrate-from-an-already-existing-nextcloud-installation-to-nextcloud-aio)\n- [Backup](#backup)\n    - [What is getting backed up by AIO's backup solution?](#what-is-getting-backed-up-by-aios-backup-solution)\n    - [How to adjust borgs retention policy?](#how-to-adjust-borgs-retention-policy)\n    - [How to migrate from AIO to AIO?](#how-to-migrate-from-aio-to-aio)\n    - [Are remote borg backups supported?](#are-remote-borg-backups-supported)\n    - [Failure of the backup container in LXC containers](#failure-of-the-backup-container-in-lxc-containers)\n    - [How to create the backup volume on Windows?](#how-to-create-the-backup-volume-on-windows)\n    - [Pro-tip: Backup archives access](#pro-tip-backup-archives-access)\n    - [Delete backup archives manually](#delete-backup-archives-manually)\n    - [Sync local backups regularly to another drive](#sync-local-backups-regularly-to-another-drive)\n    - [How to exclude Nextcloud's data directory or the preview folder from backup?](#how-to-exclude-nextclouds-data-directory-or-the-preview-folder-from-backup)\n    - [How to stop\u002Fstart\u002Fupdate containers or trigger the daily backup from a script externally?](#how-to-stopstartupdate-containers-or-trigger-the-daily-backup-from-a-script-externally)\n    - [How to disable the backup section?](#how-to-disable-the-backup-section)\n- [Addons](#addons)\n    - [Fail2ban](#fail2ban)\n    - [LDAP](#ldap)\n    - [Netdata](#netdata)\n    - [USER_SQL](#user_sql)\n    - [phpMyAdmin, Adminer or pgAdmin](#phpmyadmin-adminer-or-pgadmin)\n    - [Mail server](#mail-server)\n- [Miscellaneous](#miscellaneous)\n    - [Requirements for integrating new containers](#requirements-for-integrating-new-containers)\n    - [Update policy](#update-policy)\n    - [How often are update notifications sent?](#how-often-are-update-notifications-sent)\n    - [Huge docker logs](#huge-docker-logs)\n\n### Where can I find additional documentation?\nSome of the documentation is available on [GitHub Discussions](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002Fcategories\u002Fwiki).\n\n### How does it work?\nNextcloud AIO is inspired by projects like Portainer that manage the docker daemon by talking to it through the docker socket directly. This concept allows a user to install only one container with a single command that does the heavy lifting of creating and managing all containers that are needed in order to provide a Nextcloud installation with most features included. It also makes updating a breeze and is not bound to the host system (and its slow updates) anymore as everything is in containers. Additionally, it is very easy to handle from a user perspective because a simple interface for managing your Nextcloud AIO installation is provided.\n\n### How to contribute?\nSee [this issue](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fissues\u002F5251) for a list of feature requests that need help by contributors.\n\n### How many users are possible?\nUp to 100 users are free, more are possible with [Nextcloud Enterprise](https:\u002F\u002Fnextcloud.com\u002Fall-in-one\u002F)\n\n## Network\n\n### Are reverse proxies supported?\nYes. Please refer to the following documentation on this: [reverse-proxy.md](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fblob\u002Fmain\u002Freverse-proxy.md)\n\n### Which ports are mandatory to be open in your firewall\u002Frouter?\nOnly those (if you access the Mastercontainer Interface internally via port 8080):\n- `443\u002FTCP` for the Apache container\n- `443\u002FUDP` if you want to enable http3 for the Apache container\n- `3478\u002FTCP` and `3478\u002FUDP` for the Talk container\n\n### Explanation of used ports\n- `8080\u002FTCP`: Mastercontainer Interface with self-signed certificate (works always, also if only access via IP-address is possible, e.g. `https:\u002F\u002Fip.address.of.this.server:8080\u002F`) ⚠️ **Important:** do always use an ip-address if you access this port and not a domain as HSTS might block access to it later! (It is also expected that this port uses a self-signed certificate due to security concerns which you need to accept in your browser)\n- `80\u002FTCP`: redirects to Nextcloud (is used for getting the certificate via ACME http-challenge for the Mastercontainer)\n- `8443\u002FTCP`: Mastercontainer Interface with valid certificate (only works if port 80 and 8443 are open\u002Fforwarded in your firewall\u002Frouter and you point a domain to your server. It generates a valid certificate then automatically and access via e.g. `https:\u002F\u002Fpublic.domain.com:8443\u002F` is possible.)\n- `443\u002FTCP`: will be used by the Apache container later on and needs to be open\u002Fforwarded in your firewall\u002Frouter\n- `443\u002FUDP`: will be used by the Apache container later on and needs to be open\u002Fforwarded in your firewall\u002Frouter if you want to enable http3\n- `3478\u002FTCP` and `3478\u002FUDP`: will be used by the Turnserver inside the Talk container and needs to be open\u002Fforwarded in your firewall\u002Frouter\n\n### Notes on Cloudflare (proxy\u002Ftunnel)\nSince Cloudflare Proxy\u002FTunnel comes with a lot of limitations which are listed below, it is rather recommended to switch to [Tailscale](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F6817) if possible.\n- Cloudflare Proxy and Cloudflare Tunnel both require Cloudflare to perform TLS termination on their side and thus decrypt all the traffic on their infrastructure. This is a privacy concern and you will need to look for other solutions if it's unacceptable for you.\n- Using Cloudflare Tunnel might potentially slow down Nextcloud since local access via the configured domain is not possible because TLS termination is in that case offloaded to Cloudflare's infrastructure. There is no way to disable this behavior in Cloudflare Tunnel.\n- It is known that the domain validation may not work correctly behind Cloudflare since Cloudflare might block the validation attempt. You can simply skip it in that case by following: https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#how-to-skip-the-domain-validation\n- Make sure to [disable Cloudflares Rocket Loader feature](https:\u002F\u002Fhelp.nextcloud.com\u002Ft\u002Flogin-page-not-working-solved\u002F149417\u002F8) as otherwise Nextcloud's login prompt will not be shown.\n- Cloudflare only supports uploading files up to 100 MB in the free plan, if you try to upload bigger files you will get an error (413 - Payload Too Large) if no chunking is used (e.g. for public uploads in the web, or if chunks are configured to be bigger than 100 MB in the clients or the web). If you need to upload bigger files, you need to disable the proxy option in your DNS settings. Note that this will both disable Cloudflare DDoS protection and Cloudflare Tunnel as these services require the proxy option to be enabled.\n- If using Cloudflare Tunnel and the Nextcloud Desktop Client [Set Chunking on Nextcloud Desktop Client](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fdesktop\u002Fissues\u002F4271#issuecomment-1159578065)\n- Cloudflare only allows a max timeout of 100s for requests which is not configurable. This means that any server-side processing e.g. for assembling chunks for big files during upload that take longer than 100s will simply not work. See https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fserver\u002Fissues\u002F19223. If you need to upload big files reliably, you need to disable the proxy option in your DNS settings. Note that this will both disable Cloudflare DDoS protection and Cloudflare Tunnel as these services require the proxy option to be enabled.\n- It is known that the in AIO included collabora (Nextcloud Office) does not work out of the box behind Cloudflare. To make it work, you need to add all [Cloudflare IP-ranges](https:\u002F\u002Fwww.cloudflare.com\u002Fips\u002F) to the wopi-allowlist in `https:\u002F\u002Fyourdomain.com\u002Fsettings\u002Fadmin\u002Frichdocuments`\n- Cloudflare Proxy might block the Turnserver for Nextcloud Talk from working correctly. You might want to disable Cloudflare Proxy thus. See https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F2463#discussioncomment-5779981\n- The built-in turn-server for Nextcloud Talk will not work behind Cloudflare Tunnel since it needs a separate port (by default 3478 or as chosen) available on the same domain. If you still want to use the feature, you will need to install your own turnserver or use a publicly available one and adjust and test your stun and turn settings in `https:\u002F\u002Fyourdomain.com\u002Fsettings\u002Fadmin\u002Ftalk`.\n- If you get an error in Nextcloud's admin overview that the HSTS header is not set correctly, you might need to enable it in Cloudflare manually.\n- If you are using AIO's built-in Reverse Proxy and don't use your own, then the certificate issuing may possibly not work out-of-the-box because Cloudflare might block the attempt. In that case you need to disable the Proxy feature at least temporarily in order to make it work. Note that this isn't an option if you need Cloudflare Tunnel as disabling the proxy would also disable Cloudflare Tunnel which would in turn make your server unreachable for the verification. See https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F1101.\n\n### How to run Nextcloud behind a Cloudflare Tunnel?\nAlthough it does not seems like it is the case but from AIO perspective a Cloudflare Tunnel works like a reverse proxy. So please follow the [reverse proxy documentation](.\u002Freverse-proxy.md) where is documented how to make it run behind a Cloudflare Tunnel. However please see the [caveats](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one#notes-on-cloudflare-proxytunnel) before proceeding.\n\n### How to run Nextcloud via Tailscale?\nFor a reverse proxy example guide for Tailscale, see this guide by [@Perseus333](https:\u002F\u002Fgithub.com\u002FPerseus333): https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F6817\n\n### How to get Nextcloud running using the ACME DNS-challenge?\nYou can install AIO behind an external reverse proxy where is also documented how to get it running using the ACME DNS-challenge for getting a valid certificate for AIO. See the [reverse proxy documentation](.\u002Freverse-proxy.md). (Meant is the `Caddy with ACME DNS-challenge` section). Also see https:\u002F\u002Fgithub.com\u002Fdani-garcia\u002Fvaultwarden\u002Fwiki\u002FRunning-a-private-vaultwarden-instance-with-Let%27s-Encrypt-certs#getting-a-custom-caddy-build for additional docs on this topic.\n\n### How to run Nextcloud locally? No domain wanted, or wanting intranet access within your LAN.\nIf you do not want to open Nextcloud to the public internet, you may have a look at the following documentation on how to set it up locally: [local-instance.md](.\u002Flocal-instance.md), but keep in mind you're still required to have https working properly.\n\n### Can I use an ip-address for Nextcloud instead of a domain?\nNo and it will not be added. If you only want to run it locally, you may have a look at the following documentation: [local-instance.md](.\u002Flocal-instance.md). Recommended is to use [Tailscale](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F6817).\n\n### Can I run AIO offline or in an airgapped system?\nNo. This is not possible and will not be added due to multiple reasons: update checks, app installs via app-store, downloading additional docker images on demand and more.\n\n### Are self-signed certificates supported for Nextcloud?\nNo and they will not be. If you want to run it locally, without opening Nextcloud to the public internet, please have a look at the [local instance documentation](.\u002Flocal-instance.md). Recommended is to use [Tailscale](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F6817).\n\n### Can I use AIO with multiple domains?\nNo and it will not be added. However you can use [this feature](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fblob\u002Fmain\u002Fmultiple-instances.md) in order to create multiple AIO instances, one for each domain.\n\n### Are other ports than the default 443 for Nextcloud supported?\nNo and they will not be. If port 443 and\u002For 80 is blocked for you, you may use [Tailscale](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F6817) if you want to publish it online. If you already run a different service on port 443, please use a dedicated domain for Nextcloud and set it up correctly by following the [reverse proxy documentation](.\u002Freverse-proxy.md). However in all cases the Nextcloud interface will redirect you to port 443.\n\n### Can I run Nextcloud in a subdirectory on my domain?\nNo and it will not be added. Please use a dedicated (sub-)domain for Nextcloud and set it up correctly by following the [reverse proxy documentation](.\u002Freverse-proxy.md). Alternatively, you may use [Tailscale](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F6817) if you want to publish it online.\n\n### How can I access Nextcloud locally?\nPlease note that local access is not possible if you are running AIO behind Cloudflare Tunnel since TLS proxying is in that case offloaded to Cloudflares infrastructure. You can fix this by setting up your own reverse proxy that handles TLS proxying locally and will make the steps below work.\n\nPlease make sure that if you are running AIO behind a reverse proxy, that the reverse proxy is configured to use port 443 on the server that runs it. Otherwise the steps below will not work.\n\nNow that this is out of the way, the recommended way how to access Nextcloud locally, is to set up a local dns-server like a pi-hole and set up a custom dns-record for that domain that points to the internal ip-adddress of your server that runs Nextcloud AIO. Below are some guides:\n- https:\u002F\u002Fwww.howtogeek.com\u002Fdevops\u002Fhow-to-run-your-own-dns-server-on-your-local-network\u002F\n- https:\u002F\u002Fhelp.nextcloud.com\u002Ft\u002Fneed-help-to-configure-internal-access\u002F156075\u002F6\n- https:\u002F\u002Fhowchoo.com\u002Fpi\u002Fpi-hole-setup together with https:\u002F\u002Fweb.archive.org\u002Fweb\u002F20221203223505\u002Fhttps:\u002F\u002Fdocs.callitkarma.me\u002Fposts\u002FPiHole-Local-DNS\u002F\n- https:\u002F\u002Fdockerlabs.collabnix.com\u002Fintermediate\u002Fnetworking\u002FConfiguring_DNS.html\nApart from that there is now a community container that can be added to the AIO stack: https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Ftree\u002Fmain\u002Fcommunity-containers\u002Fpi-hole\n\n### How to overwrite the local DNS resolution for some domains or add extra hosts to the containers?\n\nFor some use cases, you might need to overwrite the local DNS resolution of some domains inside the containers. On Linux, you can do so either by using a local DNS server as described in the section above and add a local DNS entry into the dns server and make your containers use that DNS server.\n\nAnother solution on Linux, depending on your network and docker configuration, it might also work to simply edit the `\u002Fetc\u002Fhosts` file. Add your custom entry like `172.18.0.1 mail.example.com` as additional line to the file and restart docker which should automatically push the entry to all docker containers.\n\n### How to skip the domain validation?\nIf you are completely sure that you've configured everything correctly and are not able to pass the domain validation, you may skip the domain validation by adding `--env SKIP_DOMAIN_VALIDATION=true` to the docker run command of the mastercontainer (but before the last line `ghcr.io\u002Fnextcloud-releases\u002Fall-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).\n\nAlternatively, if the container is already running, reload the AIO interface with the param `skip_domain_validation` to skip the domain validation on the fly: e.g. `https:\u002F\u002Fip.address.of.the.server:8080\u002Fcontainers?skip_domain_validation`.\n\n### How to resolve firewall problems with Fedora Linux, RHEL OS, CentOS, SUSE Linux and others?\nIt is known that Linux distros that use [firewalld](https:\u002F\u002Ffirewalld.org) as their firewall daemon have problems with docker networks. In case the containers are not able to communicate with each other, you may change your firewalld to use the iptables backend by running:\n```\nsudo sed -i 's\u002FFirewallBackend=nftables\u002FFirewallBackend=iptables\u002Fg' \u002Fetc\u002Ffirewalld\u002Ffirewalld.conf\nsudo systemctl restart firewalld docker\n```\nAfterwards it should work.\u003Cbr>\n\nSee https:\u002F\u002Fdev.to\u002Fozorest\u002Ffedora-32-how-to-solve-docker-internal-network-issue-22me for more details on this. This limitation is even mentioned on the official firewalld website: https:\u002F\u002Ffirewalld.org\u002F#who-is-using-it\n\n### What can I do to fix the internal or reserved ip-address error?\nIf you get an error during the domain validation which states that your ip-address is an internal or reserved ip-address, you can fix this by first making sure that your domain indeed has the correct public ip-address that points to the server and then adding `--add-host yourdomain.com:\u003Cpublic-ip-address>` to the docker run command of the mastercontainer (but before the last line `ghcr.io\u002Fnextcloud-releases\u002Fall-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) which will allow the domain validation to work correctly. And so that you know: even if the `A` record of your domain should change over time, this is no problem since the mastercontainer will not make any attempt to access the chosen domain after the initial domain validation.\n\n### How to adjust the MTU size of the docker network\nYou can adjust the MTU size of the docker network by creating it beforehand with the custom MTU:\n```\ndocker network create --driver bridge --opt com.docker.network.driver.mtu=1440 nextcloud-aio\n```\nWhen you open the AIO interface for the first time after you execute the `docker run` command, it will automatically connect to the `nextcloud-aio` network with the custom MTU. Keep in mind that if you previously started the mastercontainer without creating the network with the extra options, you will need to remove the old `nextcloud-aio` network and recreate it with the new configuration.\n\nIf you want to use docker compose, you can check out the comments in the `compose.yaml` file for more details.\n\n## Infrastructure\n\n### Which CPU architectures are supported?\nYou can check this on Linux by running: `uname -m`\n- x86_64\u002Fx64\u002Famd64\n- aarch64\u002Farm64\u002Farmv8\n\n### Disrecommended VPS providers\n- *Older* Strato VPS using Virtuozzo caused problems though ones from Q3 2023 and later should work.\n  If your VPS has a `\u002Fproc\u002Fuser_beancounters` file and a low `numproc` limit set in it\n  your server will likely misbehave once it reaches this limit\n  which is very quickly reached by AIO, see [here](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F1747#discussioncomment-4716164).\n- Hostingers VPS seem to miss a specific Kernel feature which is required for AIO to run correctly. See [here](https:\u002F\u002Fhelp.nextcloud.com\u002Ft\u002Fhelp-installing-nc-via-aio-on-vps\u002F153956).\n\n### Recommended VPS\nIn general recommended VPS are those that are KVM\u002Fnon-virtualized as Docker should work best on them.\n\n### Note on storage options\n- SD-cards are disrecommended for AIO since they cripple the performance and they are not meant for many write operations which is needed for the database and other parts\n- SSD storage is recommended\n- HDD storage should work as well but is of course much slower than SSD storage\n\n### Are there known problems when SELinux is enabled?\nYes. If SELinux is enabled, you might need to add the `--security-opt label:disable` option to the docker run command of the mastercontainer in order to allow it to access the docker socket (or `security_opt: [\"label:disable\"]` in compose.yaml). See https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F485\n\n## Customization\n\n### How to adjust the internally used docker api version?\nIf you run an outdated or too new docker version, you might run into problems with the by AIO internally used docker api version. To fix this, you can specify the api version manually. You can do so by adding `--env DOCKER_API_VERSION=1.44` to the docker run command of the mastercontainer (but before the last line `ghcr.io\u002Fnextcloud-releases\u002Fall-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). This variable excepts a string based on the pattern `[0-9].[0-9]+`, so e.g. `1.44`. ⚠️ However please note that only the default api version (unset this variable) is supported and tested by the maintainers of Nextcloud AIO. So use this on your own risk and things might break without warning.\n\n### How to adjust the log level for AIO components?\nYou can globally adjust the log level of the included AIO components by adding `--env AIO_LOG_LEVEL=warn` to the docker run command of the mastercontainer. This setting is propagated from the mastercontainer to the built-in sibling containers. 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 or compose file that you initially used. For troubleshooting, `debug` and `info` may additionally re-enable some supervisord child stdout or stderr streams that are normally suppressed in order to keep the default logs concise. Allowed values are `error`, `warn`, `info` and `debug`.\n\n### How to change the default location of Nextcloud's Datadir?\n> [!WARNING]  \n> Do not set or adjust this value after the initial Nextcloud installation is done! If you still want to do it afterwards, see [this](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F890#discussioncomment-3089903) on how to do it.\n\nYou can configure the Nextcloud container to use a specific directory on your host as data directory. You can do so by adding the environmental variable `NEXTCLOUD_DATADIR` to the docker run command of the mastercontainer (but before the last line `ghcr.io\u002Fnextcloud-releases\u002Fall-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). Allowed values for that variable are strings that start with `\u002F` and are not equal to `\u002F`. The chosen directory or volume will then be mounted to `\u002Fmnt\u002Fncdata` inside the container.\n\n- An example for Linux is `--env NEXTCLOUD_DATADIR=\"\u002Fmnt\u002Fncdata\"`. ⚠️ Please note: If you should be using an external BTRFS drive that is mounted to `\u002Fmnt\u002Fncdata`, make sure to choose a subfolder like e.g. `\u002Fmnt\u002Fncdata\u002Fnextcloud` as datadir, since the root folder is not suited as datadir in that case. See https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F2696.\n- On macOS it might be `--env NEXTCLOUD_DATADIR=\"\u002Fvar\u002Fnextcloud-data\"`\n- For Synology it may be `--env NEXTCLOUD_DATADIR=\"\u002Fvolume1\u002Fdocker\u002Fnextcloud\u002Fdata\"`. \n- On Windows it might be `--env NEXTCLOUD_DATADIR=\"\u002Frun\u002Fdesktop\u002Fmnt\u002Fhost\u002Fc\u002Fncdata\"`. (This path is equivalent to `C:\\ncdata` on your Windows host so you need to translate the path accordingly. Hint: the path that you enter needs to start with `\u002Frun\u002Fdesktop\u002Fmnt\u002Fhost\u002F`. Append to that the exact location on your windows host, e.g. `c\u002Fncdata` which is equivalent to `C:\\ncdata`.) ⚠️ **Please note**: This does not work with external drives like USB or network drives and only with internal drives like SATA or NVME drives.\n- Another option is to provide a specific volume name here with: `--env NEXTCLOUD_DATADIR=\"nextcloud_aio_nextcloud_datadir\"`. This volume needs to be created beforehand manually by you in order to be able to use it. e.g. on Windows with:\n    ```\n    docker volume create ^\n    --driver local ^\n    --name nextcloud_aio_nextcloud_datadir ^\n    -o device=\"\u002Fhost_mnt\u002Fe\u002Fyour\u002Fdata\u002Fpath\" ^\n    -o type=\"none\" ^\n    -o o=\"bind\"\n    ```\n    In this example, it would mount `E:\\your\\data\\path` into the volume so for a different location you need to adjust `\u002Fhost_mnt\u002Fe\u002Fyour\u002Fdata\u002Fpath` accordingly.\n\n### How to configure custom UID\u002FGID?\nThere are two ways to configure custom UIDs or GIDs that will be used inside the installation. \n\nThe first and recommended solution is to use Nextcloud's external storage app and use its functionality to add a connection into Nextcloud. See https:\u002F\u002Fdocs.nextcloud.com\u002Fserver\u002Flatest\u002Fadmin_manual\u002Fconfiguration_files\u002Fexternal_storage_configuration_gui.html\n\nAnother solution if you really need to use host mounts is to use a bind mount to map custom permissions to the directory. You can do so by editing the `\u002Fetc\u002Ffstab` file on your Linux server and create an entry like the following to the file:\n```\n\u002Fsource\u002Fpath  \u002Ftarget\u002Fpath\u002Fwhere\u002Fthe\u002Fsource\u002Fdirectory\u002Fwill\u002Fbe\u002Fmounted\u002Fon\u002Fthe\u002Fserver  fuse.bindfs  force-user=33,force-group=33,allow_other  0  0\n```\n\nThen use `sudo mount \u002Ftarget\u002Fpath\u002Fwhere\u002Fthe\u002Fsource\u002Fdirectory\u002Fwill\u002Fbe\u002Fmounted\u002Fon\u002Fthe\u002Fserver` to mount it directly.\n\nYou can afterwards use `--env NEXTCLOUD_DATADIR=\"\u002Ftarget\u002Fpath\u002Fwhere\u002Fthe\u002Fsource\u002Fdirectory\u002Fwill\u002Fbe\u002Fmounted\u002Fon\u002Fthe\u002Fserver\"` as described in the section above.\n\n### How to move the appdata folder from the datadir to an ssd to improve the performance?\nIf the datadir in your setup is configured to be placed on an HDD or network FS like SMB or NFS, you can follow the steps below to change the location of the appdata folder to be located on an SSD in order to improve the performance of the setup.\n\n> [!NOTE]  \n> The following steps only work if you already configured and used NEXTCLOUD_DATADIR as mentioned [two sections above](#how-to-change-the-default-location-of-nextclouds-datadir). \n> In this example here, we assume that you used `NEXTCLOUD_DATADIR=\"\u002Ftarget\u002Fpath\u002F`.\n\nAfter the initial installation is done and all datadir files of Nextcloud are stored inside the configured `\u002Ftarget\u002Fpath` directory, you will also see an `appdata_*` folder in there that stores app-related data. You can now move that folder to a faster SSD if the target dir is not already positioned on an SSD by first using `rsync` to sync the files a location on an SSD. Afterwards rename the appdata folder in the datadir to something like `appdata_*-backup`. Afterwards add the following line to `\u002Fetc\u002Ffstab`:\n```\n\u002Fsource\u002Fpath\u002Fon\u002Fssd  \u002Ftarget\u002Fpath\u002F\u003Cappdata-path>  fuse.bindfs  force-user=33,force-group=33,allow_other  0  0\n```\nDo not forget to adjust `\u003Cappdata-path>` to the correct `appdata_*` name that your installation initially created automatically.\n\nThen use `sudo mount \u002Ftarget\u002Fpath\u002F\u003Cappdata-path>` to mount it directly.\n\nAfterwards things should be speed up.\n\n### How to store the files\u002Finstallation on a separate drive?\nYou can move the whole docker library and all its files including all Nextcloud AIO files and folders to a separate drive by first mounting the drive in the host OS (NTFS is not supported and ext4 is recommended as FS) and then following this tutorial: https:\u002F\u002Fwww.guguweb.com\u002F2019\u002F02\u002F07\u002Fhow-to-move-docker-data-directory-to-another-location-on-ubuntu\u002F\u003Cbr>\n(Of course docker needs to be installed first for this to work.)\n\n⚠️ If you encounter errors from richdocuments in your Nextcloud logs, check in your Collabora container if the message \"Capabilities are not set for the coolforkit program.\" appears. If so, follow these steps:\n\n1. Stop all the containers from the AIO Interface.\n2. Go to your terminal and delete the Collabora container (`docker rm nextcloud-aio-collabora`) AND the Collabora image (`docker image rm nextcloud\u002Faio-collabora`).\n3. You might also want to prune your Docker (`docker system prune -a`) (no data will be lost).\n4. Restart your containers from the AIO Interface.\n\nThis should solve the problem.\n\n### How to limit the resource usage of AIO?\nIn some cases, you might want to limit the overall resource usage of AIO. You can do so by following [this documentation](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F7273). Another possibility is to use the [manual installation](.\u002Fmanual-install\u002F).\n\n### How to allow the Nextcloud container to access directories on the host?\nBy default, the Nextcloud container is confined and cannot access directories on the host OS. You might want to change this when you are planning to use local external storage in Nextcloud to store some files outside the data directory and can do so by adding the environmental variable `NEXTCLOUD_MOUNT` to the docker run command of the mastercontainer (but before the last line `ghcr.io\u002Fnextcloud-releases\u002Fall-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). Allowed values for that variable are strings that start with `\u002F` and are not equal to `\u002F`.\n\n- Two examples for Linux are `--env NEXTCLOUD_MOUNT=\"\u002Fmnt\u002F\"` and `--env NEXTCLOUD_MOUNT=\"\u002Fmedia\u002F\"`.\n- On macOS it might be `--env NEXTCLOUD_MOUNT=\"\u002FVolumes\u002Fyour_drive\u002F\"`\n- For Synology it may be `--env NEXTCLOUD_MOUNT=\"\u002Fvolume1\u002F\"`.\n- On Windows it might be `--env NEXTCLOUD_MOUNT=\"\u002Frun\u002Fdesktop\u002Fmnt\u002Fhost\u002Fd\u002Fyour-folder\u002F\"`. (This path is equivalent to `D:\\your-folder` on your Windows host so you need to translate the path accordingly. Hint: the path that you enter needs to start with `\u002Frun\u002Fdesktop\u002Fmnt\u002Fhost\u002F`. Append to that the exact location on your windows host, e.g. `d\u002Fyour-folder\u002F` which is equivalent to `D:\\your-folder`.) ⚠️ **Please note**: This does not work with external drives like USB or network drives and only with internal drives like SATA or NVME drives.\n\nAfter using this option, please make sure to apply the correct permissions to the directories that you want to use in Nextcloud. E.g. `sudo chown -R 33:0 \u002Fmnt\u002Fyour-drive-mountpoint` and `sudo chmod -R 750 \u002Fmnt\u002Fyour-drive-mountpoint` should make it work on Linux when you have used `--env NEXTCLOUD_MOUNT=\"\u002Fmnt\u002F\"`. On Windows you could do this e.g. with `docker exec -it nextcloud-aio-nextcloud chown -R 33:0 \u002Frun\u002Fdesktop\u002Fmnt\u002Fhost\u002Fd\u002Fyour-folder\u002F` and `docker exec -it nextcloud-aio-nextcloud chmod -R 750 \u002Frun\u002Fdesktop\u002Fmnt\u002Fhost\u002Fd\u002Fyour-folder\u002F`.\n\nYou can then navigate to `https:\u002F\u002Fyour-nc-domain.com\u002Fsettings\u002Fapps\u002Fdisabled`, activate the external storage app, navigate to `https:\u002F\u002Fyour-nc-domain.com\u002Fsettings\u002Fadmin\u002Fexternalstorages` and add a local external storage directory that will be accessible inside the container at the same place that you've entered. E.g. `\u002Fmnt\u002Fyour-drive-mountpoint` will be mounted to `\u002Fmnt\u002Fyour-drive-mountpoint` inside the container, etc. \n\nBe aware though that these locations will not be covered by the built-in backup solution - but you can add further Docker volumes and host paths that you want to back up after the initial backup is done.\n\n> [!NOTE]  \n> If you can't see the type \"local storage\" in the external storage admin options, a restart of the containers from the AIO interface may be required.\n\n### How to adjust the Talk port?\nBy default will the talk container use port `3478\u002FUDP` and `3478\u002FTCP` for connections. This should be set to something higher than 1024! You can adjust the port by adding e.g. `--env TALK_PORT=3478` to the docker run command of the mastercontainer (but before the last line `ghcr.io\u002Fnextcloud-releases\u002Fall-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 adjusting the port to your desired value. Best is to use a port over 1024, so e.g. 3479 to not run into this: https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Fdiscussions\u002F2517\n\n### How to adjust the upload limit for Nextcloud?\nBy default, public uploads to Nextcloud are limited to a max of 16G (logged in users can upload much bigger files using the webinterface or the mobile\u002Fdesktop clients, since chunking is used in that case). You can adjust the upload limit by providing `--env NEXTCLOUD_UPLOAD_LIMIT=16G` to the docker run command of the mastercontainer (but before the last line `ghcr.io\u002Fnextcloud-releases\u002Fall-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 start with a number and end with `G` e.g. `16G`.\n\n### How to adjust the max execution time for Nextcloud?\nBy default, uploads to Nextcloud are limited to a max of 3600s. You can adjust the upload time limit by providing `--env NEXTCLOUD_MAX_TIME=3600` to the docker run command of the mastercontainer (but before the last line `ghcr.io\u002Fnextcloud-releases\u002Fall-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 number e.g. `3600`.\n\n### How to adjust the PHP memory limit for Nextcloud?\nBy default, each PHP process in the Nextcloud container is limited to a max of 512 MB. You can adjust the memory limit by providing `--env NEXTCLOUD_MEMORY_LIMIT=512M` to the docker run command of the mastercontainer (but before the last line `ghcr.io\u002Fnextcloud-releases\u002Fall-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 start with a number and end with `M` e.g. `1024M`.\n\n### How to change the Nextcloud apps that are installed on the first startup?\nYou might want to adjust the Nextcloud apps that are installed upon the first startup of the Nextcloud container. You can do so by adding `--env NEXTCLOUD_STARTUP_APPS=\"deck twofactor_totp tasks calendar contacts notes\"` to the docker run command of the mastercontainer (but before the last line `ghcr.io\u002Fnextcloud-releases\u002Fall-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, 0-9, spaces and hyphens or '_'. You can disable shipped and by default enabled apps by adding a hyphen in front of the appid. E.g. `-contactsinteraction`.\n\n### How to add OS packages permanently to the Nextcloud container?\nSome 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. \n\nYou 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\u002Fnextcloud-releases\u002Fall-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:\u002F\u002Fpkgs.alpinelinux.org\u002Fpackages?branch=v3.23. By default `imagemagick` is added. If you want to keep it, you need to specify it as well.\n\n### How to add PHP extensions permanently to the Nextcloud container?\nSome 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. \n\nYou can do so by adding `--env NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS=\"imagick extension1 extension2\"` to the docker run command of the mastercontainer (but before the last line `ghcr.io\u002Fnextcloud-releases\u002Fall-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 extensions here: https:\u002F\u002Fpecl.php.net\u002Fpackages.php. By default `imagick` is added. If you want to keep it, you need to specify it as well.\n\n### What about the pdlib PHP extension for the facerecognition app?\nThe [facerecognition app](https:\u002F\u002Fapps.nextcloud.com\u002Fapps\u002Ffacerecognition) requires the pdlib PHP extension to be installed. Unfortunately, it is not available on PECL nor via PHP core, so there is no way to add this into AIO currently. However you can use [this community container](https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fall-in-one\u002Ftree\u002Fmain\u002Fcommunity-containers\u002Ffacerecognition) in order to run facerecognition.\n\n### How to enable hardware acceleration for Nextcloud?\nSome container can use GPU acceleration to increase performance like [memories app](https:\u002F\u002Fapps.nextcloud.com\u002Fapps\u002Fmemories) allows to enable hardware transcoding for videos.\n\n#### With open source drivers MESA for AMD, Intel and **new** drivers `Nouveau` for Nvidia\n\n> [!WARNING]  \n> This only works if the `\u002Fdev\u002Fdri` device is present on the host! If it does not exist on your host, don't proceed as otherwise the mastercontainer will fail to start! If you are unsure about this, better do not proceed with the instructions below. Make sure that your driver is correctly configured on the host.\n\nA list of supported device can be fond in [MESA 3D documentation](https:\u002F\u002Fdocs.mesa3d.org\u002Fsystems.html).\n\nThis method use the [Direct Rendering Infrastructure](https:\u002F\u002Fdri.freedesktop.org\u002Fwiki\u002F) with the access to the `\u002Fdev\u002Fdri` device.\n\nIn order to use that, you need to pass the `\u002Fdev\u002Fdri` device into the mastercontainer by adding `--device=\u002Fdev\u002Fdri` to the docker run command (but before the last line `ghcr.io\u002Fnextcloud-releases\u002Fall-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). The `\u002Fdev\u002Fdri` device gets mounted into the containers that benefit from it.\n\nWith this device in place, the AIO mastercontainer automatically detects the `\u002Fdev\u002Fdri` device, enables hardware acceleration for the relevant containers and passes the correct render device group to the talk-recording container so that VA-API hardware transcoding (`h264_vaapi`) is used when recording calls.\n\n#### With proprietary drivers for Nvidia :warning: BETA\n\n> [!WARNING]\n> This only works if the Nvidia Toolkit is installed on the host and an NVIDIA GPU is enabled! Make sure that it is correctly configured on the host. If it does not exist on your host, don't proceed as otherwise the Nextcloud container will fail to start! If you are unsure about this, better do not proce","Nextcloud All-in-One 是官方推荐的 Nextcloud 安装方法，旨在提供简便的部署和维护方案。该项目集成了 Nextcloud 的大部分功能于单一实例中，包括高性能文件后端、Redis 和 APCU 缓存、PostgreSQL 数据库支持等，并且提供了诸如备份恢复、全文搜索、白板等可选组件。它特别适合需要快速搭建私有云存储解决方案的企业和个人用户使用。此外，通过 Docker 容器化技术，Nextcloud AIO 确保了良好的跨平台兼容性和易于管理性，同时支持通过 Web 界面进行简单的安装与更新操作。",2,"2026-06-11 03:16:42","top_language"]