Skip to main content

Setup Asterisk 13 with FreePBX 13 in CentOS 7


Launch CentOS 7 AWS Ec2 Instance

  1. Log in to your aws console
  2. Go to ec2 management page and click Launch Instance on Instance page
  3. In Choose AMI step, go to AWS MarketPlace tab and search CentOS 7 on search field. List of centos 7 ami's will be available.
  4. Select CentOS 7 (x86_64) ami which is free tier eligible.
  5. Select your instance type and click configure instance. Keep default values from Configure Instance to Add Tags steps
  6. In configure security group, create a security group which allow minimum ports open
    1. SSH : port 22
    2. HTTP : port 80
    3. Custom UDP Rule : 10000-20000 (if you are giving RTP ports 10000-20000)
    4. Custom UDP Rule : 5060 (ChanSIP port)
    5. Custom TCP Rule : 5060 (ChanSIP Port)
  7. Click Launch Instance. Select your key file and accept terms to launch instance.

Setup CentOS Server

  1. SSH into newly created CentOS server with username centos and your key file.
  2. Update all existing packages
    1. sudo yum update -y
  3. Now start http service(you can access your server via browser by going to your server ip address)
    1. sudo systemctl enable httpd.service
    2. sudo systemctl start httpd.service
  4. If you are using nano editor, please install it because its not inbuilt installed. If you use vi, skip this step
    1. yum install nano

Install Asterisk

Please execute below as root user.
  1. Please disable selinux to avoid strange behavior during installation
    1. Run ‘sestatus’ to check selinux state
      1. if enabled, please run below commands
        1. sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/sysconfig/selinux
        2. sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/selinux/config
        3. Reboot
      2. If disabled, run step 2
  2. Run below commands
    1. yum -y update
    2. yum -y groupinstall core base "Development Tools"
  3. Now install prerequisite packages
    1. yum -y install lynx mariadb-server mariadb php php-mysql php-mbstring tftp-server
    2. yum -y install httpd ncurses-devel sendmail sendmail-cf sox newt-devel libxml2-devel libtiff-devel
    3. yum -y install audiofile-devel gtk2-devel subversion kernel-devel git php-process crontabs cronie
    4. yum -y install cronie-anacron wget vim php-xml uuid-devel sqlite-devel net-tools gnutls-devel php-pear unixODBC mysql-connector-odbc
    5. yum -y install gcc gcc-c++ make openssl-devel libtermcap-devel perl curl curl-devel
    6. yum -y install libtool-ltdl libtool-ltdl-devel unixODBC-devel
    7. yum -y install bison doxygen mlocate tar nmap bzip2 mod_ssl php-mcrypt flex screen libxml2 libtiff gmime gmime-devel net-snmp-utils net-snmp-devel neon openssl gnutls-utils
    8. pear install Console_Getopt
  4. Check if firewall is running or not by executing systemctl status firewalld
    1. If you see this error ‘if it shows Unit Firewalld.service could not be found.’, install firewall by below commands
      1. yum install firewalld
      2. systemctl start firewalld (start firewall service)
    2. Open firewall port 80 and reload it
      1. firewall-cmd --zone=public --add-port=80/tcp --permanent
      2. firewall-cmd --reload
  5. Enable mariadb (freepbx use mariadb to log cdr reports)
    1. systemctl enable mariadb.service
    2. systemctl start mariadb
  6. Secure mysql installation by running mysql_secure_installation
    1. By default there won't be any password
    2. Don't set root password because freepbx will secure automatically
    3. Choose yes to remaining options. This will remove sample users and database, disable remote root logins and reload new rules so that mysql will take our changes immediately
  7. Reboot the server
  8. After rebooting, create a new user named asterisk
    1. adduser asterisk -M -c "Asterisk User"
  9. Execute below commands to install jansson
    1. cd /usr/src/
    2. git clone https://github.com/akheron/jansson.git
    3. cd /usr/src/jansson
    4. autoreconf -i
    5. ./configure
    6. make
    7. make install
  10. Now install pjproject by running below commands
    1. cd /usr/src
    2. wget http://www.pjsip.org/release/2.4/pjproject-2.4.tar.bz2
    3. tar -xjvf pjproject-2.4.tar.bz2
    4. rm -f pjproject-2.4.tar.bz2
    5. cd pjproject-2.4
    6. CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr --enable-shared --disable-sound --disable-resample --disable-video --disable-opencore-amr --libdir=/usr/lib64
    7. make dep
    8. make
    9. make install
  11. Now install asterisk
    1. cd /usr/src
    2. wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
    3. tar xvfz asterisk-13-current.tar.gz
    4. cd asterisk-13.*
    5. cd ./contrib/scripts
    6. ./install_prereq install
    7. ./install_prereq install-unpackaged
    8. cd /usr/src/asterisk-13.*
    9. ./configure --libdir=/usr/lib64
    10. ./configure --with-pjproject --with-ssl --with-srtp
    11. contrib/scripts/get_mp3_source.sh
    12. make menuselect
      1. Now a screen will appear to select packages to install. Along with selected packages, please select below packages
        1. format_mp3(from add-ons tab)
        2. res_config_mysql, app_mysql, cdr_mysql (from Add-ons tab)
        3. res_odbc, func_odbc
        4. chan_pjsip (from Channel Driver tab)
      2. Press F12 to save this menu
    13. make
    14. make install
    15. make config
    16. ldconfig
    17. Start asterisk by systemctl start asterisk
      1. To know asterisk status, run systemctl status asterisk
    18. chkconfig asterisk off
  12. Now change asterisk directories to asterisk user
    1. chown asterisk. /var/run/asterisk
    2. chown -R asterisk. /etc/asterisk
    3. chown -R asterisk. /var/{lib,log,spool}/asterisk
    4. chown -R asterisk. /usr/lib/asterisk OR chown -R asterisk. /usr/lib64/asterisk
    5. chown -R asterisk. /var/www/
  13. To install freepbx, need to change some values to php and httpd
    1. sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini
    2. sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
    3. sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf
  14. Now restart apache
    1. systemctl restart httpd.service
  15. Make asterisk database(if required)
    1. ASTERISK_DB_PW='pa2sw0rd'
    2. mysqladmin -u root create asterisk
    3. mysqladmin -u root create asteriskcdrdb
    4. mysql -u root -e "GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"
    5. mysql -u root -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY '${ASTERISK_DB_PW}';"
    6. mysql -u root -e "flush privileges;"
  16. Install freepbx
    1. cd /usr/src
    2. wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
    3. tar xfz freepbx-13.0-latest.tgz
    4. rm -f freepbx-13.0-latest.tgz
    5. cd /usr/src/freepbx
    6. ./start_asterisk start
    7. ./install -n
      1. If this fails, reboot server and re-execute step 16.5 to 16.7
  17. Now install freepbx necessary packages
    1. fwconsole chown
    2. fwconsole ma installall
    3. fwconsole ma upgradeall
    4. fwconsole ma refreshsignatures
    5. fwconsole reload
    6. fwconsole restart
  18. Update firewall rules
    1. firewall-cmd --zone=public --add-port=5060/tcp --permanent
    2. firewall-cmd --zone=public --add-port=5060/udp --permanent
    3. firewall-cmd --reload
  19. Make freepbx to run on server startup
    1. Create  a file freepbx.service in /etc/systemd/system and add below code to it and save
    2. [Unit]
      Description=FreePBX VoIP Server
      After=mariadb.service
      [Service]
      Type=oneshot
      RemainAfterExit=yes
      ExecStart=/usr/sbin/fwconsole start
      ExecStop=/usr/sbin/fwconsole stop
      [Install]
      WantedBy=multi-user.target
    3. systemctl enable freepbx.service
    4. systemctl status freepbx

Configuring FreePBX

  1. If your server external ip is 1.2.3.4, then go to http://1.2.3.4 in your browser. This will be your freepbx web panel
  2. On first time, you will be asked to set administrator username and password.
  3. On setting admin credentials, login to admin panel with your admin credentials

Comments

  1. This is very helpful for a newbie. I just bookmarked this post for future reference. Keep sharing this kind of post. Thanks for sharing. Good read. Thanks for the data. It helps us.

    Fully dedicated hosting

    ReplyDelete
  2. bigo live is great app. it helps users to relax, connect friends.
    Download and install the application here
    Windows Phones

    ReplyDelete




  3. Nice article.
    bigo live is great app. it helps users to relax, connect friends.
    Download and install the application here
    BIGO LIVE APK

    ReplyDelete
  4. Nice Article...NICE GAME Thanks for the sharing..

    Bigo live is a Wonderfull APK. it helps users to relax, connect friends.
    Download and install the application here

    Bigo Live Mac PC

    Wonderful Platform


    ReplyDelete
  5. Nice Blog Post.Thanks for sharing this post.
    Bigo Live is the most popular video broadcasting app on the mobile platform
    Download the application
    video chat
    live streaming
    bigo live live streaming
    Bigo Web
    bigo live stream
    bigo live online
    video streaming

    ReplyDelete
  6. Nice post Thanks for sharing!

    Playbox is one of the best apps which offers wonderful entertainment for your family.

    Playbox HD Download

    Playbox HD Download

    Playbox HD Download

    Playbox HD Download

    ReplyDelete
  7. Nice Article. Thank you for sharing the informative article with us. Click the below link to know more about
    PlayBox Online,

    PlayBox Online,

    PlayBox APP for Android,

    PlayBox APP for iOS,

    PlayBox Online,

    ReplyDelete
  8. Hey Nice Blog!!! Thank you for sharing information. Wonderful blog & good post.Its really helpful for me, waiting for a more new post. Keep Blogging!

    Are you a social media narcissist? And you would like to be the same person on social media as you are in real life? ‘Yes’ then install

    Click below link

    Bigo Live Connector
    50 Million Bigo Live connector
    Bigo Live PC connecto
    Bigo Live
    Live Stream

    ReplyDelete
  9. Thank you so much for the inclusion nice article and very informative.
    BIGO LIVE is a cross-platform application, which has the ability to work on all sort of modern platforms.Here you have much freedom to share anything as like as you share on your smartphone.
    Click Here:
    Bigo Live Connector
    Bigo Live Login
    bigo live pc connector
    BIGO LIVE PC Download
    Bigo Live Login
    Bigo live Android App
    bigo live for pc

    ReplyDelete
  10. Me2call4u is free Random Video chat, video call app is ideal for one-to-one conversations that you can meet and match fun and interesting single all over the world in seconds.

    ReplyDelete

Post a Comment

Popular posts from this blog

Implementing Client Side WebRTC using Sipml5 javascript

Step 1:

Download and require Sipml5 library function.

Step 2:

Initialize sipml5 Engine in your web page :

var readyCallback = function(e) {
// function called when sipml is successfully initialised.
createSipStack(); // calling this function to create sip stack(see below)
};

var errorCallback = function(e) {
// function called when error occured during sipml initialisation.
};

SIPml.init(readyCallback, errorCallback);

Step 3:

Create Sip Stack :-
Sip Stack is an object that must be created before making/receiving call and sms. Creating Sip stack is an asynchronous process, so you need to create an event listener function to get state change notification.

var sipStack;

function EventListener(e) {

/*
* e.type ;type of event listener
* e.session ; current event session
* e.getSipResponseCode() ; event response code
* e.description ; event description
*/

if(e.type == 'started'){
// successfully started the stack.
register();
} else if(e.type == 'i_new_call'){
// when new incoming call comes.
      …

Start an android activity from cordova plugin

We all need to start an android activity from a cordova plugin. Here is a small and complete code to start an activity from cordova plugin
1. Install plugman to create cordova plugin npm install -g plugman2. Create cordova plugin using plugman plugman create --name PluginName --plugin_id com.example.sample.plugin --plugin_version 0.0.1
N.B : plugin id never start with Uppercase Now PluginName directory will be created. Plugin structure will be
> PluginName/

> |- plugin.xml

> |- src/

> |- www/PluginName.js

3. Add android platform to plugin
plugman platform add --platform_name android
Now plugin structure will be

> PluginName/

> |- plugin.xml

> |- src/android/PluginName.java

> |- www/PluginName.js

4. Now create a java file named NewActivity.java in src/android diretory
This activity will be shown using our plugin. Write sample activity in NewActivity.java
package com.example.sample.plugin; import android.app.Activity; import android.os.Bundle;…