← Blog

Debian installer (Asterisk and Adhearsion AGI framework)

This script installs Asterisk PBX 11.x, including support for fax, MySQL, Ruby, and the Adhearsion AGI framework. Please run this script as root. If ImageMagick is not required, the section that downloads and installs it can be removed.

#!/bin/bash

# Function to generate a random password.
# Input: $1 (optional) - desired password length (default: 20).
genpasswd() {
  local l=$1
  [ "$l" == "" ] && l=20
  tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs
}

# MySQL default root password. Can be replaced with a
# static password string.
MYSQL_ROOT_PASSWORD=`genpasswd 16` # or static text

# To remove MySQL completely, run (copy-paste to shell):
# M=`dpkg -l|grep mysql|awk '{print $2}'|xargs`
# apt-get -y purge ${M}
# rm -rf /etc/mysql /var/lib/mysql

MYSQL_SERVER_VERSION=`apt-cache showpkg mysql-server \
  | grep "Versions:" -A 1 \
  | tail --lines 1 \
  | awk '{print $1}'`
# tell installer about pre-set MySQL server password
PKG="mysql-server-${MYSQL_SERVER_VERSION}"
echo "${PKG} mysql-server/root_password password \
${MYSQL_ROOT_PASSWORD}" | debconf-set-selections
echo "${PKG} mysql-server/root_password_again password \
${MYSQL_ROOT_PASSWORD}" | debconf-set-selections

# install necessary packages
apt-get update
apt-get upgrade
apt-get -y install \
  build-essential linux-headers-`uname -r` \
  libxml2-dev libncurses-dev libnewt-dev \
  openssl libreadline6 libreadline-dev \
  curl git-core zlib1g zlib1g-dev \
  libssl-dev libyaml-dev libxslt-dev \
  autoconf libc6-dev ncurses-dev automake \
  libtool bison libtiff-dev \
  libjpeg-progs libjpeg-dev libpng-dev \
  mysql-server libmysqlclient-dev \
  sqlite3 libsqlite3-dev \
  wget rsync subversion

# create /usr/src if not exists
mkdir -p /usr/src
cd /usr/src

# download SpanDSP (need to support faxing)
wget --continue \
  http://soft-switch.org/downloads/spandsp/spandsp-0.0.6pre21.tgz

# download imagemagick (need to convert faxes)
wget --continue \
  http://www.imagemagick.org/download/ImageMagick-6.8.3-9.tar.gz

# download asterisk PBX
wget --continue \
  http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-11.2.1.tar.gz

# unpack downloaded packages
tar -zxf spandsp-0.0.6pre21.tgz
tar -zxf ImageMagick-6.8.3-9.tar.gz
tar -zxf asterisk-11.2.1.tar.gz

# download asterisk add-ons
cd asterisk-11.2.1
./contrib/scripts/get_ilbc_source.sh
./contrib/scripts/get_mp3_source.sh

# install imagemagick
cd ../ImageMagick-6.8.3-9
./configure && make all && make install

# install spandsp
cd ../spandsp-0.0.6
./configure && make all && make install

# install asterisk PBX
cd ../asterisk-11.2.1
./configure && make all && make install && make samples \
  && make config && make install-logrotate

# install asterisk utilities
cp ./contrib/scripts/astcli /usr/local/bin/

# Automate asterisk service to run on startup.
update-rc.d asterisk defaults

# install rvm and ruby
curl -L get.rvm.io | bash -s stable
# to remove rvm do:
# rvm implode
source /etc/profile.d/rvm.sh
ldconfig
rvm install 1.9.3
gem install --no-rdoc --no-ri \
  bundler sqlite3 mysql \
  adhearsion adhearsion-activerecord \
  adhearsion-asterisk adhearsion-drb \
  adhearsion-rails adhearsion-xmpp

echo -e "\n\n\n\n"
echo "*****************************************************"
echo "  INSTALLATION DONE"
echo "  YOUR ROOT MYSQL PASSWORD IS ${MYSQL_ROOT_PASSWORD}"
echo "  SAVE IT IN SAFE PLACE :)"
echo "*****************************************************"