apt-get upgrade
apt-get update
apt-get update
Configure your timezone:
dpkg-reconfigure tzdata
Install some pre-requisites:
apt-get install libapache2-mod-php5 php5 php5-common
apt-get install php5-cli php5-mysql mysql-server apache2 php5-gd
apt-get install php5-mcrypt
Add repos and install Asterisk 1.8
apt-get install python-software-properties -y
apt-key adv --keyserver pgp.mit.edu --recv-keys 175E41DF
add-apt-repository "deb http://packages.asterisk.org/deb `lsb_release -cs` main"
sudo add-apt-repository "deb-src http://packages.asterisk.org/deb `lsb_release -cs` main"
apt-get update
apt-get upgrade
apt-get install asterisk
Download and install A2billing:
cd /usr/local/src
wget https://github.com/Star2Billing/a2billing/tarball/v1-current
tar -zxvf v1-current
rm v1-current
mv Star2Billing-a2billing-* a2billing
Prep the database:
cd a2billing/DataBase/mysql-5.x
mysql -uroot -p < a2billing-createdb-user.sql
./install-db.sh
Copy and edit a2billing.conf:
cp /usr/local/src/a2billing/a2billing.conf /etc/
nano -w /etc/a2billing.conf
Make sure the first stanza looks like the following:
[database]
hostname = localhost
port = 3306
user = a2billinguser
password = a2billing
dbname = mya2billing
dbtype = mysql
Additional files for A2billing:
chmod 777 /etc/asterisk -R
touch /etc/asterisk/additional_a2billing_iax.conf
touch /etc/asterisk/additional_a2billing_sip.conf
echo \#include additional_a2billing_sip.conf >> /etc/asterisk/sip.conf
echo \#include additional_a2billing_iax.conf >> /etc/asterisk/iax.conf
chown -Rf www-data /etc/asterisk/additional_a2billing_iax.conf
chown -Rf www-data /etc/asterisk/additional_a2billing_sip.conf
Install the A2billing sounds:
cd /usr/local/src/a2billing/addons/sounds
./install_a2b_sounds_deb.sh
chown -R asterisk:asterisk /usr/share/asterisk/sounds/
Edit manager.conf:
nano -w /etc/asterisk/manager.conf
[myasterisk]
secret=mycode
read=system,call,log,verbose,command,agent,user
write=system,call,log,verbose,command,agent,user
Install the AGI etc:
mkdir /usr/share/asterisk/agi-bin
cd /usr/src/a2billing/AGI
cp a2billing.php /usr/share/asterisk/agi-bin/
chown -R asterisk:asterisk /usr/share/asterisk/agi-bin
chmod 755 /usr/share/asterisk/agi-bin/a2billing.php
cp /var/www/a2billing/common/lib /usr/share/asterisk/agi-bin/lib -R
Install the webui:
mkdir /var/www/a2billing
chown www-data:www-data /var/www/a2billing
cp -rf /usr/local/src/a2billing/admin /var/www/a2billing
cp -rf /usr/local/src/a2billing/agent /var/www/a2billing
cp -rf /usr/local/src/a2billing/customer /var/www/a2billing
cp -rf /usr/local/src/a2billing/common /var/www/a2billing
chmod 755 /var/www/a2billing/admin/templates_c
chmod 755 /var/www/a2billing/customer/templates_c
chmod 755 /var/www/a2billing/agent/templates_c
chown -R www-data:www-data /var/www
Add contexts to extensions.conf: (Mine is edited for wholesale)
nano -w /etc/asterisk/extensions.conf
[a2billing]
; CallingCard application
;exten => _X.,1,Answer
;exten => _X.,2,Wait(2)
;exten => _X.,3,deadAGI(a2billing.php)
;exten => _X.,4,Wait(2)
;exten => _X.,5,Hangup
exten => _X.,1,deadAGI(a2billing.php)
exten => _X.,n,Hangup
[did]
; CallingCard application
exten => _X.,1,deadAGI(a2billing.php|1|did)
Add some cron entries:
crontab -e
# update the currency table
0 6 * * * php /usr/local/src/a2billing/Cronjobs/currencies_update_yahoo.php
# manage the monthly services subscription
0 6 1 * * php /usr/local/src/a2billing/Cronjobs/a2billing_subscription_fee.php
# To check account of each Users and send an email if the balance is
less than the user have choice.
0 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_notify_account.php
# this script will browse all the DID that are reserve and check if
the customer need to pay for it
# bill them or warn them per email to know if they want to pay in
order to keep their DIDs
0 2 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_bill_diduse.php
# This script will take care of the recurring service.
0 12 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_process.php
# To generate invoices and for each user.
0 6 * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_billing.php
# to proceed the autodialer
*/5 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_batch_autodialer.php
# manage alarms
0 * * * * php /usr/local/src/a2billing/Cronjobs/a2billing_alarm.php
Make a logfile:
mkdir /var/log/a2billing
touch /var/log/a2billing/a2billing_agi.log
chown -R asterisk:asterisk /var/log/a2billing
Add some rotation:
cd /etc/logrotate.d
nano -w a2billing
/var/log/a2billing/*.log {
daily
missingok
rotate 4
sharedscripts
postrotate
endscript
}
Enable SSL using default certificate for admin:
ln -s /etc/apache2/sites-available/default-ssl /etc/apache2/sites-enabled/000-default-ssl
a2enmod rewrite
service apache2 restart
Todo: a2billing edits within a2billing
(Edited from this link: http://www.hostedvoipsolutions.co.uk/faqs-and-tutorials/a2billing-on-ubuntu-1004)