Autonomy for Teams, Office on desktop, a fresh take on Photos
Explore what’s new in the release blog!
Running your own Nextcloud gives you full control over your files, calendars, chats, and documents, but setting up a server stack by hand can be intimidating. With Nextcloud All-in-One (AIO), you can start a single Docker container and a browser-based interface handles the rest, from domain checks and certificates to optional add-ons, backups, and updates.
In this guide, we walk you through every step of installing Nextcloud AIO on a Linux machine, from installing Docker to logging in to your new Nextcloud instance and setting up backups. If you’re on Windows, check out our Nextcloud AIO guide for Windows 11 instead.
What is Nextcloud All-in-One?
Nextcloud All-in-One is a Docker-based project that allows you to install just one container that does the heavy lifting of creating and managing all containers needed for a complete Nextcloud installation. It provides easy deployment and maintenance of Nextcloud’s features, a user-friendly interface, stress-free updates, and a straightforward approach for getting everything to work out of the box.
Nextcloud AIO includes:
- Nextcloud
- High-performance backend for Nextcloud Files
- Redis and APCu for fast caching, and PostgreSQL as the database
- Optional:
- Nextcloud Office
- High-performance backend for Nextcloud Talk and TURN server
- Nextcloud Talk Recording Server
- Backup solution (based on BorgBackup)
- Imaginary (for previews of HEIC, HEIF, Illustrator, PDF, SVG, TIFF, and WEBP files)
- ClamAV (antivirus backend for Nextcloud)
- Fulltextsearch
- Whiteboard
- Docker Socket Proxy (needed for Nextcloud AppAPI)
- Community containers
Nextcloud AIO is free for up to 100 users. If you need more, Nextcloud Enterprise has you covered.
Requirements
Before you start, make sure your setup meets the following requirements:
- A Linux PC or server (e.g., with Ubuntu 24.04 LTS) with at least 4 GB of RAM and two cores.
- A supported CPU architecture: x86_64 (amd64) or aarch64 (arm64).
- Suitable storage: An SSD is recommended. HDDs work but are noticeably slower. SD cards are not recommended, since the database and other components write to disk constantly.
- A domain. You can use a domain you already own, or, if you don’t have one, Nextcloud AIO can register a free deSEC domain for you during setup (see Step 4).
- The ability to open ports in your firewall or router, so your Nextcloud is reachable from the internet. Make sure that you are not behind CGNAT. If you use the free deSEC domain, you can skip port forwarding for now and do it later, once you want to make your instance publicly accessible. If you can’t open ports at all or don’t want your instance to be reachable from the internet, take a look at the guides for running Nextcloud AIO via Tailscale or running Nextcloud AIO locally.
Please note that this guide is for a setup without a web server or reverse proxy (like Apache, nginx, etc.) already in place. If you want to run Nextcloud AIO behind a web server or reverse proxy, check the corresponding documentation page.
Step 1: Install Docker
Install Docker on your Linux system by following the instructions in the Docker documentation. The easiest way is to install it with the convenience script:
curl -fsSL https://get.docker.com | sudo sh
⚠️ Snap-based Docker installations are not supported. This mostly affects Ubuntu users. To check whether you’re using the snap version, run:
sudo docker info | grep "Docker Root Dir" | grep "/var/snap/docker/"If the output shows
/var/snap/docker/, switch to a standard Docker installation by following the Docker installation guide for Ubuntu before you continue. Only remove the snap package (sudo snap remove docker) once you’re sure that no existing containers are running in it, so you don’t lose any data.
If you need IPv6 support, follow the instructions for how to enable IPv6 for Docker.
Step 2: Start the Nextcloud AIO mastercontainer
Nextcloud AIO uses a special container, the mastercontainer, to create and manage all the other containers in your Nextcloud setup.
Open a terminal and start it with this command:
# For Linux and without a web server or reverse proxy (like Apache or nginx) 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
A few things to keep in mind about this command:
- Don’t change the container name (
nextcloud-aio-mastercontainer) or the volume name (nextcloud_aio_mastercontainer). Updates of the mastercontainer and the built-in backups depend on them. - If port 8080 is already in use on your machine, you can map the Nextcloud AIO interface to a different host port, e.g.,
--publish 8081:8080. - For production use, we recommend starting Nextcloud AIO with the example Compose file instead of
docker run, since it makes upgrades and later changes easier.
Note: If you’d like to store your files in a different location than the default Docker volume, please refer to the instructions on how to change the default location of Nextcloud’s datadir. You need to decide this before the initial installation.
Step 3: Open the Nextcloud AIO interface and log in
Once the mastercontainer is running, open the Nextcloud AIO interface in your browser at https://localhost:8080 or https://the.servers.ip.address:8080.
⚠️ Always use an IP address, not a domain, when you access port 8080. Otherwise, HSTS might block access to the interface later.
Port 8080 uses a self-signed certificate, so you need to accept the certificate warning in your browser. Then you should see a screen showing your Nextcloud AIO passphrase.
Copy the passphrase and store it somewhere safe, like a password manager. You’ll need it every time you log in to the Nextcloud AIO interface.
Alternatively, if ports 80 and 8443 are open in your firewall or router and a domain is configured to point to your server, you can reach the Nextcloud AIO interface with a valid certificate at https://your-domain.com:8443.
Click on “Open Nextcloud AIO login” and paste your passphrase.
You should now see the Nextcloud AIO interface.
⚠️ Once your Nextcloud is up and running, logging in to the Nextcloud AIO interface directly with the passphrase is blocked for security reasons. To get back in, log in to Nextcloud as an admin, go to Administration settings → Overview (
https://your-domain.com/settings/admin/overview), and click the button at the top to open the Nextcloud AIO login. You can then log in with your passphrase as usual.
Step 4: Enter your domain
Next, you need to tell Nextcloud AIO which domain to use for your Nextcloud. You can either use your own domain or let Nextcloud AIO register a free one for you.
Option A: Use your own domain
Type in your domain. Nextcloud AIO checks whether the domain points to your server and whether the required ports are reachable, and the interface helps you figure out what to fix if they aren’t.
For the check to pass, set up the DNS record (or DDNS) for your domain so that it points to your public IP address, and forward the following ports in your router or firewall to your Linux machine:
443/TCPfor Nextcloud itself (required)443/UDPif you want to enable HTTP/3 (optional)3478/TCPand3478/UDPfor the Talk TURN server (only required if you enable Nextcloud Talk)
Option B: Get a free domain from deSEC
If you don’t have a domain yet, or you just want to try out Nextcloud AIO, you can get a free domain right from the Nextcloud AIO interface. Nextcloud AIO uses deSEC, a Berlin-based, non-profit DNS hosting service, to register a subdomain under dedyn.io and handle the technical setup for you: it creates the DNS records, makes sure the domain points to your server, and requests the SSL certificate. Since the certificate is obtained via the DNS challenge, you don’t need to forward any ports until you want to make your instance publicly accessible.
- On the start screen, expand the section “Don’t have a domain? Get a free one from deSEC”.
- Create a new deSEC account with your email address, or enter your credentials if you already have one. Optionally, choose the subdom