RocketChat / Rocket.Chat

The communications platform that puts data protection first.
https://rocket.chat/
Other
40.35k stars 10.48k forks source link

Support multiple orgs on the same instance #658

Open engelgabriel opened 9 years ago

engelgabriel commented 9 years ago

Transparently divide a single server into several different instances shared between different groups of users.

Evaluate https://atmospherejs.com/mizzao/partitioner

frdmn commented 8 years ago

:+1:

telemakhos commented 8 years ago

Watching... :+1:

kramer65 commented 8 years ago

Watching. We also need this badly! :+1:

marlene194 commented 8 years ago

Watching... :+1:

byhub commented 8 years ago

I tried to reach @steedos but got no response.. and asked few rocketchat guys and they were not clear either.. so I assume there is no one actually working on this issue currently?

rodrigok commented 8 years ago

@byhub Yes, you are right, we are no working on this feature right now.

steedos commented 8 years ago

Hello guys, sorry for reply late. we are working on steedos backend to support multi teams in one instance. and just released the first version. https://github.com/steedos/apps/ , with a demo at https://us.steedos.com/

When we try to start the rocket chat intergration, we found the following problems:

  1. username in rocket chat are unique, means users in different teams must have unique usernames, it's a small problem
  2. room names are unique, means if one team have a room named such as "HR" ,"Finance", "Jobs", no other teams can have that name.
  3. User will confused if there is an general channel with a lot of people unknown. Instead every team should have a team general channel.
dalareo commented 8 years ago

Hi @steedos, is Steedos ready to install in our own server?? We are planning EduCaaS integration with similar services (Sandstorm-like)

steedos commented 8 years ago

@dalareo Yes, steedos can install in your own server. you can use the admin app, and we will release a cms app in a month, only the workflow app need an extra workflow engine server written in ruby, and we have a plan to transfer the old ruby server to meteor.

codyaray commented 8 years ago

@steedos https://www.steedos.com/us/chat/ is this a bundled rocket.chat of some sort? or an independent slack clone? does it already have multi-team stuff?

steedos commented 8 years ago

@codyaray, Yes, It is a bundled rocket.chat, It's not a multi-team stuff.

beatelite commented 8 years ago

What's the good word on this so far?

msears commented 8 years ago

We are also looking for this, a multi-tenant architecture for rocket.chat, preferably with subdomains for each tenant. Anyone else have any progress here to report, am thinking about adding a bounty if that would help.

ebayaraa commented 8 years ago

When status to be changed to release?

jelenajjo commented 8 years ago

Any update on this guys ? @engelgabriel @rodrigok

anandsork commented 7 years ago

I am also looking for this.

Meantime, is there any other way to simulate multiple organizations on single instance? Like running multiple instances of Rocket.chat on different ports with different DBs? How many such instances can be run?

There was some discussion around Partitioner & error while using it. artisin had suggested some wayout (https://github.com/RocketChat/Rocket.Chat/issues/658#issuecomment-161090283), but there is no discussion after that. Will that fix the thing?

codyaray commented 7 years ago

@anandsork you should be able to run multiple processes on different ports with different DBs behind a load balancer to proxy chat.example1.com -> localhost:3001, chat.example2.com -> localhost:3002, etc.

In the init scripts for each process, set the MONGO_URL to mongodb://localhost:27017/rocketchat1, rocketchat2 etc. (It doesn't matter what these are; they're created when you start the process.)

Here's a tutorial for running multiple processes on one instance for performance. It'll be a similar idea but with more frontends in the load balanacer and differently-configured upstart scripts.

anandsork commented 7 years ago

@codyaray , Thanks a lot for your input. I shall try this out. Is there any link for the tutorial you mentioned? Seems that it got stripped off in the message. Load balancer with upstart scripts seems to be great idea.

codyaray commented 7 years ago

Weird, here it is again. Sorry about that.

https://rocket.chat/docs/installation/manual-installation/multiple-instances-to-improve-performance/

MikeDaniel18 commented 7 years ago

I'm slightly confused, this seemed to have a lot of attention from the Rocket.Chat team in late 2015, but it doesn't seem to have been implemented. Has it?

urbanpt commented 7 years ago

No it hasn't. I haven't found anything besides this commit mentioned in RocketChat/Rocket.Chat#630.

mfilotto commented 7 years ago

Any news on this one please ?

DMW007 commented 7 years ago

@codyaray That's a load balancer environment. As I understood this ticket, it's about having some kind of teams in Rocket.Chat like Mattermost has. In Mattermost, you can create different teams, that are independent from each other, but share the same user-base. For example you can create TeamA and TeamB. Now when UserA creates an account, you give them access to TeamA only and UserB to TeamB.

In this case, UserA can only see TeamA and wouldn't even know about TeamB. The benefit is, that its possible to have an user in multiple teams. Like give UserA access to Project1 and Project2, but not Project3 or Project 4. The UserA has a single account for all his teams.

That's the problem what let me discourage from using Rocket.Chat: I need to create two teams for different projects. which are independent. But as I'm mentor both projects, I need to be a member of both too.

With Rocket.Chat, the only solution seems to be create two different instances. This wouldn't result in a good user-experience since I have to logout from ProjectA's instance to use ProjectB's instance. Consistent notifications on a mobile device wouldn't be possible, cause I'm only logged in to one instance at the same time.

It's pity that Rocket.Chat doesn't offer such a feature. I tested Rocket.Chat and Mattermost, and liked Rocket.Chat more. But I need two teams, so I have to use Mattermost, since this feature doesn't exist in Rocket.Chat.

chellem commented 7 years ago

@DMWOO7 I've been able to manage teams, that is upon creation of a team in Rocket.Chat, another instance of Rocket.Chat will be created, each one separated and each has it's own database and using nginx as a proxy server and access different teams from a single url. The problem of authentication can be resolved by the use of API, so the switching between teams is possible.

tmtben commented 7 years ago

Please @chellem , could you explain us?

bannostookaylo commented 7 years ago

Why cant there just be a teams collection with a "company ID" and then a user belongs to that company and then they can only access things associated with said company ID... maybe I don't understand MongoDB that well but I'd love to include this with our software but we need to figure out how to implement such a feature. :)

tareko commented 7 years ago

Hello all,

I am currently evaluating rocket.chat for migration from mattermost. Huge advantages include the ability to use rocket.chat's enterprise features in an open source version (especially SAML for us).

However, this feature is killer in mattermost. Could those of us interested in this feature put a bounty on it? I am happy to contribute! I've put my bounty in bounty source as indicated above (see here).

Thank you

FrederickLjungberg commented 7 years ago

Happy 2 year Anniversary (of this issue being ignored by the admins)!

:birthday::birthday::birthday::birthday::birthday: :balloon::balloon::balloon::balloon::balloon: :tada::tada::tada::tada::tada:

Creanimo commented 7 years ago

This would be such a helpful feature. How much work is still needed? (or more directly put: How much bounty would be needed to get this done?)

urbanpt commented 7 years ago

@FrederickLjungberg You're welcome to start some work on it

@Creanimo I agree. I'm available to help either with coding or with the bounty.

geekgonecrazy commented 7 years ago

This feature request is for sure not ignored. We are well aware of it. It's a significant amount of work. A lot of the stuff we are working on will lay the ground work for this feature.

KVSocial commented 7 years ago

following - would love to see this feature.

jmordica commented 7 years ago

Following!

ZhaoVitapublic commented 7 years ago

Following - This would be very nice feaure.

hridayeshgupta-mt commented 7 years ago

would love to have this feature! Is there any branch where development for this is going on?

juliomac commented 7 years ago

It would be nice indeed! Following

AustinFelipe commented 7 years ago

Does anyone know if there is a branch in progress?

SRSaddler commented 7 years ago

+1

crud42 commented 7 years ago

+1

crud42 commented 7 years ago

Referring to the spaces idea:

This is a very nice Pattern to use for such a usecase. Is there any update concerning the mentioned idea of a possible rocket.chat integration?

jk2081 commented 6 years ago

+1

torgeirl commented 6 years ago

This feature request is for sure not ignored. We are well aware of it. It's a significant amount of work. A lot of the stuff we are working on will lay the ground work for this feature.

@geekgonecrazy are you able to elaborate on what you're currently working towards? For instance, would it be something similar to Mattermost's (and Discords?) model with one user on the server that can join/be added to more than one team, or like Slack where the user can switch between different accounts on different instances (/servers) in the UI?

Besides the leak of PostgreSQL support (issue RocketChat/Rocket.Chat#533) this is a show-stoppers for my employer to consider Rocket.Chat over Mattermost which we're testing out now.

tompinzler commented 6 years ago

We are currently evaluating different chat software and fell in love with Rocket Chat. But missing that particular feature is a blocker for us. Is there any vague ETA I can convince my management with to bet on Rocket Chat? Is it possible to sponsor development on this to speed things up?

GustavoAmerico commented 6 years ago

This issue needs documentation summarizing these two years of conversation and pointing out the points that the community can help

geekgonecrazy commented 6 years ago

We might should actually title this issue multi-tenant.

There are pretty much two different things at play here.

Multi Org

You'd be able to completely isolate organizations and their teams from each other.

Something like one server being able to handle: chat.something.com chat.something2.com and both have isolated users and channels while utilizing the same CPU resources.

Multi team per Org

Being able to have teams in an organization. These teams would have their own channels, users would belong to those teams. But they would also be able to have shared channels between teams.

Where we are

We are likely much closer to the second one. The first one is what this issue is actually for.

tompinzler commented 6 years ago

Depending on how the actual implementation looks like "Multi team per Org" would include a lot of aspects of "Multi Org".

Creating a team for each organization on the same server should provide enough isolation between organizations for most use cases.

We are likely much closer to the second one.

Would you mind being more specific on this? Are we talking about an ETA of weeks, month, years?

geekgonecrazy commented 6 years ago

Would you mind being more specific on this? Are we talking about an ETA of weeks, month, years?

I don't really have a solid ETA. But I can say: Not years. But probably not weeks either. Its on our Mid-Term roadmap, a few months out would be best estimate currently. Of course things can always change :)

If a contributor wished to help out on making this a reality we would definitely help out and try to help them land a PR.

vodkhang commented 6 years ago

@geekgonecrazy I need multiple org to utilize resources somehow, but even a modified version of Multi Team per Org may also work. I have been modifying rocket.chat for a while to help with my new product. I understand the Meteor and NodeJS to some extent.

how can I help, and how is the process?

geekgonecrazy commented 6 years ago

No work started directly on this. It's a very big under taking. I think it will be a bit easier to say how you could help once we go into planning stage.

vodkhang commented 6 years ago

@geekgonecrazy: you mean even the second one, "Multi Team per Org" still hasn't started? I can code with your team for about 10 hours / week for 3-4 months, and then depending on the situations, have a dedicated developer work with your team for 2-3 months. That is only for the "Multi Team per Org", right?