The official Nextcloud installation method. Provides easy deployment and maintenance with most features included in this one Nextcloud instance.
Nextcloud All-in-One
[!NOTE]
Nextcloud AIO is actively looking for contributors. See the forum post.
The official Nextcloud installation method. Nextcloud AIO provides easy deployment and maintenance with most features included in this one Nextcloud instance.
Included are:
- Nextcloud
- High performance backend for Nextcloud Files (Client Push)
- Redis & APCU for performant caching
- PostgreSQL as database
- Nextcloud Office (optional)
- EuroOffice (optional)
- High performance backend for Nextcloud Talk and TURN-server (optional)
- Nextcloud Talk Recording-server (optional)
- Backup solution (optional, based on BorgBackup)
- Imaginary (optional, for previews of heic, heif, illustrator, pdf, svg, tiff and webp)
- ClamAV (optional, Antivirus backend for Nextcloud)
- Fulltextsearch (optional)
- Whiteboard (optional)
- Docker Socket Proxy (optional, needed for Nextcloud App API)
- Community containers
And much more:
- Simple web interface included that enables easy installation and maintenance
- Easy updates included
- Update and backup notifications included
- Daily backups can be enabled from the AIO interface which also allows updating all containers, Nextcloud and its apps afterwards automatically
- 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)
- APCu as local cache
- Redis as distributed cache and for file locking
- Postgresql as database
- PHP-FPM with performance-optimized config (e.g. Opcache and JIT enabled by default)
- A+ security in Nextcloud security scan
- Ready to be used behind existing Reverse proxies
- Can be used behind Cloudflare Tunnel
- Can be used via Tailscale
- Ready for big file uploads up to 10 GB on public links, adjustable (logged in users can upload much bigger files using the webinterface or the mobile/desktop clients since chunking is used in that case)
- PHP and web server timeouts set to 3600s, adjustable (important for big file uploads)
- Defaults to a max of 512 MB RAM per PHP process, adjustable
- Automatic TLS included (by using Let's Encrypt)
- zstd/gzip compression enabled by default inside caddy inside the apache container
- HTTP/2 and HTTP/3 enabled
- "Pretty URLs" for Nextcloud are enabled by default (removes the index.php from all links)
- Video previews work out of the box and when Imaginary is enabled, many recent image formats as well!
- 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)
- Adjustable location of Nextcloud's datadir (e.g. good for easy file-sharing with host system on Windows and MacOS)
- By default confined (good for security) but can allow access to additional storages in order to enable the usage of the local external storage feature
- Possibility included to adjust default installed Nextcloud apps
- 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)
ffmpeg, smbclient and nodejs are included by default
- Possibility included to permanently add additional OS packages into the Nextcloud container without having to build your own Docker image
- Possibility included to permanently add additional PHP extensions into the Nextcloud container without having to build your own Docker image
- Possibility included to pass the needed device for hardware transcoding to the Nextcloud container
- Possibility included to store all docker related files on a separate drive
- LDAP can be used as user backend for Nextcloud
- Migration from any former Nextcloud installation to AIO is possible. See this documentation.
- Migration in the other direction (e.g. from AIO to a VM-based installation) is also possible.
- Fail2Ban can be added
- phpMyAdmin, Adminer or pgAdmin can be added
- Mail server can be added
- Nextcloud can be accessed locally via the domain
- Can be installed locally (if you don't want or cannot make the instance publicly reachable)
- Free deSEC dynamic-DNS domain (
*.dedyn.io) can be registered directly from the AIO interface — no external domain needed
- IPv6-ready
- Can be used with Docker rootless (good for additional security)
- Runs on all platforms Docker supports (e.g. also on Windows and Macos)
- Included containers easy to debug by having the possibility to check their logs directly from the AIO interface
- Docker-compose ready
- Can be installed without a container having access to the docker socket
- Can be installed with Docker Swarm
- Can be installed with Kubernetes
- Almost all included containers Alpine Linux based (good for security and size)
- Many of the included containers run as non-root user (good for security)
- Many of the included containers have a read-only root-FS (good for security)
- Included containers run in its own docker network (good for security) and only really necessary ports are exposed on the host
- Multiple instances on one server are doable without having to deal with VMs
- 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)
- Possibility included to also back up external Docker Volumes or Host paths (can be used for host backups)
- Borg backup can be completely managed from the AIO interface, including backup creation, backup restore, backup integrity check and integrity-repair
- Other forms of remote backup are indirectly possible
- Updates and backups can be run from an external script. See this documentation for a complete example.
Screenshots
| First setup |
After installation |
|
|
Architecture overview
…
How to use this?
The steps below are written for Linux. For platform-specific guidance see:
[!IMPORTANT]
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
You're encouraged to skim the attached 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.
[!TIP]
Don't worry about getting everything perfect on the first try — test deployments are cheap and disposable.
- Install Docker on your Linux host by following the official documentation: Docker install — supported platforms
[!WARNING]
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:
sudo docker info | grep "Docker Root Dir" | grep "/var/snap/docker/"
If you see the following output:
/var/snap/docker/
you should migrate to a standard Docker installation and remove the snap-based package before proceeding: Install Docker on Ubuntu.
⚠️ 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.
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:
sudo snap remove docker
If you need IPv6 support, enable it by following: Docker IPv6 support for AIO
AIO uses a special mastercontainer to orchestrate the various pieces of the Nextcloud stack. To start AIO, launch the mastercontainer with the command below:
# For Linux and without a web server or reverse proxy already in place:
sudo docker run \
--init \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart always \
--publish 80:80 \
--publish 8080:8080 \
--publish 8443:8443 \
--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
Explanation of the command
sudo docker run — starts a new Docker container. Omit sudo if your user is in the docker group.
--init — runs an init process inside the container to handl