Install Nextcloud on a fresh VM

Overview & Details
Overview & Details
Before you begin
Docker installed
This guide needs Docker Engine and the Compose plugin on an
Ubuntu VM. If you have not installed them yet, follow the
urZONE Docker guide first.
Recommended resources
At least 2 vCPUs and 4 GB of RAM, plus enough disk for your
files and backups. Nextcloud stores user data in a Docker volume,
so size the VM disk for the data you expect.
Network
This guide publishes Nextcloud on TCP port 8080 for setup and
testing. Put an HTTPS reverse proxy in front before exposing it
to the internet.
Run with care: These commands create containers that
will hold your files and database. Use a VM you control, take a
snapshot first, and choose strong passwords.
Connect by SSH
Sign in to the VM as root. Replace the example IP address with your own.
ssh root@YOUR_SERVER_IP
docker --version && docker compose version
Create the project folder
Keep the Nextcloud configuration in its own folder.
mkdir -p /opt/nextcloud && cd /opt/nextcloud
Write the Compose file
Before copying, replace YOUR_SERVER_IP,
CHANGE_ME_ROOT, CHANGE_ME_DB,
CHANGE_ME_ADMIN, and the admin username as
you prefer. Keep the database password identical in both places.
cat > compose.yaml <<'EOF'
services:
db:
image: mariadb:11
restart: always
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: CHANGE_ME_ROOT
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: CHANGE_ME_DB
redis:
image: redis:alpine
restart: always
app:
image: nextcloud:apache
restart: always
ports:
- "8080:80"
depends_on:
- db
- redis
volumes:
- nextcloud:/var/www/html
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: CHANGE_ME_DB
REDIS_HOST: redis
NEXTCLOUD_ADMIN_USER: admin
NEXTCLOUD_ADMIN_PASSWORD: CHANGE_ME_ADMIN
NEXTCLOUD_TRUSTED_DOMAINS: YOUR_SERVER_IP
volumes:
db:
nextcloud:
EOF
chmod 600 compose.yaml
Before running: The Copy button copies the placeholders
exactly as shown. Replace them locally, never publish your real
passwords, and keep compose.yaml private because it
contains them.
Start Nextcloud
Pull the images and start the containers in the background. The first
start can take a few minutes while Nextcloud installs itself.
docker compose up -d
docker compose logs -f app
Press Ctrl+C to stop following the logs; the containers keep running.
Wait until the log shows Apache is ready.
Open your Nextcloud
Open this address in your browser. Make sure TCP port 8080 is
permitted through your VM and provider firewalls:
http://YOUR_SERVER_IP:8080
Sign in with the administrator username and password from your
Compose file. Replace YOUR_SERVER_IP with your VM’s
actual IP address.
Check status and add a trusted domain
If you see an untrusted domain error when using a hostname, add it
with Nextcloud’s occ tool. Replace
cloud.example.com with your hostname.
docker compose exec -u www-data app php occ status
docker compose exec -u www-data app php occ config:system:set trusted_domains 2 --value=cloud.example.com
Keep building
Put Nextcloud behind an HTTPS reverse proxy before using it on the
internet, update it by running docker compose pull then
docker compose up -d from /opt/nextcloud, and
back up the db and nextcloud volumes
regularly. Nextcloud upgrades one major version at a time.
References:
Nextcloud Docker image
·
Nextcloud admin manual
·
Docker Compose
WP Multisite
Before you begin Working WordPress This guide assumes a working WordPress install on Apache, such as the one from…
Install WordPress on a fresh VM
Before you begin Clean VM Start with a fresh Ubuntu Server LTS virtual machine with root or sudo access…
Install Docker on a fresh VM
Before you begin Clean VM Start with a fresh, 64-bit Ubuntu Server LTS virtual machine. Check Docker’s supported Ubuntu…
Download Install Nextcloud on a fresh VM
Use the button below to open the download destination.


