How To guide for installing ViciDial on a NEW SERVER
- ViciDial SVN Trunk 2.9 with Asterisk On CentOS 6.5



VICIDIAL is an enterprise class, open source, call center suite in use by many large call centers around the world.

Asterisk is software that turns an ordinary computer into a voice communications server.

Together, you have a full featured predictive dialer. It can also function as an ACD for inbound calls, or closer calls coming from VICIDIAL outbound fronters. It is capable of inbound, outbound, and blended call handling. VICIDIAL even allows you to have agents logged in from remote locations.


Preliminary Notes

In this guide I will be installing this on a newly installed & updated CentOS 6 64-bit dedicated server that I am leasing from a data center. It has no control panel (cPanel, Plesk, ISPconfig, etc..) because a control panel is not needed. You should be comfortable using the putty command line terminal software and knowledgeable in server administration.

This guide also applies to CentOS 6 32-bit. (There were a couple minor modifications needed that I pointed out in that part of the guide)

This guide will not explain how to configure or use vicidial. For that, I recommend purchasing the Agent and Managers Manual from This is required reading. There is also a free version of the Agent and Manager's Manual available for download that will help. You may also use the forums to ask specific questions.

This tutorial is a derivative of the original scratch install instructions found in the astguiclient source package. It has been adapted to CentOS.

I recommend reading this turorial in its entirety before starting so you get an idea of what prerequisites are required.

From time to time this page may get updated and if so, I will update the date at the bottom of this guide.

The text that are highlighted in red are the areas you need to customize.


You must login as root during the entire installation and configuration process.



Update the system

Make sure you update the system first, then reboot if you installed an updated kernel.

yum -y update

Install the following software

yum install rdate unzip make patch gcc gcc-c++ subversion php php-devel php-gd gd-devel php-mbstring php-mcrypt php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel httpd libpcap libpcap-devel libnet ncurses ncurses-devel screen mysql-server mysql-devel ntp kernel* mutt glibc.i686 conntrack-tools telnet


Setup MySQL

Setup default MySQL tables, start MySQL and configure root password

Replace "MYSQL_PASSWORD" with a password that you want to create.

/etc/init.d/mysqld start
/usr/bin/mysqladmin -u root password 'MYSQL_PASSWORD'
chkconfig mysqld on

Here is a sample mysql configuration file you can use. Backup your original, then use this instead.

service mysqld stop
cp /etc/my.cnf /etc/my.cnf.original
echo "" > /etc/my.cnf
nano /etc/my.cnf

user = mysql
#basedir = /var/lib

port = 3306
socket = /var/lib/mysql/mysql.sock

datadir = /var/lib/mysql
#tmpdir = /home/mysql_tmp
socket = /var/lib/mysql/mysql.sock
user = mysql
old_passwords = 0
ft_min_word_len = 3
max_connections = 800
max_allowed_packet = 32M

log-error = /var/log/mysqld/mysqld.log

query-cache-type = 1
query-cache-size = 32M

long_query_time = 1
#slow_query_log = 1
#slow_query_log_file = /var/log/mysqld/slow-queries.log

tmp_table_size = 128M
table_cache = 1024

join_buffer_size = 1M
key_buffer = 512M
sort_buffer_size = 6M
read_buffer_size = 4M
read_rnd_buffer_size = 16M
myisam_sort_buffer_size = 64M

max_tmp_tables = 64

thread_cache_size = 8
thread_concurrency = 8

# If using replication, uncomment log-bin below
#log-bin = mysql-bin

max_allowed_packet = 16M


key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M

key_buffer = 256M
sort_buffer_size = 256M
read_buffer = 2M
write_buffer = 2M


#log-error = /var/log/mysqld/mysqld.log
#pid-file = /var/run/mysqld/


mkdir /var/log/mysqld
mv /var/log/mysqld.log /var/log/mysqld/mysqld.log
touch /var/log/mysqld/slow-queries.log
chown -R mysql:mysql /var/log/mysqld
service mysqld restart


Update the time zone

Configure the system time and update it.

Customize the timezone. Take a look inside /usr/share/zoneinfo/ for all possible values.

rm /etc/localtime
ln -sf /usr/share/zoneinfo/US/Arizona /etc/localtime
rdate -s

Changes take effect immediately after you run the rdate command.

Note: It's very important to set the correct time zone of your Operating System (shown above) and in the vicidial admin area (Admin->Phones, Admin->Servers, Admin->System Settings) and also in your php.ini file. They must all be the same time zone or offset equivalent. Don't forget about this when configuring vicidial after using this guide.


Turn off ntpd and remove it from bootup runlevels.

You will be running ntpdate from cron instead.

service ntpd stop
chkconfig ntpd off


Setup CPAN and install libraries

Run the following command

yum install perl-CPAN
yum install perl-YAML
perl -MCPAN -e shell


You will then install some CPAN libraries

Once you see the cpan> prompt you can begin installing modules.
This may take a while.

cpan> install CPAN::Meta
cpan> install CPAN
cpan> reload cpan
cpan> install YAML
cpan> install MD5
cpan> install Digest::MD5
cpan> install Digest::SHA1
cpan> install readline
cpan> install Bundle::CPAN
cpan> reload cpan
cpan> install DBI
cpan> force install DBD::mysql
cpan> install Net::Telnet
cpan> install Time::HiRes
cpan> install Net::Server
cpan> install Switch
cpan> install Mail::Sendmail
cpan> install Unicode::Map
cpan> install Jcode
cpan> install Spreadsheet::WriteExcel
cpan> install OLE::Storage_Lite
cpan> install Proc::ProcessTable
cpan> install IO::Scalar
cpan> install Spreadsheet::ParseExcel
cpan> install Curses
cpan> install Getopt::Long
cpan> install Net::Domain
cpan> install Term::ReadKey
cpan> install Term::ANSIColor
cpan> install Spreadsheet::XLSX
cpan> install Spreadsheet::Read
cpan> install LWP::UserAgent
cpan> install HTML::Entities
cpan> install HTML::Strip
cpan> install HTML::FormatText
cpan> install HTML::TreeBuilder
cpan> install Time::Local
cpan> install MIME::Decoder
cpan> install Mail::POP3Client
cpan> install Mail::IMAPClient
cpan> install Mail::Message
cpan> install IO::Socket::SSL
cpan> install MIME::Base64
cpan> install MIME::QuotedPrint
cpan> install Crypt::Eksblowfish::Bcrypt
cpan> quit

In the end, I usually run all these commands once again to make sure its all installed.


Installing the Asterisk-Perl module

NOTE: Do NOT use the 0.09 or any newer version, they do not work with ViciDial.

cd /usr/src
tar -zxf asterisk-perl-0.08.tar.gz
cd asterisk-perl-0.08
perl Makefile.PL
make all
make install


Installing additional software from source

Next, you will download, compile and install the following software.



LAME is an MP3 encoder used to convert audio files from WAV to MP3. Some prefer GSM usually, but others have standardized on MP3 so you would need this utility to be loaded to use that option.

cd /usr/src
tar -zxf lame-3.99.5.tar.gz
cd lame-3.99.5
make install



SoX is a cross-platform command line utility that can convert various formats of computer audio files in to other formats.

cd /usr/src
tar -zxf sox-14.4.1.tar.gz
cd sox-14.4.1
make -s
make install



ttyload is a simple terminal application that shows the processor load in a graphical time-based scrolling graph. I use it to view how loaded the system is and it visualizes load spikes very well.

cd /usr/src
tar -xvjpf ttyload-0.5.3.tar.bz2
cd ttyload-0.5.3
nano ttyload.h

   insert this #include directive just above the #define directives, then save and close the ttyload.h file
   #include <time.h>

ln -s /usr/src/ttyload-0.5.3/ttyload /usr/bin/ttyload



iftop is a good console bandwidth visualization tool that shows you active connections, where they are going to/from and how much of your precious bandwidth they are using.

cd /usr/src
tar -zxf iftop-0.17.tar.gz
cd iftop-0.17
make install



mtop is a great utility for real-time monitoring of mysql and the queries that are running in it.
Note: the root mysql password must be blank before installing this

mysql -u root -p

Enter your MySQL password, then the following MySQL command:


cd /usr/src
tar -zxf mtop-0.6.6.tar.gz
cd mtop-0.6.6
perl Makefile.PL
make install

Enter the following MySQL command to put your root password back the way it was originally
Replace "MYSQL_PASSWORD" with your real password.




mytop is is an optional utility for monitoring the threads and overall performance of mysql
Note: the root mysql password must be blank before installing this

mysql -u root -p

Enter your MySQL password, then the following MySQL command:


cd /usr/src
tar -zxf mytop-1.6.tar.gz
cd mytop-1.6
perl Makefile.PL
make test
make install

Enter the following MySQL command to put your root password back the way it was originally
Replace "MYSQL_PASSWORD" with your real password.




htop is an interactive process viewer for Linux

cd /usr/src
tar -zxf htop-1.0.2.tar.gz
cd htop-1.0.2
make install



sipsak is an optional utility that VICIDIAL can use to send messages to an agent's SIP-based phone(like the Snom 320) to display text on their LCD screen.

cd /usr/src
tar -zxf sipsak-0.9.6-1.tar.gz
cd sipsak-0.9.6
make install
/usr/local/bin/sipsak --version



ploticus is a free graph creation package that allows you to create line graphs within PNG files simply by creating a config file and a data file. ViciDial uses this package to generate server performance graphs that can be displayed real-time within the ViciDial reports page.

cd /usr/src
tar -zxf ploticus242_src.tar.gz
cd ploticus242/src/
make clean
make install
mkdir -p /var/www/html/vicidial/ploticus/
cp pl /var/www/html/vicidial/ploticus/


Installing eAccelerator for PHP

Install the php module

cd /usr/src
cd eaccelerator-
export PHP_PREFIX="/usr"
./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config
make install

Configure php.ini

nano /etc/php.ini

Change the following values in your php.ini file.

Customize the date.timezone so you don't end up with a bunch of php errors complaining about it not being defined.

error_reporting  =  E_ALL & ~E_NOTICE
memory_limit = 48M
short_open_tag = On
max_execution_time = 330
max_input_time = 360
post_max_size = 48M
upload_max_filesize = 42M
default_socket_timeout = 360
date.timezone = America/Phoenix

Add the following lines to the dynamic extensions section of php.ini:

Note: For CentOS 32-bit, use this below: zend_extension="/usr/lib/php/modules/"

;For CentOS 32-bit: zend_extension="/usr/lib/php/modules/"

mkdir /tmp/eaccelerator
chmod 0777 /tmp/eaccelerator
php -v

You should see something like this:

PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator


Editing the Apache config file


nano /etc/httpd/conf/httpd.conf


To disable logging, change:

CustomLog logs/access_log combined
        to this:
CustomLog /dev/null combined


To enable web browsing of Recordings on Asterisk server, add this:

Alias /RECORDINGS/ "/var/spool/asterisk/monitorDONE/"

<Directory "/var/spool/asterisk/monitorDONE">
Options Indexes MultiViews
AllowOverride None
Order allow,deny
Allow from all
<files *.mp3>
Forcetype application/forcedownload


Change the values of ServerSignature and ServerTokens directives as shown below.

ServerSignature Off
ServerTokens Prod


Restart the Apache web server to apply the changes

service httpd restart
chkconfig httpd on


Install php-mcrypt extension module from a fedora repository since its not available in the standard repo.

You will need this so phpMyAdmin doesn't complain about not having mcrypt installed.

cd /usr/src
rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm
yum update
yum install php-mcrypt*
nano /etc/php.d/mcrypt.ini

Comment out the current mcrypt location because it is incorrect, then add the new path below it.

Note: For CentOS 32-bit, use this below:"

; Enable mcrypt extension module
;For CentOS 32-bit:


Restart the Apache web server to apply the changes

service httpd restart



Installing Asterisk

Any time you upgrade the Linux kernel you must recompile/install dahdi for the new kernel.

Asterisk must be compiled with dahdi support.

Add a user account named "asterisk" with a strong password. You will not need to use this account for anything, but Asterisk expects it to exist.

Note: The install MUST be done in the following order:

Minor note: dahdi-linux-complete-current.tar.gz and libpri-1.4-current.tar.gz may contain an updated version than what I am currently using, therefore the directory names may be different than shown below.

useradd asterisk -s /sbin/nologin
passwd asterisk
mkdir /usr/src/asterisk
cd /usr/src/asterisk
tar -zxf asterisk-
tar -zxf dahdi-linux-complete-current.tar.gz
tar -zxf libpri-1.4-current.tar.gz
cd dahdi-linux-complete-
make clean
make install
make config
cd tools
make clean
make install
make config
cd ../../libpri-1.4.15
make clean
make install
cd ../asterisk-
make clean
make menuselect
make install
make samples


* Confirm DAHDI works properly.
* You do not need dahdi_dummy anymore, because it has not been required since DAHDI-Linux 2.3.0.
* The core of DAHDI is now able to use the kernel timers automatically if no telephony hardware is installed.

service dahdi restart
chkconfig dahdi on
modprobe dahdi
lsmod | grep dahdi
dahdi_cfg -vvv

Check to see if the dahdi drivers are loaded.

lsmod | grep dahdi

Output should look similar to this:

dahdi_transcode         6697  1 wctc4xxp
dahdi_voicebus         54834  2 wctdm24xxp,wcte12xp
dahdi                 223523  15 xpp,dahdi_transcode,wcb4xxp,wctdm,wcfxo,wcaxx,wctdm24xxp,wcte11xp,wct1xxp,wcte13xp,wcte12xp,dahdi_voicebus,wcte43x,wct4xxp,oct612x
crc_ccitt               1717  2 wctdm24xxp,dahdi



Installing audio files

Download the audio files

cd /usr/src

Place the audio files in their proper places

cd /var/lib/asterisk/sounds
tar -zxf /usr/src/asterisk-core-sounds-en-gsm-current.tar.gz
tar -zxf /usr/src/asterisk-core-sounds-en-ulaw-current.tar.gz
tar -zxf /usr/src/asterisk-core-sounds-en-wav-current.tar.gz
tar -zxf /usr/src/asterisk-extra-sounds-en-gsm-current.tar.gz
tar -zxf /usr/src/asterisk-extra-sounds-en-ulaw-current.tar.gz
tar -zxf /usr/src/asterisk-extra-sounds-en-wav-current.tar.gz

mkdir /var/lib/asterisk/mohmp3
mkdir /var/lib/asterisk/quiet-mp3
ln -s /var/lib/asterisk/mohmp3 /var/lib/asterisk/default

cd /var/lib/asterisk/mohmp3
tar -zxf /usr/src/asterisk-moh-opsound-gsm-current.tar.gz
tar -zxf /usr/src/asterisk-moh-opsound-ulaw-current.tar.gz
tar -zxf /usr/src/asterisk-moh-opsound-wav-current.tar.gz
rm -f CHANGES*
rm -f LICENSE*
rm -f CREDITS*

cd /var/lib/asterisk/moh
rm -f CHANGES*
rm -f LICENSE*
rm -f CREDITS*

cd /var/lib/asterisk/sounds
rm -f CHANGES*
rm -f LICENSE*
rm -f CREDITS*

cd /var/lib/asterisk/quiet-mp3
sox ../mohmp3/macroform-cold_day.wav macroform-cold_day.wav vol 0.25
sox ../mohmp3/macroform-cold_day.gsm macroform-cold_day.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/macroform-cold_day.ulaw -t ul macroform-cold_day.ulaw vol 0.25
sox ../mohmp3/macroform-robot_dity.wav macroform-robot_dity.wav vol 0.25
sox ../mohmp3/macroform-robot_dity.gsm macroform-robot_dity.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/macroform-robot_dity.ulaw -t ul macroform-robot_dity.ulaw vol 0.25
sox ../mohmp3/macroform-the_simplicity.wav macroform-the_simplicity.wav vol 0.25
sox ../mohmp3/macroform-the_simplicity.gsm macroform-the_simplicity.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/macroform-the_simplicity.ulaw -t ul macroform-the_simplicity.ulaw vol 0.25
sox ../mohmp3/reno_project-system.wav reno_project-system.wav vol 0.25
sox ../mohmp3/reno_project-system.gsm reno_project-system.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/reno_project-system.ulaw -t ul reno_project-system.ulaw vol 0.25
sox ../mohmp3/manolo_camp-morning_coffee.wav manolo_camp-morning_coffee.wav vol 0.25
sox ../mohmp3/manolo_camp-morning_coffee.gsm manolo_camp-morning_coffee.gsm vol 0.25
sox -t ul -r 8000 -c 1 ../mohmp3/manolo_camp-morning_coffee.ulaw -t ul manolo_camp-morning_coffee.ulaw vol 0.25


Installing Proftpd

Install the FTP server from source

cd /usr/src
wget --passive-ftp
tar -zxf proftpd-1.3.5.tar.gz
cd proftpd-1.3.5
./configure --prefix=/usr --sysconfdir=/etc
make install


The proftpd binary gets installed in /usr/local/sbin, but we need it in /usr/sbin, so we create a symlink:
(This file might already exist, so don't worry if it gives you an error message that says it already exists)

ln -s /usr/local/sbin/proftpd /usr/sbin/proftpd


Create the init.d script

touch /etc/init.d/proftpd
nano /etc/init.d/proftpd


insert the following code:

#! /bin/sh
# proftpd          Start/Stop the cron proftpd daemon.
# chkconfig: 2345 40 60
# description: proftpd is a ftp server.
# processname: proftpd
# config: /etc/proftpd
# pidfile: /var/run/proftpd

# RedHat or Suse?
if [ -e "/etc/SuSE-release" ]; then

if [ "$REDHAT" = "1" ]; then
        # Source function library.
        if [ -f /etc/init.d/functions ]; then
          . /etc/init.d/functions
        elif [ -f /etc/rc.d/init.d/functions ]; then
          . /etc/rc.d/init.d/functions
          echo "Could not find functions file, your system may be broken"
        exit 1

if [ "$SUSE" = "1" ]; then
        # Source rc status functions
        . /etc/rc.status


# See how we were called.
case "$1" in
        echo -n "Starting proftpd: "
        $DAEMONIZE proftpd -p 0
        echo $RESULT
        touch /var/lock/subsys/proftpd
        echo -n "Stopping proftpd: "
        killproc proftpd
        echo $RESULT
        rm -f /var/lock/subsys/proftpd
        status proftpd
        $0 stop
        $0 start
        echo "Usage: proftpd {start|stop|status|restart}"
        exit 1

exit 0


Create a log directory and log files for proftpd to use

mkdir /var/log/proftpd/
touch /var/log/proftpd/ftpxferlog
touch /var/log/proftpd/proftpd.log


I use /var/www/html as my web root. You should do the same.

MY_FTP_USERNAME is the name of a Linux user account that you will create.

groupadd proftpd
useradd MY_FTP_USERNAME -d /var/www/html -s /bin/bash
chown -R MY_FTP_USERNAME /var/www/html


Generate SSL certificate and key so you can transfer files securely to/from your server using SSL.

openssl version -a
openssl req -x509 -nodes -newkey rsa:4096 -keyout /etc/ftpd-rsa-key.pem -out /etc/ftpd-rsa.pem


It will ask you some questions. Fill it out correctly.

Country Name (2 letter code) [XX]: US
State or Province Name (full name) []: Arizona
Locality Name (eg, city) [Default City]: Mesa
Organization Name (eg, company) [Default Company Ltd]: MyBusiness LLC
Organizational Unit Name (eg, section) []: HQ
Common Name (eg, your name or your server's hostname) []:
Email Address []:


Backup the proftpd.conf file, delete all the contents, then edit it.

cp /etc/proftpd.conf /etc/proftpd.conf.original
echo "" > /etc/proftpd.conf
nano /etc/proftpd.conf


insert the collowing code and replace with the static IP address that ONLY YOU will be connecting from, also replace MY_FTP_USERNAME with a valid Linux user account

# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use.  It establishes a single server
# and a single anonymous login.  It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName                      "MyBusiness Dialer"
ServerType                      standalone
DefaultServer                   on

<IfModule mod_tls.c>
    TLSEngine on
    TLSLog /var/log/proftpd/tls.log
    TLSProtocol SSLv3 TLSv1
    TLSRequired on
    TLSRSACertificateFile /etc/ftpd-rsa.pem
    TLSRSACertificateKeyFile /etc/ftpd-rsa-key.pem
    TLSCipherSuite HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
    TLSOptions NoSessionReuseRequired
    TLSVerifyClient off
    TLSRenegotiate none
TransferLog /var/log/proftpd/ftpxferlog
ExtendedLog /var/log/proftpd/proftpd.log read,write
UseReverseDNS off
IdentLookups off

# Port 21 is the standard FTP port.
Port                            21

# Don't use IPv6 support by default.
UseIPv6                         off

# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask                           022

# To prevent DoS attacks, set the maximum number of child processes
# to 30.  If you need to allow more than 30 concurrent connections
# at once, simply increase this value.  Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd).
MaxInstances                    30

# Set the user and group under which the server will run.
User                            nobody
Group                           proftpd

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~

MaxLoginAttempts                5

# Normally, we want files to be overwriteable.
AllowOverwrite          on

<Limit LOGIN>
Order Allow,Deny


Allow proftpd to run on bootup and start proftpd

chmod 755 /etc/init.d/proftpd
chkconfig proftpd on
service proftpd restart


Now you can connect to your server via FTP with or without SSL. Vicidial by default will not use SSL. This configuration gives the opportunity to use it either way. Use Filezilla to test this and see what it does.


Installing astGUIclient (ViciDial)


First, login to mysql to create the database, add a couple users and assign privileges.

NOTE: MY_DATABASE_USER and MY_DATABASE_PASSWORD will be used for login with phpMyAdmin

mysql -u root -p

Enter these MySQL commands:

GRANT ALL PRIVILEGES on asterisk.* to MY_DATABASE_USER@localhost;
CREATE USER 'cron'@'localhost' IDENTIFIED BY '1234';
GRANT RELOAD ON *.* TO cron@'%';
GRANT RELOAD ON *.* TO cron@localhost;
flush privileges;


I am going to install the latest 2.x SVN trunk which happens to be version 2.9 at this time.

mkdir /usr/src/astguiclient
cd /usr/src/astguiclient
svn checkout svn://
cd trunk


You will have to define various things like IP address of the server and FTP username/password.

It will also ask you where is the web root, use /var/www/html

Leave the other login settings as-is unless you already know how to update the database and other asterisk config files.

defined server_ip:
defined DB_server:        localhost
defined DB_database:      asterisk
defined DB_user:          cron
defined DB_pass:          1234
defined DB_custom_user:   custom
defined DB_custom_pass:   custom1234
defined DB_port:          3306
defined active_keepalives:     1234568
defined asterisk_version:      1.8
defined copying conf files:    y
defined copying weblang files: n
defined FTP_host:
defined FTP_user:         MY_FTP_USERNAME
defined FTP_pass:         MY_FTP_PASSWORD
defined FTP_port:         21
defined FTP_dir:          RECORDINGS
defined HTTP_path:
defined REPORT_host:
defined REPORT_user:      MY_FTP_USERNAME
defined REPORT_pass:      MY_FTP_PASSWORD
defined REPORT_port:      21
defined REPORT_dir:       REPORTS



Import sample data

Login to mysql to run some commands

mysql -u root -p

Enter these MySQL commands:

SET GLOBAL connect_timeout=60;
use asterisk;

\. /usr/src/astguiclient/trunk/extras/MySQL_AST_CREATE_tables.sql
\. /usr/src/astguiclient/trunk/extras/first_server_install.sql
\. /usr/src/astguiclient/trunk/extras/sip-iax_phones.sql


In the Linux terminal, enter these commands

cp /usr/src/astguiclient/trunk/extras/performance_test_leads.txt /usr/share/astguiclient/LEADS_IN/
/usr/src/astguiclient/trunk/bin/ --forcelistid=107 --forcephonecode=1


Final Adjustments

Make several entries in the rc.local of your system.

nano /etc/rc.d/rc.local

On a new system I just overwrite the file with the following:

# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.

touch /var/lock/subsys/local

# OPTIONAL enable ip_relay(for same-machine trunking and blind monitoring)
/usr/share/astguiclient/ip_relay/relay_control start 2>/dev/null 1>&2

# Disable console blanking and powersaving
/usr/bin/setterm -blank
/usr/bin/setterm -powersave off
/usr/bin/setterm -powerdown

### start up the MySQL server
/etc/init.d/mysqld start

### start up the apache web server
/etc/init.d/httpd start

### roll the Asterisk logs upon reboot

### clear the server-related records from the database

### load dahdi drivers
modprobe dahdi
/usr/sbin/dahdi_cfg -vvvvvvvvvvvvv

### sleep for 20 seconds before launching Asterisk
sleep 20

### start up asterisk

Make several entries in the crontab of your system:

crontab -e

### recording mixing/compressing/ftping scripts
#0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * * * /usr/share/astguiclient/
0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * * * /usr/share/astguiclient/ --MIX
0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 * * * * /usr/share/astguiclient/
1,4,7,10,13,16,19,22,25,28,31,34,37,40,43,46,49,52,55,58 * * * * /usr/share/astguiclient/ --GSM
#2,5,8,11,14,17,20,23,26,29,32,35,38,41,44,47,50,53,56,59 * * * * /usr/share/astguiclient/ --GSM

### keepalive script for astguiclient processes
* * * * * /usr/share/astguiclient/ --cu3way

### kill Hangup script for Asterisk updaters
* * * * * /usr/share/astguiclient/

### updater for voicemail
* * * * * /usr/share/astguiclient/

### updater for conference validator
* * * * * /usr/share/astguiclient/

### flush queue DB table every hour for entries older than 1 hour
11 * * * * /usr/share/astguiclient/ -q

### fix the vicidial_agent_log once every hour and the full day run at night
33 * * * * /usr/share/astguiclient/
50 0 * * * /usr/share/astguiclient/ --last-24hours
## uncomment below if using QueueMetrics
#*/5 * * * * /usr/share/astguiclient/ --only-qm-live-call-check

## uncomment below if using Vtiger
#1 1 * * * /usr/share/astguiclient/ --quiet

### updater for VICIDIAL hopper
* * * * * /usr/share/astguiclient/ -q

### adjust the GMT offset for the leads in the vicidial_list table
1 1,7 * * * /usr/share/astguiclient/ --debug

### reset several temporary-info tables in the database
2 1 * * * /usr/share/astguiclient/

### optimize the database tables within the asterisk database
3 1 * * * /usr/share/astguiclient/

## adjust time on the server with ntp
30 * * * * /usr/sbin/ntpdate -u 2>/dev/null 1>&2

### VICIDIAL agent time log weekly and daily summary report generation
2 0 * * 0 /usr/share/astguiclient/
22 0 * * * /usr/share/astguiclient/

### VICIDIAL campaign export scripts (OPTIONAL)
#32 0 * * * /usr/share/astguiclient/
#42 0 * * * /usr/share/astguiclient/

### remove old recordings more than 7 days old
#24 0 * * * /usr/bin/find /var/spool/asterisk/monitorDONE -maxdepth 2 -type f -mtime +7 -print | xargs rm -f

### roll logs monthly on high-volume dialing systems
#30 1 1 * * /usr/share/astguiclient/

### remove old vicidial logs and asterisk logs more than 2 days old
28 0 * * * /usr/bin/find /var/log/astguiclient -maxdepth 1 -type f -mtime +2 -print | xargs rm -f
29 0 * * * /usr/bin/find /var/log/asterisk -maxdepth 3 -type f -mtime +2 -print | xargs rm -f
30 0 * * * /usr/bin/find / -maxdepth 1 -name "screenlog.0*" -mtime +4 -print | xargs rm -f

### cleanup of the scheduled callback records
25 0 * * * /usr/share/astguiclient/ --purge-non-cb -q

### GMT adjust script - uncomment to enable
#45 0 * * * /usr/share/astguiclient/ --list-settings

### Dialer Inventory Report
1 7 * * * /usr/share/astguiclient/ -q --override-24hours

### inbound email parser
* * * * * /usr/share/astguiclient/



Next, it is important to change the externip and localnet values in the sip.conf

The externip needs to be the public facing ip of your server.
The localnet will consist of the public facing ip and netmask of your server.

nano /etc/asterisk/sip.conf

externip =

Run this perl script to update the server_ip fields in the asterisk tables (copy the command as-is)

/usr/share/astguiclient/ --old-server_ip=

Update music on hold configuration

nano /etc/asterisk/musiconhold.conf

; Music on Hold -- Sample Configuration



#include musiconhold-vicidial.conf

* There are other sample configration files in /usr/src/astguiclient/docs/conf_examples/ that you might want to look at and maybe copy from and customize.


Lastly, reboot the machine




After reboot, check your logs for any errors, make sure asterisk is up and running.

Be proactive and look for problems before you start configuring vicidial.

Run these commands to view log files:

Run this command:

screen -ls

The output should look similar to this:

There are screens on:
        2301.ASTVDauto  (Detached)
        2125.asterisk   (Detached)
        2292.ASTupdate  (Detached)
        2307.ASTVDadapt (Detached)
        2120.astshell20131221211922     (Detached)
        2304.ASTVDremote        (Detached)
        2310.ASTfastlog (Detached)
        2298.ASTlisten  (Detached)
        2295.ASTsend    (Detached)
9 Sockets in /var/run/screen/S-root.


Start using vicidial

Login to vicidial and configure it.

Add users, campaigns, in-group, DID's, server, etc....

Go to: http://youripaddress/vicidial/admin.php

The default username is: 6666 and the password is: 1234


A note about security

When you get the vicidial server configured and working, make sure to follow basic common sense server administration rules like setting up a firewall, changing default passwords, disallow remote mysql connections or limiting it, etc...


Below is firewall script I borrowed from VICIbox Server that works quite well (why reinvent the wheel?). It basically blocks all IP adresses by default and only allows the IP addresses in which you specify to have access to the server. It's pretty good at blocking out all those voip hackers. I almost don't even need to worry anymore.
I personally implement these iptable rules as soon as I get my server online and running and BEFORE starting this guide. DO NOT implement this unless you have a way to get back into your server in case it does not work for you. Take a look at it and modify it as needed. In my case, I use a server that I lease from Softlayer and they provide me with a VPN and IPMI interface and software to get back in if needed.

mkdir /usr/src/iptables/
touch /usr/src/iptables/whitelist.rules
nano /usr/src/iptables/whitelist.rules

I also had to add various IP addresses for softlayer to connect to my server because they might do automated ping scans and remote management.
Replace with the IP address that you need to allow access to your server.
These ip addresses will be your remote location (using a static IP), your data center IP's, DID providers (such as Aretta, Switch2Voip, etc..), external database servers, etc...

Customize and add the following code to the whitelist.rules file:

# Generated by iptables-save v1.4.7 on Sat Dec 21 21:31:39 2013
:OUTPUT ACCEPT [71:5742]
# Completed on Sat Dec 21 21:31:39 2013
# Generated by iptables-save v1.4.7 on Sat Dec 21 21:31:39 2013
:forward_ext - [0:0]
:forward_int - [0:0]
:input_ext - [0:0]
:input_int - [0:0]
:reject_func - [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state ESTABLISHED -j ACCEPT
-A INPUT -p icmp -m state --state RELATED -j ACCEPT
-A INPUT -i eth0 -j input_int
-A INPUT -i eth1 -j input_ext
-A INPUT -j input_ext
-A INPUT -m limit --limit 3/min -j LOG --log-prefix "SFW2-IN-ILL-TARGET " --log-tcp-options --log-ip-options
-A FORWARD -m limit --limit 3/min -j LOG --log-prefix "SFW2-FWD-ILL-ROUTING " --log-tcp-options --log-ip-options
-A OUTPUT -m limit --limit 3/min -j LOG --log-prefix "SFW2-OUT-ERROR " --log-tcp-options --log-ip-options
-A input_ext -m pkttype --pkt-type broadcast -j DROP
-A input_ext -m recent --rcheck --name GOOD --rsource -j ACCEPT
-A input_ext -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A input_ext -p tcp -m tcp --dport 113 -m state --state NEW -j reject_func
-A input_ext -m pkttype --pkt-type multicast -j DROP
-A input_ext -m pkttype --pkt-type broadcast -j DROP
-A input_ext -p tcp -m limit --limit 3/min -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j LOG --log-prefix "SFW2-INext-DROP-DEFLT " --log-tcp-options --log-ip-options
-A input_ext -p icmp -m limit --limit 3/min -j LOG --log-prefix "SFW2-INext-DROP-DEFLT " --log-tcp-options --log-ip-options
-A input_ext -p udp -m limit --limit 3/min -m state --state NEW -j LOG --log-prefix "SFW2-INext-DROP-DEFLT " --log-tcp-options --log-ip-options
-A input_ext -j DROP
-A input_ext -p icmp -m icmp --icmp-type 4 -j ACCEPT
-A input_ext -p tcp -m tcp --dport 113 -m state --state NEW -j reject_func
-A input_int -j ACCEPT
-A reject_func -p tcp -j REJECT --reject-with tcp-reset
-A reject_func -p udp -j REJECT --reject-with icmp-port-unreachable
-A reject_func -j REJECT --reject-with icmp-proto-unreachable
# Completed on Sat Dec 21 21:31:39 2013


To implement the firewall rules immediately, run this command

iptables-restore < /usr/src/iptables/whitelist.rules

Edit the iptables configuration

nano /etc/sysconfig/iptables-config

Change the following values to yes

This will ensure the iptable rules get saved to the default iptables file (/etc/sysconfig/iptables) and re-used each time the firewall is stopped or restarted.


You can verify this by stopping and restarting the firewall or rebooting the server. Go ahead and try this.

service iptables stop
iptables -L
service iptables restart
iptables -L
iptables -L




First, you will do a full backup, then you will upgrade your local copy of astguiclient via SVN and install it.

Make sure to read the UPGRADE doc for any new instructions.

/usr/share/astguiclient/ --debugX
cd /usr/src/astguiclient/trunk
svn up



Additional notes

Dont forget to purchase the Agent and Managers Manual from

If you are going to use phpMyAdmin, then put it in a folder with a unique name that cannot be guessable.

Looking for my old 2.2.1 tutorial?



Ray Solomon


Was any of this helpful? if so, send me a donation :)

My Bitcoin address: 1EEdE5391BNZmLxemTTyhwYvmyWRwyZuGS

My Litecoin address: LZk3baq7yWk28LnGGPpQs2eFWiY7DPev9Q

My Dogecoin address: DDDg32D5CwmbAUP3KefhTTBXuSQbwd6bB4

Paypal donations also accepted


I also have an amazon wishlist



Last Updated

September 08, 2015


Valid XHTML 1.0 Transitional