Introduction
Do It Yourself an IPPBX, an experiment with Asterisk 13 and FreePBX 13 on CentOS 6.
This article is divided into three parts:
- Part 1: Prepare The Server
- Part 2: Install Asterisk 13
- Part 3: Install FreePBX 13
The goal is to get the PC provides Private Branch eXchange services, a phone system, using Free and Open Source Software.
Part 1: Prepare The Server
Linux CentOS Minimal
Linux server installation:
- You may use VirtualBox or any other virtualization software, or a real server
- You need fast Internet connection, we will be downloading lots of stuffs
- Install CentOS 6.7 minimal version, get the minimal version of CentOS 6.7 installer ISO here
- Configure the network so that the server will have access to the Internet
- Access the server using SSH, work from outside
- You will need to login as root during installation
Please note that you can always use full version of CentOS, the same installation steps in this article will still work.
Suggestion on partition layout:
- 4GB for /
- 1GB for swap
- the rest of available space for /var
Update CentOS:
yum update
Install basic system config tools:
yum install system-config-firewall system-config-firewall-tui system-config-network system-config-network-tui
Continue with rebooting the server:
reboot
Please note that you must reboot the server to load the new updated kernel.
Development Packages
Install development packages:
yum install wget perl subversion gcc gcc-c++ make kernel-devel ncurses-devel newt-devel mysql-devel openssl-devel zlib-devel libxml2-devel curl-devel speex-devel unixODBC-devel libtool-ltdl-devel sqlite-devel libuuid-devel
Please note that you need to make sure that above packages are installed properly, you can do that by running the above command again.
Web and Database Server
Install Web and Database Server
Install Apache2 web server and MySQL database server:
yum install httpd mysql-server mysql php php-mbstring php-mysql php-gd php-cli php-pear php-posix php-xml
Start them now:
/etc/init.d/httpd start /etc/init.d/mysqld start
Set httpd and mysqld to run automatically on boot:
chkconfig httpd on chkconfig mysqld on
Configure Web Server
Add Linux user for Asterisk and web server followed by changing files ownership:
useradd asterisk chown asterisk.asterisk -R /var/www/html /var/lib/php
Please note that the Linux user
asterisk
will be running both Asterisk and web server daemons.
Edit /etc/httpd/conf/httpd.conf
and change these optios:
- User and Group setting, go to line 242-243 and change
User apache
toUser asterisk
andGroup apache
toGroup asterisk
- Allow access to
.htaccess
file, go to line 338 changeAllowOverride None
toAllowOverride All
vi /etc/httpd/conf/httpd.conf
Please note that line numbers above are accurate at the time this article is written and no modification had been done to
httpd.conf
previously.
Make sure the web server run as user asterisk
:
/etc/init.d/httpd restart ps aux | grep httpd
Configure Database Server
Set root
password for MySQL database server, in this example we will use simple password password
:
mysqladmin -uroot -p password 'password'
Please note that the initial password for MySQL server is empty, just press ENTER.
Server Init
Follow all instructions to initialize your server.
Disable Firewall
Disable firewall from system config tool:
system-config-firewall
Please note that you can enable the firewall again later after successful installation and several test calls.
Disable SELINUX
Edit /etc/sysconfig/selinux
and change SELINUX=enforcing
to SELINUX=disabled
:
vi /etc/sysconfig/selinux
Reboot the server to actually disable SELinux:
reboot
Once the server up and running again check whether the SELinux is disabled:
sestatus
Please note that the SELinux status must be disabled.
Part 2: Install Asterisk 13
Download Source Codes
Prepare sources directory in /root/src
, all required software source codes will be put in that directory:
mkdir -p /root/src cd ~/src
Get the latest Asterisk, current release is Asterisk 13.7.2:
wget -c http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13.7.2.tar.gz
Please note that the above
wget
command and allwget
commands below are single line only. You must make sure that the correct package will be downloaded to/root/src
.
Get the latest PRI library, current release is libpri 1.4.15:
wget -c http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.15.tar.gz
Get the latest Asterisk hardware drivers, current release is dahdi 2.11.0:
wget -c http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-2.11.0+2.11.0.tar.gz
Get Secure RTP library, we will be using SRTP 1.4.2:
wget -c http://srtp.sourceforge.net/srtp-1.4.2.tgz
Get JSON library for C:
wget -c http://www.digip.org/jansson/releases/jansson-2.7.tar.gz
Get PJSIP:
wget -c http://www.pjsip.org/release/2.4.5/pjproject-2.4.5.tar.bz2
Compile and Install PJSIP
Install PJSIP:
cd ~/src tar -jxf pjproject-2.4.5.tar.bz2 cd pjproject-2.4.5
On CentOS x86_64 version you must add --libdir=/usr/lib64
but on CentOS i386 (32 bit) version you must remove it.
Below command is to compile and install PJSIP on CentOS x86_64 version:
./configure CFLAGS='-O2 -DNDEBUG -DPJ_HAS_IPV6=1' --prefix=/usr --libdir=/usr/lib64 --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr
If you are using CentOS i386 version then use this instead:
./configure CFLAGS='-O2 -DNDEBUG -DPJ_HAS_IPV6=1' --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr
Continue to compile and install PJSIP:
make dep make make install ldconfig cd ../
Compile and Install JSON Library
Jansson is a C library for encoding, decoding and manipulating JSON data. Install this library:
cd ~/src tar -zxf jansson-2.7.tar.gz cd jansson-2.7 ./configure --prefix=/usr make clean make make install ldconfig cd ../
Compile and Install SRTP
Install Secure RTP library:
cd ~/src tar -zxf srtp-1.4.2.tgz cd srtp ./configure CFLAGS=-fPIC make make runtest make install ldconfig cd ../
Compile and Install DAHDI
Install Asterisk hardware drivers DAHDI:
cd ~/src tar -zxf dahdi-linux-complete-2.11.0+2.11.0.tar.gz cd dahdi-linux-complete-2.11.0+2.11.0 make all make install make config cd ../
Please note that DAHDI must be installed before libpri and Asterisk.
Compile and Install libpri
Install PRI library:
cd ~/src tar -zxf libpri-1.4.15.tar.gz cd libpri-1.4.15 make make install ldconfig cd ../
Compile and Install Asterisk
Start to install Asterisk 13:
cd ~/src tar -zxf asterisk-13.7.2.tar.gz cd asterisk-13.7.2
Get mp3 source library, Asterisk package does not provide it:
./contrib/scripts/get_mp3_source.sh
Continue to select Asterisk modules:
./configure make menuselect
Inside make menuselect
you may choose which packages you want to install or remove.
Here is the recommended options:
- Add-ons tab select chan_ooh323, format_mp3 and cdr_mysql
- Applications tab select app_meetme
- Channel Drivers tab make sure to select chan_pjsip
- Core Sound Packages tab select EN WAV, ULAW, GSM, G729
- Music On Hold File Packages tab select EN WAV, ULAW, GSM, G729
- Extras Sound Packages tab select EN WAV, ULAW, GSM, G729
Please note that sound files and music on hold files are essential, but the selection type can be minimized into just EN WAV, GSM and G729.
Continue to compile and install Asterisk:
make make install
This is important, run ldconfig
after make install
:
ldconfig
Continue to install sample configuration:
make samples cd ../
Test the installed Asterisk by running it and then hit Ctrl+C to stop it once the label Asterisk Ready at the end of the command is shown:
asterisk -v
Please note that we don’t need to install Asterisk init script as we will use the FreePBX start and stop init script later.
Part 3: Install FreePBX 13
Download Source
Get FreePBX 13:
wget -c http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
Preparation
Install sox for audio transcoding that will be used by FreePBX 13:
yum install sox
Start to install FreePBX 13:
cd ~/src tar -zxf freepbx-13.0-latest.tgz cd freepbx
Asterisk must be running during FreePBX 13 installation and an adjustment need to be done on Asterisk config file asterisk.conf
. Apparently the mark (!)
on the end of the first line of /etc/asterisk/asterisk.conf
will fail the FreePBX 13 installer script, therefore it must be removed.
Edit /etc/asterisk/asterisk.conf
, change [directories](!)
to just [directories]
and then save the file:
vi /etc/asterisk/asterisk.conf
Prepare to restart Asterisk and set Asterisk file permission:
mkdir -p /var/run/asterisk /etc/dahdi touch /etc/modprobe.d/dahdi.conf chown asterisk.asterisk -R /usr/lib/asterisk /etc/asterisk /var/lib/asterisk /var/log/asterisk /var/spool/asterisk /var/run/asterisk /etc/dahdi /etc/modprobe.d/dahdi.conf
Continue to run Asterisk, FreePBX provides a script to run the Asterisk:
./start_asterisk restart
Test if the Asterisk is running:
ps aux | grep asterisk asterisk -rx "core show uptime"
FreePBX Installation
Please pay attention to details, you will be asked several important questions and you must answer them correctly. Most importantly the Database username and Database password questions must be answered correctly, other questions you may left them as default.
The database username is root and the database password is password.
Continue to install FreePBX:
./install
Try to restart FreePBX, including the Asterisk, using fwconsole
:
fwconsole restart
After installation process the server must be configured to run fwconsole start
on boot. Insert /usr/sbin/fwconsole start
at the bottom of /etc/rc.local
, insert once:
echo "/usr/sbin/fwconsole start" >> /etc/rc.local
Reboot the server:
reboot
Please note that the server reboot is required before accessing FreePBX from browser.
FreePBX Setup
Follow below steps to initialize FreePBX for the first time:
- Open browser and browse the server’s IP address to login to FreePBX
- Create the admin username and password for FreePBX
- Login as admin user on FreePBX Administration
- Hit the red Apply Config button on top.
At this point the IPPBX is ready, but before proceeding with other configuration you should consider to update the FreePBX.
Follow below steps to update FreePBX for the first time:
- Visit Module Admin menu from the Admin tab
- Hit the Check Online button
- Click the Upgrade all button followed by Process button
- Click Confirm button to continue
- Hit Apply Config to implement changes
IPPBX installation finished.
Author
This howto is written by Anton Raharja.