Hi all, sorry if this has been asked/discussed before (I couldn’t find any directly overlapping posts):
I have been running the Nextcloud snap now for quite some time, and although things have run quite smoothly, I never really managed to properly back things up.
I make weekly backups of the database, config and data, but it’s very hard and time consuming to glue these elements back together. And as they say: when you can’t check whether a backup works, it’s not really a backup.
I have been experimenting with KVM/qemu lately and things look pretty great. The idea of simply backing up the entire OS that runs Nextcloud (a backup that you can easily deploy/run somewhere else to test if it’s working) sounds very attractive.
Reading around, however, tells me that some of you recommend running the Nextcloud docker (instead of a VM).
My questions:
- What would be the advantage of running Nextcloud as a docker, instead of within a VM?
- What would be a sensible way to have an incremental/differential backup of the VM/Docker?
- The storage usage of my Nextcloud instance exceeds 1TB. If I run it within a VM, I will have to connect it to a 2TB SSD. Does it make sense to add the external storage space to the VM? How does that affect the ease of backing the full VM up? Or (as I have read here and there) should I simply put the entire VM on the external SSD?
I’m not really an expert when it comes to backups, so I’ll only answer point 1:
The general advantage of docker over VMs is that it is not a full virtualization. A docker container still shares the same kernel as the host system (at least on Linux); thus processes in a container essentially run on your host and you can see them in your task manager (they are just heavily isolated). This also means it’s way easier to connect the filesystem (see https://github.com/nextcloud/docker for details). This generally makes docker containers more performant than full VMs. VMs also need a static allocation of memory, where docker simply shares the host memory and uses as much or little as it needs.
Of course this also means that a process can more easily gather information on your host, since it’s not full virtualization.
Like with VMs, you can easily just start the container(s) again, and you only need to save the data, since the container can be rebuilt.I’ll add that the guide linked above uses docker volumes, which are docker-managed spaces for your data. You can export and import a volume, but generally don’t have access to the data (afaik). You can also mount a folder on your filesystem instead if you prefer to have acces all the time.
Yes, indeed. One of the nice things about docker is that you can keep everything self contained, but then also map in volumes. This may be an external directory for configuration that you archive elsewhere but could also be something more advanced like a Kubernetes PVC.