For those with a lot of debian experience, many people have noticed that
the "testing" branch is actually a lot more stable than described. Debian
"stable" is very conservative and designed to have nothing break. I even
know people who run their desktop workstation as 'sid'.

If you're adventurous enough to run 'stretch' on a VoIP server, here's some
notes on the process of manually installing the latest releases of Asterisk
and FreePBX together on 'stretch'. If you just want something that works
and is much more conservative in the software version packaging, the same
process could apply to 'jessie' (the current stable version).

This started when I became generally dissatisfied with the FreePBX distro
which is based on CentOS 6.x and ships with an ancient kernel. I'm not a
huge fan of CentOS as either a hypervisor or guest VM, and I needed to run
FreePBX on some very new hardware that is *not* happy with a 2.6.xx series
Linux kernel. It was necessary to have current kernel support for fun
things like btrfs and some new 10GbE NICs.  (Yes, I know you can install
the epel-kernel repo on centos and add kernel v4.3.x, but that's a hack and
going outside of the distro's normal repo tree).


Here's my step by step notes file if anyone wants to try:

install debian stretch amd64 no gui

set up the test virtualbox vm to use bridged networking to the host
eth0 adapter (not NAT)


fully update debian stretch to the latest version of everything


install and configure asterisk. instructions from freepbx website.
everything must be run as root (not sudo!)

you will want to be able to ssh into the server while doing the install

edit the sshd_config to PermitRootLogin Yes




install required dependencies:

apt-get install -y build-essential linux-headers-`uname -r`
openssh-server apache2 mysql-server\
  mysql-client bison flex php5 php5-curl php5-cli php5-mysql php-pear
php5-gd curl sox\
  libncurses5-dev libssl-dev libmysqlclient-dev mpg123 libxml2-dev
libnewt-dev sqlite3\
  libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev
uuid uuid-dev\
  libasound2-dev libogg-dev libvorbis-dev libcurl4-openssl-dev
libical-dev libneon27-dev libsrtp0-dev\
  libspandsp-dev sudo libmyodbc subversion


choose no root password for mysql-server (yet) , this will be
configured in a later step


apt-get install sox lame ffmpeg id3tool id3v2 p7zip rsync nmap curl snmp gcc


a2enmod ssl
a2enmod rewrite


delete some things from the local apt disk cache to free up disk space

apt-get clean

apt-get autoclean


install legacy pear requirements, reference:
https://pear.php.net/package/Console_Getopt/

pear install Console_Getopt



cd /usr/src
wget 
http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget 
http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz
wget 
http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
wget -O jansson.tar.gz https://github.com/akheron/jansson/archive/v2.7.tar.gz
wget http://www.pjsip.org/release/2.4/pjproject-2.4.tar.bz2

we want to manually retrieve and install the latest versions of all
these projects, from these sources:
http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/
http://downloads.asterisk.org/pub/telephony/libpri/
http://downloads.asterisk.org/pub/telephony/asterisk/
http://www.digip.org/jansson/
http://www.pjsip.org/download.htm


compile and install DAHDI and libpri

cd /usr/src
tar xvfz dahdi-linux-complete-current.tar.gz
rm -f dahdi-linux-complete-current.tar.gz
cd dahdi-linux-complete-*
make all
make install
make config
cd /usr/src
tar xvfz libpri-1.4-current.tar.gz
rm -f libpri-1.4-current.tar.gz
cd libpri-*
make
make install


note: DAHDI is a kernel module so it will need to be recompiled and
reinstalled if the kernel is upgraded


compile and install pjsip (pjproject)
cd /usr/src
tar -xjvf pjproject-2.4.tar.bz2
rm -f pjproject-2.4.tar.bz2
cd pjproject-2.4
CFLAGS='-DPJ_HAS_IPV6=1' ./configure --enable-shared --disable-sound
--disable-resample --disable-video --disable-opencore-amr
make dep
make
make install


compile and install jansson
cd /usr/src
tar vxfz jansson.tar.gz
rm -f jansson.tar.gz
cd jansson-*
autoreconf -i
./configure
make
make install



compile and install asterisk

cd /usr/src
tar xvfz asterisk-13-current.tar.gz
rm -f asterisk-13-current.tar.gz
cd asterisk-*
contrib/scripts/get_mp3_source.sh
contrib/scripts/install_prereq install
./configure
make menuselect


choose enabled modules

make
make install
make config
ldconfig
update-rc.d -f asterisk remove


retrieve more asterisk sounds

cd /var/lib/asterisk/sounds
wget 
http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-en-wav-current.tar.gz
wget 
http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-wav-current.tar.gz
tar xvf asterisk-core-sounds-en-wav-current.tar.gz
rm -f asterisk-core-sounds-en-wav-current.tar.gz
tar xfz asterisk-extra-sounds-en-wav-current.tar.gz
rm -f asterisk-extra-sounds-en-wav-current.tar.gz
# Wideband Audio download
wget 
http://downloads.asterisk.org/pub/telephony/sounds/asterisk-core-sounds-en-g722-current.tar.gz
wget 
http://downloads.asterisk.org/pub/telephony/sounds/asterisk-extra-sounds-en-g722-current.tar.gz
tar xfz asterisk-extra-sounds-en-g722-current.tar.gz
rm -f asterisk-extra-sounds-en-g722-current.tar.gz
tar xfz asterisk-core-sounds-en-g722-current.tar.gz
rm -f asterisk-core-sounds-en-g722-current.tar.gz


Install and Configure FreePBX
Create the Asterisk user and set base file permissions.
useradd -m asterisk
chown asterisk. /var/run/asterisk
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/lib/asterisk
rm -rf /var/www/htmlcd /et


A few small modifications to Apache.
sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php5/apache2/php.ini
cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
service apache2 restart


create the /etc/odbcinst.ini file with the following contents:
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1


ceate the /etc/odbc.ini file with the following contents:
[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL
server=localhost
database=asteriskcdrdb
Port=3306
Socket=/var/run/mysqld/mysqld.sock
option=3


Download and install FreePBX.
cd /usr/src
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
tar vxfz freepbx-13.0-latest.tgz
rm -f freepbx-13.0-latest.tgz
cd freepbx
./start_asterisk start
./install -n


configure freepbx from its http GUI


use the GUI to install all of the free FreePBX modules

you may need to go through module installation up to 4 times, as some
things will not install until
their dependencies are met (confereces, call recording, etc). install,
check repositories, install again,
repeat.


chown the directory /etc/dahdi/ and everything in it to the asterisk
user and asterisk group, by
running the command 'amportal chown'


edit /etc/ssh/sshd_config and disable remote root login


edit /etc/sudoers and add eric to the sudoers list


copy eric's ssh public key to the system and verify that logging in
works, sudo works


you need to create a systemd startup script to start asterisk and
other things on boot,
reference:http://wiki.freepbx.org/display/HTGS/Example+systemd+startup+script+for+FreePBX

Reply via email to