I already read here some topics about my question, but all where related with “old” NextCloud versions. Now that v16 has been released I wanted to know what is the best way to be a NextCloud Managed Service Provider to multiple clients.
In a simple way, I have multiple clients and each client is a different company. I want to offer them a hosted fully managed NextCloud service. So, to do that do I need one NextCloud installation for each client or can I just buy a big server, make one NextCloud installation and inside that single installation add multiple clients/companies.
Of course, privacy is a major factor and since they are different clients/companies they cannot have access to others files or users.
I’m not sure if you found this thread while searching, but it’s still fairly recent, and I don’t think NC16 changes things substantially on this front.
Building separate Nextcloud installations (usually on Docker or similar, behind a shared reverse-proxy) is viable, but not usually worth the duplication of effort. You’re likely going to get similar results by disabling sharing with other groups, so that users from different companies don’t show up in suggestions.
There are a few apps and settings that can’t be changed independently, but that’s the exception rather than the rule, and I’ve yet to come across a show-stopper. Your mileage may vary.
Personally I would run different installations in separate containers on one machine. Docker is an obvious choice but I personally prefer Ubuntu’s LXC (i.e. LXD) as it’s as fast as metal whereas Docker has overhead. You can create just one container and clone it so easily using ‘lxc copy …’ that the effort is less than trivial.
Totally agree about LXD. I’ve got a small hosting system that’ll run in as little as 200MB of ram (when using SQLite) and I use LXD for testing the system with some scripts that set up the Ubuntu server system automatically. Adding Nextcloud to any vhost, with it’s own uid:gid, is just a “addnc” script invocation away. Also ideal for those who want a local mail server for Nextcloud in a LXD container on their desktop machine…
If you wanted to (and didn’t mind maintaining several Nextcloud instances), you could install Nextcloud in multiple folders or subdomains on the same host. This wouldn’t require any virtualisation, and they could share the same database and memory caching instances.
Yes you are right, but with LXC it is not user noticeable. You have to run analytical tests and take careful measurements. I will change my statement to “almost as fast as bare metal” as I don’t want to create distractionary thread here.