Central master config for multi-tenant multi-forum solution

(Geoff Bowers) #1

I’m looking at a little project where I need lots of tiny communities that are almost identical except for the users and content; that is, configuration, theme, SSO provider, etc.

What’s the best way to lock down config/settings across lots of forums on exactly the same server where the config will vary only slightly between forums? Also I’d like to be able to programatically create new forums, utilising the central config with slight variations between forums.

Is it possible to create a plugin who’s sole responsibility is managing a central set of configuration items? For example, use the plugin designated config unless the forum has a local setting.

What about a central “master” forum that’s not used except for configuration, that other forums inherit from?

(Matt Palmer) #2

Our (CDCK) multi-tenant hosting containers use an (internal-only) plugin to do what you describe – hard-code (or derive) default values for some settings, make settings invisible (and hence unavailable to be changed), that sort of thing. Programmatically creating new forums is simply a matter of creating (and migrating) a new DB and adding the config to the multisite config.

I wouldn’t call the whole setup “trivial”, but it’s certainly not the most complicated thing I’ve ever seen, either.

(Geoff Bowers) #3

I was looking at using the app.yml to add a bunch of things like:

- exec: rails r "SiteSetting.notification_email='hello@bricabrac.io'"

And some how scripting that process.

(Geoff Bowers) #4

Hmm… certainly doesn’t seem trivial the more i look at it. I’m back to seeing if this is possible by restricting users to category and sub-category trees and controlling that set up instead.

(Matt Palmer) #5

I wouldn’t try and do any of that in app.yml; that only gets run at container rebuild time, and there’s no need to trigger a rebuild in order to add another site to a multisite config. I’d strongly recommend going down the custom plugin route to apply config settings, unless your single-forum-with-category-restrictions approach is working for you (which is even easier).