Home » Posts tagged 'voip' (Page 20)

Tag Archives: voip

The Most Versatile VoIP Provider: FREE PORTING

Decisions, Decisions: Choosing the SOHO Asterisk Platform That’s Best For You

Each year we like to revisit the topic of choosing the best Asterisk® platform for deployment in the home and small business environment. No solution is obviously right for everybody. But we think it’s important to sketch out the relevant factors that need careful evaluation before you begin the installation process.

Our focus today is open source, GPL platforms with Asterisk for home or SOHO deployments. That excludes a broad swath of equally capable commercial or proprietary alternatives including ThirdLane, Switchvox, and FreePBX® Distro as well as many unified communications solutions that do not rely upon the Asterisk telephony engine including FreeSWITCH, ShoreTel, Cisco, 3CX, and many others. If your requirements exceed telephony support for more than a few dozen employees, our recommendation is to hire a consultant that can assist you in that decision-making process.

When It Comes to Hardware, Size Matters!

Even in the telephony world, it’s true. Size Matters! Choosing an Asterisk platform for your home and choosing a telephony platform for a call center are very different beasts. Our traditional recommendation for home and SOHO deployments was to go with dedicated hardware with an appropriately sized Atom processor, RAM, and hard drive. In the words of Bob Dylan, "The Times They Are A Changin’." With the nosedive in Cloud processing costs and the emergence of powerful desktop virtual machine platforms, that may no longer be the smartest solution. First, it puts you in the hardware business which means you’ll have to deal with hardware failures and backups and redundancy. Second, depending upon where you live, it may not be cost-effective to maintain your own server. Electricity and Internet connectivity cost real money above and beyond hardware costs.

For home or SOHO deployments, it also depends upon what other computers already are in use around your house or office. For example, if you have a $2,000 iMac with a $100 backup drive running Carbon Copy Cloner each night, then you’ve already got a fully redundant server platform in place. You really don’t need a dedicated server for telephony to support a handful of telephones. VirtualBox® running any of the Incredible PBX™ solutions is free, and it’s fully capable of meeting your telephony requirements with no additional hardware investment.1 If your iMac’s main drive crashes, you can reboot from the attached USB backup drive with a single keystroke and never miss a beat. For those dead set on running dedicated hardware for your home or SOHO telephone system, there’s really no reason to spend more than $35 for a Raspberry Pi®. With its new quad-core processor and gig of RAM, it can meet or exceed any requirements you may have. Buy a second microSD card for redundancy and call it day as far as hardware is concerned.

If you’d prefer to separate your telephone system from your house or small office, a Cloud-based setup may be a better fit. Our Platinum sponsor, RentPBX,2 offers a worldwide collection of servers and will host your Asterisk-based PBX for $15 a month (Coupon Code: NOGOTCHAS) on a platform that rarely, if ever, goes down. If you like to tinker but also prefer a Cloud solution, consider Digital Ocean ($5 a month for a virtual machine) or Vultr ($2.50 a month) or HiFormance ($13/year). All four support Nerd Vittles with referral revenue which helps us keep the lights on.

NEWS FLASH: RentPBX now offers all of the new Incredible PBX builds with the Incredible PBX GUI. Tutorials available here: CentOS platform or Ubuntu platform. Use the NOGOTCHAS coupon code for $15/mo. pricing.

That’s our latest take on SOHO hardware. If you have additional questions or concerns, come join the PIAF Forum and take advantage of our hundreds of gurus who will give you all of the free advice you could ever want.

I’ve Got My Hardware Platform. Now What?

The next step is choosing an Asterisk telephony platform. That used to be easy. There was Plain Ol’ Asterisk if you were a guru or there was Asterisk@Home if you wanted a GUI to guide you through the telephony maze. Now it’s more complicated. There are a number of different Linux platforms. There are a number of different Asterisk versions. And there are a number of different GUIs that support Asterisk. So let’s work our way down the list starting with the Linux platform.

Choosing the Best Linux Platform for Asterisk

The gold standard for Asterisk servers has always been CentOS, a GPL clone of RedHat Enterprise Linux. It, too, is now owned by Red Hat. The old adage was that nobody ever got fired for recommending IBM. In the Asterisk community, that remains true with CentOS. Unfortunately, CentOS now comes in several flavors. There’s CentOS 6 or CentOS 7 which is a very different beast. For Asterisk deployments, you can’t go wrong with CentOS 6. It works well on the latest dedicated hardware and is supported on all virtual machine platforms.

As with choosing a language, you now have a choice of Linux platforms. There’s RedHat/CentOS, or Debian, or Ubuntu, or even Raspbian for the Raspberry Pi hardware. Unfortunately, the RedHat-CentOS and Debian-Ubuntu-Raspbian platforms have completely different languages, much like French and Spanish. The Linux packages that are included in the platforms also have different names. If you’re a Linux aficionado and you already have a favorite, stick with what you love. If you’re planning to deploy a Raspberry Pi, stick with Raspbian. For everyone else, CentOS 6 still is your best bet for now.

Choosing the Best Asterisk Platform

Believe it or not, there are many organizations still running their telephone systems using Asterisk 1.4 or 1.8 even though Digium support for those platforms ended years ago. In the commercial world, it is not uncommon to see telephone systems that are more than a decade old. With Asterisk, things are quite different. There’s a new version every year. Fortunately, Digium has adopted a new support philosophy and every other release (more or less) now is anointed with the LTS (Long Term Support) moniker. An LTS release gets four years of bug fixes and five years of security updates as opposed to the other releases that come with one year of bug fixes and two years of security updates. It’s still not 10 years, but it’s certainly better than wrestling with Asterisk updates annually.

We think there remains a need to reconsider these timetables. New updates have become so complex that the releases typically are almost two years into their life cycle before there is anyone that treats the releases as anything more than experimental. This was especially true of Asterisk 12 which was a terrific new product that provided dramatic improvements particularly in the SIP area. Unfortunately, it reached end-of-life status before most folks even had an opportunity to use it. Our recommendation remains Asterisk 13 which is an LTS version that’s rock-solid.

Choosing a GPL-Compliant GUI

Most of the GUIs for Asterisk have one primary purpose. They are code generators for the Asterisk telephony engine, nothing more. With each of them, you can turn off your web server after using the graphical user interface, and your phone system will continue to work as designed. The exception to that is Wazo which is an awesome real-time implementation of Asterisk. The only drawback is its steep learning curve.

In the top right sidebar of Nerd Vittles, you’ll find a colorful list of all the Asterisk distributions we support. The good news for you is they’re all free. So take a little time and load up several of them. Kick the tires until you find one that is easy for you to deploy. Our personal favorite remains Incredible PBX® 13-13, but you can’t go wrong with Issabel® or Wazo. Rome wasn’t built in a day so don’t expect to master Asterisk in a couple of hours. We’ve been at it for ten years and still learn something new almost every day. And that’s the fun of it.

A 3-Click Decision Tree for Asterisk

Now that you have the background, we also wanted to provide a simple Decision Tree tool that will guide you through choosing the Asterisk GPL aggregation that best meets your needs. After you’ve made your selections, the utility will point you to the tutorials that will walk you through downloading, installing, and using the platform of your choice. Just click here to get started. Enjoy!

Originally published: Monday, June 22, 2015  Updated: Wednesday, February 21, 2018



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. We will introduce the all-new Incredible PBX GUI platform for VirtualBox next week on Nerd Vittles. If you’re in a hurry, the Pioneer’s Edition now is available with a tutorial to get you started on the PIAF Forum. []
  2. Some of our links refer users to service providers when we find their prices are competitive for the recommended products. Nerd Vittles receives a small referral fee from some of these providers to help cover the costs of our blog. We never recommend particular products solely to generate commissions. However, when pricing is comparable or availability is favorable, we support these providers because they support us. []

Freedom and the FreePBX Cloud: Is an Apple-like Ecosystem GPL-Compliant?

Short Answer: No way, José!     Right Answer: Sangoma should fix it.     Our Answer: New GPL Repo fixes it… today!

We began our series on FreePBX® by providing a GPL-compliant alternative to the base design of the FreePBX GUI minus the elements which have made redistribution and/or code modification difficult despite the clear language of the product’s GPL licenses. In our last article, we introduced new turnkey versions of Incredible PBX for CentOS featuring your choice of the 2.11 or 12.0 Incredible PBX GUI. Coming soon will be new releases of Incredible PBX for the Ubuntu, Debian, and Raspbian platforms so hang in there.

This week we begin our examination of the actual FreePBX design and the morphing that has taken place. We want to give you the full picture of why this led to our decision to no longer support the FreePBX approach to "GPL" software design. We also will provide some additional GPL tools that open up the platform in the way the GPL license requires.

It’s important for everyone to understand the impact of commercialization on project development when organizations bend the rules to suit their own commercial purposes. None of this was Sangoma’s doing. But FreePBX is now Sangoma’s GPL project, and it’s up to them to clean up the mess. For openers, nobody forced the FreePBX developers to release the FreePBX code with a GPL license. But they did it… almost 10 years ago! Only after the product became hugely popular did these folks apparently conclude that maybe giving away their software wasn’t such a good idea after all. You can track when the wheels came off the bus by looking at the project’s history on SourceForge. Not surprisingly, it coincides with SchmoozeCom’s entry into the picture. As Richard Stallman of the Free Software Foundation would tell you, this isn’t about whether code is open source software. Some FreePBX modules are and many are not. But providing source code is merely one aspect of the GPL. So let’s start with some of the actual language from the GPL license:

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things.

To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. [Emphasis added.]

Today we want to cover the first of several topics you won’t ever hear about in a (commercial) "advanced" training class for FreePBX. In case you haven’t attended one of these lovefests, the training is intended to let (paying) students learn how to customize the settings of the GUI for others willing to pay someone to build them a PBX. There’s nothing particularly wrong with that unless you believe everything associated with free software should be free. We don’t. In any case, you’ll learn how to create extensions and ring groups, inbound and outbound routes, trunk setups, and many of the other (basic) things that Nerd Vittles has been covering (for free) for years. And, of course, you will learn how to market the FreePBX brand and Sangoma-produced commercial modules.

What you won’t hear is anything about the inner workings of FreePBX much less how to customize the product for your own use, i.e. the types of modifications envisioned by the clear terms of the GPL. Those GPL "features" are available on a per customer basis for substantial "customization fees." Translation: roughly the same cost as a new Hyundai for your kid headed off to college. And there’s one other hidden surprise. Even with custom branding of FreePBX, you will remain a captive in the so-called FreePBX ecosystem.

If you’ve enjoyed Apple’s App Store approach to system lock-in, then you’ll feel right at home with FreePBX. The wrinkle is that the FreePBX approach is even more restrictive than Apple’s. For openers, anyone wishing to sell their own commercial module need not apply. Unlike Apple, no commercial offerings from anyone but Sangoma are permitted in the FreePBX ecosystem. Imagine if Digium had adopted a similar approach by barring modules from competing hardware companies from interfacing with Asterisk®. Where would that have left Sangoma? In the case of FreePBX, even if you want to give away a FreePBX-compatible GPL module, you’re out of luck with FreePBX 12 unless you’re willing to underwrite Sangoma’s unlimited legal expenses if they ever get sued. Note our emphasis on unlimited. Sangoma claims they merely copied a general indemnification provision used by others such as Rackspace. But, as one of our readers pointed out:

The link that they claim they used as a template is one I would sign. Sangoma reworded things so that ALL liability is yours, even if an issue arises in their code that affects your code (after the fact). Sangoma in that case, is responsible but YOU have to pay for their legal fees. You cannot have a final say in settlements, they do. They can select whatever priced attorneys they want (you have no say). There is no ‘reasonable’ word usage. They dropped it.

As for your GPL module, yes, you can manually load it and run it without signing the indemnification agreement, but users will have to endure nasty warnings and emails every day which suggest that their server has been compromised.1 Apple, on the other hand, screens free and non-free additions to their App Store and includes literally thousands of third-party apps without anyone having to pay Apple’s legal fees. FreePBX proclaims that "Free Stands for Freedom" but…

I’m reminded of a book that was published during the Vietnam War era: "Military Justice is to Justice As Military Music is to Music." If this is Sangoma’s idea of freedom, I’m not quite sure why anyone would want it except for the fact that they’re the only GUI game in town. The Sherman Act may be unfamiliar territory in Canada, but it might be worth a careful look.

Here’s where the GPL breaks down. Despite the best of intentions, the GPL drafters believed that handing someone the source code for a program was the best way to insure freedom to redesign and redistribute computer programs. That works well when the computer program is a couple hundred lines of code, but it breaks down quickly when you’re dealing with a program that’s been commingled with a commercial Cloud-based hosting service shrouded in secrecy and you’re staring at a million lines of code that can best be described as "engineered obfuscation." Think of it as handing someone a plate of your grandma’s cookies and, when asked for the recipe, you say, "All of the ingredients are right there in front of you." Yes, but…

This is a critically important point so let’s cover it in the context of FreePBX. What do you get and what do you not get when you install or use the product? Because the FreePBX GPL modules are written in unencrypted PHP code, you automatically get the source code when you install each module. It used to be that you also could acquire the modules on a public web site provided by the developers, now Sangoma. As noted last week, that openness came to a screeching halt with FreePBX 12. Until our repository was made available, you could scour the web high and low, but you wouldn’t find the GPL "free" modules for FreePBX 12 in a format directly usable by the FreePBX GUI and its Module Admin update feature which is perhaps the best feature of the GUI. In fact, until today, the only way to acquire the modules in a usable format with error correction was through the FreePBX GUI interface itself using the proprietary, hidden "ecosystem" maintained by Sangoma. The acquisition process itself is buried deep in a million lines of spaghetti code. Yes, you can get the source code, but…



Sangoma hopefully will ponder the words of Richard Stallman, the Founder and President of the Free Software Foundation:

Clearly that server does not respect our freedom, and we should refuse to use it, for the most part.

If we use a GUI for PBX’s, we should load our modules in some way that treats us decently.

So why the mystery with acquisition of FreePBX modules? The simple is answer is that it restricts everyone’s freedom. You can’t redistribute FreePBX without keeping Sangoma and the "non-free" FreePBX ecosystem in the middle of the equation. This provides the ongoing platform for Sangoma to peddle the sale of (only) their branded SIP trunking service as well as (only) their commercial modules. This may be their idea of freedom, but…

Last week we provided the first glimpse of freedom providing a means to break away from the trademark gimmicks of the mothership by using our reengineered GPL GUI with our repository of GPL modules for the new product. What you still lacked was the freedom to break away from our universe and go your own way. Why? Because the FreePBX developers have never revealed their Cloud’s secret sauce much less the tools necessary to create your own GPL module repository and have it function properly within the GUI. Without the cloud access and control, you lose the key module update and monitoring capabilities of the product itself plus the ability to upgrade the GUI to a later version. We used to call this CrippleWare, software with only limited functionality unless you cough up the big bucks. They’ll tell you that it’s all in the source code…

Well, not quite all. FreePBX is open source GPL software minus the secret sauce hidden in Sangoma’s Cloud which is the antithesis of the freedom component of the GPL. If you don’t appreciate the difference and why this runs counter to the GPL, read Richard Stallman’s explanation here. Because Cloud access by design is the only means provided in the FreePBX GUI to load new GPL modules, or to check for and update existing modules, or to upgrade the FreePBX GUI itself,2 the Cloud component is clearly an integral component of FreePBX. As such, it also must be licensed under the GPL and all its source code made available. In the words of the Free Software Foundation:

I’d like to incorporate GPL-covered software in my proprietary system. Can I do this?

You cannot incorporate GPL-covered software in a proprietary system. The goal of the GPL is to grant everyone the freedom to copy, redistribute, understand, and modify a program. If you could incorporate GPL-covered software into a non-free system, it would have the effect of making the GPL-covered software non-free too.

A system incorporating a GPL-covered program is an extended version of that program. The GPL says that any extended version of the program must be released under the GPL if it is released at all. This is for two reasons: to make sure that users who get the software get the freedom they should have, and to encourage people to give back improvements that they make.

However, in many cases you can distribute the GPL-covered software alongside your proprietary system. To do this validly, you must make sure that the free and non-free programs communicate at arms length, that they are not combined in a way that would make them effectively a single program.

The difference between this and “incorporating” the GPL-covered software is partly a matter of substance and partly form. The substantive part is this: if the two programs are combined so that they become effectively two parts of one program, then you can’t treat them as two separate programs. So the GPL has to cover the whole thing.

If the two programs remain well separated, like the compiler and the kernel, or like an editor and a shell, then you can treat them as two separate programs—but you have to do it properly. The issue is simply one of form: how you describe what you are doing. Why do we care about this? Because we want to make sure the users clearly understand the free status of the GPL-covered software in the collection.

If people were to distribute GPL-covered software calling it “part of” a system that users know is partly proprietary, users might be uncertain of their rights regarding the GPL-covered software. But if they know that what they have received is a free program plus another program, side by side, their rights will be clear.

Of course, every new module release brings a new opportunity to change the file and directory structure hidden in the Cloud to once again disguise the secret components required for proper GUI operation. Trust us. They have. Why else would you change a file name from modules-12 to all-12 except to conceal its identity? It’s called security through obscurity. Try searching your server for all-12 and see what you find. This hidden file is what locks you into the Sangoma commercial ecosystem. They call it freedom. It’s really anything but that. A more descriptive label would be a hidden, proprietary GOTCHA. You get some of the source code to make FreePBX work properly, but…

Building an Independent GPL Cloud Repository for the Incredible PBX GUI

Today we’re going to fix this deficiency at least for those using the new Incredible PBX GUI by offering independently developed GPL code that provides the freedom to build your own Cloud-based ecosystem should you wish to do so. We would encourage Sangoma to do the right thing. Stop listening to the former owners of the FreePBX project and become a good GPL steward. It’s your project now. You’ve owned it for almost six months! You’re also a better company than the one you bought. So start acting like it. Bring the FreePBX Cloud-based components out into the open and provide the tools necessary to use them as your GPL product license requires.

What we are providing today are all the components necessary to build an independent GPL Cloud that is compatible with the Incredible PBX GUI. This includes a base install of existing GPL modules that are compatible with versions 2.11 and 12 of FreePBX plus the toolkit to maintain an independent GPL Cloud. To load future modules and updates into your repository, you’ll need a Linux LAMP server running the latest version of Apache and at least PHP 5.4. Neither Asterisk® nor FreePBX is required on the server platform. Be advised that CentOS 6.5 and 6.6 ship with PHP 5.3 so you’ll need to perform the following steps to bring your server up to the 5.4 or 5.5 version of PHP before proceeding. Be advised that your GPL Cloud will only work with GPL-licensed versions of Incredible PBX running the 2.11 or 12 release of Incredible PBX GUI. See last week’s tutorial to get started.

Before we begin, several cautionary notes are in order. First, we can’t control Sangoma’s behavior. Assuming they decide not to comply with the GPL by keeping their Cloud service proprietary, a simple tweak on their end could change the location of their Cloud’s secret sauce at any time. That could very well break the ability to download future GPL modules from their repositories using this toolkit. But don’t worry. If that happens, we’ll be the first to let you know. We figured it out once, and we can figure it out again. You can run, but you cannot hide! We’ll also show you an alternative method to load new modules into your own repository. Second, don’t even think about using your own repository while retaining the original FreePBX GUI instead of updating to the Incredible PBX GUI. A single module update on their end could do a couple of things. It could overwrite the location of the module repositories and restore theirs. Or it could completely disable your server after detecting that you had changed the internal workings of FreePBX. Remember when Apple did just that with jailbroken iPhones? We’re not suggesting Sangoma would actually pull such a stunt. In fact, we don’t think Sangoma would ever stand for that despite a few developers that might have a different view. But we’re warning that it’s simply not worth the risk.

Before you elect to go your own way with your own repository, be advised that importing new FreePBX-compatible GPL modules without first testing each of them with the Incredible PBX GUI is a very bad idea for the reasons already mentioned. We intend to do that with the new Incredible PBX repository, and we would encourage you to adopt the same approach.

Finally, to protect the security and integrity of your GPL Cloud resources, do not include repo.php and the contents of its accompanying src directory in your public repository. Otherwise, anyone with public access to your server would be able to change the contents of your repository. The proper methodology would be to build and maintain your repository off line and then copy the files to a public web server without the tools used to actually create and update the GPL modules and accompanying XML files. The tools themselves are GPL code, and you are more than welcome to redistribute them pursuant to the GPL license. Just don’t post them in decompressed format in your repo thereby making them functional for anonymous attacks against your repository.

To begin, download GPL-repo.tar.gz from SourceForge and decompress the tarball into a folder on your private server:

mkdir repo
cd repo
touch index.html
wget -O GPL-repo.tar.gz http://sourceforge.net/projects/pbxinaflash/files/IncrediblePBX11.11%2B11.12%20with%20Incredible%20GUI/GPL-repo.tar.gz/download
tar zxvf GPL-repo.tar.gz
yum -y install php-simplexml

The file structure will look like this where modules and src are subdirectories:

Within the modules subdirectory will be a packages subdirectory that includes folders for each of the GPL modules. There’s also a licenses folder with all of the applicable GPL licenses.

Within each of the package directories, you will find one or two modules for the two currently supported GPL versions. For example, here are the entries for the framework module:

The lists of the available modules for each supported GPL version are contained in the .xml files in the top level directory: modules-2.11.xml and all-12.0.xml. modules-12.0.xml is a symlink to a previous nomenclature for version 12. These XML files are what Module Admin uses to check for updates available for existing modules on your PBX.

To add or update individual modules in your repository, issue one or both of the following commands using the actual name of the module you wish to add or update. You can decipher the actual names for the modules by checking the FreePBX source listings on GitHub. As we cautioned previously, don’t ever add or update modules without first testing the new module on an Incredible PBX server running the Incredible GUI. If an updated module blows things up, please let us know!

./repo.php 2.11 modulename
./repo.php 12.0 modulename

And here’s how to add any compatible module from any FreePBX 2.11 or 12 server or from GitHub to your repo. On the FreePBX platform, switch to the directory holding the modules: cd /var/www/html/admin/modules. By way of example, let’s assume there’s a javassh module directory.

1. Decipher the current version of the module: grep version javassh/module.xml
2. Create a gzipped tarball of that module including the version: tar -cvzf javassh-VERSION.tgz javassh/
3. Move javassh-VERSION.tgz to your /repo folder: mv javassh-VERSION.tgz /var/www/html/repo

Alternatively, you can use the included git-grab12 script to download the latest version 12 modules in tarball format directly from the FreePBX repository on GitHub:

From your /repo folder: ./git-grab12 modulename (there is no javassh version 12 module)

4. Assimilate the javassh module into your repo as either a 2.11 or 12.0 module or both:

cd /var/www/html/repo
./repo.php 2.11 javassh-VERSION.tgz
./repo.php 12.0 javassh-VERSION.tgz
rm -f javassh-VERSION.tgz

When you’re ready to go public, move the /repo folder and its subdirectories from your private server to a public web server, issue the following commands within the main destination directory on the public server to remove the GPL repo toolkit:

rm -f git-grab12
rm -f repo.php
rm -rf src

The final step is to tell the Incredible PBX GUI the new location of your module repository. For this, you will need a fully-qualified domain name (FQDN) that points to the top-level directory of the repository stored on your public web server, e.g. http://myrepo.me.com. Once you have set up a DNS entry for this address and tested it to be sure it works, all you have to do is configure the GUI to find it. Issue the following command from the Linux CLI after logging into your server as root. Be sure to substitute your actual FQDN and your actual root password for MySQL if you have changed it from passw0rd. If you’re building a number of new servers, you could simply add this line to the end of the Incredible PBX install script. Be sure to copy the entire line below. It should end with double quotes.

mysql -u root -ppassw0rd asterisk -e "update freepbx_settings set value='http://myrepo.me.com' where keyword='MODULE_REPO' and description='repo server' limit 1"

Isn’t it amazing what you can do with some GPL code and a little documentation on how to use it? Freedom At Last!

Originally published: Tuesday, May 26, 2015


Support Issues. With any application as sophisticated as this one, you’re bound to have questions. Blog comments are a terrible place to handle support issues although we welcome general comments about our articles and software. If you have particular support issues, we encourage you to get actively involved in the PBX in a Flash Forums. It’s the best Asterisk tech support site in the business, and it’s all free! Please have a look and post your support questions there. Unlike some forums, ours is extremely friendly and is supported by literally hundreds of Asterisk gurus and thousands of users just like you. You won’t have to wait long for an answer to your question.



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. According to a recent tweet from one of the developers, these warnings now can be disabled. That change was more than a year in coming. []
  2. The latest versions of the GPL modules are available in FreePBX’s GIT repo. UPDATE: Although tarballs are available for individual modules, even that format on GitHub would require painstaking, individual imports within the FreePBX GUI and totally defeats the design and purpose of the Module Admin component of FreePBX. []

View from the Trenches: A Fresh Look at VoIP Project Development in the Cloud

The world of cloud-based computing has profoundly changed over the past year. And today we want to take a fresh look at the cloud landscape for those of you that spend considerable time experimenting or tweaking software applications either for customers or for your own organization.

First, a brief paragraph of history. We began our cloud experiments almost seven years ago when Amazon S3 was still in its infancy. At the time, Amazon S3 was a real bargain even with all its development quirks. The adventure continued when we moved some production level systems to Amazon’s EC2 cloud in early 2013. What we quickly learned was just how expensive cloud computing could be once you reached the end of your "free year" with Amazon. As the cloud options continued to bloom, RentPBX began providing technical and financial assistance to our projects while also offering inexpensive, production-quality VoIP services in the cloud at truly bargain basement prices: $15 a month. That barely covers the electric bill for many folks hosting their own local servers. And RentPBX servers are unique. They don’t commingle other processor-intensive applications on their servers. All of their servers are pure VoIP which makes for an incredibly reliable cloud-based platform. Our special pricing still is available for those using PBX in a Flash and Incredible PBX. Just sign up with the coupon code: NOGOTCHAS. So that’s a little background.

But there are many of us that develop systems and experiment with new offerings as part of our daily routine. We build systems. We tweak systems. We blow up systems. And we start over, sometimes dozens (hopefully not hundreds) of times. To give you an example, our typical Incredible PBX build to support a new platform goes through twenty to thirty iterations before all of the kinks are worked out of the code. And that’s before the software development teams for CentOS, Ubuntu, Asterisk, Apache, SendMail, MySQL, and the Raspberry Pi "improve" anything. A production-quality cloud service really isn’t flexible enough to support this type of activity, and an affordable local server lacks the horsepower to keep setup times reasonable. On occasion, we use a high performance iMac coupled with VirtualBox for development, but that introduces some quirks that typically aren’t found on real world servers.

The good news is that there are two relatively new cloud offerings that fit very well with the requirements needed for rapid application development. We use both of them in slightly different ways so let us share our experience in hopes that it will save many of you some time experimenting.

We can’t say enough good things about Digital Ocean. Despite a few growing pains from time to time, Digital Ocean provides a vast assortment of cloud-based servers scattered all around the world. There are servers in New York, San Francisco, Amsterdam, London, Frankfurt, and even Singapore. You can size your development platform to meet almost any requirement with prices starting at about 5¢ for a 7-hour day of development. That buys you a speedy 512MB/single-CPU platform with 20 gigs of storage and a terabyte of monthly bandwidth. Add a (free) 1GB cache to your build, and it’s the performance equivalent of our $3,000 standalone Dell servers. You can scale up from there to a platform with 64GB of RAM, 20 CPUs, 640GB SSD drive, and 9 terabytes of monthly data transfer for less than $1 an hour. The difference with this platform is you can create a CentOS, Ubuntu, Fedora, FreeBSD, or Debian server of any recent vintage in about one minute. There’s also a vast array of preconfigured applications for the specialists of the world:

Using our referral code, you get $10 of free service while we get a little spiff down the road to keep the Nerd Vittles lights on. Tear down of servers is almost instantaneous, and you simply pay for the time you used. Using the small platform for 90 minutes will set you back a whole penny. Some of our PBX in a Flash users are actually running production-level servers on this platform (which we don’t recommend), and the monthly cost is capped at $5. One of the best kept secrets at Digital Ocean is that you can take snapshots of your builds and store them at little to no cost. We have a dozen of them and have never paid a penny in storage fees. You also have the option of off-site backups for production platforms.

The new kid on the block is CloudAtCost.com. If you’re not into bleeding edge, this probably isn’t the offering for you. But it is dirt cheap. While you can pay by the month, CloudAtCost also has a revolutionary marketing strategy. You can pay for your virtual machine once (almost always at a substantial discount off the listed prices), and you get to use "your server" forever at no additional cost… at least as long as CloudAtCost stays in business. If this sounds like a pyramid scheme, you probably wouldn’t be the first to suggest that. Suffice it to say, their business has grown geometrically over the past year. And they recently announced CloudPRO which lets you pool resources from servers you previously have bought, and use them in much the same way as Digital Ocean but with no additional charges. So here’s today’s pricing:

To put things in perspective, the virtual machine equivalent of Digital Ocean’s smallest setup costs $17.50, ONE TIME! The Big Dog 3 platform with a one-time fee of $560 migrated to CloudPRO would provide you with the capability to create 8 smaller systems (1 CPU, 1GB RAM, and 10GB storage) as desired with no bandwidth limitations forever.1 Download and upload performance is fairly impressive using speedtest-cli:

So what’s the catch. Well, there are some. First, as you might imagine, these folks are much like the fella laying track in front of the steaming locomotive. Will that ever end? You’d better hope not because, when it does, the entire house of cards may come down. While Digital Ocean typically builds virtual machines in under a minute, CloudAtCost turnaround times are close to a day. Once your server is actually working, we’ve had a pretty good experience with the performance quality although there can be rough spots that usually are resolved within a day. The promise, of course, is to get build times down to a minute or two. But, frankly, we’re not holding our breath. As for platform support, there are plenty of options just like with Digital Ocean:

What is this platform good for? In our case, it’s almost perfect for off-site backups. You can judge the web performance for yourself by visiting the backup site for Nerd Vittles, or the PIAF Forum, or Incredible PBX, or PBX in a Flash. Would we use CloudAtCost for production? Not a chance. But for backups and demo servers, it’s AWESOME and CHEAP! If you’re a Nerd Vittles early bird, you can use our coupon code for an additional 20% off: Zu2eXYDYtU.

DEMO SERVER. We’ve actually set up an Incredible PBX server with Google Voice and an IVR of sample applications so you can judge the CloudAtCost performance for yourself. You can even try hacking the IP address if that’s your thing. We always love to test our firewall: nmap -sT -O 162.252.242.229. To try out Allison’s IVR, enter your 10-digit callback number below and then click the Click Here button once. Count to 10 and your phone should be ringing. After you answer the call and press 1, you’ll be connected to the IVR Demo in Canada. Don’t be shy.

Nerd Vittles IVR Demo Options
1 – Call by Name (say “Delta Airlines” or “American Airlines” to try it out)
2 – MeetMe Conference (password is 1234)
3 – Wolfram Alpha (say “What planes are overhead?”)
4 – Lenny (The Telemarketer’s Worst Nightmare)
5 – Today’s News Headlines
6 – Weather Forecast (say the city and state, province, or country)
7 – Today in History
8 – Speak to a Real Person (or maybe just Lenny if we’re out)

Originally published: Cinco de Mayo, 2015



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. forever: as long as CloudAtCost.com stays in business []

Gotcha-Free PBX: GIT-R-Done with Incredible PBX for Asterisk-GUI (CentOS)


[iframe-popup id="4″]
For the die-hard developers out there, we are pleased to introduce a new version of Incredible PBX™ for Asterisk-GUI that uses GIT repos to build both Asterisk® and Asterisk-GUI with the same feature set of applications as our previous releases. You still get a Gotcha-Free PBX with pure and honest open source GPL code. No patent, trademark, or copyright minefields to trip you up. But this time around you’ll have an Asterisk platform that can be updated in seconds by running a simple upgrade script: upgrade-asterisk-to-current. Special thanks to Matt Jordan & Co. for the new GIT implementation. And our extra special thanks to Denver sports cartoonist, Drew Litton, for letting us share his GIT-R-DONE creation as well.

This time around you’ll need a 64-bit CentOS 6.5/6.6 base platform. When you complete the 30-minute install procedure, you’ll have the very latest version of Asterisk 11 and Asterisk-GUI. Both are compiled from source on your hardware platform to maximize performance. The end result is the VoIP Trifecta… better, cheaper, and faster.

Since the early Windows® days, we haven’t been big fans of GUI-only interfaces. Let’s face it. Some things can be configured more efficiently with less chance for error using other tools. Incredible PBX takes advantage of this hybrid technology by offering the best of all worlds. Administrators can use a GUI where it makes sense and use a text editor or simple web form where it doesn’t. There’s no MySQL middleware to obfuscate your Asterisk settings. So you can configure 8 VoIP trunks from 8 great providers in under 5 minutes. And there’s so much more…

Target Audience: Home or SOHO/SBO in need of a turnkey, Gotcha-Free PBX Development Platform

Default Configuration: Asterisk 11 with enhanced Asterisk-GUI, Kennonsoft GUI, and NANPA dialplan

Platform: 64-bit CentOS 6.5/6.6 running on Dedicated Server, Cloud-Based Server, or Virtual Machine

Minimum Memory: 512MB

Recommended Disk: 20GB+

Default Trunks: Google Voice, CallCentric, DIDlogic, Future-Nine, IPcomms, Les.net, Vitelity, VoIP.ms1

Feature Set: Fax, SMS messaging, VPN, Reminders, ConfBridge Conferencing, AsteriDex, Voicemail, Email, IVR, News, Weather, Voice Dialer, Wolfram Alpha, Today in History, TM3 Firewall WhiteList, Speed Dialer, iNUM and SIP URI (free) worldwide calling, OpenCNAM CallerID lookups, DISA, Call Forwarding, CSV CDRs

Administrator Utilities: Incredible Backup/Restore, Automatic Updater, Asterisk Upgrader, phpMyAdmin, Timezone Config, Plug-and-Play Trunk Configurator, WebMin, External IP Setup, Firewall WhiteList Tools

Getting Started with Incredible PBX for Asterisk-GUI (GIT Edition)

Here’s a quick overview of the installation and setup process for Incredible PBX for Asterisk-GUI:

  1. Choose a Hardware Platform – Dedicated PC, Cloud, or Virtual Machine
  2. Install Linux – 64-bit CentOS 6.5 or Scientific Linux Minimal ISO
  3. Download and Install Incredible PBX for Asterisk-GUI
  4. Install Incredible Fax for Asterisk-GUI (optional)
  5. Set Up Passwords for Incredible PBX for Asterisk-GUI
  6. Configure Trunks with Incredible PBX for Asterisk-GUI
  7. Connect a Softphone to Incredible PBX for Asterisk-GUI

1. Choose a Platform for Incredible PBX for Asterisk-GUI

Incredible PBX for Asterisk-GUI works equally well on dedicated hardware or a virtual machine. Just be sure you’ve met the minimum requirements outlined above and that you have a sufficiently robust Internet connection to support 100Kb of download and upload bandwidth for each simultaneous call you wish to handle with your new PBX.

For Dedicated Hardware, we recommend an Atom-based PC of recent vintage with at least a 30GB drive and 4GB of RAM. That will take care of an office with 10-20 extensions and a half dozen or more simultaneous calls if you have the Internet bandwidth to support it.

For Cloud-Based Implementations, this time around we recommend Digital Ocean because the GIT edition is designed to be a development platform with bleeding edge Asterisk 11 code.

For Virtual Machine Installs, we recommend Oracle’s VirtualBox platform which runs atop almost any operating system including Windows, Macs, Linux, and Solaris. Here’s a link to our original VirtualBox tutorial to get you started. We suggest allocating 1GB of RAM and at least a 20GB disk image to your virtual machine for best performance.

2. Install a Linux Flavor for Incredible PBX for Asterisk-GUI

To be clear, we plan to support many Linux flavors other than RedHat. But Rome wasn’t built in a day so hang in there. We’re flippin’ burgers as fast as we can. For today, you’ll need a 64-bit version of CentOS or Scientific Linux 6.5/6.6. On some platforms, you install 6.5. After the initial update and upgrade steps, you’ll end up with 6.6. There are many flavors of CentOS and Scientific Linux. For Incredible PBX, a minimal install is all you need.

With dedicated hardware, begin by downloading the 64-bit CentOS 6.6 minimal ISO. Boot your server with the ISO, and begin the install. Here are the simplest installation steps:

Choose Language and Click Continue
Click: Install Destination (do not change anything!)
Click: Done
Click: Network & Hostname
Click: ON
Click: Done
Click: Begin Installation
Click: Root Password: password, password, Click Done twice
Wait for Minimal Software Install and Setup to finish
Click: Reboot

With most cloud-based providers, you simply choose the CentOS 6.5 platform in creating your initial image. 512MB of RAM is plenty so long as you have a swap file. Within a minute or two, you’re ready to boot up the server.

For VirtualBox, download the Scientific Linux 6.6 minimal install .ova image from SourceForge. Then double-click on the image to load it into VirtualBox. Enable Audio and configure Network with Bridge Adapter in Settings. Then start the virtual machine. Default password for root is password.

With VirtualBox, you can skip this step. For everyone else, log into your server as root and issue the following commands to put the basic pieces in place and to reconfigure your Ethernet port as eth0. On some platforms, some of the commands may generate errors. Don’t worry about it! Just make a note of your IP address so you can log back in with SSH from a desktop computer to begin the Incredible PBX install.

For CentOS/Scientific Linux 6.5 minimal install:

setenforce 0
yum -y upgrade
yum -y install net-tools nano wget
ifconfig
sed -i 's|quiet|quiet net.ifnames=0 biosdevdame=0|' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
wget http://incrediblepbx.com/update-kernel-devel
chmod +x update-kernel-devel
./update-kernel-devel
reboot

For CentOS/Scientific Linux 6.6 minimal install:

setenforce 0
yum -y upgrade
yum -y install net-tools nano wget
ifconfig
reboot

3. Install GIT-R-Done Edition of Incredible PBX for Asterisk-GUI

cd /root
yum -y install wget
wget http://incrediblepbx.com/incrediblepbx11gui-git.tar.gz
tar zxvf incrediblepbx11gui-git.tar.gz
#./create-swapfile-DO  #add this step for Digital Ocean droplets
rm -f incrediblepbx11gui-git.tar.gz
sed -i 's|pbxinaflash.com|incrediblepbx.com|' IncrediblePBX11-GUI-git.sh
./IncrediblePBX11-GUI-git.sh
./IncrediblePBX11-GUI-git.sh

4. Install Incredible Fax for Asterisk-GUI (optional)

Administrators have been trying to stomp out faxing for at least two decades. Here’s a hint. It ain’t gonna happen. So go with the flow and add Gotcha-Free Faxing to your server. It’ll be there when you need it. And sooner or later, you’ll need it. This install script is simple enough for any monkey to complete. Run the script and enter the email address for delivery of your faxes. Then, if you’re in the U.S. or Canada, press the Enter key to accept every default entry during the HylaFax and AvantFax installation steps. For other countries, read the prompts and answer accordingly. When the installation finishes, reboot your server to bring faxing on line. Be sure to change your AvantFax admin password. By default, it is password. You can use the script included in the /root folder: avantfax-pw-change. REMINDER: Don’t forget to reboot your server!

cd /root
./incrediblefax11-GUI.sh
./avantfax-pw-change
reboot

Troubleshooting: If your IAXmodems don’t display with a green IDLE notation in the AvantFax GUI, you may need to restart them once more. After a second reboot, all should be well. The restart command is /root/iaxmodem-restart.

5. Initial Configuration of Incredible PBX for Asterisk-GUI

Incredible PBX is installed with the preconfigured IPtables Linux firewall already in place. It implements WhiteList Security to limit server access to connected LANs, your server’s IP address, your desktop computer’s IP address, and a few of our favorite SIP providers. You can add additional entries to this WhiteList whenever you like using the add-ip and add-fqdn tools in /root. There’s also an Apache security layer for our web applications. And, of course, Asterisk-GUI has its own security methodology using Asterisk’s manager.conf. Finally, we randomize extension and DISA passwords as part of the initial install process. Out of the starting gate, you won’t find a more secure VoIP server implementation anywhere. After all, it’s your phone bill.

Even with all of these layers of security, here are 10 Quick Steps to better safeguard your server. You only do this once, but failing to do it may lead to security issues you don’t want to have to deal with down the road. So DO IT NOW!

First, log into your server as root with your root password and do the following:

Make your root password very secure: passwd
Set your correct time zone: ./timezone-setup
Create admin password for web apps: htpasswd -b /etc/pbx/wwwpasswd admin newpassword
Make a copy of your other passwords: cat passwords.FAQ
Make a copy of your Knock codes: cat knock.FAQ
Decipher IP address and other info about your server: status

Second, log into your server as admin using a web browser pointed to your server’s IP address:

Click USERS tab in Incredible PBX GUI
Click Asterisk-GUI Administration
Log in as user: admin with password: password
Immediately change your admin password and login again

Log in to Asterisk-GUI again with your new password. Expand the options available in the GUI:

Options -> Advanced Options -> Show Advanced Options

Last but not least, Incredible PBX includes an automatic update utility which downloads important updates whenever you log into your server as root. We recommend you log in once a week to keep your server current. Now would be a good time to log out and back into your server at the Linux command line to bring your server up to current specs.

6. Configure Trunks with Incredible PBX for Asterisk-GUI

Now for the fun part. If this is your first VoIP adventure, be advised that this ain’t your grandma’s phone system. You need not and should not put all your eggs in one basket when it comes to telephone providers. In order to connect to Plain Old Telephones, you still need at least one provider. But there is nothing wrong with having several. And a provider that handles an outbound call (termination) need not be the same one that handles an incoming call (origination) and provides your phone number (DID). We cannot recommend Vitelity highly enough, and it’s not just because they have financially supported our projects for almost a decade. They’re as good as VoIP providers get, and we use lots of them. If you’re lucky enough to live in the U.S., you’d be crazy not to set up a Google Voice account. It’s free as are all phone calls to anywhere in the U.S. and Canada. The remaining preconfigured providers included in Incredible PBX for Asterisk-GUI are equally good, and we’ve used and continue to use almost all of them. So pick a few and sign up. You only pay for the calls you make with each provider so you have little to lose by choosing several. The PIAF Forum includes dozens of recommendations on VoIP providers if you want additional information.

With the preconfigured trunks in Incredible PBX for Asterisk-GUI, all you need are your credentials for each provider and the FQDN of their server. Log into Asterisk-GUI Administration as admin using a browser. From the System Status screen, click Incredible PBX Apps. Click on each provider you have chosen and fill in the blanks with your credentials. When you’ve saved all of your settings, log into your server as root via SSH and type: service asterisk restart or asterisk-restart. You can also issue the command in the Asterisk-GUI by choosing the Asterisk CLI tab2 in the left column. Doesn’t get any simpler!

Update: It should be noted that Incredible PBX for Asterisk-GUI also supports Anveo Direct trunks; however, they are configured differently because of the way Anveo handles the calls. You’ll need the PIN provided by Anveo to set up your trunk, and Anveo supports CallerID spoofing so you can enter any CallerID number for the trunk that you are authorized to use. You’ll find the Anveo Direct setup link in the Incredible PBX Apps tab. To route an outgoing call through Anveo trunk, dial 2 + any desired 10-digit number.

Here is the complete list of dialing prefixes and the trunks to which they are associated:

  • 1 – Google Voice
  • 2 – Anveo Direct
  • 3 – Future Nine
  • 4 – CallCentric
  • 5 – DIDlogic
  • 6 – IPcomms
  • 7 – Les.net
  • 8 – Vitelity
  • 9 – VoIP.ms

For free iNUM calling worldwide, the following dialing prefixes are supported in conjunction with the last seven digits of any destination iNUM DID. Free iNUM DIDs for your own PBX are available from both of these providers as well.

  • 0XXXXXXX – CallCentric
  • 90XXXXXXX – VoIP.ms

Finally, in addition to the native Asterisk motif implementation of Google Voice (covered below) which uses insecure authentication with Google Voice, we also support the new Simonics SIP gateway to Google Voice using OAUTH authentication. Just click this link for the installation script and tutorial.

7. Configure a Softphone with Incredible PBX for Asterisk-GUI

We’re in the home stretch now. You can connect virtually any kind of telephone to your new Gotcha-Free PBX. Plain Old Phones require an analog telephone adapter (ATA) which can be a separate board in your computer from a company such as Digium. Or it can be a standalone SIP device such as ObiHai’s OBi100 or OBi110 (if you have a phone line from Ma Bell to hook up as well). SIP phones can be connected directly so long as they have an IP address. These could be hardware devices or software devices such as the YateClient softphone. We’ll start with a free one today so you can begin making calls. You can find dozens of recommendations for hardware-based SIP phones both on Nerd Vittles and the PIAF Forum when you’re ready to get serious about VoIP telephony.

We recommend YateClient which is free. Download it from here. Run YateClient once you’ve installed it and enter the credentials for the 6002 extension on Incredible PBX. You’ll need the IP address of your server plus your extension 6002 password. Choose Users -> 6002 and write down your SIP/IAX Password. You can also find it in /root/passwords.FAQ. Fill in the blanks using the IP address of your server, 6002 for your account name, and whatever password is assigned to the extension. Click OK to save your entries.

Once you are registered to extension 6002, close the Account window. Then click on YATE’s Telephony Tab and place some test calls to the numerous apps that are preconfigured on Incredible PBX. Dial a few of these to get started:

7001 - IVR Demo
123 - Reminders
947 - Weather by ZIP Code
951 - Yahoo News
*61 - Time of Day
TODAY - Today in History

If you are a Mac user, another great no-frills softphone is Telephone. Just download and install it from the Mac App Store.

Configuring Google Voice

If you want to use Google Voice, you’ll need a dedicated Google Voice account to support Incredible PBX. The more obscure the username (with some embedded numbers), the better off you will be. This will keep folks from bombarding you with unsolicited Gtalk chat messages, and who knows what nefarious scheme will be discovered using Google messaging six months from now. So keep this account a secret!

IMPORTANT: Be sure to enable the Google Chat option as one of your phone destinations in Settings, Voice Setting, Phones. That’s the destination we need for The Incredible PBX to work its magic! Otherwise, all inbound and outbound calls will fail.

If you have difficulty finding the Google Chat option after setting up a new Google Voice account, follow this tutorial.

Once you’ve created your Gmail and Google Voice accounts, go to Google Voice Settings and click on the Calls tab. Make sure your settings match these:

  • Call ScreeningOFF
  • Call PresentationOFF
  • Caller ID (In)Display Caller’s Number
  • Caller ID (Out)Don’t Change Anything
  • Do Not DisturbOFF
  • Call Options (Enable Recording)OFF
  • Global Spam FilteringON

Click Save Changes once you’ve adjusted your settings. Under the Voicemail tab, plug in your email address so you get notified of new voicemails. Down the road, receipt of a Google Voice voicemail will be a big hint that something has come unglued on your PBX.

One final word of caution is in order regardless of your choice of providers: Do NOT use special characters in any provider passwords, or nothing will work!

Now you’re ready to configure your Google Voice account in Incredible PBX. You can do it from within Asterisk-GUI by choosing Google Voice within the Incredible PBX Apps tab. Once you entered your credentials, don’t forget to restart Asterisk, or Google Voice calls will fail. If you still have trouble placing or receiving calls, try these tips.

OK, Smarty Pants: Show Me the Beef!

We know what some of you are thinking. "What does a fast food worker really know about VoIP and Gotcha-Free PBXs?? Before I waste a bunch of time on this, show me the beef!" Fair enough. Sit by your phone and click the Call Me icon below. Type in a fake name and your real phone number. Click the Connect button, answer your phone when it rings, and press 1. You’ll be connected to the Incredible PBX IVR for Asterisk-GUI. Pick an option from the menu of choices and take the Incredible PBX apps for a spin on our dime… actually it’s Google’s dime. Everything you see and hear is part of what you get with Incredible PBX for Asterisk-GUI including the ability to set up your own click-to-dial web interface exactly like this one. The demo just happens to be running on our Mac desktop instead of yours. So… what are you waiting for? Click away and try Incredible PBX for yourself. And, by the way, nobody besides the NSA and Google will be monitoring your call. 😉



Nerd Vittles Demo IVR Options
1 – Call by Name (say “Delta Airlines” or “American Airlines” to try it out)
2 – MeetMe Conference (password is 1234)
3 – Wolfram Alpha (say “What planes are overhead?”)
4 – Lenny (The Telemarketer’s Worst Nightmare)
5 – Today’s News Headlines
6 – Weather Forecast (say the city and state, province, or country)
7 – Today in History
8 – Speak to a Real Person (or maybe just voicemail if we’re out)

Homework Assignment: Mastering the Asterisk-GUI

We’ll have more to say about the Incredible PBX applications next week. In the meantime, you have some homework. You need to learn all about Asterisk-GUI and how to make the best use of its powerful feature set. Here’s one word of warning. We mentioned that Incredible PBX was a hybrid system that combines some customized settings with the standard Asterisk-GUI interface. Before modifying existing settings for the default trunks, extensions, and default routes, take a look at the credentials* files in /etc/asterisk. If you modify any of these trunk entries or the Outgoing or Incoming Call Rules in Asterisk-GUI, you may break the Incredible PBX setup. So steer clear of that minefield until you know what you’re doing. Adding new extensions and additional trunks is perfectly fine and will not break anything.

Rather than reinvent the wheel, we’ll point you to some excellent tutorials that already have been written. Start with Chapter 3 of Digium’s Asterisk Appliance™ Administrator Manual. Next, review Chapter 11 of The Asterisk Book (Second Edition). Finally, take a look at a couple of the tutorials that have been written by other companies that incorporated Asterisk-GUI into their hardware products, e.g. Yeastar’s MyPBX SOHO User Manual and Grandstream’s UCM6100 User Manual. Then check back with us next week for Chapter 2.

In the meantime, if you have questions, join the PBX in a Flash Forums and take advantage of our awesome collection of gurus. There’s an expert available on virtually any topic, and the price is right. As with Incredible PBX, it’s absolutely free.

We also are quickly building a collection of tutorials tailored specifically for Incredible PBX for Asterisk-GUI:

Enjoy your new Gotcha-Free PBX!

Now Available: The Gotcha-Free Incredible PBX Application User’s Guide

Originally published: Monday, April 20, 2015


Support Issues. With any application as sophisticated as this one, you’re bound to have questions. Blog comments are a terrible place to handle support issues although we welcome general comments about our articles and software. If you have particular support issues, we encourage you to get actively involved in the PBX in a Flash Forums. It’s the best Asterisk tech support site in the business, and it’s all free! Please have a look and post your support questions there. Unlike some forums, ours is extremely friendly and is supported by literally hundreds of Asterisk gurus and thousands of users just like you. You won’t have to wait long for an answer to your question.



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. Vitelity and Google provide financial support to Nerd Vittles and the Incredible PBX project. []
  2. If, for some reason, the Asterisk CLI tab does not appear on your server, click Options -> Advanced Options -> Show Advanced Options. []

The Two Amigos on Cloud 9: Introducing Incredible PBX for Elastix @ RentPBX

DEC. 7 NEWS FLASH: The Elastix project has been sold to 3CX. Elastix 4.0 and Elastix MT have been removed from production "due to a legal disagreement with another open source distribution."

We continue the Gotcha-Free PBX adventure today with an open source alternative for which many have been clamoring, another affordable Cloud-based Asterisk® platform with the no-strings-attached Elastix 2.5 GUI. In addition to a $15 a month hosting plan, the icing on the cake is the quick 10-minute automated setup on your choice of a dozen servers throughout the U.S. as well as Canada and Europe. If you can find the Enter key on a keyboard, then you can handle the complexity of the RentPBX setup for Incredible PBX for Elastix 2.5. When you’re finished, you’ll have a turnkey PBX featuring some terrific open source software. The software is all free, subject only to the terms of the open source licenses.

Target Audience: Home or Office in need of a turnkey, Gotcha-Free Elastix PBX in the Cloud

Default Configuration: Asterisk 11 with enhanced Elastix 2.5 GUI

Platform: CentOS 5.11 running on RentPBX Cloud-Based Server platform

Memory: 400 MB with 415 MB swap

Disk Size: 20 GB

Default Trunks: CallCentric, DIDlogic, Future-Nine, IPcomms, Les.net, Vitelity, VoIP.ms, Gvoice1

Feature Set: Fax, SMS messaging, NeoRouter/PPTP VPN, Reminders, ConfBridge Conferencing, AsteriDex, Voicemail, Email, IVR, News, Weather, Voice Dialer, Wolfram Alpha, Today in History, TM3 Firewall WhiteList, Speed Dialer, iNUM and SIP URI (free) worldwide calling, DISA, Call Forwarding, Tailorable CDRs

Administrator Utilities: Incredible Backup/Restore, Automatic Updater, phpMyAdmin, Timezone Config, WebMin, Admin Password Configurator, ODBC/MySQL Database Configurator, Firewall WhiteList Tools

Getting Started with Incredible PBX for Elastix 2.5 (Cloud Edition)

Here’s a quick overview of the installation and setup process for Incredible PBX for Elastix 2.5 @ RentPBX.com:

  1. Sign Up for Incredible PBX for Elastix 2.5 in the Cloud
  2. Complete the Install of Incredible PBX with two automatic reboots
  3. Set Up Passwords for Incredible PBX
  4. Configure Trunks with Incredible PBX
  5. Connect a Softphone to Incredible PBX
  6. Configure SMTP Mail for Incredible PBX

1. Sign Up for Incredible PBX for Elastix 2.5 in the Cloud at RentPBX.com

Visit RentPBX.com and choose the Elastix build option. Then complete the following steps:

Step #1. Select a location for your cloud-based server.

Step #2. Choose Elastix 2.5 IncrediblePBX Ready option.

Step #3. Specify a hostname for your server.

Step #4. When you begin the payment/checkout phase, enter your coupon code to take advantage of the $15/month discounted rate: NOGOTCHAS. Wait for the confirmation email with your server credentials and dedicated IP address.

2. Complete the Install of Incredible PBX

Nothing tricky here. It’s a 10-minute automated setup. Log into port 20022 of your server as root with your default password using SSH or Putty. Once you’re logged in, RentPBX will go through two setup cycles to complete the install and randomize all of your passwords for Incredible PBX. The first pass addresses some security vulnerabilities in the Elastix 2.5 base install and then prompts for the MySQL root password which must be passw0rd (with a zero). Next, you’re prompted to set up an admin password for the GUI. Make it secure! Then your server will reboot. After 60 seconds, log back in to port 20022 as root with your default password again. Type y to install Incredible PBX. Incredible PBX will first apply the latest upgrades for CentOS and Elastix. Be patient. The list is a long one. After the second reboot, log back into your server on port 20022 as root one final time and let Incredible PBX complete the install and secure your server. You’ll need to enter your MySQL and GUI passwords once again. Be sure to use passw0rd for MySQL! After the third reboot, log back into your server on the standard port 22 as root. Allow Incredible PBX to run its Automatic Update Utility to bring your system current. That’s it. You now have a secure, turnkey Elastix® PBX that’s ready for use.

3. Initial Configuration of Incredible PBX for Elastix 2.5

Incredible PBX is installed with the preconfigured IPtables Linux firewall already in place. It implements WhiteList Security to limit server access to your server’s IP address, your desktop computer’s IP address, and a few of our favorite SIP providers. You can add additional entries to this WhiteList whenever you like using the add-ip and add-fqdn tools in /root. There’s also an Apache security layer for web applications. And, of course, Elastix 2.5 has its own security methodology. RentPBX randomized extension and DISA passwords as part of the initial setup process. Out of the starting gate, you won’t find a more secure VoIP server implementation anywhere. After all, it’s your phone bill.

Even with all of these layers of security, here are 5 Quick Steps to better safeguard your server. You only do this once, but failing to do it may lead to security issues you don’t want to have to deal with down the road. So DO IT NOW!

Log into your server as root with your root password and do the following:

Make your root password very secure: passwd
Set your correct time zone: ./timezone-setup
Create admin password for web apps: htpasswd -b /etc/pbx/wwwpasswd admin newpassword
Make a copy of your other passwords: cat passwords.FAQ
Decipher IP address and other info about your server: status

Using a browser, you’re not ready to log into the Elastix 2.5 GUI with your new admin password.

4. Activate Trunks with Incredible PBX for Elastix 2.5

For those migrating from another aggregation including PBX in a Flash, this should be familiar territory for you. Using a browser, log into Elastix 2.5 at the IP address of your server. Before you can actually make or receive calls outside your PBX, you’ll need at least one trunk. In the Elastix 2.5 GUI, click PBX -> Trunks. Once you have your credentials from a provider, choose a provider from the list of preconfigured trunks on the right or create a new one. If you’re using one of the preconfigured options, remember to enable the trunk after adding your desired CallerID and credentials. Then save your settings and reload your Asterisk dialplan. That’s it. You’re ready to go.

5. Configure a Softphone with Incredible PBX for Elastix 2.5

Incredible PBX comes preconfigured with two extensions (701 and 702) that let you connect phones to your PBX. You can connect virtually any kind of telephone to your Elastix 2.5 PBX. Plain Old Phones require an analog telephone adapter (ATA) which can be a separate board in your computer from a company such as Digium. Or it can be a standalone SIP device such as ObiHai’s OBi100 or OBi110 (if you have a phone line from Ma Bell to hook up as well). SIP phones can be connected directly so long as they have an IP address. These could be hardware devices or software devices such as the YateClient softphone. We’ll start with a free one today so you can begin making calls. You can find dozens of recommendations for hardware-based SIP phones both on Nerd Vittles and the PIAF Forum when you’re ready to get serious about VoIP.

We recommend YateClient which is free. Download it from here. Run YateClient once you’ve installed it and enter the credentials for the 701 extension on Incredible PBX. You’ll need the IP address of your server plus your extension 701 password. You can find them in /root/passwords.FAQ. Fill in the blanks using the IP address of your server, 701 for your account name, and whatever password is assigned to the extension. Here’s what your entries should look like. Click OK to save your entries.

Once you are registered to extension 701, close the Account window. Then click on YATE’s Telephony Tab and place some test calls to the numerous apps that are preconfigured on Incredible PBX. Here are a few numbers to get you started:


123 - Reminders
947 - Weather by ZIP Code
951 - Yahoo News
222 - ODBC Lookup (try: 12345)
DEMO - Allison's IVR Demo
TODAY - Today in History

6. Configuring SMTP Mail with Incredible PBX for Elastix 2.5

Outbound email support using Postfix is preconfigured with Elastix 2.5. You can test whether it’s actually working by issuing the following command using your destination email address after logging in as root:

echo "test" | mail -s testmessage yourname@gmail.com

If you don’t receive the email message within a minute or two and you’ve checked your spam folder, chances are your ISP is blocking downstream SMTP servers in an effort to combat spam. Comcast is one of the usual suspects. To enable outbound email service for delivery of voicemail and other email messages with a provider blocking downstream SMTP servers, you first need to obtain the SMTP domain of your ISP, e.g. smtp.comcrap.net. Next, edit /etc/postfix/main.cf and add your SmartHost entry [in brackets] to the line that begins like this: relayhost =. The line should look like this: relayhost = [smtp.comcrap.net]. Save your addition and restart Postfix: service postfix restart. Be sure to try another email test message after completing the SmartHost update. To use Gmail as your mail relay, see this tutorial.

Configuring Google Voice

We have included the Python implementation of gvoice in /root for those that want to experiment by making calls and sending SMS blasts the "old-fashioned" way. While Elastix does not directly support native Asterisk 11 Google Voice functionality, you now can use a SIP gateway to access Google Voice and make free calls in the U.S. and Canada.

Homework Assignment: Mastering Incredible PBX for Elastix 2.5

We’ve put together a complete tutorial for the applications included in Incredible PBX for Asterisk-GUI. Most of it is fully applicable to Elastix 2.5 as well. That should be your next stop. Then you’ll be ready to tackle Elastix 2.5. Google is your friend. Do some exploring, and we’ll post links to great articles on this terrific platform as we discover them. Your suggestions are also welcomed!

In the meantime, if you have questions, join the PBX in a Flash Forums and take advantage of our awesome collection of gurus. There’s an expert available on virtually any topic, and the price is right. As with Incredible PBX, it’s absolutely free. The same applies to the Elastix forum.

And if all of that wasn’t enough, feast your eyes on the Elastix Add-Ons that are only a button click away:

[gview file="http://nerdvittles.com/wp-content/ElastixAddOns.pdf"]

Originally published: Friday, March 27, 2015


Support Issues. With any application as sophisticated as this one, you’re bound to have questions. Blog comments are a terrible place to handle support issues although we welcome general comments about our articles and software. If you have particular support issues, we encourage you to get actively involved in the PBX in a Flash Forums. It’s the best Asterisk tech support site in the business, and it’s all free! Please have a look and post your support questions there. Unlike some forums, ours is extremely friendly and is supported by literally hundreds of Asterisk gurus and thousands of users just like you. You won’t have to wait long for an answer to your question.



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. Vitelity, Google, and RentPBX provide financial support to Nerd Vittles and the Incredible PBX project. []

The Gotcha-Free PBX: Harnessing SIP URIs for Free Worldwide Calling

We continue the Incredible PBX for Asterisk-GUI adventure today with a close look at SIP URIs, those email-like addresses that are the fundamental building blocks for VoIP technology. Consider this. If everyone in the world had a SIP address instead of a phone number, every call to every person in the world via the Internet would be free. That pretty much sums up why SIP URIs are important. The syntax for SIP URIs depends a bit upon your platform. In the Asterisk® world, they look like this: SIP/somenameORnumber@FQDN.yourdomain.com. On many SIP phones, you enter SIP URIs in the following format: sip:somenameORnumber@FQDN.yourdomain.com. Others use somenameORnumber@FQDN.yourdomain.com. Assuming you have a reliable Internet connection, once you have "dialed" a SIP URI, the destination SIP device will ring just as if they had a POTS phone. And Asterisk processes SIP URIs in much the same way as other calls originating from trunks. As noted, SIP URI calls of any duration to anywhere are free. And, of course, Incredible PBX is also free with No Gotchas!

In our original articles on Incredible PBX for Asterisk-GUI, we covered outbound calls to SIP URIs, and we’ll briefly review that procedure today. Then we’ll move on to setting up one or more SIP URIs for your own server so that you can receive incoming SIP URI calls. We’ll show you how to route them to any destination you like, both internal and external. We’ll also address the security implications of enabling SIP URI calling on your server. You don’t want the whole world calling into your server to make outbound calls on your nickel. We’ll also walk you through a safer SIP methodology in which you use a service provider as a SIP intermediary to better protect the security of your server. And finally, we’ll show you how to interconnect your new SIP URIs to real telephone numbers at zero cost. Then your friends without a SIP URI still can call you from any POTS or cellphone in the world.

SIP URI Calling with Incredible PBX for Asterisk-GUI

With one line of dialplan code, you can add Speed Dials for free SIP URI calling worldwide. The dialplan code is stored in the [CallingRule_SIP_URI] context in extensions_custom.conf. Just clone one of the existing entries, designate a speed dial number to connect to the SIP URI, and enter the SIP URI for the destination. Numerous SIP providers support assignment of SIP URI’s to existing DIDs for unlimited free calling from anywhere in the world. Here’s a sample using a speed dial code of 53669 (L-E-N-N-Y). Use it for your telemarketers: exten = 53669,1,Dial(SIP/2233435945@sip2sip.info).

Choosing a SIP URI Strategy with Incredible PBX for Asterisk-GUI

Before we actually create SIP URIs on your own server to receive anonymous calls, let’s walk through the available implementation strategies so that you can make an informed choice on how best to proceed. Keeping in mind that SIP URIs consist of an identifier and a fully-qualified domain name (FQDN) or IP address, one option is to use the same domain that you use for your company. We don’t recommend this approach because it makes it easy to guess where your SIP resources reside. Another option is to use a really obscure FQDN with your SIP URIs. Something like k43X20.mycompany.com or, for dynamic addresses, something like k43X20.dyndns.org makes more sense. In the next section, we’re going to lock down SIP access to your server to this FQDN so the more obscure the FQDN the safer you will be. Security through obscurity still works wonders. A third option is to use the IP address of your server instead of an FQDN. That’s a bad choice because of programs like SIPVicious that the bad guys use to scan the Internet for potential SIP targets to be hacked.

An alternative approach worth considering is to use a provider such as VoIP.ms as a SIP intermediary. In this scenario, you create a sub-account and assign an obscure extension number to that account. This in turn generates a SIP URI that can be used to connect to that account from your server by simply registering a VoIP.ms trunk in Incredible PBX. Once the trunk is registered, incoming SIP URI calls to your VoIP.ms sub-account will be forwarded (without cost) to your server without exposing Asterisk to SIP guest access at all. The wrinkle with this option is that VoIP.ms has often indicated that they plan to charge a reduced fee for these connections at some point. However, to date, they’ve never done it. If VoIP.ms shifts gears down the road, you obviously can as well. For the time being, we would encourage you to take advantage of this free service option. It remains our first choice for SIP URI implementation because there is no need to expose SIP resources on your server at all. VoIP.ms takes care of all the SIP security headaches leaving you to enjoy free calling. In the screenshot we’ve shown above, assuming your VoIP.ms account number was 12345, the SIP URI to connect to this sub-account would be 123458005551212@houston.voip.ms assuming you registered your trunk with the houston.voip.ms server.

Creating Your Own SIP URIs with Incredible PBX for Asterisk-GUI

The procedure for creating one or more SIP URIs on your own Incredible PBX server is straight-forward:

  1. For servers behind a hardware-based firewall, map UDP 5060 (SIP) to your server
  2. Enable allowguest access in [general] context of sip.conf
  3. Create desired SIP URIs in [public] context of extensions.conf

1. Unless your server is sitting on the public Internet without a hardware-based firewall, you’ll need to map UDP port 5060 (SIP) from the firewall to the private LAN address of your server. Otherwise incoming SIP calls will never reach Incredible PBX. Most routers have a Port Forwarding tab in which you designate the port to be forwarded, the type of port, and the destination IP address. Consult the manual for your router/firewall for detailed instructions.

2. Changing the allowguest setting in the [general] context of sip.conf is mandatory since the purpose of SIP URI calling is to accept calls from unregistered users. The risk, of course, is that anyone in the world with an Internet connection can attempt to connect to your server. More on that later. For now, issue this command after logging into your server as root:

sed -i 's|allowguest=no|allowguest=yes|' /etc/asterisk/sip.conf

Once you issue this command and restart Asterisk, the setup of Incredible PBX for Asterisk-GUI is to route anonymous SIP calls to the [public] context in extensions.conf. Only extensions in this context will be exposed to anonymous callers. This is important. NEVER change the destination context for these calls to one that provides unrestricted access to the calling resources on your server. The reason should be obvious. But, in case it isn’t, this would permit anonymous callers to use all of your trunks to place outbound calls to anywhere… on your nickel. $100,000 phone bills are the usual result.

3. There are two important facets in creating your own SIP URIs for anonymous access to your server. As touched upon previously, the first is choosing an obscure FQDN for your server. This is a really important layer of security for a couple of reasons: (1) your anonymous caller has to know the actual FQDN of your server in order to reach you and (2) in the next step we’re going to lock down your server to only allow anonymous SIP access from this FQDN. So choose carefully. The second consideration is deciding which server resources you wish to expose for SIP URI access. Do you wish to permit SIP URI calls only to a specific extension or ring group, or perhaps a custom IVR just for SIP URI callers, or perhaps a conference or DISA access (very dangerous)?

You can deploy more than one SIP URI. For each one, you’ll need a destination for the incoming call and an identifier or extension. Identifiers could be numeric, alphanumeric, or pure alpha characters. For example, 8005551212, joe6001, and accounting are all perfectly acceptable. The resultant SIP URI would be something like joe6001@k43X20.mycompany.com.

As noted, for each destination on your server that you wish to enable for SIP URI access, you add a line of dialplan code to the [public] context in extensions.conf. The syntax is identical to what you’ve previously used in routing incoming trunk calls to a destination except we’ll restrict connections to those matching the identifier you’ve chosen for each SIP URI. Here are some examples to get you started.

To route SIP URI accounting@k43X20.mycompany.com to Ring Group #1:
exten = accounting,n,Goto(ringroups-custom-1,s,1)

To route SIP URI joe6001@k43X20.mycompany.com to Extension 6001:
exten = joe6001,n,Goto(default,6001,1)

To route SIP URI demo@k43X20.mycompany.com to the Nerd Vittles demo IVR:
exten = demo,n,Goto(voicemenu-custom-2,s,1)

To route SIP URI lenny@k43X20.mycompany.com to an outside SIP URI:
exten = lenny,1,Dial(SIP/2233435945@sip2sip.info)

To route SIP URI conference@k43X20.mycompany.com to the default conference at extension 2663:
exten = conference,1,Goto(conf_bridge,2663,1)

To route SIP URI weather@k43X20.mycompany.com to the Weather by ZIP Code application:
exten = weather,1,Goto(CallingRule_extensions_custom,947,1)

To route SIP URI 800directory@k43X20.mycompany.com to Directory Assistance using Google Voice trunk:
exten = 800directory,1,Dial(Motif/GoogleVoice/18005551212@voice.google.com)

Securing Your Server with SIP URI Implementations

There are two important security steps once you have enabled anonymous SIP URI calling to your server. The first line of defense is to harden the IPtables Firewall to only permit anonymous SIP access to the specific FQDN you plan to use for your SIP URI callers. The second is to harden Asterisk to disallow requests for domains not serviced by your server.

1. Edit the IPv4 rules for your operating system. On the CentOS-compatible platforms, it’s /etc/sysconfig/iptables. On the Debian/Ubuntu/Raspbian platforms, it’s /etc/iptables/rules.v4. Toward the end of the file and just above the final fail2ban entries, insert the following code using your actual FQDN in the first line:

-A INPUT -p udp --dport 5060 -m string --string "@k43X20.mycompany.com" --algo bm -j ACCEPT
-A INPUT -p udp --dport 5060 -m string --string "REGISTER sip:" --algo bm -j DROP
-A INPUT -p udp --dport 5060 -m string --string "OPTIONS sip:" --algo bm -j DROP
-A INPUT -p udp -m udp --dport 5060 -j DROP

2. Run the following commands substituting your actual FQDN in the first line to lock down Asterisk to only your FQDN for anonymous SIP connections:

sed -i '/\\[general\\]/a ;domain=k43X20.mycompany.com' /etc/asterisk/sip.conf
sed -i '0,/;domain/s/;domain/domain/' /etc/asterisk/sip.conf
sed -i '0,/;allowtransfer=no/s/;allowtransfer=no/allowtransfer=no/' /etc/asterisk/sip.conf
sed -i '0,/; allowexternaldomains=no/s/; allowexternaldomains=no/allowexternaldomains=no/' /etc/asterisk/sip.conf

3. Restart your firewall: iptables-restart

4. Restart Asterisk: asterisk-restart

5. Done!

Interconnecting a SIP URI with a Free PSTN Phone Number

Wouldn’t it be nice if all your friends and business associates without SIP URI capability could still call you using a traditional PSTN number? Well, it’s your lucky day because www.ipkall.com provides just what you need, a free phone number in the Seattle area that you can connect to an existing SIP URI on your server.

When folks call the Seattle number, they will be connected to your server using whatever routing you chose for the SIP URI in the previous section. So sign up for a number, enter your email address and the SIP URI for the calls, and wait for the confirmation email identifying your new telephone number. The only catch is that you need to receive at least one call a month to keep the number. Aside from that, there are no restrictions on use of the PSTN numbers. Enjoy!


Don’t forget to List Yourself in Directory Assistance with your new IPkall PSTN number so everyone can find you by dialing 411. And be sure to add your new number to the Do Not Call Registry to block telemarketing calls.

Originally published: Wednesday, March 25, 2015


Support Issues. With any application as sophisticated as this one, you’re bound to have questions. Blog comments are a terrible place to handle support issues although we welcome general comments about our articles and software. If you have particular support issues, we encourage you to get actively involved in the PBX in a Flash Forums. It’s the best Asterisk tech support site in the business, and it’s all free! Please have a look and post your support questions there. Unlike some forums, ours is extremely friendly and is supported by literally hundreds of Asterisk gurus and thousands of users just like you. You won’t have to wait long for an answer to your question.



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…

SOHO Delight: Introducing the Ultimate Asterisk Appliance for Under $30

We continue our journey to identify cost-effective, Gotcha-Free Asterisk® solutions. And, yes, we eat our own dog food! So this week we turn our attention to a real sleeper. It’s an Asterisk appliance with an almost unbelievable price and an even more incredible feature set. With the PBX in a Flash™ and Incredible PBX™ projects, we meet hundreds of thousands of new VoIP enthusiasts each year. But let’s face it. Even software products as simple to use as ours present a formidable challenge to some folks that are new to networking and dealing with complex hardware setups. There’s also the corner grocery store and the mom-and-pop restaurants and the shoe repair store and the tire store and the neighborhood bike shop that shouldn’t have to spend hundreds of dollars each month for basic phone service. And then there are those with a cabin in the mountains or a weekend beach house that just want a plug-and-play communications device that’s available when you need it. So this week’s VoIP solution is dedicated to those on a budget that have no interest in spending months learning the intricacies of VoIP technology. These folks just want basic phone service that works at an affordable price. Bells and whistles are nice but not if they add complexity or cost. And, boy, do we have an incredible find to share with you today. What you’ll need in addition to this Asterisk appliance is electricity and a working Internet connection with a router/firewall. That’s it.

WARNING: We do not recommend EVER connecting the JS-200FX directly to the Internet because of potential security issues with this older version of Asterisk.

We purchased our first JS-200FX Asterisk Appliance from X100P.com for $89.95 with $15 for shipping from the Far East. But others tipped us off that refurbished units (that means they’ve actually been tested and they work) are regularly available for considerably less cost. We’ve added a direct link to the manufacturer for your convenience. Either way, the JS-200FX is a steal. In addition to a router and firewall, the appliance includes two FXS ports to connect plain old telephones, integrated WiFi to connect softphones and SIP devices wirelessly, and best of all turnkey Google Voice support for two lines to make free calls in the United States and Canada. Because the Asterisk-GUI is an integral part of the appliance, setup time is under 5 minutes. And we’ll show you how. As we love to say, if you can handle slice-and-bake cookies, you can do this. So here’s the drill:

  1. Sign up for Google Voice service (do it twice for double the fun!)
  2. Boot and login to JS200-FX after connecting network cable from ETH2 to a computer
  3. Configure Networking and Connect CAT5 from ETH1 to Internet router
  4. Configure Google Voice and Make a Call
  5. Configure Asterisk (optional)
  6. Interconnect Remote Asterisk Server (optional)

1. Getting Started with Google Voice

With the JS200-FX, you can use any SIP provider including our platinum sponsor, Vitelity. See below for a deal you can’t refuse. But, if you live in the United States, you’d be crazy not to also use Google Voice. It’s free! To use Google Voice with the JS200-FX, you’ll need at least one dedicated Google Voice account. Create a Gmail account first. The more obscure the username (with some embedded numbers), the better off you will be. This will keep folks from bombarding you with unsolicited Gtalk chat messages. Then visit http://google.com/voice to set up your Google Voice account and phone number. Yes, you can port an existing number into Google Voice!

IMPORTANT: Do NOT under any circumstances take Google’s bait to switch from Google Chat to Hangouts. Click the X (shown above), or you will forever lose the ability to use Google Chat with your Asterisk appliance. Also be sure to enable the Google Chat option as one of your phone destinations in Settings, Voice Setting, Phones. That’s the destination we need for the Asterisk appliance to work its magic! Otherwise, all inbound and outbound calls will fail. Good News! You’re in luck. Google has apparently had a change of heart on discontinuing Google Chat support so it’s enabled by default in all new Google Voice accounts. Once you’ve created a Gmail and Google Voice account, go to Google Voice Settings and click on the Calls tab. Make sure your settings match these:

  • Call ScreeningOFF
  • Call PresentationOFF
  • Caller ID (In)Display Caller’s Number
  • Caller ID (Out)Don’t Change Anything
  • Do Not DisturbOFF
  • Call Options (Enable Recording)OFF
  • Global Spam FilteringON

Click Save Changes once you’ve adjusted your settings. Under the Voicemail tab, plug in your email address so you get new voicemails delivered… and transcribed.

One final word of caution is in order regardless of your choice of providers: Do NOT use special characters in any provider passwords, or nothing will work! If you have trouble placing or receiving calls, try BOTH of these tips.

If you have difficulty finding the Google Chat option after setting up a new Google Voice account, follow this tutorial.

2. Connecting to JS200-FX Asterisk Appliance

Now you’re ready to begin the adventure. Turn the switch on the back of the JS200-FX to ON. Plug in the included CAT5 cable between ETH2 port on the JS200-FX and a desktop computer or notebook. Power on the device and wait about 2 minutes. From your computer, browse to 192.168.10.1 and login to Asterisk-GUI as user admin with password for your password. You’ll be prompted to change your password. Make it secure!

3. Configuring Networking on JS200-FX Asterisk Appliance

In a nutshell, you’ll be using the ETH1 port on the JS200-FX to connect to your Internet router. We’ll use ETH2 to directly connect to the JS200-FX from a computer when things go haywire. Assuming your router hands out private IP addresses with DHCP, you don’t really need to do much in the way of network configuration on the JS200-FX unless you want to set up a static IP address for the appliance. You’ll find that option under Networking -> WAN -> Connection Type. We typically recommend permanently assigning the IP address that was handed out by your router within the router’s configuration menu. The real trick at this point is deciphering what that IP address will be. You can figure that out by plugging a CAT5 cable between ETH1 and your router now. The address will appear in the WAN entry under Networking -> Status.

Next, we’ll want to configure the Wireless Networking. We recommend setting the device up as an Access Point under Wireless -> Basic Settings. Under the Wireless Security tab, switch to WPA2-PSK security and create an 8-character password to access the device on its WiFi gateway. This gives you a way to connect wirelessly and be assigned an IP address in the range 192.168.10.100-200. If that range duplicates the private LAN subnet of your router, change it to 192.168.0.

Finally, click on Firewall -> Remote Admin and activate remote access to Asterisk-GUI using port 80. Whatever you do, DO NOT MAP ANY PORTS FROM YOUR FIREWALL TO THIS ASTERISK APPLIANCE! It is an older version of Asterisk that probably is not without some security holes. So long as it’s safely ensconced behind a hardware-based firewall, you should have little to worry about especially if you only use Google Voice trunks for outside calling.

4. Configuring Google Voice on JS200-FX Asterisk Appliance

This is a 5-second task. In the Asterisk-GUI, click Google Voice. Plug in your Google Voice email address and password. If you wish to enable a second Google Voice account, click Enable Line #2 and enter your credentials for the second account. Save your settings and reload the dialplan when prompted. Now plug in a Plain Old Telephone to the TEL1 port on the JS200-FX. To dial out using the first Google Voice account, dial 941 + 1 + the 10-digit number. To retrieve your voicemail, dial 41. For the second Google Voice account, use the 942 prefix and 42 for voicemail.

VoIP 101: Learning the Basics of Asterisk-GUI Management

Everything from here on out is optional reading. But, if you plan to get the most out of your new PBX, you’ve got to master the basics of the lingo so you’ll know how to navigate through and manage the Asterisk-GUI. For the sake of simplicity, we’ll divide calls into three categories: local calls, incoming calls, and outgoing calls. The latter two categories are External calls from or to destinations outside your PBX.

Local Calls. These are Internal Calls between users of your PBX. Users typically are assigned a local phone number, an Extension, on which to receive calls. You connect a telephone to an extension in order to answer and make calls. Traditional analog phones are called POTS phones (a.k.a. Plain Old Telephones). They connect to an FXS port (only!) which is identified by the TEL1 or TEL2 jacks on the JS200-FX. SIP and IAX phones or softphones are digital devices that connect to extensions configured as SIP or IAX extensions/users.

Incoming Calls. As the name implies, these are calls coming into your PBX. You typically rent a phone number (DID) from a Provider. The provider assigns you credentials and registers the DID to a Trunk. On your PBX, you Create and Register a Trunk with credentials matching those assigned by the provider. When a call is placed to your DID, the provider passes the call to your PBX through the registered Trunk. The PBX then identifies both the DID and the CallerID of the incoming call and routes it to a Destination based upon the rules you establish in your Incoming Calling Rules (a.k.a. Inbound Routes). A typical destination would be an Extension or User, a Ring Group or collection of extensions, a Conference Room where multiple callers can converse at the same time, or a Voice Menu (a.k.a. IVR or AutoAttendant).

Outgoing Calls. These are calls destined for Termination on a telephone outside your PBX. It could be across the street or on the other side of the world. Some of these calls are free and some are not. Outgoing calls begin from a Phone connected to an Extension or User. Once a number is dialed, a Dial Plan determines whether the caller is authorized to make the call. If so, the call is passed to the Outgoing Calling Rules (a.k.a. Outbound Routes). These rules determine which Trunk will actually process the call. As with incoming trunks, you sign up for Termination service with a provider that may be the same or different from your DID provider. Outgoing call rules may send calls with a certain Dialing Prefix to a specified Trunk to take advantage of free calling or reduced cost. These calling rules may strip off dialing prefixes and/or add additional digits to the dialed number before it is passed to the Provider for termination on a remote phone.

5. Configuring Asterisk on JS200-FX Asterisk Appliance

Now that you’ve mastered the basics, there’s so much more you can do. In fact, we could write a book about it. Lucky for us (and for you), others have already done that. To get the most out of this terrific appliance, you’ll need to learn more about Asterisk and the Asterisk-GUI. Fortunately, there’s no shortage of tutorials. Start with the JS200-FX Quick Start Guide (PDF). Then take a careful look at Chapter 3 of Digium’s Asterisk Appliance™ Administrator Manual. Next, review Chapter 11 of The Asterisk Book (Second Edition). Finally, review these tutorials that have been written by other companies that incorporated Asterisk-GUI into their hardware products, e.g. Yeastar’s MyPBX SOHO User Manual and Grandstream’s UCM6100 User Manual.

6. Interconnecting JS200-FX Asterisk Appliance to Remote Asterisk Server

Interconnecting the new Asterisk appliance to a remote Asterisk server to share outbound trunks or to allow free calls to local extensions on the remote server is easy. First, create an IAX trunk on the remote Asterisk server using a very secure password. This setup will give callers on the Asterisk appliance access to the entire dialplan on the remote Asterisk server so be careful. Also make sure the Trunk Name and username are the same.

On the Asterisk appliance, there are 3 steps: create an IAX trunk to make the connection to the remote server, add an outbound route with a dialing prefix to route calls out the new trunk, and enable the new Trunk in your DefaultLocalContext dialplan.

Trunk setup: Trunks -> New IAX Trunk

You’ll need the IP address or FQDN of your remote server. In addition, the username and password must match what you set up (above) on the remote server.

Outbound Route setup: Outgoing Call Rules -> New Calling Rule

In our example, we’re requiring an 8 prefix followed by a 10-digit number to send a call to the remote server for outbound call processing. If you wanted to force a different dialing prefix at the remote server end in order to send calls out through a specific trunk, that prefix should be Prepended in the highlighted field of the outbound route. This setup would not permit calls to local extensions on the remote PBX. To do that, you’d probably want to create an additional outbound route with a Dial Pattern such as _8XXXX! if the extensions on the remote server were all four digits. Don’t forget to also enable that second outbound route in the dialplan setup below!

Dialplan setup: Dial Plans -> Edit DefaultLocalContexts

Just click on the Out_RentPBX checkbox and Save your update. Then reload the Asterisk dialplan, and you’re all set.

Making Free SIP URI Calls Worldwide

One of the hidden beauties of Asterisk is the ability to place SIP URI calls to anyone in the world and talk for free… for as long as you wish. SIP URIs look much like an email address with a name or number, followed by @, followed by an FQDN or IP address, e.g. 2233435945@sip2sip.info. While the SIP URI setup on the JS200-FX Asterisk Appliance is not exactly straightforward, it’s pretty easy once you know some of Asterisk-GUI’s magic tricks. The simplest method is to Create a New Voice Menu which will work like a Speed Dial for the new SIP URI. For example, here’s the setup to add Lenny to your appliance. Name the new voice menu Lenny and assign a number to the new voice menu (53669 spells L-E-N-N-Y). Now add two Actions by clicking Add New Step twice with the entries shown below. Save your Voice Menu. Then Reload the dialplan. Now dial 53669 to speak to Lenny. Or route telemarketers to this extension as part of your dial plan.

Answer
Macro trunkdial-failover-0.3,sip/2233435945@sip2sip.info,,,

If you’re comfortable using an editor, there’s an easier way using the same methodology included in Incredible PBX for Asterisk-GUI. We’ll actually add a new [CallingRule_SIP_URI] context in which to save SIP URI speed dials. Then we’ll add that new context to the default dialplan: [DLPN_DefaultLocalContexts]. In the future, you can easily add additional SIP URI speed dials to this context. Just give each one a unique extension number and plug in the SIP URI using the syntax shown below.

In the Asterisk-GUI, click Options -> Advanced Options -> Show Advanced Options. Then click on the new File Editor tab. In the Config Files pulldown, choose extensions.conf. Click Add Context button and name it: CallingRule_SIP_URI. The new context will be added to the bottom of the file so go there and click on + to edit its contents. Add the following line and click Save:

exten = 53669,1,Dial(SIP/2233435945@sip2sip.info)

Now we need to add the new context to the default dialplan so search through the contexts until you find [DLPN_DefaultLocalContexts]. Click on the + to edit the context. Then add the following line to the end of the existing list and click Save:

include=CallingRule_SIP_URI

Now click Apply Settings button to save your settings to NVRAM and reload the dialplan. That wasn’t so hard, was it?

There’s another advantage to the second approach. Your Call Detail Records now will actually show the speed dial numbers that are called:

Setting Up Incoming SIP URIs for Your PBX

This is only recommended for those that are highly skilled in Asterisk and those that can afford an expensive phone bill. It requires that UDP port 5060 be exposed to the Internet through your firewall. You need to be extremely careful in setting up SIP URIs to avoid unintended consequences such as allowing strangers to place outbound calls through your PBX on your nickel. The steps are straight-forward. First, configure an FQDN for your server and, if your provider uses dynamic IP addresses, set up dynamic DNS refreshes using the facility included in Networking -> Dynamic DNS. Second, use the File Editor to edit the [general] context in sip.conf. Insert your FQDN into the fromdomain and domain variables. Next, insert the following line: allowexternaldomains=no. Then Save the file. Third, edit the [default-public] context in extensions.conf. Insert your desired SIP URIs in this context using the proper syntax. For example, to route a SIP URI for mothership@FQDN.yourdomain.com to extension 6001, the dialplan code would look like this: exten=mothership,1,Goto(default,6001,1). To route the same SIP URI to your first Voice Menu, the code would look like this: exten=mothership,1,Goto(voicemenu-custom-1,s,1). To route the same SIP URI to your first Ring Group, use: exten=mothership,1,Goto(ringroups-custom-1,s,1). To route the incoming SIP URI to an outgoing SIP URI, use: exten=mothership,1,Dial(SIP/somewhere@someFQDN.somedomain.com).

There’s a silver lining to activating an inbound SIP URI. Once it’s properly configured, you can sign up for a free phone number in the Seattle area and map that DID to the SIP URI of your server. All of the incoming calls are free! This gives you some redundancy in the event of a Google Voice outage. Just visit www.ipkall.com to sign up for your free number.

Hardening the JS200-FX Firewall

Particularly if you elect to support incoming SIP URIs, you’ll want to tighten up the SPI Firewall included in the JS200-FX. While we have no simple way to decipher the existing rules, you can add rules of your own to lessen the opportunity for mischief. This is especially important in the SIP arena. Just to be sure you don’t lock yourself out of your own server, we recommend a 4-step process: (1) allowing full access from private LAN subnets, (2) whitelisting the FQDNs and IP addresses from which you will access the JS200-FX, (3) whitelisting the providers that you intend to use as well as the IP addresses of external phone devices, and (4) locking down incoming SIP URI access to a single FQDN for your server. The fourth step keeps random strangers from attempting to gain SIP access by scanning blocks of IP addresses in search of vulnerable servers. It’s a good idea to use an obscure FQDN for your appliance which minimizes the ability of strangers to guess the acceptable SIP URIs, e.g. somefunkyFQDN.somedomain.net would block all incoming SIP URI attempts by either IP address or by guessing any other FQDN. In other words, the FQDN works just like a password. Thus, if you set up a mothership SIP URI (make up your own!), the only incoming SIP URI calls that would be allowed would be those calling mothership@somefunkyFQDN.somedomain.net. Don’t publish the actual SIP URI anywhere!

Also be advised that, if you use FQDNs in the step #2 white list and the dynamic IP address of these FQDNs changes, you will need to manually restart the JS200-FX to enable the new IP address. Currently, there is no ability to check for FQDN changes and automatically restart the appliance.

To create the new firewall rules, choose Firewall -> Custom Rules -> Enable ON. Then enter and SAVE & APPLY the following rules using your actual settings rather than the sample entries below. CAUTION: This data should be entered by accessing the JS200-FX via WiFi at the 192.168.10.1 address, or you may lock yourself out during the update process.

#1 private subnets and loopback - no changes needed in this section
-A INPUT -s 192.168.0.0/16 -j ACCEPT
-A INPUT -s 10.0.0.0/8 -j ACCEPT
-A INPUT -s 172.16.0.0/12 -j ACCEPT
-A INPUT -s 127.0.0.0/8 -j ACCEPT

#2 enter your own IP addresses for WhiteList access below
-A INPUT -s homeFQDN.dyndns.org -j ACCEPT
-A INPUT -s alternateFQDN.dyndns.org -j ACCEPT
-A INPUT -s 129.43.13.220 -j ACCEPT

#3 providers and interconnected servers and phone devices
## atlanta.voip.ms sample entry
-A INPUT -s 174.34.146.162/32 -p udp -m multiport --dports 5060,5061,5062,5063,5064,5065,5066,5067,5068,5069,5080,4569 -j ACCEPT

#4 SIP URI access - enter JS200-FX FQDN in next line and leave the rest
-A INPUT -p udp --dport 5060 -m string --string "REGISTER sip:somefunkyFQDN.somedomain.net" --algo bm -j ACCEPT
-A INPUT -p udp --dport 5060 -m string --string "REGISTER sip:" --algo bm -j DROP
-A INPUT -p udp --dport 5060 -m string --string "OPTIONS sip:" --algo bm -j DROP
-A INPUT -p udp --dport 5060 -j ACCEPT

Implementing 7-Digit Dialing with Your Favorite Area Code

Once you have at least one Google Voice account set up, here’s another trick to implement 7-digit dialing with your favorite area code. Just add an additional line to the [CallingRule_SIP_URI] context substituting your area code for 843:

exten=_NXXXXXX!,1,Macro(trunkdial-failover-0.3,${GoogleVoice_1}/1843${EXTEN},,GoogleVoice_1,)

OK, Smarty Pants: Show Me the Beef!

We know what some of you are thinking. "Do you really know as much about VoIP as Lenny does?? Before wasting 30 bucks on this, show me the beef!" Fair enough. Sit by your phone and click the Call Me icon below. Type in a fake name and your real phone number. Click the Connect button. Answer your phone when it rings. Then press 1. You’ll be connected to the Conferencing System running on the JS200-FX Asterisk Appliance. You can chat with other Nerd Vittles users that have joined before you. So… what are you waiting for? Click away and try the JS200-FX Appliance for yourself.



You can implement this Click-to-Dial technology using your own JS200-FX Asterisk Appliance in about 10 seconds. Once you have configured Google Voice as outlined in Step #1 above, click on the Call Widgets tab under Settings. Click Add a New Call Widget, give it a name, turn off ringing your home or office phone, turn off Call Presentation, and Save Changes. Now simply cut-and-paste the Embed code that’s provided and insert it into a public web page of your choice. Doesn’t get much easier than that, and all your family and friends can call you for free from the convenience of any available telephone in the U.S. or Canada by simply clicking on the Call Me widget on your web site’s home page.

Originally published: Monday, March 16, 2015


Support Issues. With any application as sophisticated as this one, you’re bound to have questions. Blog comments are a terrible place to handle support issues although we welcome general comments about our articles and software. If you have particular support issues, we encourage you to get actively involved in the PBX in a Flash Forums. It’s the best Asterisk tech support site in the business, and it’s all free! Please have a look and post your support questions there. Unlike some forums, ours is extremely friendly and is supported by literally hundreds of Asterisk gurus and thousands of users just like you. You won’t have to wait long for an answer to your question.



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…

The Two Amigos Ride Again: Introducing Incredible PBX for Elastix 2.5

DEC. 7 NEWS FLASH: The Elastix project has been sold to 3CX. Elastix 4.0 and Elastix MT have been removed from production "due to a legal disagreement with another open source distribution."

We began our Elastix® adventure last week with the Bleeding Edge and our introduction of Incredible PBX for Elastix MT, the promising new multi-tenant edition of Elastix. Unfortunately, for production use, Elastix 3.0 is not quite there yet. So this week we’re introducing Incredible PBX™ for Elastix 2.5, an incredibly stable telephony platform with a loyal following and dozens of add-on components to satisfy almost any requirement. Having not looked at Elastix in more than a year, we were pleasantly surprised to find a very current version of Asterisk® 11 as well as a stable, gotcha-free Elastix fork of FreePBX® 2.11. It’s amazing what can be accomplished with a single command: yum upgrade. If you know how to use FreePBX, then the Elastix GUI will be a walk in the park.

We promised that 2015 would be the year of Gotcha-Free choices for the Asterisk platform, and today we deliver the third VoIP alternative with pure and honest GPL code minus the patent, trademark, and copyright minefields previously covered. Incredible PBX™ for Elastix 2.5 provides virtually the same feature set of applications for Asterisk as our previous releases. Just abide by the clear GPL licensing terms and copy, embellish, and redistribute to your heart’s content.

What Incredible PBX brings to the Elastix 2.5 platform are several dozen (free) applications for Asterisk in addition to a rock-solid firewall with a preconfigured WhiteList of your favorite VoIP providers and private LAN addresses. With the Elastix 2.5 version, you also get a dozen preconfigured trunks and extensions plus a familiar GUI that we’ve all used for the better part of a decade. And it’s all bundled in a graphical user interface that integrates telephony, faxing, instant messaging, email, and calendaring in a single desktop application. We’re glad to be part of the family.

Our deployment strategy remains consistent and straight-forward. Install a 64-bit bit version of Elastix 2.5 on the platform of your choice. Then run the Incredible PBX installer. In 5-10 minutes, you’re ready to roll. The installer first will bring Elastix 2.5 and CentOS up to current specs. Then it will work its magic and add an Incredible PBX tab to the existing Elastix 2.5 UI with all the bells and whistles to which you are accustomed. Text-to-speech applications, speech recognition, DISA, ODBC, SMS messaging, news, weather, conference bridge support, and a voice dialer are enabled out of the box.

A Word of Caution. If you’re new to Incredible PBX, install a clean version of Elastix 2.5 with NO MODIFICATIONS before you begin the Incredible PBX install. All of the existing Elastix 2.5 setup will be modified as part of the Incredible PBX install, and these changes will wipe out any additions you’ve previously made to Elastix. So don’t make any! Once the Incredible PBX install is completed, you can make all the changes you wish in your Elastix configuration. The only major design change we’ve made is to rework the Elastix MySQL database tables into MyISAM format from InnoDB. This facilitates making future backups and restores of your server as well as providing the necessary platform to install current and future Incredible PBX components.

Did We Mention Security? You also get a locked down, preconfigured IPtables Firewall WhiteList with all of the Travelin’ Man 3 tools plus the automatic update service to keep your server up to date and safe. There is a $20 voluntary annual license fee for the update service but, if you’d prefer to buy donuts, be our guest. But understand that voluntary is a two-way street. Running the update service costs us time and money and, when it ceases to be worthy of our time and financial investment, we reserve the right to discontinue the service down the road. The next time you log into your server after installing Incredible PBX, you’ll quickly appreciate why an automatic update service is important. We watch for and fix problems so you don’t have to.

Target Audience: Small or Large Organization in need of a turnkey, Gotcha-Free PBX

Default Configuration: Asterisk 11 with enhanced Elastix 2.5 GUI and Kennonsoft GUI

Platform: CentOS 5.x running on Dedicated Server, Cloud-Based Server, or Virtual Machine

Minimum Memory: 1024 MB

Recommended Disk: 20 GB+

Feature Set: Fax, SMS messaging, NeoRouter/PPTP VPN, Reminders, ConfBridge Conferencing, AsteriDex, Voicemail, Email, IVR, News, Weather, Voice Dialer, Wolfram Alpha, Today in History, TM3 Firewall WhiteList, Speed Dialer, iNUM and SIP URI (free) worldwide calling, DISA, Call Forwarding, Tailorable CDRs

Administrator Utilities: Incredible Backup/Restore, Automatic Updater, phpMyAdmin, Timezone Config, WebMin, Admin Password Configurator, ODBC/MySQL Database Configurator, Firewall WhiteList Tools

Getting Started with Incredible PBX for Elastix 2.5

Here’s a quick overview of the installation and setup process for Incredible PBX for Elastix 2.5:

  1. Choose a Hardware Platform – Dedicated PC, Cloud Provider, or Virtual Machine
  2. Install Elastix 2.5 – 64-bit CentOS 5 platform
  3. Download and Install Incredible PBX for Elastix 2.5
  4. Set Up Passwords for Incredible PBX for Elastix 2.5
  5. Activate Trunks with Incredible PBX for Elastix 2.5
  6. Connect a Softphone to Incredible PBX for Elastix 2.5
  7. Configuring SMTP Mail with Incredible PBX for Elastix 2.5

1. Choose a Platform for Incredible PBX for Elastix 2.5

Incredible PBX for Elastix 2.5 works equally well on dedicated hardware, a cloud-based server, or a virtual machine. Just be sure you’ve met the minimum requirements outlined above and that you have a sufficiently robust Internet connection to support 100Kb of download and upload bandwidth for each simultaneous call you wish to handle with your new PBX.

For Dedicated Hardware, we recommend at least an Atom-based PC of recent vintage with at least a 30GB drive and 4GB of RAM. That will take care of an office with 10-20 extensions and a half dozen or more simultaneous calls if you have the Internet bandwidth to support it.

For Cloud-Based Servers, we recommend RentPBX, one of our financial supporters who also happens to size servers properly and restrict usage solely to VoIP. This avoids performance bottlenecks that cause problems with VoIP calls. Yes, we have a coupon code for you to get the $15/month rate: NOGOTCHAS. The new image to support Incredible PBX for Elastix 2.5 should be available shortly.

For Virtual Machine Installs, we recommend Oracle’s VirtualBox platform which runs atop almost any operating system including Windows, Macs, Linux, and Solaris. Here’s a link to our original VirtualBox tutorial to get you started. We suggest allocating 1GB of RAM and at least a 20GB disk image to your virtual machine for best performance. We actually used VirtualBox to build Incredible PBX for Elastix 2.5.

2. Install 64-bit Elastix 2.5 on Your Platform

Begin by downloading the 64-bit Elastix 2.5 ISO. For dedicated hardware, burn the ISO image to a CD/DVD and boot your server with the Elastix 2.5 ISO to begin the install. Here are the simplest installation steps:

Install or Upgrade in Graphical Mode by pressing ENTER
Choose: Install Language
Choose: Keyboard
Choose: Initialize Drive and Erase ALL DATA
Remove: All partitions on selected drive and YES you’re sure
Modify: Partitioning Layout (No is fine)
Configure: eth0 and disable IPv6 Support (unless required)
Choose: Dynamic IP (DHCP) configuration
Choose: Hostname Configuration Automatic
Choose: Time Zone and Disable System Clock Uses UTC
Set: Root Password (Make it Secure!)
Wait for Reboot to Complete
Set MySQL Password to: passw0rd (MANDATORY: with a zero!)
Choose Elastix admin Password: minimum 10 alphanumeric characters with upper & lowercase

For VirtualBox, create an Elastix 2.5 virtual machine of Linux (RedHat 64-bit) type by clicking New. Click Settings button. In System, enable I/O APIC and disable Hardware Clock in UTC Time. In Audio, enable Audio for your sound card. In Network, enable Bridged Adapter for Adapter 1. In Storage, click on Empty in the Storage Tree. Then click on the Disk icon to the right of CD/DVD Drive attributes. Choose the Elastix 2.5 ISO file that you downloaded. Click OK. Then start the virtual machine to begin the installation process. Follow the setup steps above to install Elastix 2.5 in your virtual machine.

3. Download and Install Incredible PBX for Elastix 2.5

After completing the Elastix 2.5 install, log into your server as root using SSH or Putty from a desktop machine that you will use to manage your server. This is important with the Incredible PBX IPtables Firewall WhiteList so you don’t get locked out of your own server! Then issue the following commands to begin the Incredible PBX install. You’ll actually run the installer twice, once to upgrade CentOS and Elastix and a second time to install Incredible PBX.

cd /root
wget http://incrediblepbx.com/incrediblepbx11elastix25.tar.gz
tar zxvf incrediblepbx11elastix25.tar.gz
rm -f incrediblepbx11elastix25.tar.gz
./IncrediblePBX11-Elastix25.sh
./IncrediblePBX11-Elastix25.sh

4. Initial Configuration of Incredible PBX for Elastix 2.5

Incredible PBX is installed with the preconfigured IPtables Linux firewall already in place. It implements WhiteList Security to limit server access to connected LANs, your server’s IP address, your desktop computer’s IP address, and a few of our favorite SIP providers. You can add additional entries to this WhiteList whenever you like using the add-ip and add-fqdn tools in /root. There’s also an Apache security layer for our web applications. And, of course, Elastix 2.5 has its own security methodology. Finally, we randomize extension and DISA passwords as part of the initial install process. Out of the starting gate, you won’t find a more secure VoIP server implementation anywhere. After all, it’s your phone bill.

Even with all of these layers of security, here are 6 Quick Steps to better safeguard your server. You only do this once, but failing to do it may lead to security issues you don’t want to have to deal with down the road. So DO IT NOW!

First, log out and back into your server as root with your root password to get the latest updates. Then do the following:

Make your root password very secure: passwd
Set your correct time zone: ./timezone-setup
Create admin password for web apps: htpasswd -b /etc/pbx/wwwpasswd admin newpassword
Set MySQL and Elastix admin PW: ./admin-pw-change (MySQL PW MUST be passw0rd with zero)
Make a copy of your other passwords: cat passwords.FAQ
Decipher IP address and other info about your server: status

Last but not least, Incredible PBX includes an automatic update utility which downloads important updates whenever you log into your server as root. We recommend you log in once a week to keep your server current. If you haven’t already done so, NOW would be a good time to log out and back into your server at the Linux command line to bring your server current.

5. Activate Trunks with Incredible PBX for Elastix 2.5

For those migrating from another aggregation including PBX in a Flash, this should be familiar territory for you. Using a browser, log into Elastix 2.5 at the IP address of your server. Before you can actually make or receive calls outside your PBX, you’ll need at least one trunk. In the Elastix 2.5 GUI, click PBX -> Trunks. Once you have your credentials from a provider, choose a provider from the list of preconfigured trunks on the right or create a new one. If you’re using one of the preconfigured options, remember to enable the trunk after adding your desired CallerID and credentials. Then save your settings and reload your Asterisk dialplan. That’s it. You’re ready to go.

6. Configure a Softphone with Incredible PBX for Elastix 2.5

Incredible PBX comes preconfigured with two extensions (701 and 702) that let you connect phones to your PBX. You can connect virtually any kind of telephone to your Elastix 2.5 PBX. Plain Old Phones require an analog telephone adapter (ATA) which can be a separate board in your computer from a company such as Digium. Or it can be a standalone SIP device such as ObiHai’s OBi100 or OBi110 (if you have a phone line from Ma Bell to hook up as well). SIP phones can be connected directly so long as they have an IP address. These could be hardware devices or software devices such as the YateClient softphone. We’ll start with a free one today so you can begin making calls. You can find dozens of recommendations for hardware-based SIP phones both on Nerd Vittles and the PIAF Forum when you’re ready to get serious about VoIP.

We recommend YateClient which is free. Download it from here. Run YateClient once you’ve installed it and enter the credentials for the 701 extension on Incredible PBX. You’ll need the IP address of your server plus your extension 701 password. You can find them in /root/passwords.FAQ. Fill in the blanks using the IP address of your server, 701 for your account name, and whatever password is assigned to the extension. Here’s what your entries should look like. Click OK to save your entries.

Once you are registered to extension 701, close the Account window. Then click on YATE’s Telephony Tab and place some test calls to the numerous apps that are preconfigured on Incredible PBX. Here are a few numbers to get you started:


123 - Reminders
947 - Weather by ZIP Code
951 - Yahoo News
222 - ODBC Lookup (try: 12345)
DEMO - Allison's IVR Demo
TODAY - Today in History

6. Configuring SMTP Mail with Incredible PBX for Elastix 2.5

Outbound email support using Postfix is preconfigured with Elastix 2.5. You can test whether it’s actually working by issuing the following command using your destination email address after logging in as root:

echo "test" | mail -s testmessage yourname@gmail.com

If you don’t receive the email message within a minute or two and you’ve checked your spam folder, chances are your ISP is blocking downstream SMTP servers in an effort to combat spam. Comcast is one of the usual suspects. To enable outbound email service for delivery of voicemail and other email messages with a provider blocking downstream SMTP servers, you first need to obtain the SMTP domain of your ISP, e.g. smtp.comcrap.net. Next, edit /etc/postfix/main.cf and add your SmartHost entry [in brackets] to the line that begins like this: relayhost =. The line should look like this: relayhost = [smtp.comcrap.net]. Save your addition and restart Postfix: service postfix restart. Be sure to try another email test message after completing the SmartHost update. To use Gmail as your mail relay, see this tutorial.

Configuring Google Voice

We have included the Python implementation of gvoice in /root for those that want to experiment by making calls and sending SMS blasts the "old-fashioned" way. While Elastix does not directly support native Asterisk 11 Google Voice functionality, you now can use a SIP gateway to access Google Voice and make free calls in the U.S. and Canada.

If you have difficulty finding the Google Chat option after setting up a new Google Voice account, follow this tutorial.

Homework Assignment: Mastering Incredible PBX for Elastix 2.5

We’ve put together a complete tutorial for the applications included in Incredible PBX for Asterisk-GUI. Most of it is fully applicable to Elastix 2.5 as well. That should be your next stop. Then you’ll be ready to tackle Elastix 2.5. Google is your friend. Do some exploring, and we’ll post links to great articles on this terrific platform as we discover them. Your suggestions are also welcomed!

In the meantime, if you have questions, join the PBX in a Flash Forums and take advantage of our awesome collection of gurus. There’s an expert available on virtually any topic, and the price is right. As with Incredible PBX, it’s absolutely free. The same applies to the Elastix forum.

And if all of that wasn’t enough, feast your eyes on the Elastix Add-Ons that are only a button click away:

[gview file="http://nerdvittles.com/wp-content/ElastixAddOns.pdf"]

Originally published: Tuesday, March 10, 2015


Support Issues. With any application as sophisticated as this one, you’re bound to have questions. Blog comments are a terrible place to handle support issues although we welcome general comments about our articles and software. If you have particular support issues, we encourage you to get actively involved in the PBX in a Flash Forums. It’s the best Asterisk tech support site in the business, and it’s all free! Please have a look and post your support questions there. Unlike some forums, ours is extremely friendly and is supported by literally hundreds of Asterisk gurus and thousands of users just like you. You won’t have to wait long for an answer to your question.



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…