You are on page 1of 12

Installation Asterisk

Asterisk est un projet dmarr en 1999 par Mark Spencer. Son objectif tait alors de fournir Linux un commutateur tlphonique complet et totalement libre. Aujourdhui Asterisk est un PABX (Private Automatic Branch eXchange) dune rare puissance et souplesse, capable de grer la tlphonie analogique, mais surtout, et cest ce qui nous intresse, la voix sur IP. La VoIP sur Asterisk passe entre autre par la prise en charge dun protocole standard, ouvert et trs largement utilis, le SIP (Session Initiation Protocol). SIP qui est un protocole trs proche dHTTP qui nest pas limit la seule voix mais qui prend aussi en charge la vido et l a messagerie instantane. Dun point de vue fonctionnalit, Asterisk permet tout ce que lon peut attendre dun PABX moderne: La gestion des postes tlphonique sur IP locaux. Il peut sagir de tlphones physiques mais aussi logiciels (ou SoftPhone) comme Ekiga ou X-lite. Botes vocales, transfert dappel, mise en attente etc

Installation dAsterisk
Il y a deux faons dinstaller Asterisk sur une distribution base de Debian, la premire via le gestionnaire de paquet de Debian, la seconde en compilant directement la dernire version dAsterisk. Nous allons installer Asterisk en compilant ses sources pour pouvoir disposer de la dernire version dAsterisk.

Prparation linstallation
On commence par mettre jour notre distribution et installer les dpendances ncessaires la compilation dAsterisk.

1. apt-get update && apt-get upgrade 2. apt-get install build-essential libxml2-dev libncurses5-dev linux-headers`uname -r` libsqlite3-dev libssl-dev
Puis on crer un dossier ou nous allons placer les sources dAsterisk dans /usr/src

1. mkdir /usr/src/asterisk 2. cd /usr/src/asterisk

Installation
On tlcharge la dernire version dAsterisk et on l installe ( lcriture de ce tuto la dernire version dAsterisk tait la 10.7.0)

1. wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk2. 3. 4. 5.
10.7.0.tar.gz tar xvzf asterisk-10.7.0.tar.gz cd asterik-asterisk-10.7.0 ./configure make menuselect

La commande make menuselect va faire apparatre un cran qui va vous permettre de personnaliser votre installation dAsterisk.

Nous allons en profiter pour installer les sons franais pour Asterisk au format -law. Dans Core Sound Package nous allons cocher la case CORE-SOUNDS-FR-ULAW avec la touche Espace puis appuyez sur Echap pour retourner lcran prcdent. Puis dans Music On Hold File Packages cochez MOH-OPSOUND-ULAW (Dcochez celui en WAV), appuyez sur Echap et enfin allez dans Extras Sound Packages et cochez EXTRA-SOUNDS-FR-ULAW. Enfin appuyez sur Echap et une fois lcran principal refaites Echap et appuyez sur S pour sauvegarder les changements. Enfin tapez les commandes suivantes pour terminer linstallation:

1. 2. 3. 4.

make make install make samples make config

Attention ! Pendant le make install assurez-vous que votre serveur soit connect internet parce que celui-ci va tlcharger les packages de langue FR que nous avons slectionn. Aprs toutes ces commandes vous pouvez lancer Asterisk laide de la commande suivante:

1. /etc/init.d/asterisk start
Vous pouvez vrifier le bon fonctionnement de votre serveur Asterisk avec la commande suivante qui sert afficher la console dAsterisk

1. asterisk -cvr
Si vous avez les lignes suivantes qui saffichent:

Asterisk 10.7.0, Copyright (C) 1999 - 2012 Digium, Inc. and others. Created by Mark Spencer Asterisk comes with ABSOLUTELY NO WARRANTY; type 'core show warranty' for details. This is free software, with components licensed under the GNU General Public License version 2 and other licenses; you are welcome to redistribute it under certain conditions. Type 'core show license' for details. ========================================================================= == Parsing '/etc/asterisk/asterisk.conf': == Found == Parsing '/etc/asterisk/extconfig.conf': == Found Connected to Asterisk 10.7.0 currently running on Asterisk .......................
Cest que votre serveur Asterisk est dmarr et fonctionnel ! Pour le GUI : http://downloads.asterisk.org/pub/telephony/asterisk-gui/asterisk-gui-2.1.0-rc1.tar.gz

Configuration dAsterisk et cration des comptes utilisateurs


Pour configurer notre serveur Asterisk nous allons modifier les fichiers suivants: Le fichier sip.conf : pour la configuration gnral dAsterisk Le fichier users.conf : pour la configuration des utilisateurs Le fichier extensions.conf : pour la configuration du Dialplan Cest fichiers se trouvent dans le dossier /etc/asterisk Avant de commencer la configuration je recommande de vous connecter en SSH votre serveur Asterisk mais en ouvrant deux sessions simultanes une pour la console Asterisk et une pour ldition des fichiers de configurations. Sous Windows je vous recommande MobaXterm et sous Linux Terminator.

MobaXterm

Nous allons commencer par diter le fichier sip.conf qu va nous permettre pour linstant de mettre les sons par dfauts en Franais. Recherchez la ligne

1. ;language=en
Et remplacez la par

1. language=fr
Pensez enlever le ; devant la ligne ! A chaques fois que vous modifiez un fichier de conf il faut recharger ce fichier de configuration dans Asterisk. Dans la console dAsterisk il vous suffit de taper la commande : reload cete commande permet de recharger les fichiers de configurations dAsterik sans redmarrer le serveur.

Cration des utilsateurs


La cration des utilisateurs se fait donc dans le fichier users.conf Voici un exemple de fichier users.conf avec deux utilisateurs John DOE et Albert DUPONT avec comme numros respectifs le 6001 et le 6002.

[general] hasvoicemail = yes hassip = yes hasiax = yes callwaiting = yes threewaycalling = yes callwaitingcallerid = yes transfer = yes canpark = yes cancallforward = yes callreturn = yes callgroup = 1 pickupgroup = 1 nat = yes [6001] type=friend host=dynamic dtmfmode=rfc2833 disallow=all allow=ulaw fullname = John DOE username = jdoe secret=secret context = work [6002] type=friend host=dynamic dtmfmode=rfc2833 disallow=all allow=ulaw fullname = Albert DUPONT username = adupont secret=secret context = work
Je vais expliquer ce que veut dire chaque ligne lors de la cration dun utlisateur: [6002] > Numro SIP type=friend > type dobjet SIP, friend = utilisateur host=dynamic > Vous pouvez vous connecter a ce compte SIP a partir de nimporte quelle adresse IP dtmfmode=rfc2833 > type de rfc utilis

disallow=all > Dsactivation de tous les codecs allow=ulaw > Activation du codec law fullname = Albert DUPONT > Prnom et NOM de lutilisateur (ce qui sera afficher sur le tlphone lors dun appel) username = adupont > Nom dutilisateur secret=secret > Mot de passe du compte SIP context = work > Contexte (on verra a dans le fichier extensions.conf) Une fois le fichier users.conf enregistr allez dans la console Asterisk, tapez reload en enfin tapez la commande sip show users. les deux comptes utilisateurs que nous venons de creer devrait y apparaitre.

Asterisk*CLI> sip show users Username Secret erPort 6002 secret 6001 secret

Accountcode

Def.Context work work

ACL No No

Forc Yes Yes

Vous voyez que quand mme crer un utlisateur est assez lourd, nous pouvons aussi utiliser des templates pour pouvoir crer des utilisateurs plus rapidement. Reprenons le fichier users.conf avec les mmes utilisateurs de crer mais cette fois-ci avec un template:

general] hasvoicemail = yes hassip = yes hasiax = yes callwaiting = yes threewaycalling = yes callwaitingcallerid = yes transfer = yes canpark = yes cancallforward = yes callreturn = yes callgroup = 1 pickupgroup = 1 nat = yes [template](!) type=friend host=dynamic dtmfmode=rfc2833 disallow=all allow=ulaw context = work [6001](template) fullname = John DOE username = jdoe secret=secret [6002](template) fullname = Albert DUPONT username = adupont secret=secret
Dans ce nouveau fichier de configuration nous avons cr un template appel template et ce template est appel pour la cration des deux utilisateurs. Ce qui rduit la cration dun utilisateur quatre lignes au lieu de dix. Nos utilisateurs sont crer, mais ils nont pas encore la possibilit de sappeller. Nous allons maintenant diter le fichier extensions.conf qui permet de configurer le Dialplan.

Configuration du Dialplan
Le Dialplan ou plan dappel est le fichier de configuration dAsterisk qui permet de configurer en gros: Que de passe-t il si jappelle tel numro? Nous allons donc configurer Asterisk de telle sorte que lutilisateur 6001 puisse appeler le numro 6002. Voici donc pour exemple mon fichier extensions.conf Ce sont le trois dernires lignes qui vont nous intresser.

[general] static=yes writeprotect=no clearglobalvars=no [globals] CONSOLE=Console/dsp IAXINFO=guest TRUNK=DAHDI/G2 TRUNKMSD=1

; Console interface for demo ; IAXtel username/password ; Trunk interface ; MSD digits to strip (usually 1 or 0)

[work] exten => _6XXX,1,Dial(SIP/${EXTEN},20) exten => _6XXX,2,Hangup()


Dans ces trois dernires lignes nous allons voir deux choses, les contextes et les extensions. [work] est le contexte cest une sorte de conteneur dans lequel les utilisateurs faisant partis de ce contexte pourrons communiquer entre eux. Lors de la cration de nos deux utilisateurs nous avons spcifi le contexte work. exten => : dclare lextension (on peut aussi simplement dire numros) _6XXX : Prend les extensions (ou numros) de 6000 a 6999 le _ permet dutiliser des regex 1 : Ordre de lextension Dial : application qui va tre utilis SIP: Protocol qui va tre utilis ${EXTEN} : variable de lextension compos, si on appelle le 6001 la variable ${EXTEN} prendra comme valeur 6001 20: temps dattente avant de passer a ltape suivante. Donc la ligne exten => _6XXX,1,Dial(SIP/${EXTEN},20) se traduit par: Quand on compose le numro (par exemple) 6001, on appelle le numro 6001 et si au bout de 20 secondes il ny a pas de rponses on passe la ligne du dessous. Dans le cas du numros 6001 la ligne devient comme ceci: exten => 6001,1,Dial(SIP/6001,20), mais lavantage de la ligne prcdente est quelle permet dappeler les numros de 6000 a 6999. La seconde ligne : exten => _6XXX,2,Hangup() permet de raccrocher si il ny a pas de rponses au bout des 20 secondes. Maintenant, vous pouvez enregistrer votre fichier extensions.conf et faire un reload dans la console dAsterisk.

Passer son premier appel


Maintenant que nos deux utilisateurs sont crs et que nous avons configur les extensions du contexte work nous allons pourvoir effectuer un appel entre ces deux utilisateurs. Vous pouvez configurer un compte SIP partir de nimporte quel client SIP. Sous Windows et MacOSX vous avez X-LITE Sous Linux vous avez Ekiga (mettre nat=yes dans sip.conf) Sous Android vous avez CSipSimple Donc ce test je vous recommande davoir au moins deux clients SIP. Un que vous allez configurer avec le compte de John DOE et lautre avec le compte dAlbert DUPONT. Voici par exemple la configuration dun compte sous X-LITE 5 sous Windows 7.

Le Domain est ladresse IP ou hostname de votre serveur SIP

X-LITE 5 sous Windows 8 Et sous CSipSimple

CSipSmple sous Android Une fois les deux clients configurs il vous suffit dappeler par exemple partir du compte de John DOE (6001) le numro 6002.

Appel entrant du 6002 vers le 6001

Free PBX
Installation des prrequis :

1. 2. 3. 4. 5. 6. 7. 8. 9.

aptitude install linux-source-2.6 kernel-package make g++ libncurses5-dev cd /usr/src/ tar xvjf /usr/src/linux-source-2.6.32.tar.bz2 ln -s /usr/src/linux-source-2.6.32 /usr/src/linux cp /boot/config-`uname -r` /usr/src/linux/.config cd linux/ yes "" | make oldconfig make prepare make prepare scripts

Installation de dahdi-linux

1. 2. 3. 4. 5. 6.

cd /usr/src/ wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz tar zxvf dahdi-linux-complete-current.tar.gz cd /usr/src/dahdi-linux-complete-<version>/linux/ make make install

Installation de dahdi-tools

1. 2. 3. 4. 5.

cd /usr/src/dahdi-linux-complete-<version>/tools/ ./configure make make install make config

Installation de la libpri

1. 2. 3. 4. 5. 6.

cd /usr/src/ wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz tar zxvf libpri-1.4-current.tar.gz cd /usr/src/libpri-<version>/ make make install

Installation de lame Editer le fichier /etc/apt/sources.list et ajouter le repository : deb http://www.debian-multimedia.org squeeze main non-free 1. echo "deb http://www.debian-multimedia.org squeeze main non-free" >> /etc/apt/sources.list

Puis installer la clef du repository avant de faire un update et enfin linstallation de lame 1. 2. 3. 4. wget "http://debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimediakeyring_2010.12.26_all.deb" -O /tmp/debian-multimedia-keyring_2010.12.26_all.deb dpkg -i /tmp/debian-multimedia-keyring_2010.12.26_all.deb aptitude update aptitude install lame libmp3lame-dev

Installation de FreePBX
Tlchargement et installation des prrequis : 1. cd /usr/src/

2. wget http://mirror.freepbx.org/freepbx-2.9.0.tar.gz ou wget http://mirror.freepbx.org/freepbx-2.10.0.tar.gz


3. 4. 5. tar zxvf freepbx-2.9.0.tar.gz cd /usr/src/freepbx-2.9.0/ aptitude install libxml2 libxml2-dev libtiff4 libtiff4-dev apache2 libapache2-mod-php5 php5-mysql php5-gd php-pear mysql-server openssl libssl-dev linux-source-2.6.32 bison libncurses5-dev libaudiofile-dev curl sox sudo

Personnalisation de php : Editer le fichier /etc/php5/apache2/php.ini et mettre upload_max_filesize=20M et memory_limit= 100M 1. 2. sed -i "s/\(upload_max_filesize *= *\)\(.*\)/\120M/" /etc/php5/apache2/php.ini sed -i "s/\(memory_limit *= *\)\(.*\)/\1100M/" /etc/php5/apache2/php.ini

Crer un groupe et un utilisateur Asterisk : 1. 2. groupadd asterisk useradd -c "asterisk PBX" -d /var/lib/asterisk -g asterisk asterisk

Cration de la base et des utilisateurs MySQL 1. 2. 3. 4. 5. 6. 7. mysql -u root -p Enter password: mysql> create database asteriskcdrdb; mysql> create database asterisk; mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'amp109'; mysql> GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'amp109'; mysql> quit;

Creation des tables : 1. 2. mysql -u asteriskuser -pamp109 asteriskcdrdb < /usr/src/freepbx/freepbx-2.10.0/SQL/cdr_mysql_table.sql mysql -u asteriskuser -pamp109 asterisk < /usr/src/freepbx/freepbx-2.10.0/SQL/newinstall.sql

Installation de FreePBX 1. 2. 3. 4. mv /etc/asterisk/sip_notify.conf /etc/asterisk/sip_notify.conf.backup /usr/src/freepbx/freepbx-2.10.0/start_asterisk start pear install DB /usr/src/freepbx-2.9.0/install_amp

Rpondre aux diffrentes questions, comme suis (choix par default sauf pour le chemin /var/www et ladresse IP de votre serveur) :

Enter your USERNAME to connect to the asterisk database: [asteriskuser] Enter your PASSWORD to connect to the asterisk database: [amp109] Enter the hostname of the asterisk database: [localhost] Enter a USERNAME to connect to the Asterisk Manager interface: [admin] Enter a PASSWORD to connect to the Asterisk Manager interface: [amp111] Enter the path to use for your AMP web root: [/var/www/html] /var/www/freePBX Enter the IP ADDRESS or hostname used to access the AMP web-admin: [xx.xx.xx.xx] Adresse IP du Serveur Enter a PASSWORD to perform call transfers with the Flash Operator Panel: [passw0rd] Use simple Extensions [extensions] admin or separate Devices and Users [deviceanduser]? [extensions] Enter directory in which to store AMP executable scripts: [/var/lib/asterisk/bin] Enter directory in which to store super-user scripts: [/usr/local/sbin]

On fait tourner le serveur web apache2 avec les droits de lutilisateur Asterisk : 1. 2. 3. 4. 5. cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf-orig sed -i "s/\(^User *\)\(.*\)/\1asterisk/" /etc/apache2/apache2.conf sed -i "s/\(^Group *\)\(.*\)/\1asterisk/" /etc/apache2/apache2.conf /etc/init.d/apache2 stop /etc/init.d/apache2 start

Finaliser linstallation Avant toutes choses, il faut maintenant se rendre sur linterface web de freepbx (login : admin, password : admin) et cliquer sur la barre rouge Apply Configuration Changes . Changement du mot de passe SQL pour le user SQL asteriskuser (default amp109) : 1. 2. 3. 4. 5. 6. Editer le fichier /etc/amportal.conf et remplacer la valeur de la variable AMPDBPASS Editer le fichier /etc/asterisk/cdr_mysql.conf et remplacer la valeur de la variable password Editer le fichier /etc/asterisk/extensions_additional.conf et rempalcer la valeur de la variable AMPDBPASS Editer le fichier /etc/freepbx.conf et remplacer la valeur de la variable $amp_conf['AMPDBPASS'] Effectuer le changement dans la base SQL comme suis : NEWPASSWORD='password'; sed -i "s/\(^AMPDBPASS=*\)\(.*\)/\1$NEWPASSWORD/" /etc/amportal.conf sed -i "s/\(^password = *\)\(.*\)/\1$NEWPASSWORD/" /etc/asterisk/cdr_mysql.conf sed -i "s/\(^AMPDBPASS = *\)\(.*\)/\1$NEWPASSWORD/" /etc/asterisk/extensions_additional.conf sed -i "s/\($amp_conf\['AMPDBPASS'\]\\t= '*\)\(.*\)/\1$NEWPASSWORD';/" /etc/freepbx.conf echo "SET PASSWORD FOR 'asteriskuser'@'localhost' = PASSWORD('$NEWPASSWORD');" | mysql -u root -p

Changement du mot de passe de Asterisk Manager (default amp111): 1. 2. 3. 4. 5. 6. Editer le fichier /etc/asterisk/manager.conf et changer la valeur de la variable secret Editer le fichier /etc/asterisk/extensions_additional.conf et changer la valeur de la variable AMPMGRPASS Editer le fichier /etc/amportal.conf et changer la valeur de la variable AMPMGRPASS Recharger le module manager de asterisk NEWPASSWORD='password'; sed -i "s/\(^secret = *\)\(.*\)/\1$NEWPASSWORD/" /etc/asterisk/manager.conf sed -i "s/\(^AMPMGRPASS = *\)\(.*\)/\1$NEWPASSWORD/" /etc/asterisk/extensions_additional.conf sed -i "s/\(^AMPMGRPASS=*\)\(.*\)/\1$NEWPASSWORD/" /etc/amportal.conf asterisk -r -x "module reload manager" echo "UPDATE freepbx_settings SET value='$NEWPASSWORD' WHERE keyword='AMPMGRPASS';" | mysql -u root -p asterisk

You might also like