I would strongly advise against nextcloud. I installed it for about 8 months before giving up. I spent too many nights getting it to work properly, and recovering from various failures. I never felt safe putting my data on it.

In my opinion, Nextcloud favours quantity over quality, and many of its core features are subpar. Upgrades are messy, and the docker images fail at reproducible builds. The android client is also buggy.

I actually recently encountered issues which broke the system, when attempting to upgrade between major versions. I wrote about it briefly on my blog, as incomplete as it may be, here: https://blog.kronis.dev/everything%20is%20broken/nextcloud-i...

In summary:

- Nextcloud failed to update from the version 17 to 20 - it did inform me that it can't do this, but not before attempting to update the version number and essentially breaking itself. That said, other software, such as phpBB is also known for brittle updates between major versions.

- After a re-install of the latest version, it failed to allow clients to connect to it through HTTPS (reverse proxy setup), though this proved to be a problem in the default configuration.

- It then also failed to synchronize all of my files once i dumped them into the sync folder, though that's a lesser issue.

- The new Talk ( https://nextcloud.com/talk/ ) application is enabled by default and for some reason noticeably slowed down the whole system, even when not in active use - page loads went from 1-2 seconds to approx. 3-10.

Despite all of that, i would still recommend Nextcloud, because there isn't much software like it out there, and when it works, it is actually pretty okay.

Provided you follow these suggestions:

- Always have working backups. I personally use BackupPC ( https://backuppc.github.io/backuppc/ ) which i self-host, cloud vendors also offer managed options.

- Stick to a single major version, update manually. In the case of Docker, i just stick to a particular image tag, such as :20.0.2-apache.

- When updating, have the backups ready and be prepared to wipe and reinstall the application. Never store anything in Nextcloud that you're not prepared to have unavailable for a while. As for the apps (like Talk or Calendar), where you can't export the data to later import it, be prepared to lose it, or use another alternative.

Sadly this will mean that for a while your instance will be insecure, but the current circumstances force me to prefer working software over secure software.

I had exactly the same issue last week!

https://nicolasbouliane.com/blog/nextcloud-docker-upgrade-er...

However, this is the straw that broke the camel's back:

https://github.com/nextcloud/docker/issues/420#issuecomment-...

Huh, the idea of manually downgrading the version number seems like a nice hack!

It does feel kind of unfortunate, however, that while containers themselves are immutable most of the time, the tags themselves will point to different images over time.

If you do want something like a rolling release model, where you always use ":latest" (or ":master" or ":trunk", or ":stable" or whatever), then it feels like you'd need to constantly pull the latest versions of the image, with something like shepherd for Swarm ( https://github.com/djmaze/shepherd ), watchtower for regular Docker ( https://github.com/containrrr/watchtower ) or whatever the Kubernetes alternative is.

The whole DB user thing feels unfortunate, however! Especially on systems, where you have a single "fat" DB instance which is shared amongst different pieces of software (with separate schemas for each), as opposed to a more distributed approach, where each DB instance is separate and used by only one application.

Personally i've come to use the latter approach and run all of my DBs as containers, with bind-mounted /var/lib/$DATA_DIRECTORY_FOR_DB_HERE directories, for easier data backups. Though i guess that's also in part because i want to cap the resources available to each instance and also because i don't trust any piece of software to let it impact others in a shared resource situation.