1. Install snapd & a web server (caddy in this guide) ``` sudo apt update && sudo apt install --yes snapd caddy ``` 2. Start snapd systemd unit ``` sudo systemctl start snapd ``` 3. Install Nextcloud snap ``` sudo snap install nextcloud ``` 4. Initialize Nextcloud snap and create admin account ``` sudo /snap/bin/nextcloud.manual-install USER PASSWORD ``` 5. Set trusted domains in Nextcloud ``` sudo /snap/bin/nextcloud.occ config:system:set trusted_domains NUMBER --value=DOMAIN ``` 6. Set Nextcloud HTTP & HTTPS ports to 8080 & 4443 ``` sudo snap set nextcloud ports.http=8080 ``` ``` sudo snap set nextcloud ports.https=4443 ``` 7. Create (or add to) a Caddyfile to reverse proxy to Nextcloud ``` nano /path/to/Caddyfile ``` ``` DOMAIN { reverse_proxy localhost:8080 rewrite /.well-known/carddav /remote.php/dav rewrite /.well-known/caldav /remote.php/dav rewrite /.well-known/webfinger /public.php?service=webfinger } ``` 8. Stop Caddy systemd service & change Caddyfile path ``` sudo systemctl stop caddy ``` ``` cat /usr/lib/systemd/system/caddy.service | \ sed "s|/etc/caddy/Caddyfile|/path/to/Caddyfile|g" | \ sudo tee /usr/lib/systemd/system/caddy.service &> /dev/null ``` 9. Reload systemd daemon and restart Caddy ``` sudo systemctl daemon-reload ``` ``` sudo systemctl start caddy ```