Home » Technology » Incredible PBX on Steroids: The Asterisk-GUI Pilgrimage Begins (Chapter 1)

The Most Versatile VoIP Provider: FREE PORTING

Incredible PBX on Steroids: The Asterisk-GUI Pilgrimage Begins (Chapter 1)

As the holiday season gets underway with Thanksgiving, Hanukkah, Christmas, and especially Festivus, we thought it might be interesting to actually provide a running dialog of how a new Asterisk® project is born and what hurdles and solutions are encountered along the way. We mentioned last week that we were dusting off Mark Spencer’s Asterisk-GUI with hopes of transforming it into an updated Asterisk 11 platform for hobbyists and SOHO telephony users with many of the ease-of-use touches that have made Incredible PBX a big hit. So today we officially kick off the adventure with a look back at Week One. Our target, by the way, is a New Year’s Day release to celebrate the arrival of 2015.

This is the first installment in our series. You can catch up with the Overview as well as Chapter 2 and Chapter 3 here.

Project Development Roadmap

You may be asking, "What’s in it for me?" Well, lots! One of the unfortunate side effects of having always relied upon the FreePBX® GUI for Asterisk administration is you never really learned how Asterisk works. Nor did we ever quite appreciate its lightning-fast performance. We’re as guilty as anyone for over-reliance on a design tool without much appreciation for its interaction with the actual communications server. And, like many things in life, you form some bad habits along the way that are hard to break. Don’t get us wrong. There are thousands of things to like about FreePBX and, for production-level servers hosting dozens or hundreds of users, it remains a very comfortable choice and our hands-down favorite.

We resolved early on to approach the Asterisk-GUI remake a little differently. We plan to actually document why we’re going down certain paths and what the benefits will be for the ultimate user. There won’t be any convoluted code to deter your learning how things actually work. And there won’t be any patent, trademark, or copyright gotchas to hinder your forking or repurposing our code to meet your own requirements. And, finally, there won’t be any license fees, hidden or otherwise. Just comply with the GPL2 license as written and be our guest! From our vantage point, that’s what open source is all about.

Defining Project Objectives

We began the week by sketching out some objectives as well as defining some likes and dislikes. As we mentioned last week, the objective is not to replace FreePBX for those that actually need that horsepower. First and foremost we want to design this product for the target audience: hobbyists, home users, and SOHO businesses. Many of the platforms we are targeting have limited memory and only modest computational ability. Many of the people in the target audience have never used a PBX before and know little to nothing about networks and security. We don’t want anyone blindsided by a $100,000 phone bill because they didn’t know how to implement a firewall so we’ll include a preconfigured one as part of the install. And, like all Incredible PBX systems, an automatic update utility will be included to keep your system current AND safe!

Second, we wanted a product that was incredibly simple to put into production. Ease of configuration was a definite must-have. With many GUIs (think: Microsoft Windows), developers get so enamored with the brilliance of their own creation that they lose sight of the fact that typing a short list of usernames and passwords often is much simpler than navigating through dozens of data entry screens with hundreds of mouse clicks to enter the same information.

We also are steering clear of reinventing the proverbial wheel. Mark Spencer and his colleagues are some of the most talented programmers on the planet. To the extent that the original, feature-rich Asterisk-GUI creation can be implemented without major plumbing changes, that is not only desirable but absolutely essential in bringing this new product to market within weeks, not months or years.

Keep in mind that both FreePBX and Asterisk-GUI are code generators for Asterisk. No call is actually processed by FreePBX or Asterisk-GUI. From a system design standpoint, we wanted Asterisk to be self-sufficient on this new Incredible PBX platform. Stated another way, we didn’t want Asterisk to fail just because Apache or MySQL had system failures since neither of them is required for Asterisk to function reliably in the first place. It’s one thing for your GUI or MySQL database to be inoperable. It’s quite another when it also brings down your entire phone system.

In summary, we are lifelong believers in the KISS principle. Keep It Simple, Stupid. As much as we love FreePBX, its system design is anything but simple. Configuration information is embedded in hundreds of HTML files, Linux templates, Asterisk configuration files including AstDB plus 100+ MySQL tables. By contrast, Asterisk-GUI uses a tiny collection of native Asterisk .conf files to configure virtually all its settings. We wanted to preserve that "pure Asterisk" simplicity.

One of the other real advantages of the Asterisk-GUI design is you can create something in the GUI and then review the Asterisk-generated code in /etc/asterisk to see exactly how the original Asterisk developers intended the feature to work. In addition to the learning experience, it makes it easy to debug coding errors and to make adjustments and customizations to meet individual needs without inadvertently bringing down the whole house of cards.

We wanted a product that was easy for an administrator to maintain, to update, AND to back up. After all, this is a phone system not a rocketship. It shouldn’t take a rocket scientist to maintain it. And it won’t.

Project Design 101: Preconfigured Trunks, Extensions & Routes

With these objectives in mind, we’ve made some design choices on the front end that are worth mentioning. Configuration settings for SIP, IAX, and Google Voice trunks give new users more headaches than any other single feature in a new PBX. So we’re taking much of the pain out of that process by providing 9 preconfigured trunks. Meet the Incredible 9: Google Voice, Vitelity, VoIP.ms, Les.net, IPcomms, DIDlogic, CallCentric, FutureNine, and Anveo Direct. Outbound calling is managed by routes that are tied to individual extensions. These can be adjusted quickly in the GUI. We’ve chosen to set up outbound calling for the Incredible 9 using preconfigured dialing prefixes. No prefix or a 1-prefix sends the call out through Google Voice and, if Google Voice isn’t available, then the call is routed through the next working outbound trunk in the order shown above. A prefix of 2-9 sends the call out through one of the preconfigured trunks. We’ve also included support for free worldwide iNum calling using either VoIP.ms or CallCentric. Both vendors will also provide you with a free iNum DID. Just dial your iNum prefix of 0 (CallCentric) or 90 (VoIP.ms) followed by the last 7 digits of any assigned iNum DID to place a free call. As usual, Lenny stands ready to provide 24/7 technical support through his iNum DID: And, of course, all of these settings can be modified or tweaked to your liking using Asterisk-GUI!

A word about the "Incredible 9″ providers. The major prerequisite for inclusion was communications compatibility with Asterisk without any firewall exposure of Asterisk ports. That means the provider had to support outbound and/or inbound calling without any port exposure of Asterisk to the Internet. Vitelity and Google have been major financial supporters of our projects over the years so they made the short list. Both also offer incredible pricing and feature-rich VoIP implementations. The others made the cut based upon great user satisfaction reports, free services of one type or another, or dirt cheap pricing. Can you add additional providers using Asterisk-GUI? Absolutely. But the "Incredible 9″ each can be activated in under 10 seconds after you’ve signed up for an account with your choice of providers. In the VoIP world, there’s little reason not to choose several since you only pay for the services you actually use, and we would encourage you to do so.

Incoming call processing also is preconfigured with some extensions, a ring group, a Stealth AutoAttendant, DISA, and an IVR with an assortment of Incredible PBX applications for Asterisk. All can be modified or embellished to meet your own requirements.

Bottom Line: You get a turnkey PBX that’s ready to go. It’s also easily configurable to meet your most demanding requirements. Incredible PBX delivers The Best of Both Worlds using native Asterisk code.

A Fresh Look at Managing Credentials

One of the more exasperating realities of password management with FreePBX is the number of places you have to look to find or change passwords. Some are stored in various Asterisk .conf files. Voicemail passwords are hidden away in text strings in voicemail.conf. Others are stored in MySQL tables. Some are encrypted, and some aren’t. Asterisk-GUI took a different approach and stores all passwords in the Asterisk .conf files in /etc/asterisk.

As talented as the FreePBX and Asterisk-GUI programmers are, we don’t trust any web-based application to remain secure if it’s directly exposed to the Internet. If you do, you’re either nuts or have plenty of money to burn. GUIs should be reserved for administrator use behind a secure firewall, period. In our new design, you need firewall whitelist privileges plus root or asterisk user privileges plus GUI admin user access to gain access to passwords. If all of these layers are compromised, passwords are the least of your worries.

We’ve taken password management one step further. As best we can given the design choices in Asterisk 11 and Asterisk-GUI, we’ve aggregated as many passwords as possible into new credentials config files: credentials-sip.conf, credentials-googlevoice.conf, and credentials-extensions.conf. There’s one for the "Incredible 9″ SIP providers. There’s one for Google Voice. And there’s a catchall for various passwords, PINs, and predefined CallerID numbers for various trunks. These are straight-forward text files that can be quickly edited using any text editor. Plug in your account names, passwords, and PINs. Optionally, adjust the providers’ server addresses as required. And you’re done. If you can tie your shoes, you can do this. Quick and functional, not fancy!

Redesigned Conferencing Solution for Asterisk 11

MeetMe conferencing as originally implemented in Asterisk-GUI required an external timing source. This timing source was provided by analog boards on some of the commercial hardware platforms on which Asterisk-GUI was deployed. For our target audience, we’re assuming that most people probably want to ditch Ma Bell and costly landlines as part of the migration to a new PBX platform. So, even though Asterisk-GUI still supports analog trunks, we have chosen to offer the Asterisk 11 Conference Bridge option which does not require an external timing source. The new Conference Bridge is preconfigured out of the box. Set up user and admin PINs. And you’re done. Dial C-O-N-F (3663) to join the conference.

The Baker’s Dozen Incredible PBX Apps: Alive and Well

We closed out Week One with some minor tweaking of several of our favorite Incredible PBX applications to accommodate the new Asterisk-GUI platform. We’re pleased to report that everything still works. Because of changes imposed by Google, you’ll need to jump through a few hoops to implement Speech Recognition support on this new Asterisk platform. All of the necessary software has already been put in place so all you need is an API key from Google. Once you obtain it, simply plug it into line 70 of speech-recog.agi. No other configuration is required. The affected applications are marked with an asterisk (*) below. But the good news is, if you’ve used these Nerd Vittles applications in the past, you’ll feel right at home.

Stay tuned for more and… HAPPY THANKSGIVING!

Continue reading Chapter 2

Originally published: Monday, November 24, 2014

Need help with Asterisk? Visit the PBX in a Flash Forum.


Special Thanks to Our Generous Sponsors

FULL DISCLOSURE: ClearlyIP, Skyetel, Vitelity, DigitalOcean, Vultr, VoIP.ms, 3CX, Sangoma, TelecomsXchange and VitalPBX have provided financial support to Nerd Vittles and our open source projects through advertising, referral revenue, and/or merchandise. As an Amazon Associate and Best Buy Affiliate, we also earn from qualifying purchases. We’ve chosen these providers not the other way around. Our decisions are based upon their corporate reputation and the quality of their offerings and pricing. Our recommendations regarding technology are reached without regard to financial compensation except in situations in which comparable products at comparable pricing are available from multiple sources. In this limited case, we support our sponsors because our sponsors support us.

BOGO Bonaza: Enjoy state-of-the-art VoIP service with a $10 credit and half-price SIP service on up to $500 of Skyetel trunking with free number porting when you fund your Skyetel account. No limits on number of simultaneous calls. Quadruple data center redundancy. $25 monthly minimum spend required. Tutorial and sign up details are here.

The lynchpin of Incredible PBX 2020 and beyond is ClearlyIP components which bring management of FreePBX modules and SIP phone integration to a level never before available with any other Asterisk distribution. And now you can configure and reconfigure your new Incredible PBX phones from the convenience of the Incredible PBX GUI.

VitalPBX is perhaps the fastest-growing PBX offering based upon Asterisk with an installed presence in more than 100 countries worldwide. VitalPBX has generously provided a customized White Label version of Incredible PBX tailored for use with all Incredible PBX and VitalPBX custom applications. Follow this link for a free test drive!

Special Thanks to Vitelity. Vitelity is now Voyant Communications and has halted new registrations for the time being. Our special thanks to Vitelity for their unwavering financial support over many years and to the many Nerd Vittles readers who continue to enjoy the benefits of their service offerings. We will keep everyone posted on further developments.

Some Recent Nerd Vittles Articles of Interest…


  1. Very nice, a pretty new theme and colors for Asterisk-GUI. No doubt a lot has been fixed under the hood, too…

    To an experienced Asterisk administrator, I’m sure FreePBX is a great time-saver. No more editing a dozen different config files and writing incantations in precise syntax. But those admins already know and understand Asterisk inside and out. God bless them.

    I’m certainly glad I don’t have to wrestle Asterisk at the cli now, but the biggest challenge for me when confronting the "simple" FreePBX GUI is that it’s still impenetrably dense. It gives me no idea which fields are optional and which ones are vital. Forgive me for thinking it should. I still have to follow tutorials, skimming over pages and pages of blank fields that look important. Optional fields should be collapsed unless I’ve opened them or entered something non-default there. Or at least some color-coding. Some sanity-checking for data entered would be appreciated.

    Even basic setup requires hopping around – and back – between various sections instead of being able to get a working trunk-extension-outbound route set up in one place. A set-up wizard is not too much to ask at this point. The state of the art favors creating profiles that are represented as objects you can stick together like a flowchart. I’d rather see that than have menu items shuffled away to new locations. It isn’t the top menu position or theme colors that really impact the utility of a GUI. It’s organization from the *user’s* point of view. Currently, this config still seems to be grouped by the low-level architecture of the server, the developer’s view.

    The module update process is like nothing I’ve ever experienced before. It takes my breath away. I call folks over to my desk just to demonstrate it. The fact that every other click-action results in a response that looks like a fatal error is even more amusing. The Notices box only shows that there are updates waiting. It’s failed to show the names of the updates for many revisions now.

    Many of the help popups merely state "The qwerbix-11 field is where you enter your qwerbix-11 information – be careful to use precise syntax per RFC88377882-d.", so it does nothing to clue me in. The embedded help should say what exactly the default config is, too, with syntax examples on the spot.

    It would be nice to be able to click the frog logo and get my choice of default views (system status report) instead of the developer’s home page. I sincerely hope these things all improve on the FreePBX front, and I sincerely hope the developers don’t scoff the idea away. It’s dawning on me that so much effort must be going to keep the GUI *working* that little attention is left to making it *useable*. Make it useable and you’ll have more people using it.

    In closing, thank you for all your hard work in making things considerably better. Asterisk+FreePBX is obviously extremely powerful, though largely undocumented. I really hope that you listen to your user community and make this GUI more useable. The steering wheel is in the glovebox. The engine has to be stopped and restarted whenever the turn signal is used. The dashboard dials are in the trunk and arranged alphabetically. Some basic re-arrangement would make a GUI better fit the end-user.

  2. I’d like to addendum my previous comment, as a closer read of the article (yes, I skimmed, sorry) reveals that Asterisk-GUI sounds like about 95% of what I’ve been dreaming of for years! I had harbored the impression that you, as a guru, didn’t see a big issue with FreePBX. I’m really encouraged by the show-and-teach model you’re following here, and looking forward to trying it out. And kudos for keeping Google Voice a part of the package!

    What I have been pondering for some time, is creating a PBX network for the neighborhood’s organizations and home businesses that allows them to be accessible to the public while protecting their privacy. Calls to the extension assigned to them on our shared phone number will forward to their private phones. Being "on the network" with a phone extension (and email aliases) presents as an endorsement from the neighborhood, that they’re established and trustworthy. Lots of other cool things I could do by modeling our community as a departments in a company on a PBX.

    I’ll be getting Google Fiber shortly as a backhaul. I’ll be thrilled if the latency is really low. Now, If only I could find a nice, cheap source for SIP ATAs, I might even resell cheap phone service to cover my expenses.

Comments are closed.