| Requirement | Details |
|---|---|
| OS | Ubuntu Server |
| Network | Tailscale installed & connected |
| Storage | NAS mounted at /mnt/nas |
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp dockermkdir -p ~/Projects/nextcloud
mkdir -p /mnt/nas/nextcloud
cd ~/Projects/nextcloudcp .env.example .env
nano .env# .env.example
MYSQL_ROOT_PASSWORD=changeme_root
MYSQL_PASSWORD=your_db_password
NEXTCLOUD_ADMIN_PASSWORD=your_admin_passwordWarning
.env is ignored by git — never commit real passwords.
docker compose up -ddocker compose ps # verify containers are runningNote
Setup via browser (no NEXTCLOUD_ADMIN_USER/NEXTCLOUD_ADMIN_PASSWORD set in .env):
Nextcloud auto-adds the trusted domain during the web installer — skip this step.
Setup via .env credentials: Nextcloud auto-installs on first start and does not add the trusted domain automatically — you must run the occ command below after installation completes.
# Fix "untrusted domain" error:
docker exec -u 33 -it nextcloud php occ config:system:set trusted_domains 1 --value=<tailscale-ip>
# Fix data directory permission error:
sudo chown -R 33:33 /mnt/nas/nextcloudReplace
<tailscale-ip>with your server's Tailscale IP — e.g.xxx.xxx.xxx.xxx
sudo systemctl enable dockerContainers restart automatically via
restart: alwaysindocker-compose.yml
Open your browser and go to:
http://<tailscale-ip>:8080
| Field | Value |
|---|---|
| Username | admin |
| Password | value of NEXTCLOUD_ADMIN_PASSWORD in .env |
Download the Nextcloud client from https://nextcloud.com/install/#install-clients
Connect using server URL: http://<tailscale-ip>:8080
nextcloud/
├── 🐳 docker-compose.yml # service definitions
├── 🔒 .env # your secrets (not committed)
├── 📄 .env.example # template — safe to commit
├── 🚫 .gitignore
└── 📖 README.md
| Action | Command |
|---|---|
| View logs | docker compose logs -f nextcloud |
| Stop | docker compose down |
| Update | docker compose pull && docker compose up -d |
| Restart | docker compose restart |
- Files are stored on NAS at
/mnt/nas/nextcloud/admin/files/ - Nextcloud is only accessible within the Tailscale network
- On mobile: install Tailscale app and connect before opening Nextcloud