Let’s talk phone systems.
If you’ve ever dreamed of hosting a phone-in, and you don’t already have a system for it, you’ll quickly find that the systems to handle lots of calls can get pricey.
If you’re comfortable with the command line, here’s a guide on how we do it without operating costs (except server time). You can also run it self-contained on a PC, by installing a Linux virtual machine to run your telephone system.
The end result is a system, running in your web browser, that gives you six phone lines, with capacity for three virtual TBUs. Your virtual TBUs can be either a browser window (with support for multiple sound cards), or SIP-compatible phones – depending on what channels you have in your studio.
- Install Asterisk & nginx.
Use your favourite package manager to install asterisk and, if you don’t already have it, nginx. You can use any web server, as long as you can set up a reverse proxy rule.
- Download MultiCall
git clone https://github.com/InsanityRadio/MultiCall.git && cd MultiCall
cp asterisk/* /path/to/asterisk/config
- Edit the MultiCall Asterisk configuration to link it to your telephone provider.
Our example configuration files are configured to use sipgate – which ‘just works’ and is free. If you’re using sipgate, simply change the ID and password in pjsip.conf – otherwise the configuration to taste.
You’ll also need to generate a SSL certificate. For MultiCall to work properly, you should configure and set up LetsEncrypt, and/or edit the configuration to point it towards a valid certificate. This certificate needs to be trusted by the browser for the built-in audio to work.
- At this point, you’re good to start Asterisk.
You can quickly check if it’s successfully been able to connect to your provider, by opening the Asterisk CLI.
sudo asterisk -rto get a shell
localhost*CLI> pjsip show endpoints
- Set up the Multicall server
server/index.js, and change the IP address in the “client.connect” call on line 297 to whatever IP/port your Asterisk server is using.
npm installto grab all the packages you need.
- Start the multicall server
src/App.jsand edit the WS_HOST variable to your web server’s HTTPS (the WSS protocol means WebSocket over HTTPS) address.
- Make and install the web client
npm buildto build the web client. Now, copy the files in build to your web server root.
On your web server, set up a reverse proxy rule matching WS_HOST, to terminate SSL traffic to node. You can use the example configuration file included in the MultiCall repository. Test it by opening the web client and seeing if it works. If not, check the browser console for a connection error.
Before using it in production, you should change the default passwords. Currently, they’re a bit scattered as we haven’t cleaned up the repository as we normally do for release.