ASTPP VoIP Billing v3.6 Debian v8 Freeswitch v1.6 Apache Install Guide

ASTPP

 

This guide covers the installation of the ASTPP VoIP billing and Freeswitch applications.  ASTPP is installed manually from source.  Freeswitch is installed from deb packages.

Tested using the following software:

  • Debian v8 (Jessie) x64 minimal install
  • ASTPP v3.6
  • Freeswitch v1.6
  • Apache v2.4
  • PHP v7.1
  • MariaDB v10

Prerequisites

apt update && apt upgrade -y && apt install
apt -y install git nano dbus sudo apache2 curl sqlite3 haveged lsb-release ghostscript libtiff5-dev libtiff-tools at dirmngr postfix gawk dnsutils openssl ntp libmyodbc unixodbc unixodbc-bin gettext

PHP

# install this section one line at a time.

apt -y install apt-transport-https ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
apt update && apt -y install php7.1 php7.1-gd php7.1-opcache php7.1-cli php7.1-common php7.1-curl php7.1-sqlite3 php7.1-odbc php7.1-mysql php7.1-xml php7.1-mcrypt php7.1-json php7.1-pdo php-pear

ODBC

cd /usr/src
wget https://downloads.mariadb.com/Connectors/odbc/connector-odbc-3.0.3/\
mariadb-connector-odbc-3.0.3-ga-debian-x86_64.tar.gz
tar -zxvf mariadb-connector-odbc-3.0.3*.tar.gz
cp mariadb-connector-odbc-3.0.3*/lib/libmaodbc.so /usr/lib/x86_64-linux-gnu/odbc/

Create /etc/odbcinst.ini

cat >> /etc/odbcinst.ini << EOF
[MySQL]
Description = ODBC for MariaDB
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1
  
EOF

MariaDB

# After install set root password when asked. Otherwise it will keep nagging.

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash
apt update && apt -y install mariadb-server

Add the following line under [mysqld] in /etc/mysql.my.cnf to disable strict mode.

sql_mode=''
systemctl restart mariadb

Disable Selinux

Check status

sestatus

If the command is found and is not disabled, set SELINUX=disabled in /etc/selinux/config.  Requires reboot for changes to take effect.

sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/selinux/config

Disable Firewall

It is sometimes helpful to disable the firewall during installation.

systemctl disable firewalld
systemctl disable iptables
systemctl stop firewalld
systemctl stop iptables

Timezone

## FIND YOUR TIMEZONE
tzselect

## SET TIMEZONE EXAMPLE
timedatectl set-timezone America/Vancouver

## CHECK TIMEZONE
​timedatectl status

Install

Freeswitch

curl https://files.freeswitch.org/repo/deb/debian/freeswitch_archive_g0.pub | apt-key add -

echo "deb http://files.freeswitch.org/repo/deb/freeswitch-1.6/ $(lsb_release -sc) main" > \
/etc/apt/sources.list.d/freeswitch.list

apt update && apt -y install freeswitch-all freeswitch-all-dbg freeswitch-sounds* freeswitch-music* gdb

ASTPP

# Set ${password} variable.  This is used muliple times in this section.
password=somepassword
cd /usr/src
git clone -b v3.6 https://github.com/iNextrix/ASTPP.git
mysql -p -e "CREATE DATABASE astpp CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql -p -e "CREATE USER 'astppuser'@'localhost' IDENTIFIED BY '${password}';"
mysql -p -e "GRANT ALL PRIVILEGES ON astpp.* TO 'astppuser'@'localhost' WITH GRANT OPTION;"
mysql -p -e "FLUSH PRIVILEGES;"
mysql -p astpp < ASTPP/database/astpp-3.0.sql
mysql -p astpp < ASTPP/database/astpp-upgrade-3.5.sql
mysql -p astpp < ASTPP/database/astpp-upgrade-3.6.sql

ODBC

cat >> /etc/odbc.ini << EOF
[ASTPP]
Driver = MySQL
SERVER = 127.0.0.1
DATABASE = astpp
USERNAME = astppuser
PASSWORD = ${password}
PORT = 3306
OPTION = 67108864
Socket = /run/mysqld/mysqld.sock
threading = 0
charset = utf8
EOF

Test odbc driver

odbcinst -s -q

Test odbc connection

isql -v astpp astppuser ${password} 
quit

Copy and configure Freeswitch files

cd /usr/src
cp -R ASTPP/freeswitch/fs /var/www/html/
cp -R ASTPP/freeswitch/scripts/* /usr/share/freeswitch/scripts/
cp -R ASTPP/freeswitch/sounds/*.wav /usr/share/freeswitch/sounds/en/us/callie/

rm -Rf /etc/freeswitch/dialplan/*
touch /etc/freeswitch/dialplan/astpp.xml
rm -Rf /etc/freeswitch/directory/*
touch /etc/freeswitch/directory/astpp.xml
rm -Rf /etc/freeswitch/sip_profiles/*
touch /etc/freeswitch/sip_profiles/astpp.xml

Copy and configure ASTPP files

cd /usr/src
mkdir -p /var/lib/astpp
cp ASTPP/config/astpp-config.conf /var/lib/astpp/astpp-config.conf
cp ASTPP/config/astpp.lua /var/lib/astpp/astpp.lua

# Copy/config web GUI files
cp -R ASTPP/web_interface/astpp /var/www/html/
cp ASTPP/web_interface/apache/astpp.conf /etc/apache2/conf-available/astpp.conf
cp ASTPP/web_interface/apache/astpp.conf /etc/apache2/conf-available/fs.conf

sed -i "s#log/httpd#log/apache2#g" /etc/apache2/conf-available/astpp.conf
sed -i "s#log/httpd#log/apache2#g" /etc/apache2/conf-available/fs.conf
sed -i "s#8081#8735#g" /etc/apache2/conf-available/fs.conf
sed -i "s#astpp#fs#g" /etc/apache2/conf-available/fs.conf

mv /var/www/html/astpp/htaccess /var/www/html/astpp/.htaccess
a2enconf astpp
a2enconf fs
systemctl reload apache2

# Copy ASTPP specific freeswitch config files
/bin/cp -R ASTPP/freeswitch/conf/autoload_configs/* /etc/freeswitch/autoload_configs/

# ASTPP links to Freeswitch use /usr/local by default.  Freeswitch binary packages use /usr/share.
sed -i "s#/usr/local/freeswitch/#/usr/share/freeswitch/#g" /etc/freeswitch/autoload_configs/lua.conf.xml
sed -i "s#/usr/local/freeswitch/#/usr/share/freeswitch/#g" /etc/freeswitch/autoload_configs/json_cdr.conf.xml
sed -i "s#/usr/local/freeswitch/#/usr/share/freeswitch/#g" /usr/share/freeswitch/scripts/astpp-callingcards.lua
sed -i "s#/usr/local/freeswitch/#/usr/share/freeswitch/#g" /usr/share/freeswitch/scripts/astpp/astpp.lua
sed -i "s#/usr/local/freeswitch/#/usr/share/freeswitch/#g" /usr/share/freeswitch/scripts/astpp/scripts/astpp.xml.lua

# Configure ASTPP config files in /var/lib/astpp.
serverIP=$(ifconfig | sed -En 's/127.0.0.*//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p')
sed -i "s#\(^dbname\).*#dbname = astpp#" /var/lib/astpp/astpp-config.conf
sed -i "s#\(^dbuser\).*#dbuser = astppuser#" /var/lib/astpp/astpp-config.conf
sed -i "s#\(^dbpass\).*#dbpass = ${password}#" /var/lib/astpp/astpp-config.conf
sed -i "s#\(^base_url\).*#base_url = http://${serverIP}:8081/#" /var/lib/astpp/astpp-config.conf
sed -i "s#\(^DB_USERNAME\).*#DB_USERNAME = \"astppuser\"#" /var/lib/astpp/astpp.lua
sed -i "s#\(^DB_PASSWD\).*#DB_PASSWD = \"${password}\"#" /var/lib/astpp/astpp.lua

CRON

crontab -e
# I
# Generate Invoice   
0 1 * * * cd /var/www/html/astpp/cron/ && php cron.php GenerateInvoice
# Low balance notification
0 1 * * * cd /var/www/html/astpp/cron/ && php cron.php UpdateBalance
# Low balance notification
0 0 * * * cd /var/www/html/astpp/cron/ && php cron.php LowBalance        
# Update currency rate
0 0 * * * cd /var/www/html/astpp/cron/ && php cron.php CurrencyUpdate
# Email Broadcasting
* * * * * cd /var/www/html/astpp/cron/ && php cron.php BroadcastEmail

Apache

Configure Apache

Add AllowOverride All to web directory so that .htaccess is active.

cat >> /etc/apache2/conf-available/allowoverride.conf << EOF 
<Directory /var/www/html>
    AllowOverride All
    </Directory>
EOF
a2enconf allowoverride

Change default apache user/group, disable index.html, enable rewrite module

sed -i 's/\(APACHE_RUN_USER=\)\(.*\)/\1freeswitch/g' /etc/apache2/envvars
sed -i 's/\(APACHE_RUN_GROUP=\)\(.*\)/\1freeswitch/g' /etc/apache2/envvars
chown freeswitch. /run/lock/apache2
mv /var/www/html/index.html /var/www/html/index.html.disable
a2enmod rewrite
systemctl restart apache2

Set ownership and permissions

It is a good idea to run this anytime there are any changes/moves/adds/upgrades.

# Ownership
chown -R freeswitch. /etc/freeswitch /var/lib/freeswitch \
/var/log/freeswitch /usr/share/freeswitch /var/www/html

# Directory permissions to 770 (u=rwx,g=rwx,o='')
find /etc/freeswitch -type d -exec chmod 770 {} \;
find /var/lib/freeswitch -type d -exec chmod 770 {} \;
find /var/log/freeswitch -type d -exec chmod 770 {} \;
find /usr/share/freeswitch -type d -exec chmod 770 {} \;
find /var/www/html -type d -exec chmod 770 {} \;

# File permissions to 664 (u=rw,g=rw,o=r)
find /etc/freeswitch -type f -exec chmod 664 {} \;
find /var/lib/freeswitch -type f -exec chmod 664 {} \;
find /var/log/freeswitch -type f -exec chmod 664 {} \;
find /usr/share/freeswitch -type f -exec chmod 664 {} \;
find /var/www/html -type f -exec chmod 664 {} \;

Systemd config

nano /etc/systemd/system/freeswitch.service
[Unit]
Description=FreeSWITCH
Wants=network-online.target
After=syslog.target network.target network-online.target
After=mariadb.service apache2.service

[Service]
Type=forking
User=freeswitch
WorkingDirectory=/run/freeswitch
PIDFile=/run/freeswitch/freeswitch.pid
EnvironmentFile=-/etc/default/freeswitch
ExecStart=/usr/bin/freeswitch -ncwait -nonat $FREESWITCH_PARAMS
ExecReload=/usr/bin/kill -HUP $MAINPID

[Install]
WantedBy=multi-user.target

Create the file for adding extra parameters.

cat >> /etc/default/freeswitch << EOF
## Type:                string
## Default:             ""
## Config:              ""
## ServiceRestart:      freeswitch
#
# if not empty: parameters for freeswitch
#
FREESWITCH_PARAMS=""
EOF

Configure php.ini

sed -i "s#short_open_tag = Off#short_open_tag = On#g" /etc/php/7.1/apache2/php.ini
sed -i "s#;cgi.fix_pathinfo=1#cgi.fix_pathinfo=1#g" /etc/php/7.1/apache2/php.ini
sed -i "s/max_execution_time = 30/max_execution_time = 3000/" /etc/php/7.1/apache2/php.ini
sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 20M/" /etc/php/7.1/apache2/php.ini
sed -i "s/post_max_size = 8M/post_max_size = 20M/" /etc/php/7.1/apache2/php.ini
sed -i "s/memory_limit = 128M/memory_limit = 512M/" /etc/php/7.1/apache2/php.ini

Configure firewall

apt -y install firewalld
systemctl enable firewalld
systemctl start firewalld
firewall-cmd --permanent --zone=public --add-service={http,https}
firewall-cmd --permanent --zone=public --add-port={5060,5061,8081}/tcp
firewall-cmd --permanent --zone=public --add-port={5060,5061}/udp
firewall-cmd --permanent --zone=public --add-port=16384-32768/udp
firewall-cmd --reload
firewall-cmd --list-all

Enable services

systemctl daemon-reload
systemctl enable freeswitch
systemctl restart freeswitch

Test Freeswitch console

If fs_cli command is not working change the following line.

nano +4 /etc/freeswitch/autoload_configs/event_socket.conf.xml
<param name="listen-ip" value="127.0.0.1"/>
systemctl restart freeswitch

Browse to control panel

http://x.x.x.x:8081

username: admin
password: admin

The 8081 port can be changed at /var/lib/astpp/astpp-config.conf and  /etc/httpd/conf.d/astpp.conf. Remember to change the port on the firewall as well.

User documentation is located at the following link
http://astpp.readthedocs.io/en/v3.6/Modules/modules.html

 

Sections: