Asterisk is an open source platform for building communication applications. It supports IP PBX systems, VoIP gateways, conference servers and other custom solutions. This is not an ordinary curiosity or a toy for computer enthusiasts. This system is used by small businesses, large companies, call centers, carriers and government agencies around the world. Most importantly, Asterisk is free and open source software.
Asterisk can become the basis of a complete VOiP telephony system in your company. It contains components that allow it to perform a wide range of functions.
- Hosted PBX
- IP PBX (Business Phone Systems)
- VoIP Gateway
- Voicemail server
- Conference Bridge
- Call center
- IVR server
What’s more, this free Internet telephony system can be installed on a free Linux distribution: CentOS Stream 8
Table of Contents
Since Centos 7/8 approaches it’s EOL, below you’ll find all necessary commands and files to install Asterisk 18 from source on Centos 8 Stream.
Instead of following all the instructions below, you can also use our installer file that installs Asterisk 18 from source.
First of all make sure that you run all command as root user. Just run
su command and enter root password.
It’s good to start with installing a simple text editor. Personally I use nano. If you want to adjust it to editing Asterisk check out this post.
Update the system and install required dependencies.
yum -y update yum-y install nano wget tar ncurses-devel
Before you start you should also disable SELinux (Security-Enhanced Linux – Linux kernel security module). Without doing so you’ll face issues later, eg. with recordings playback.
First let’s use
sestatus command. It will show you current SELinux status:
To disable SELinux edit file
/etc/selinux/config and change policy from enforcing to disabled.
Alternatively to editing
/etc/selinux/config you may just type in command:
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
Unfortunately reboot is the only way to permanently disable SELinux so let’s do just that.
If you do not want to restart the computer now, but want to go into ‘permissive’ mode, enter
setenforce 0. This will allow you to continue without having to restart.
sestatus should show it’s disabled.
4) Configuring dependencies
First download Asterisk sources.
/usr/src is a very convenient place to store all source files.
cd /usr/src wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz tar zxvf asterisk-18-current.tar.gz rm -rf asterisk-18-current.tar.gz cd asterisk-18*/
Now (compared to eg. Asterisk 11) you don’t have to name all required dependencies (eg. make gcc gcc-c++ lynx bison ncurses-devel). You do all that with pre-created script. To be able to download more resources (like opus codec or spandsp for faxing) add EPEL repository first.
yum -y install epel-release # optional contrib/scripts/install_prereq install
Since CentOS Stream 8 required 64bit system we can just add
Since chan_pjsip requires some additional libraries you may want to add
--with-jansson-bundled --with-pjproject-bundled to
* Beginning with Asterisk 15.0.0, it is enabled by default but can be disabled with the
--without-pjproject-bundled option to
After it finishes you’ll see “all-is-done” screen with Asterisk logo.
If you see “Please install the ‘libedit’ development package” error it means that you need to install libedit-devel package first. You may download it with PowerTools repo with command:
dnf --enablerepo=powertools install -y libedit-devel
But then you need to run
./configure once again.
5) make, make, make and … make
Then you could just
make and this would compile your software. But it’s better to be able to select some additional options, functions, applications, codecs, etc…..
To do that use
make menuselect option. It will show you a menu in which you may simply select what you need.
During the process you may check, switch, select and deselect all options eg. use ODBC instead FILE storage for Voicemail.
You’ll notice that you cannot select all modules. But it also shows which dependencies are required.
In this example if you download&install ikemel-devel rpm problem is solved. Of course you have to
./configure once again before menuselect.
Unfortunately there are so many modules it’s hard to explain all dependencies. For the sake of this tutorial we’ll stick to basic configuration. In upcoming posts we’ll be explaining addotional modules step-by-step.
If you want to deploy the same configuration in more server you may use one-line command
menuselect/menuselect --enable-category MENUSELECT_ADDONS --disable MODULENAME --enable MODULENAME menuselect.makeopts. To list all possible options use
# example with ODBC Voicemail and ALAW soundpack make menuselect.makeopts menuselect/menuselect --list-options menuselect/menuselect --enable-category MENUSELECT_ADDONS --disable FILE_STORAGE --enable ODBC_STORAGE --disable CORE-SOUNDS-EN-GSM --enable CORE-SOUNDS-EN-ALAW --disable MOH-OPSOUND-WAV --enable MOH-OPSOUND-ALAW --enable EXTRA-SOUNDS-EN-ALAW menuselect.makeopts
make everything and get ready to install. This and next process may take a few minutes.
The system tells you what to next. This will finally install Asterisk on your server.
If you selected format_mp3 just follow on-screen instructions.
Now you have a few options:
- do nothing
Yeap … it does completely nothing. You have to create all files from scratch.
Installs the sample configuration files (overwriting any existing config files).
Installs just program documentation usefulonly for developers (requires doxygen:
yum -y install doxygen)
make basic-pbx(only Asterisk 13+)
The best option but unavailable in our Asterisk version. Same as “make samples” but with only 14 necessary files instead of more than 100.
I encourage you to do both 2nd and 4th option. Let’s start with
make samples. This will create all files with nice documentation.
Then move them to new folder (eg.
/etc/asterisk/samples/) and create basic config with make
mkdir /etc/asterisk/samples mv /etc/asterisk/*.* /etc/asterisk/samples/ make basic-pbx
Although Asterisk is now ready (and surprisingly there is no informations about this on main screen) now you should do
make config to create startup files and to make it easier to use basic commands.
6) Starting Asterisk
Now can start your server and check it’s status.
systemctl start asterisk systemctl status asterisk
If you see
Started LSB: Asterisk PBX. You’ve just installed Asterisk!
You may also enter
/etc/asterisk directory and see all of the basic files and
cd /etc/asterisk ls
After that you may run
asterisk -r and that’s where fun begins!