Discussion: Using Nextcloud as an "instance" rather than a server. Or, the development of sub-clouds

Looking forward, it would make sense to allow users to have their own sub-cloud. Stick with me:

Discord uses the word server flippantly, because users are not actually on servers at all… instead they live within any number of independent, virtual instances… be it 2 or 400.

Looking into a deeper future for our servers, Nextcloud could begin to offer tight knit Nextcloud instances.

What does this Instance mean?

We have circles, collectives, groups… but all users within a particular server are still inter-connecteded when they might not want to be.

Users

  • Zakir, Joe, Sally know each other through Volleyball
  • Zakir, Jean, Gabie know each other through Book Club
    • Jean and Gabie strongly dislike Joe and Sally because they used to date each other.
  • Zakir, mom, dad, brother, sister, grandmother
    • the entire family is very private and judgemental.

All of these people have been added to Zakir’s Nextcloud, but they do not want to explicitly interact with each other. So, Zakir sub-divides his Nextcloud into multiple instances within https://zakir.cloud…

  1. Volleyball player instance for calendar, contacts, tasks, photos, deck, collectives
  2. Book Club instance for calendar, contacts, tasks, photos, deck, collectives
  3. Zakir’s personal instance no one else has access to
  4. Family instance for group folders, recipes, calendar.

Instances are a way to segregate these sub-clouds, by ensuring the users of one will not have access to the data of users outside their particular instance.
Instances could even one day federate through the overall Nextcloud server to make even larger, distributed instances amongst any number of Nextcloud servers.

Thanks for reading! Science fiction lesson concluded.

2 Likes

That sounds quite interesting.
But I’m not yet getting behind the idea of how you would address those separate instances? Through a 4th level domain? like volleyball.cloud.zakir.url ?

And what’s the bonus of doing so? I mean if I understood the concept of circles and/or groupfolders right, it would exactly do that: separate certain data from others ppl.

1 Like

My thought is that any “instances” would still reside within the same server.

Same domain cloud.zakir.url

It is the principal of being a part of Volleyball, while wanting nothing to do with Book club

  • Users of one will never encounter users of the other even though they are on the same server. They won’t be able to find their contact info or full text search for them or see what these other people have been up to.

A lot of this functionality exists in pieces, but it is not nearly this clear in execution.

How do I allow groups of users to exist on my server in total segregation from everyone else on that server?

Can’t you just do this with groups already? You have options that auto-completion is only done within people of the same groups and you can restrict sharing also just for users within the same group (probably not possible for all apps). So your people not liking each other don’t see each other.

And you chose what you share with others. And if that is not enough, you can set up 4 different Nextclouds, those who want can share via federated sharing between the instances.

1 Like

My thought as well. You’d need to have four different Nextclouds, so wondering if there is an in-between on a singular server.

Federation sharing is so weak that it doesn’t make sense. Plus, it has effectively zero support within any existing apps apart from minimal support in Files. If you used federation, you’d still not be addressing this idea.

For folks following along, the “Restrict users to only share with users in their groups” option enables the biggest chunk of this functionality - keeping unrelated users effectively invisible to each-other on the same instance.
Having apps be visible only to certain groups is also possible (with a few exceptions), so your Volleyball, Book Club and Family groups can all have slightly different experiences. With a little tweaking, you can even change which app opens first, though perhaps not on a per-group basis…

I think this one’s answered but would be nice to be a little simpler to set up. I think the real question is: what’s the desired behavior for Zakir’s account(s)? Should they be separate per-instance, or should Zakir be able to interact with all the groups from the same account? If the former, then absolutely, set up 4 instances. If the latter, what we have is good with room for improvement.

Well said. This is exactly what I am pondering as well.

I also think that groups are the right way to go for these usecases. However, the group functionality certainly has room for improvement but I think they should add the appropriate functionality there and probably integrate it even better to the core, instead of introducing a completely new concept.

Small side note:
If this is about offering Nextcloud as a hosted service, then you definitley should work with VMs or maybe Linux conatainers and offer your customers fully-fledged instances, instead of just accounts. Or you could develop something yourself to manage your users and instances. I don’t think that such use cases should have priority for the Nextcloud developers, unless the “customer” who wants to offer such a service pays for it in one way or another. Just saying. :wink:

1 Like

This is science fiction, as stated in the first post. Let’s not try to be caught up in whether this should actually be developed since this is simply a conversation. :grin:

What specifically comes to mind for you?

For me it definitely sounds like really good use case to move NC into maturity: given the fact (from my understanding) groups and circles address same goal but groups are “admin administered” and circles are “user self-service”: if all apps would follow/adopt groups and/or circles approach you could easily adopt your idea using groups or circles…

4 Likes

Ok, there’s two ways to go about this;

  1. Groups. Nextcloud can be configured to isolate users into their separate groups and never encounter each other.
  2. Instances. You can set up several instances of nextcloud on a single server, each within its own path or subdomain.

Groups is probably the best approach, since you have some common users. Zakir would be a member of all the different groups. Joe and Sally would be within the volleyball group, etc.

You can configure user/group isolation in Settings → Administration → Sharing
Use settings like “Restrict users to only share with users in their groups” and “Allow username autocompletion to users within the same groups”.

That would pretty effectively restrict users from communicating with users who are not in a common group.

2 Likes

Here my ideas:

Maybe there could be a special Nextcloud edition e.g. Nextcloud Housing

  • the installation files are only once and are upgraded at one point (Master)
  • every instance gets it own config/config.php (and also domain e.g. cloud1.domain.tld)
  • every instance gets it own data path (config/config.php)
  • additional apps to interact between the different Nextclouds (if needed)

On upgrade all Nextcloud instances are upgraded.
Maybe this already exists at Nextcloud Hoster.

FYI: I am currently working on documenting how to run multiple instances of AIO on the same server. You can follow the progress here: Document how to run multiple instances in the readme · Issue #854 · nextcloud/all-in-one · GitHub

2 Likes