Installation Asterisk - FreePBX

12
Installation Asterisk Asterisk est un projet démarré en 1999 par Mark Spencer. Son objectif était alors de fournir à Linux un commutateur téléphonique complet et totalement libre. Aujourd’hui Asterisk est un PABX (Private Automatic Branch eXchange) d’une rare puissance et souplesse, capable de gérer la téléphonie analogique, mais surtout, et c’est ce qui nous intéresse, la voix sur IP. La VoIP sur Asterisk passe entre autre par la prise en charge d’un protocole standard, ouvert et très largement utilisé, le SIP (Session Initiation Protocol). SIP qui est un protocole très proche d’HTTP qui n’est pas limité à la seule voix mais qui prend aussi en charge la vidéo et l a messagerie instantanée. D’un point de vue fonctionnalité, Asterisk permet tout ce que l’on peut attendre d’un PABX moderne: La gestion des postes téléphonique sur IP locaux. Il peut s’agir de téléphones physiques mais aussi logiciels (ou SoftPhone) comme Ekiga ou X-lite. Boîtes vocales, transfert d’appel, mise en attente etc… Installation d’Asterisk Il y a deux façons d’installer Asterisk sur une distribution à base de Debian, la première via le gestionnaire de paquet de Debian, la seconde en compilant directement la dernière version d’Asterisk. Nous allons installer Asterisk en compilant ses sources pour pouvoir disposer de la dernière version d’Asterisk. Préparation à l’installation On commence par mettre à jour notre distribution et installer les dépendances nécessaires à la compilation d’Asterisk. 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 créer un dossier ou nous allons placer les sources d’Asterisk dans /usr/src 1. mkdir /usr/src/asterisk 2. cd /usr/src/asterisk Installation On télécharge la dernière version d’Asterisk et on l’ installe (à l’écriture de ce tuto la dernière version d’Asterisk était la 10.7.0) 1. wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk- 10.7.0.tar.gz 2. tar xvzf asterisk-10.7.0.tar.gz 3. cd asterik-asterisk-10.7.0 4. ./configure 5. make menuselect La commande make menuselect va faire apparaître un écran qui va vous permettre de personnaliser votre installation d’Asterisk.

Transcript of Installation Asterisk - FreePBX

Page 1: Installation Asterisk - FreePBX

Installation Asterisk

Asterisk est un projet démarré en 1999 par Mark Spencer. Son objectif était alors de fournir à Linux un commutateur téléphonique

complet et totalement libre.

Aujourd’hui Asterisk est un PABX (Private Automatic Branch eXchange) d’une rare puissance et souplesse, capable de gérer la

téléphonie analogique, mais surtout, et c’est ce qui nous intéresse, la voix sur IP.

La VoIP sur Asterisk passe entre autre par la prise en charge d’un protocole standard, ouvert et très largement utilisé, le SIP

(Session Initiation Protocol).

SIP qui est un protocole très proche d’HTTP qui n’est pas limité à la seule voix mais qui prend aussi en charge la vidéo et la

messagerie instantanée.

D’un point de vue fonctionnalité, Asterisk permet tout ce que l’on peut attendre d’un PABX moderne:

La gestion des postes téléphonique sur IP locaux. Il peut s’agir de téléphones physiques mais aussi logiciels (ou SoftPhone)

comme Ekiga ou X-lite.

Boîtes vocales, transfert d’appel, mise en attente etc…

Installation d’Asterisk

Il y a deux façons d’installer Asterisk sur une distribution à base de Debian, la première via le gestionnaire de paquet de Debian,

la seconde en compilant directement la dernière version d’Asterisk.

Nous allons installer Asterisk en compilant ses sources pour pouvoir disposer de la dernière version d’Asterisk.

Préparation à l’installation

On commence par mettre à jour notre distribution et installer les dépendances nécessaires à la compilation d’Asterisk.

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 créer un dossier ou nous allons placer les sources d’Asterisk dans /usr/src

1. mkdir /usr/src/asterisk

2. cd /usr/src/asterisk

Installation

On télécharge la dernière version d’Asterisk et on l’ installe (à l’écriture de ce tuto la dernière version d’Asterisk était la 10.7.0)

1. wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-

10.7.0.tar.gz

2. tar xvzf asterisk-10.7.0.tar.gz

3. cd asterik-asterisk-10.7.0

4. ./configure

5. make menuselect

La commande make menuselect va faire apparaître un écran qui va vous permettre de personnaliser votre installation d’Asterisk.

Page 2: Installation Asterisk - FreePBX

Nous allons en profiter pour installer les sons français 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 à l’écran précédent.

Puis dans Music On Hold File Packages cochez MOH-OPSOUND-ULAW (Décochez 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 à l’écran principal refaites Echap et appuyez sur S pour sauvegarder les changements.

Enfin tapez les commandes suivantes pour terminer l’installation:

1. make

2. make install

3. make samples

4. make config

Attention ! Pendant le make install assurez-vous que votre serveur soit connecté à internet parce que celui-ci va

télécharger les packages de langue FR que nous avons sélectionné.

Après toutes ces commandes vous pouvez lancer Asterisk à l’aide de la commande suivante:

1. /etc/init.d/asterisk start

Vous pouvez vérifier le bon fonctionnement de votre serveur Asterisk avec la commande suivante qui sert à afficher la console

d’Asterisk

Page 3: Installation Asterisk - FreePBX

1. asterisk -cvr

Si vous avez les lignes suivantes qui s’affichent:

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 .......................

C’est que votre serveur Asterisk est démarré et fonctionnel !

Pour le GUI : http://downloads.asterisk.org/pub/telephony/asterisk-gui/asterisk-gui-2.1.0-rc1.tar.gz

Configuration d’Asterisk et création des comptes utilisateurs

Pour configurer notre serveur Asterisk nous allons modifier les fichiers suivants:

Le fichier sip.conf : pour la configuration général d’Asterisk

Le fichier users.conf : pour la configuration des utilisateurs

Le fichier extensions.conf : pour la configuration du Dialplan

C’est 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 simultanées une pour la console Asterisk et une pour l’édition des fichiers de configurations.

Sous Windows je vous recommande MobaXterm et sous Linux Terminator.

MobaXterm

Page 4: Installation Asterisk - FreePBX

Nous allons commencer par éditer le fichier sip.conf qu va nous permettre pour l’instant de mettre les sons par défauts en

Français.

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 d’Asterisk il vous suffit de taper la commande : reload cete commande permet de recharger les fichiers de

configurations d’Asterik sans redémarrer le serveur.

Création des utilsateurs

La création 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 numéros 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 création d’un utlisateur:

[6002] –> Numéro SIP

type=friend –> type d’objet SIP, friend = utilisateur

host=dynamic –> Vous pouvez vous connecter a ce compte SIP a partir de n’importe quelle adresse IP

dtmfmode=rfc2833 –> type de rfc utilisé

Page 5: Installation Asterisk - FreePBX

disallow=all –> Désactivation de tous les codecs

allow=ulaw –> Activation du codec µlaw

fullname = Albert DUPONT –> Prénom et NOM de l’utilisateur (ce qui sera afficher sur le téléphone lors d’un appel)

username = adupont –> Nom d’utilisateur

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 Accountcode Def.Context ACL Forc

erPort 6002 secret work No Yes 6001 secret work No Yes

Vous voyez que quand même créer un utlisateur est assez lourd, nous pouvons aussi utiliser des templates pour pouvoir créer des

utilisateurs plus rapidement.

Reprenons le fichier users.conf avec les mêmes utilisateurs de créer 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 création

des deux utilisateurs.

Ce qui réduit la création d’un utilisateur à quatre lignes au lieu de dix.

Nos utilisateurs sont créer, mais ils n’ont pas encore la possibilité de s’appeller.

Nous allons maintenant éditer le fichier extensions.conf qui permet de configurer le Dialplan.

Page 6: Installation Asterisk - FreePBX

Configuration du Dialplan

Le Dialplan ou plan d’appel est le fichier de configuration d’Asterisk qui permet de configurer en gros:

« Que de passe-t’ il si j’appelle tel numéro? »

Nous allons donc configurer Asterisk de telle sorte que l’utilisateur 6001 puisse appeler le numéro 6002.

Voici donc pour exemple mon fichier extensions.conf

Ce sont le trois dernières lignes qui vont nous intéresser.

[general] static=yes writeprotect=no clearglobalvars=no [globals]

CONSOLE=Console/dsp ; Console interface for demo IAXINFO=guest ; IAXtel username/password

TRUNK=DAHDI/G2 ; Trunk interface TRUNKMSD=1 ; MSD digits to strip (usually 1 or 0)

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

Dans ces trois dernières lignes nous allons voir deux choses, les contextes et les extensions.

[work] est le contexte c’est une sorte de conteneur dans lequel les utilisateurs faisant partis de ce contexte pourrons communiquer

entre eux.

Lors de la création de nos deux utilisateurs nous avons spécifié le contexte work.

exten => : déclare l’extension (on peut aussi simplement dire numéros)

_6XXX : Prend les extensions (ou numéros) de 6000 a 6999 le « _ » permet d’utiliser des regex

1 : Ordre de l’extension

Dial : application qui va être utilisé

SIP: Protocol qui va être utilisé

${EXTEN} : variable de l’extension composé, si on appelle le 6001 la variable ${EXTEN} prendra comme valeur 6001

20: temps d’attente avant de passer a l’étape suivante.

Donc la ligne exten => _6XXX,1,Dial(SIP/${EXTEN},20) se traduit par:

Quand on compose le numéro (par exemple) 6001, on appelle le numéro 6001 et si au bout de 20 secondes il n’y a pas de

réponses on passe à la ligne du dessous.

Dans le cas du numéros 6001 la ligne devient comme ceci: exten => 6001,1,Dial(SIP/6001,20), mais l’avantage de la ligne

précédente est qu’elle permet d’appeler les numéros de 6000 a 6999.

La seconde ligne : exten => _6XXX,2,Hangup() permet de raccrocher si il n’y a pas de réponses au bout des 20 secondes.

Maintenant, vous pouvez enregistrer votre fichier extensions.conf et faire un reload dans la console d’Asterisk.

Passer son premier appel

Maintenant que nos deux utilisateurs sont créés 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 n’importe 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 d’avoir au moins deux clients SIP.

Un que vous allez configurer avec le compte de John DOE et l’autre avec le compte d’Albert DUPONT.

Voici par exemple la configuration d’un compte sous X-LITE 5 sous Windows 7.

Page 7: Installation Asterisk - FreePBX

Le Domain est l’adresse IP ou hostname de votre serveur SIP

X-LITE 5 sous Windows 8

Et sous CSipSimple

Page 8: Installation Asterisk - FreePBX

CSipSmple sous Android

Une fois les deux clients configurés il vous suffit d’appeler par exemple à partir du compte de John DOE (6001) le numéro 6002.

Page 9: Installation Asterisk - FreePBX

Appel entrant du 6002 vers le 6001

Page 10: Installation Asterisk - FreePBX

Free PBX

Installation des prérequis :

1. aptitude install linux-source-2.6 kernel-package make g++ libncurses5-dev

2. cd /usr/src/

3. tar xvjf /usr/src/linux-source-2.6.32.tar.bz2

4. ln -s /usr/src/linux-source-2.6.32 /usr/src/linux

5. cp /boot/config-`uname -r` /usr/src/linux/.config

6. cd linux/

7. yes "" | make oldconfig

8. make prepare

9. make prepare scripts

Installation de dahdi-linux

1. cd /usr/src/

2. wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz

3. tar zxvf dahdi-linux-complete-current.tar.gz

4. cd /usr/src/dahdi-linux-complete-<version>/linux/

5. make

6. make install

Installation de dahdi-tools

1. cd /usr/src/dahdi-linux-complete-<version>/tools/

2. ./configure

3. make

4. make install

5. make config

Installation de la libpri

1. cd /usr/src/

2. wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4-current.tar.gz

3. tar zxvf libpri-1.4-current.tar.gz

4. cd /usr/src/libpri-<version>/

5. make

6. 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 l’installation de lame

1. wget "http://debian-multimedia.org/pool/main/d/debian-multimedia-keyring/debian-multimedia-

keyring_2010.12.26_all.deb" -O /tmp/debian-multimedia-keyring_2010.12.26_all.deb

2. dpkg -i /tmp/debian-multimedia-keyring_2010.12.26_all.deb

3. aptitude update

4. aptitude install lame libmp3lame-dev

Page 11: Installation Asterisk - FreePBX

Installation de FreePBX

Téléchargement et installation des prérequis :

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. tar zxvf freepbx-2.9.0.tar.gz

4. cd /usr/src/freepbx-2.9.0/

5. 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. sed -i "s/\(upload_max_filesize *= *\)\(.*\)/\120M/" /etc/php5/apache2/php.ini

2. sed -i "s/\(memory_limit *= *\)\(.*\)/\1100M/" /etc/php5/apache2/php.ini

Créer un groupe et un utilisateur Asterisk :

1. groupadd asterisk

2. useradd -c "asterisk PBX" -d /var/lib/asterisk -g asterisk asterisk

Création de la base et des utilisateurs MySQL

1. mysql -u root -p

2. Enter password:

3. mysql> create database asteriskcdrdb;

4. mysql> create database asterisk;

5. mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';

6. mysql> GRANT ALL PRIVILEGES ON asterisk.* TO asteriskuser@localhost IDENTIFIED BY 'amp109';

7. mysql> quit;

Creation des tables :

1. mysql -u asteriskuser -pamp109 asteriskcdrdb < /usr/src/freepbx/freepbx-2.10.0/SQL/cdr_mysql_table.sql

2. mysql -u asteriskuser -pamp109 asterisk < /usr/src/freepbx/freepbx-2.10.0/SQL/newinstall.sql

Installation de FreePBX

1. mv /etc/asterisk/sip_notify.conf /etc/asterisk/sip_notify.conf.backup

2. /usr/src/freepbx/freepbx-2.10.0/start_asterisk start

3. pear install DB

4. /usr/src/freepbx-2.9.0/install_amp

Répondre aux différentes questions, comme suis (choix par default sauf pour le chemin /var/www et l’adresse 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]

Page 12: Installation Asterisk - FreePBX

On fait tourner le serveur web apache2 avec les droits de l’utilisateur Asterisk :

1. cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf-orig

2. sed -i "s/\(^User *\)\(.*\)/\1asterisk/" /etc/apache2/apache2.conf

3. sed -i "s/\(^Group *\)\(.*\)/\1asterisk/" /etc/apache2/apache2.conf

4. /etc/init.d/apache2 stop

5. /etc/init.d/apache2 start

Finaliser l’installation

Avant toutes choses, il faut maintenant se rendre sur l’interface 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) :

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 :

1. NEWPASSWORD='password';

2. sed -i "s/\(^AMPDBPASS=*\)\(.*\)/\1$NEWPASSWORD/" /etc/amportal.conf

3. sed -i "s/\(^password = *\)\(.*\)/\1$NEWPASSWORD/" /etc/asterisk/cdr_mysql.conf

4. sed -i "s/\(^AMPDBPASS = *\)\(.*\)/\1$NEWPASSWORD/" /etc/asterisk/extensions_additional.conf

5. sed -i "s/\($amp_conf\['AMPDBPASS'\]\\t= '*\)\(.*\)/\1$NEWPASSWORD';/" /etc/freepbx.conf

6. echo "SET PASSWORD FOR 'asteriskuser'@'localhost' = PASSWORD('$NEWPASSWORD');" | mysql -u root -p

Changement du mot de passe de Asterisk Manager (default amp111):

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

1. NEWPASSWORD='password';

2. sed -i "s/\(^secret = *\)\(.*\)/\1$NEWPASSWORD/" /etc/asterisk/manager.conf

3. sed -i "s/\(^AMPMGRPASS = *\)\(.*\)/\1$NEWPASSWORD/" /etc/asterisk/extensions_additional.conf

4. sed -i "s/\(^AMPMGRPASS=*\)\(.*\)/\1$NEWPASSWORD/" /etc/amportal.conf

5. asterisk -r -x "module reload manager"

6. echo "UPDATE freepbx_settings SET value='$NEWPASSWORD' WHERE keyword='AMPMGRPASS';" | mysql -u root

-p asterisk