We periodically review our expenses to see what we can cut. One of the pain points was our phone system. We have 3 users on Jive (by Logmein), and it’s costing us $80/month.
We went on a tear of quoting out multiple hosted PBX platforms. Apparently, no matter who you go with, it’s going to be about $20/user per month.
Not our thang, especially when some of our users are only making 2-3 calls per month.
So, we went on the hunt for a better solution.
Turns out, if you go the do it yourself route, there are a lot of options.
We used to think that doing something ‘open source’ would be expensive and time consuming.
Not at here at Group Outsource. No longer.
With under 10 hours of work, we had a beautiful, full fledged system. (If you hire Group Outsource, you would pay somewhere between $100-$200 as a one time fee for this.)
So, what does a ‘PBX’ system consist of, and how do you cut costs?
3 Elements of a PBX System
A PBX system consists of 3 main parts:
- Phone number/provider – You need something akin to a telecom provider who you can buy/rent phone numbers from, and pay them the per minute costs for using the numbers.
- PBX Software – Like any other web software, you will need a PBX software, be it open source or paid.
- PBX Software Host – You will need to host it on a server somewhere
Phone Number/provider
There are some very powerful phone number providers out there that are specifically built to work for large corporations and developers. They have priced their numbers very competitively, but don’t provide the PBX software or hosting.
Some of the top contenders are:
www.twilio.com – Is the gold platform for large scale enterprises who need an API based phone number system. E.g. for large call centers with custom requirements, or for companies using text messaging at scale. However, they are expensive, and companies start realizing how much it costs when they get to a certain point.
www.plivo.com – Plivo is between 10-50% cheaper, while still having almost all of the feature set of Twilio. The programming language is a bit different, but the capabilities are the same. We ended up building our PBX system in Plivo. One nice thing about Plivo is that you get $10 of credit to play around with it. This can last you anywhere from 1-8 weeks depending how often you are on the phone.
www.signalwire.com – A developer friend of mine showed me signalwire. I had no idea this existed. They are literally bottoming out the market. It must be a disgruntled ex-Twilio employee or something. The API codebase they’ve built is called LaML (surprisingly similar to TwiML by Twilio), and it’s basically a copy of the specs 🙂 However, the pricing is disruptively low.
Carrier | Local # / month | 800 # / month | Local outbound / minute | 800 outbound / minute |
Twilio | $1 | $2 | 1.3 ¢ | 1.3 ¢ |
Pilvo | $80 | $1 | 1.2 ¢ | .3 ¢ |
Signalwire | $.08 | $.45 | .65 ¢ | .65 ¢ |
Unfortunately, we chose Plivo as our platform before we discovered signalwire, so the step by step directions below are specifically for Plivo.
PBX Software
The scariest thing about trying to build our own PBX is that it feels like using an open source PBX software is going to be hard to use.
The truth is, your business phone provider is probably just customizing an open source structure. So building your own PBX may not have a guided setup, but once complete, you never pay for it again.
There are a number of open source or freemium PBX software out there. These include Asterisk, OpenPBX and FreePBX.
You can see more here: https://www.voip-info.org/open-source-voip-software#PBXplatforms
However, the setup seemed quite daunting.
Instead, we opted for 3CX, which has a freemium pricing model that is quite generous. The software’s core features are free, including meeting conferencing. However, for advanced call center features, additional attendees on a meeting conference and other features, you would pay between $1-$1.30/user/month!
3CX has apps, teleconferencing, in-browser calling and so many other features you would expect from a paid PBX system.
There’s pretty much no downside to using them.
PBX Software Host
So, you’ve chosen your phone numbers and your phone provider. You have chosen a cool PBX software that is free. What do you need next?
You’ll need a website host to run the software on.
Once again, it normally sounds like you’d pay $20-$50/month for a server, and then have to worry about maintaining it, right?
Not how we roll!
Amazon cloud has a super basic, always on shared server called ‘lightsail’. This server costs as low as $3.50/month.
Not only that, when calculating how much you need to spend on a host, you calculate by how many ‘concurrent users’ you will be having. Basically, how many people will be using the PBX at the same time.
So, if you have 10 people in the office, but there’s generally only 3 people at a time on the phone, then this basic lightsail server is just fine.
We have all of the details how to set it up below.
So, what will a PBX like this cost?
There’s 3 factors to your cost. Your phone numbers and minutes, which are unavoidable. That said, it’s super cheap. A single 800 number costs you $1/month. Your phone call minutes cost you the most of 1.2¢/minute. So, even if you have 10 people in the office, and they each use the phone for 10 minutes a day, you’re looking at $30/month for the phone minutes, under $10/month for the phone lines, and $3.50/month for the server.
$43.50/month.
Let’s see what it would otherwise cost you.
What would Vonage, Ringcentral, 8×8 and other PBX systems cost per month?
So, if you’re using Vonage, RingCentral, 8×8, Nextiva or any popular software, you’re paying $20/month/user plus fees. For the 10 people in your office, you would be paying $200/month. This is a savings of $155/month, or $1,860/year!
Cloud PBX Setup
Here’s what’s required setup to have a full functional cloud PBX system
- AWS Lightsail Setup
- 3CX PBX Setup
- Plivo Platform Setup
AWS Lightsail Setup
- Setup Amazon AWS
- Register for an amazon AWS account
- Once registered proceed on registering an Amazon Lightsail account.
- Navigate to the Amazon Lightsail page and complete the registration process.The registration process requires your credit card details, even if you plan to use the free tier.
- Once registered, log on to the Lightsail AWS console.
- Get your Amazon Lightsail API Keys.
- Go to Amazon Lightsail and in the top right corner, click on “Account” > “Account”.
- On the “Account” page, click on the “Advanced” tab and then on “Go to the IAM console”.
- Click on “Continue to Security Credentials”.
- Expand “Access keys (access key ID and secret access key)” and then click “Create New Access Key”.
- Copy or download the created key file for safekeeping, needed for the 3CX PBX Express.
3CX PBX Express Setup
- Setup 3CX PBX Express
- Fill in trial / free license key form and confirm your email to receive your key. Take the PBX Express and use your key to configure your hosted 3CX PBX in your Amazon account.
- Authenticate with your Amazon account in the same browser window.
- In the “Cloud Provider” step, select Amazon Lightsail and enter the created user’s “Access Key ID” and the corresponding “Secret Access Key”.
- Select the region and the machine type – we recommend Micro for smaller installs up to 16 SC and scale up as required for bigger installations.
- If a license key is required you should have it on the registered email on setup.
- Once registration is complete you should see a screen confirming the setup, wait for the platform to fully setup then take note of the information presented
- You should also get an email with credentials and links
Plivo Platform Setup
- Setup Plivo Account
- Sign up for a Plivo account
- Once sign up / registration is complete, login to the Plivo portal
- Click on phone number from the top menu
- ceed on purchasing a new number to set-up with your 3CX PBX
- Search for a preferred number by filtering it according to Country, Location, Type, Rate, etc.)
- Choose a number and click on Buy Number to purchase
Completing the registration and setup of the required platforms we can now begin the setup & configuration of the Cloud PBX System.
- First create Outbound and Inbound Trunks on Plivo.
- Login to Plivo
- Click on Zentrunk from the top menu
- Click on Dashboard
- Click on Outbound Trunks
- Click on create new outbound trunks
- Provide a trunk name
- Click on Add new IP Group
- Provide a name for the IP Group
- Provide the IP/IP’s to be included on this Group. This should contain the public IP from the 3CX Express PBX (can be found on the email of the account credentials)
- To confirm click on Create IP Group
- Click on the Add new Auth Group
- Provide a name for the Auth Group
- Provide a username for the Auth Group
- Provide a password for the Auth Group
- Take note of the Username & Password of the Auth Group (to be used on 3CX PBX setup)
- To Confirm click on Create Auth Group
- Select the created IP group & Auth group from the respective dropdowns and click on Create Trunk to confirm.
- Please view the Outbound trunks and do take note of the Termination SIP domain from the trunk created, this will be used when setting up the 3CX PBX platform.
- To create an Inbound Trunk click on Inbound Trunks from the side menu
- Click on the Create New Inbound Trunk
- Provide a Trunk Name to identify the inbound SIP Trunk
- Make sure Enabled is ticked
- Under URL click on the Add new URL
- Provide a name to identify the URL
- Provide the FQDN / IP address from 3CX PBX Express (can be found on the email of the account credentials)
- Click on create URL to confirm
- You can create a secondary URL the same way for Fallback URL (If you have a secondary FQDN / IP to forward if Primary URL is unresponsive)
- Once done you should see the trunk on the Inbound Trunks list
- To attach the purchased number(s), Click on Configure numbers
- Click on Link Numbers
- Choose from the list of purchased number or you can opt to buy a new number from this screen
- Choose the number and click on Select
- Click on Link Selected Numbers to confirm selection
* Take note of the Termination SIP Domain, Auth Group User / Pass & Linked phone number in E.164 Format. These will be used on the 3CX PBX setup.
3CX PBX Setup (Login to the main 3CX Phone System Management Console)
Required 3CX configurations to have a fully working PBX system:
- Add Extension(s)
- Add SIP Trunk
- Add Inbound Rule
- Add Outbound Rule
- Add an Extension
- Click on Extensions from the side menu panel
- Click on Add to create a new extension
- Important to fill up are Extension- should contain the desired extension number and the Outbound Caller ID – should contain the main number in E.164 format
- Fill up other info if needed
- Extension Username / Password can be found under Authentication (Needed for Phone / soft-phone setup
- You can also find the Web Authentication credentials + link to access the 3CX web client
- For easier management you can copy and paste the same authentication passwords generated.
- If you want to route all calls directly to this extension you can add Direct Inbound Dialing (DID) to this extension and adding the phone number
- Go back top and click on the options tab
- Make sure that the “Disallow use of extension outside LAN” is unticked
- Click OK to confirm all settings
- Add SIP Trunks
- Click on SIP Trunks from the side menu panel
- Click on Add SIP Trunk
- Fill up the pop up. Under country select US, Provider select Pilvo, Main Trunk No should be the phone number purchased from Plivo in E.164 format. Click ok to confirm.
- Enter a name for trunk, Registrar/Server/Gateway Hostname or IP should contain the termination IP from Pilvo, Outbound Proxy should also contain the same termination IP from Pilvo
- Under Authentication, Type of authentication should be Do Not Require- IP Based. Authentication ID should be from Pilvo (Auth Group ID and Password
- Under Route call to, main number should contain the phone number
- For “Destination for calls during office hours” choose from the list of extensions from the dropdown menu to route to an extension when the number is called. Same for the “Destination for calls outside office hours”.
- Add Inbound Rules
- Click on Inbound Rules from the left menu panel
- Click on Add DID Rule
- Provide and Inbound Rule name
- Add DID / DDI phone number (your phone number in E.164 format)
- Under Route calls, select the extension you want to route the inbound calls to.
- Click OK to confirm settings
- Add Outbound Rules
- Click on Outbound Rules from the left menu panel
- Click on Add
- Provide an outbound Rule Name
- You can fill up outbound rules if you need to and add extension groups if you have grouped extensions.
- Under Make Outbound Calls select your SIP trunk from the dropdown selection on the Routes.(You can route calls to multiple SIP trunks for failsafe routing backup).
- Click ok to confirm setup.
You can now use your PBX Setup using the webclient login (use the extensions credentials to login to an extension and start using your PBX)
3CX Client for Windows Setup
- Download the app from the 3CX download links: https://www.3cx.com/phone-system/download-links/
- Double click on the downloaded installer file
- Click Next
- Tick “I Accept…” and click on Next.
- Have the installation to its default location unless desired to be installed in a different location and click on next.
- Click on install to begin the application installation.
- Installation should begin. Confirm any security / firewall options that you have on your OS if any pops up.
- When installation is complete you will be on the completion page, you can opt (check mark) to launch the app on exit or launch it at a later time. Click on Finish to complete the setup.
If the 3CX config file is not yet available / deployed please do not launch the client yet.
Using the 3CX Windows App
- Before using the 3CX Windows App make sure you already have the welcome email sent from your PBX Administrator. It should be on your company email / known email to your administrator.
- The welcome email should also contain 2 attachments (a concise 3CX manual and a 3cx config file)
- Download the config file (*.3cxconfig)
- Open up the downloaded config file.
- It should automatically launch the 3CX app and have it configured and ready to use.
Using the 3CX WebClient
- PBX Admin can provide the webclient link which can be found under Extensions > Extension Number
- Username is the Extension Number, password can be set by Admin or Admin can use the same authentication password found on the extension options for a simplified administration. You can view the generated authentication password by clicking on the eye icon next to the password field. Admin can then copy and paste password to the webclient password field.
- Navigate to the web client url and login using the credentials provided by the Admin
- You will then be on the main web client interface for 3CX PBX.
Reference Manual :