Nextcloud All-in-One packages the application, database, cache, web service, and maintenance workflow into a supported container stack. Using that official deployment path avoids mixing incomplete Apache, PHP, database, and Redis fragments from unrelated guides.
This guide follows the Nextcloud All-in-One repository, its official Compose definition, and its reverse-proxy guidance.
Decide the network design
Use a domain you control and point its DNS records to the VPS before starting setup. Keep provider-console access available, and decide whether AIO will manage the public web entry point or sit behind an existing reverse proxy.
The direct AIO path below publishes the setup interface and web ports as documented by the project. If the VPS already runs a proxy or another service on those ports, stop and follow the official reverse-proxy guide instead of changing container ports at random.
Prepare Docker safely
Install Docker Engine from Docker's official repository. The related Docker and cloud-init guide explains the repository setup, SSH-first firewall order, and why Docker-published ports require more than UFW rules alone.
Verify Docker before installing Nextcloud:
“`bash title="Verify Docker before installing Nextcloud" sudo systemctl –no-pager –full status docker sudo docker version
AIO mounts the Docker socket read-only so its master container can manage the remaining containers. Treat access to the AIO interface and the Docker host as administrative access.
## Start the AIO master container
Run the official direct-install command on a VPS dedicated to this workload:
```bash title="Start the Nextcloud AIO master container"
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
Ports 80 and 8443 are used by the direct AIO web flow, while 8080 serves the AIO administration interface with its own certificate. Restrict access with the provider firewall according to the AIO documentation, and do not expose unrelated Docker services.
Confirm that the master container is running before opening the interface:
“`bash title="Check the Nextcloud AIO master container and logs" sudo docker ps –filter name=nextcloud-aio-mastercontainer sudo docker logs –tail 100 nextcloud-aio-mastercontainer
## Validate storage before onboarding
Choose the application-data location before creating users or uploading files. Confirm the filesystem has enough capacity for active data, previews, temporary uploads, database growth, and at least one local maintenance operation; free space for application data is not the same as recovery capacity.
If the deployment uses a separately mounted volume, verify that it is mounted after a reboot before AIO starts. Record the underlying device or storage service, mount path, ownership, and failure behavior. An empty mount path can look like a new directory and lead an application to write data onto the system disk instead of the intended storage.
Do not change AIO's data directory or container-volume mapping by editing generated container settings after onboarding. Follow the project's documented storage variables and migration procedure, and test the design on an empty installation before moving user data.
Check DNS from outside the VPS and from the host itself. The public domain must resolve to the intended server, and any proxy or provider firewall must pass the ports required by the selected AIO design without exposing the administration interface more broadly than necessary.
## Complete setup in the AIO interface
Open the AIO interface on port 8080 using the connection method documented by the project. A browser warning can appear because this administration endpoint uses a self-signed certificate; verify that you are connected to the intended VPS before continuing.
Enter the domain prepared for Nextcloud and let AIO perform its checks. Select only the optional containers you need, record the generated administrator credentials in a password manager, and wait until every required container reports a healthy state.
Do not paste database, Redis, or PHP configuration from a manual installation into AIO. Those services and settings are managed as part of the AIO stack.
## Verify the public service
Open the domain over HTTPS from a separate network and sign in with the recorded administrator account. Confirm that the certificate matches the domain and that HTTP redirects to HTTPS.
On the VPS, review the container list and recent master-container log entries:
```bash title="List Nextcloud containers and recent AIO logs"
sudo docker ps --format 'table {{.Names}}\t{{.Status}}'
sudo docker logs --tail 100 nextcloud-aio-mastercontainer
Test a small upload, download, rename, and deletion with a non-administrator account. This checks the user path without relying only on container health.
Configure users and background work
Create a separate daily-use account and reserve the administrator account for maintenance. Use groups and quotas deliberately, and enable multifactor authentication for accounts that can manage the instance.
AIO manages the background-job containers and application services it installs. Use the AIO interface for service state rather than creating duplicate host cron entries for the same tasks.
If mail notifications are needed, configure an external SMTP provider in Nextcloud. Virtarix does not provide a managed email-hosting service, so delivery and sender-domain configuration remain the administrator's responsibility.
Back up with the AIO workflow
Use the backup controls built into the AIO interface and follow the repository's backup documentation. Store the recovery key separately from the backup data; losing either one can make recovery impossible.
The AIO backup does not automatically include every external mount or storage service. Inventory external storage separately, protect it with its own recovery process, and document which data belongs to each system.
Before an application update or storage change, create a recovery point, verify that the job completed, and copy the result away from the VPS. Test restoration on an isolated host or maintenance environment rather than assuming a completed job is recoverable.
Update and troubleshoot
Use the AIO interface for application and container updates. Read the project's release notes, make a recovery point, apply one maintenance operation, and verify login, files, background jobs, and logs before continuing.
If a container is unhealthy, do not delete volumes as a first response. Capture the container list and logs, check disk capacity and DNS, and use the AIO troubleshooting guidance. Preserve /mnt/docker-aio-config and the application data until the recovery path is understood.
For a reverse proxy, follow the AIO reverse-proxy document exactly. Confirm the proxy's trusted-address settings, certificate ownership, forwarded headers, and websocket handling before making the service public.
Next steps
Document the domain, DNS owner, AIO recovery key location, external storage, administrator account owner, and restore test.
Planning a private Nextcloud host?
Choose a Virtarix Storage VPS for active files, database growth, previews, and the recovery workspace your deployment needs.
Storage VPS S
For backups, media and small archives
- ✓ 2 CPU cores
- ✓ 4 GB RAM
- ✓ 200 GB NVMe
- ✓ Unlimited
Storage VPS M
For growing files and app storage
- ✓ 4 CPU cores
- ✓ 8 GB RAM
- ✓ 400 GB NVMe
- ✓ Unlimited