I use Nextcloud as an alternative to Google Drive or iCloud. I self-host it on a VPS or Raspberry Pi and make it available only within my Tailscale network so that it is only accessible to my own authorised devices.
Nextcloud is relatively straight-forward to run using a docker-compose.yml
file:
version: '3'
services:
db:
image: mariadb:10.5
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
restart: unless-stopped
volumes:
- ./nextcloud-data/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=CHANGEME
- MYSQL_PASSWORD=CHANGEME
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
app:
image: nextcloud:22
restart: unless-stopped
ports:
- 8083:80
volumes:
- ./nextcloud-data/storage:/var/www/html
Bring the service up, navigate to the IP address or domain, and configure the instance to get started.
Since I run Nextcloud within my personal Tailscale network, I don’t bother with TLS certificates, but should you wish to you can use Traefik to provision and manage these certficates.
Configuration
If you can’t access the instance, or it tries to redirect you, try adding your IP or domain name in the trusted_domains
array and overwritehost
value in nextcloud-data/storage/config/config.php
.
Storage
Depending on how much storage you need, you may wish to create a big volume and attach it to your server, and then use this as the volume mapper. You may also wish to encrypt the volume.
Backing-up
I recommend using the filesystem backup strategy outlined in the backups note.
Clients
I use the official Nextcloud apps on my Mac and iOS devices.
On Mac, you can select or create a folder that will be kept in-sync with your Nextcloud instance (like the way Dropbox works).
On iOS and iPadOS, the Nextcloud app, when authenticated, shows your Nextcloud as an option in the Files app.
WebDav, CalDav, CardDav, etc.
Nextcloud can be used as a Dav server for file storage, calendars, and contacts. Check out the documentation for more info.
There are loads of apps available for Nextcloud, including email, document-editing, and more. View the documentation and app catalogue for more information.