Proxmox : Asterisk dans un conteneur OpenVZ

Asterisk fonctionne de base sans problèmes dans un conteneur OpenVZ sauf que, si on veut pouvoir mettre en place des salles de conférence pour « parler à plusieurs », cela ne fonctionnera pas.

Pourquoi ?

MeetMe, le module de conférence d’Asterisk a besoin d’un timer pour synchroniser les voix des différents participants. Il doit pour cela accéder au hardware de la machine hors celui-ci est géré par l’OS hôte : Proxmox.

Il nous faut donc autoriser le conteneur OpenVZ à accéder au hardware de Proxmox.

Proxmox est un OS 64 bits. On devra donc obligatoirement virtualiser un OS 64 bits dans le conteneur OpenVZ pour pouvoir avoir accès au hardware et ainsi pouvoir activer la fonctionnalité de conférence d’Asterisk.

Mise en place d’Asterisk dans un conteneur 64 bits

On installe donc Asterisk sur un OS virtualisé 64 bits. Je prends l’exemple ici de la distribution Debian stable Lenny 5.0.

On update la liste des paquets puis on applique les dernières mises à jour de sécurité :

On installe Asterisk :

Compilation de Zaptel dans Proxmox

Une fois que c’est fait, on se connecte en SSH directement sur l’OS hôte : Proxmox, où l’on va installer le module hardware permettant la prise en charge de la conférence : Zaptel.

Zaptel se compile très bien avec la version de noyau 2.6.24 de proxmox. On vérifie que l’on est bien sur ce noyau :

Le cas échéant, on installe le noyau 2.6.24.

Une fois que l’on est sûr d’avoir le bon noyau, on installe module-assistant (outil Debian permettant de compiler facilement les modules) :

On prépare le système à compiler des modules :

Puis on compile le module zaptel :

zaptel-module va automatiquement être créé et toutes les dépendances nécessaires seront installées.

Remarque : Il ne faut jamais compiler et installer des outils de compilation sur un serveur en production. Il est préférable et même obligatoire de faire ces manipulations sur un serveur de test. Un paquet zaptel-module.deb va automatiquement être créé dans /usr/src/, c’est ce paquet compilé qu’il faudra installer sur le serveur en production.

Après installation, si le lancement du module pose problème, c’est sans doute parce qu’il manque son fichier de configuration /etc/zaptel.conf. Il faut le générer avec cette commande :

On démarre le service zaptel :

Une fois zaptel installé et fonctionnel sur Proxmox, on donne l’accès au hardware dans le conteneur OpenVZ (on suppose que le conteneur est le n° 101):

Les manipulations sur le serveur Proxmox sont terminées.

Finalisation de l’installation d’Asterisk

On se connecte maintenant au conteneur OpenVZ.

On donne les bons droits d’accès au device zaptel :

Afin de pouvoir gérer plus facilement les utilisateurs, on installe Asterisk Gui, une application web dédiée à ce travail.

On télécharge la dernière version :

On entre dans le répertoire asterisk-gui et on « configure » :

On « make »:

Puis on installe:

Là, l’installeur va vérifier que tout est OK au niveau de la config Asterisk. Suivre les instructions à l’écran, notamment lors de la création d’un compte d’admin dans le fichier manager.conf.

Note : pour pouvoir administrer Asterisk depuis un autre PC que localhost, il faut que :

…dans les fichiers http.conf et manager.conf du répertoire /etc/asterisk/.

Une fois l’installation terminée, un dernier réglage. Asterisk-gui ne s’installe pas dans le bon répertoire Debian.

On efface dans /usr/share/asterisk/ le répertoire static-http :

On crée un lien symbolique :

On rétablit les bons droits :

On redémarre le daemon:

Asterisk-gui est maintenant accessible à cette adresse :

http://ip.de.la.machine:8088/asterisk/static/config/index.html

2 thoughts on “Proxmox : Asterisk dans un conteneur OpenVZ”

  1. Merci pour ce tuto, mais il semble que le module zaptel ne soit plus maintenu.
    J’ai la belle erreur : »Unable to locate package zaptel-source » lors de l’installation.
    Avez-vous une autre solution pour mettre en place les conférences?
    Merci encore

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *