Nextcloud on a VPS with Nextcloud All-in-One (AIO): A Doc-Based Guide

Guide · VPS · Doc-based

Doc-based, not yet hands-on tested. This guide is written from the official documentation and has not yet been tested hands-on by us. Check the current official docs before running anything.

Disclosure: some links on this page may become affiliate links. If you buy through one, we may earn a commission at no extra cost to you. See our affiliate disclosure.

Pinned version: Nextcloud AIO v14.4.1 (latest GitHub release, published 2026-10-22 03:03 JST / 2026-10-21 18:03 UTC — https://github.com/nextcloud/all-in-one/releases/tag/v14.4.1). Last checked: 2026-10-24.

Transparency note: This guide is based on the official documentation linked below. It was not hands-on tested by us. Commands are copied from the official docs as of the date above; always check the current docs before running them.

Nextcloud AIO describes itself as "the official Nextcloud installation method". One small "mastercontainer" sets up and manages the rest of the stack for you: Nextcloud, PostgreSQL, Redis, automatic TLS via Let's Encrypt, and an optional BorgBackup-based backup (AIO README). This guide covers the simplest case: a fresh Linux VPS with no other web server or reverse proxy on it.

Before you pick a VPS

The AIO docs give a few VPS-specific warnings worth reading before you pay for anything:

For size and price comparisons, see our cheapest VPS for Immich or Nextcloud page. We don't repeat plan specs here.

What you need

Step 1: Install Docker (not the snap)

Install Docker Engine following Docker's official guide: https://docs.docker.com/engine/install/

The AIO docs warn that snap-based Docker installations are not supported. On Ubuntu, check with:

sh
sudo docker info | grep "Docker Root Dir" | grep "/var/snap/docker/"

If that prints /var/snap/docker/, switch to the standard Docker packages first.

Step 2: Start the mastercontainer

This is the official command for Linux without an existing web server or reverse proxy, copied from the README:

sh
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

Don't rename the container or the nextcloud_aio_mastercontainer volume. The docs say updates and built-in backups depend on those names. For production, the docs suggest using the example compose.yaml instead of docker run.

⚠️ Caution: this command mounts the Docker socket into the mastercontainer, which is how AIO manages its other containers. If you don't want that, the docs offer a manual install without socket access.

Step 3: Open the AIO interface by IP, then enter your domain

  1. Open https://<your-vps-ip>:8080 and accept the self-signed certificate. The docs warn to use the IP address, not a domain, on port 8080, because HSTS may block access later.
  2. Alternatively, once ports 80 and 8443 are reachable and your domain points at the VPS, use https://<your-domain>:8443 for a valid certificate.
  3. Note the passphrase AIO shows you, enter your domain, choose optional containers (Office, Talk, etc.), and start the containers.

Cloudflare users: the AIO docs list many limitations with Cloudflare Proxy or Tunnel (for example a 100 MB upload limit on the free plan for non-chunked uploads, and a 100-second request timeout). The docs recommend the built-in deSEC option or Tailscale instead where possible. Recommendation (ours, not from the docs): if you keep Cloudflare DNS, consider leaving the record "DNS only".

Step 4: Turn on backups

AIO includes a BorgBackup-based backup you configure in the AIO interface. The docs say daily backups can be enabled there, and a restore only needs "the archive and the password". Recommendation (ours): put the backup target on a different drive or a remote Borg repository, not the same disk as your data. See the README's Backup section.

⚠️ Caution: external storage folders you mount with NEXTCLOUD_MOUNT are not covered by the built-in backup, according to the docs.

Updating

When new containers are available, the AIO interface shows it. Press Stop containers, then Start and update containers. The docs say to back up with the built-in backup "before starting the containers again". For the mastercontainer, a note with the changelog appears below Stop containers; with the containers stopped, a button to update the mastercontainer appears, and afterwards you can Start and update containers again.

Next step

Want your photos on the same VPS or at home? See Immich with Docker Compose, or go back to the starter stack.

Sources

Related guides