Open source solution for cloud-based multi-tenant PBX?

So I’ve installed several FreePBX, I have always hosted them on a server at the same location as the office using it.

But now I have a request from an IT service VAR to setup a cloud-based system to host PBX for multiple clients

From my experience, FreePBX/Asterisk is not a good option for this. Even something as simple as sending some calls to one sip trunk and some to a different sip trunk requires serious ‘hacks’ which I made possible by prefixing numbers to all outbound calls from a phone, then when freepbx receives it it is able to match the outbound dial plan entry with that prefix, strip the prefix and send it along.

I definitely dont want to setup a system with prefix tricks like that

Is it possible to do what I need for this project with FreePBX? And if not, does anyone have some recommendations – preferably open source but open to commercial options also

I have considered setting up each client with their own VPS instance of FreePBX also, that might be one idea, but looking for the best option

From my point of view, no, FreePBX makes a lousy multi-tenant solution, but is an excellent PBX for a single client, I would spin up separate instances of FreePBX for each client, and channel all calls through a real SIP proxy like Kamailio.

In this day and age of virtualization, everything above is feasible and open source if you don’t need clever things or you are yourself clever.


Commercial Module: Extension Routing restricts trunks to assigned extensions

I have a customer that leases space to other related businesses in the same building. They do need to call each other, but want to pay their own phone bills, and have their own auto-attendants and message-on-hold. FreePBX works great for this.

One catch in using FreePBX for multi-tenant would be restricting extension to extension dialing, as there is no native partitioning built-in. There are ways to do it, but you need to know what you are doing.

And another issue is you can only have an extension number assigned once, so every tenant would have to use a different extension range.

Take the advice given in this forum.

Here’s a thread going back to 2007, looks like multi-tenant has been a feature requested for almost 10 years but not enough push yet for it to be a priority which is too bad because FreePBX is awesome for single tenant solution

@dicko thanks I am looking into that possibility

Still looking for more recommendations – isnt there anyone else running a multi tenant “cloud” solution for a small IT services company??

None of my research has turned up any great/affordable solutions.

MirtaPBX – Looks nice, but $5k license fee or $200/month … too much
FusionPBX - Considering this option, just hoping their product isnt as bad as their website

Thats basically it, thats all I can find that is truly multi tenant

All of my research keeps pointing back to setting up Kamailio front end and multi FreePBX backend, that is something I am considering

As @dicko points out FreePBX isn’t multi-tenant and we don’t pretend to be. His solution is a viable one and one that is in use all over. There is no reason to try and be clever. Virtualization is the proper way to do multi-tenant and an issue with one client doesn’t hurt other clients. Something like Jenkins or Ansible you can automate most maintenance tasks.

1 Like

A 2U-rack mounted server capable of handling a small business shouldn’t be much more than $500. With that, everyone gets their own hardware and can customize it to meet the needs of each individual client. You can add DAHDI cards, additional network cards, bigger or smaller hard drives, any number of other features.

Virtualizing a beefy server into 10 to 15 individual installations isn’t much more expensive and yields a lot of tenant solutions in a small footprint.

If we assume our time is worth something, it doesn’t seem like a lot of additional cost to do multi-tenant by doing the hardware way.

As sippy mentioned, you can use extension routes and all other kinds of methods to handle it.
I have a few clients that split their own company divisions A/B situation and some users have one route, one number etc which differs from the other. This can easily be done and it works.

Having said that, you shouldn’t try to put 20 companies this way because there will be limitations out of your control such as extensions are already used by another client and so on.

We provide a server for each client, it’s clean, yes a few headaches like multiple servers to manage etc, but it keeps them all independent, if they want to pull the server in-house, simply backup the cloud server and restore it on the local server.

There are other multi-tenant solutions out there, however I am not sure how good they are as I’ve not used them. We use a VM per customer but that has it’s own set of management challenges.

Check these out;

There was one more that I can’t remember at the moment, looked like a really cool interface too.

These are not FOSS but the pricing might be right…

I ended spending weeks trying out the Kazoo platform, and it was incredibly difficult just to install it. Once I had it installed, the monster-ui web GUI was very nice looking, but lacking in functionality as basic as adding a SIP Trunk.

Their IRC channel was very unresponsive, I would often ask the same question every few hours for several days until I get someone to write me back.

Eventually I realized that the single server installation that I spent weeks getting to work was only recommended for development, for production a 7 server cluster was the norm, and running a single server in production was not recommended. I received 2 more recommendations to use FusionPBX so I gave that a try instead.

So far FusionPBX has been great, I was able to get it working with all kinds of features very quickly. The IRC channel is very responsive and helpful. I am planning to roll it out to production soon


My goal also to find Multitenant PBX solution, with good call distribution functions.
All PBX functions should be automated and friendly, (example: creating extension - two steps : Click “New”, and click “Save”, creating new tenant in two steps - click ‘New’, put name and click “OK” )

mentioned above pbx lacks friendly user interface, no documentation and a little confusing XML configuration. thirdline is costly.

Ended up with my own multitenant implementation based on asterisk and ajax GUI