Asterisk Freepbx on Ubuntu (Ubuntu v14, Asterisk v13, Freepbx v12)
This guide covers the installation of Asterisk®from source on Ubuntu. Changes in this guide compared to previous guides include the use of Ubuntu v14, Asterisk v12 & v13, Freepbx v12, and the addition of the pjsip library.
Tested on:
Ubuntu Server v14.04 LTS 32bit & 64bit
Asterisk v12 & v13
FreePBX v12
Assumptions:
Console text mode (init 3)
Installation done as root user (#)
Install Prerequisites
Ensure all required packages are installed.
apt-get update && apt-get install whiptail -y && apt-get upgrade -y && apt-get dist-upgrade -y && reboot
apt-get install -y build-essential autoconf automake curl lua5.1 linux-headers-generic libncurses-dev zlib1g-dev libssl-dev libxml2-dev libsqlite3-dev uuid-dev libspeex-dev libspeexdsp-dev libogg-dev libvorbis-dev libasound2-dev portaudio19-dev libcurl4-gnutls-dev libpq-dev unixodbc-dev libsqlite3-dev libmysqlclient-dev libneon27-dev libgmime-2.6-dev libusb-dev liblua5.1-0-dev libgtk2.0-dev libmysqlclient-dev libbluetooth-dev libradiusclient-ng-dev freetds-dev libsnmp-dev libiksemel-dev libcorosync-dev libnewt-dev libpopt-dev libical-dev libspandsp-dev libjack-dev libresample-dev libc-client-dev binutils-dev libsrtp-dev libgsm1-dev libedit-dev libjansson-dev libldap-dev libxslt1-dev libmyodbc doxygen subversion git mpg123 e2fsprogs php5 php5-curl sqlite3 uuid php5-cli php5-mysql php5-gd php-pear sox bison flex tftpd mailutils nano ntp apache2 mysql-client mysql-server postfix sudo xmlstarlet
Set mysql root password when asked to prevent it from repeatedly asking. Use internet site
for postfix mail configuration.
Set timezone
dpkg-reconfigure tzdata
Download and install source files
DAHDI
Only required if using a physical server and installing telecom hardware.
cd /usr/src wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz tar zxvf dahdi-linux-complete* cd /usr/src/dahdi-linux-complete*/ make && make install && make config service dahdi start
PJSIP
cd /usr/src wget http://www.pjsip.org/release/2.5.5/pjproject-2.5.5.tar.bz2 tar -xjvf pjproject* cd /usr/src/pjproject*/ #If this is a new source install the following command won't do anything make distclean
./configure --prefix=/usr --enable-shared --disable-sound --disable-resample \ --disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG'
make uninstall && make dep && make && make install && ldconfig
To verify type ldconfig -p | grep pj
which should show several linked *.so files in /usr/lib.
Asterisk
cd /usr/src wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz tar zxvf asterisk-13-current.tar.gz cd /usr/src/asterisk-13*/ make distclean ./configure
If ./configure
fails with cannot find ptlib-config
then use./configure --without-pwlib
which is only required if you need to support H.323.
cd /usr/src/asterisk-13*/ make menuselect.makeopts #To select compile options manually run make menuselect instead of the following command #To list command line options run menuselect/menuselect --list-options #If Asterisk fails to run on a virtual machine try add "--disable BUILD_NATIVE" #To add asterisk realtime for applications such as A2billing add "--enable res_config_mysql" menuselect/menuselect --enable cdr_mysql --enable EXTRA-SOUNDS-EN-GSM menuselect.makeopts
Create Asterisk user, compile, install, and set ownership.
adduser asterisk --disabled-password --no-create-home --home /var/lib/asterisk --shell \ /sbin/nologin --gecos "Asterisk User"
make && make install && chown -R asterisk. /var/lib/asterisk
Freepbx GUI
pear install db-1.7.14
If the DB fails to install try gunzip /build/buildd/php5-5.5.9+dfsg/pear-build-download/*.tgz
followed by pear upgrade /build/buildd/php5-5.5.9+dfsg/pear-build-download/*.tar
VERSION=12.0 USERNAME=asteriskuser PASSWORD=amp109 #The following commands must be entered one at a time in order to enter the mysql root password mysqladmin -p create asterisk mysqladmin -p create asteriskcdrdb mysql -p -e "GRANT ALL PRIVILEGES ON asterisk.* TO $USERNAME@localhost IDENTIFIED BY '$PASSWORD';" mysql -p -e "GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO $USERNAME@localhost IDENTIFIED BY '$PASSWORD';" mysql -p -e "flush privileges;" cd /usr/src git clone -b release/$VERSION https://github.com/FreePBX/framework.git freepbx cd /usr/src/freepbx ./start_asterisk start mv /var/www/html /var/www/html_orig ./install_amp --installdb --skip-module-install --username $USERNAME --password $PASSWORD #Press ENTER for all the questions including the incorrect IP address.
Do not be concerned by the warning messages.
# Minimal module install amportal a ma upgrade framework amportal a ma upgrade core amportal a ma upgrade voicemail amportal a ma upgrade sipsettings amportal a ma upgrade infoservices amportal a ma upgrade featurecodeadmin amportal a ma upgrade logfiles amportal a ma upgrade callrecording amportal a ma upgrade cdr amportal a ma upgrade dashboard # Alternatively, install all standard modules amportal a ma upgrade manager amportal a ma installall
touch /etc/asterisk/manager_additional.conf touch /etc/asterisk/manager_custom.conf amportal restart amportal a reload amportal chown
If the GUI complains about the framework module or a missing /usr/sbin/amportal file try amportal a ma delete framework
followed by amportal a ma upgrade framework
.
Post install tasks are mandatory.
Post-install tasks
Change the webserver run user and group name to asterisk
.
sed -i 's/\(APACHE_RUN_USER=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars sed -i 's/\(APACHE_RUN_GROUP=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars chown asterisk. /var/lock/apache2 service apache2 restart
Enable .htaccess files to protect sensitive webserver directories.
nano +13 /etc/apache2/sites-enabled/000-default.conf
# Add this underneath the DocumentRoot /var/www/html line <Directory "/var/www/html"> AllowOverride All </Directory>
Change default “upload_max_filesize” to 20M to allow larger music on hold files.
sed -i 's/upload_max_filesize = .*/upload_max_filesize = 20M/' /etc/php5/apache2/php.ini
Set Freepbx to start on boot.
nano /etc/rc.local
Add
/usr/local/sbin/amportal start
Before exit 0
reboot
Optional
Log File Rotation
If this is not done the log files will keep growing indefinitely.
nano /etc/logrotate.d/asterisk
/var/log/asterisk/queue_log /var/spool/mail/asterisk /var/log/asterisk/freepbx_debug.log /var/log/asterisk/messages /var/log/asterisk/event_log /var/log/asterisk/full /var/log/asterisk/dtmf /var/log/asterisk/fail2ban { weekly missingok rotate 5 #compress notifempty sharedscripts create 0640 asterisk asterisk postrotate /usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null || true endscript }
TFTP
If you plan to use hardware SIP phones you will probably want to enable the tftp server.
nano /etc/xinetd.d/tftp
service tftp { protocol = udp port = 69 socket_type = dgram wait = yes user = nobody server = /usr/sbin/in.tftpd server_args = /tftpboot disable = no }
Now make the directory and restart the daemon to start tftp.
mkdir /tftpboot chmod 777 /tftpboot service xinetd restart
Digum addons
This is used to register digium licenses.
cd /usr/src wget http://downloads.digium.com/pub/register/linux/register chmod +x register ./register
To install the individual addons refer to the README files and ignore the register instructions.
http://downloads.digium.com/pub/telephony/codec_g729/README
http://downloads.digium.com/pub/telephony/res_digium_phone/README
http://downloads.digium.com/pub/telephony/fax/README
http://downloads.digium.com/pub/telephony/hpec/README