IPBX Facile avec FreePBX et docker
Le but de ce petit article est de vous décrire l'installation de FreePBX (un IPBX, téléphonie SIP, vidéoconférence, etc libre basé sur Asterisk) en mode labo.
Bien évidemment, ce setup ne convient pas à un setup de production!!!, il est là pour nous permettre de rapidement mettre en place et manipuler un IPBX dans le cadre du labo ou d'un réseau isolé.
Je le répète: DONT USE THIS IN PRODUCTION FFS
Installation
Prérequis
- Une VM Debian 13, 2 coeurs, 2Go de RAM, 20Go de disque
- Docker installé et configuré:
sudo apt install docker.io docker-compose git && sudo usermod -aG docker votre_utilisateur
Clonage du dépôt IZPBX (qui nous fournit le compose.yml):
git clone https://github.com/ugoviti/izpbx
Créer un fichier .env
cd izpbx
cp default.env .env
# ou vim, pour les personnes de goût :)
nano .env
Dans ce fichier .env, modifiez les variables d'environnement suivantes:
MYSQL_PASSWORD=unpasswordsecure
MYSQL_ROOT_PASSWORD=unpasswordencoreplussecure
# on a pas besoin de Fail2ban en labo
FAIL2BAN_ENABLED=false
FAIL2BAN_ASTERISK_ENABLED=false
lancer la stack compose
Classique, dans le répertoire izpbx:
docker-compose up -d
Pour vérifier que tout se passe bien (il faudra attendre quelques minutes):
docker-compose logs -f
Configuration de FreePBX
Une fois la stack compose lancée et initialisée, rendez-vous sur http://IP_DE_VOTRE_VM avec votre navigateur.
On vous demandera de créer un utilisateur administrateur ainsi que son mot de passe. Notez bien ces informations!
Une fois connecté avec vos identifiants fraîchements créés, nous allons créer des utilisateurs (Menu Admin/User Management), au moins deux, pour pouvoir s'appeler:

Pensez bien à cliquer sur "Submit" tout en bas et sur "Apply Config" en haut dans le menu après chaque modification!
Ensuite, dans Settings/Asterisk SIP Settings, vérifiez les paramètres SIP, modifiez l'adresse "External Address" pour la remplacer par l'IP de votre VM (sinon, ça va être l'IP publique du labo, et on ne veut pas que notre PBX fasse des trous dans le NAT du routeur du labo ). L'exemple ci-dessous concerne mon setup de test sur mon homelab perso, donc, adaptez au labo de l'epsi (172.17.0.0/16 et 172.18.0.0/16 sont normaux et à conserver, il s'agit des subnets internes de docker!):

Enfin, il ne nous reste plus qu'à lier des numéros de téléphone à nos utilisateurs. Ça se passe dans le menu "Applications/Extensions", cliquez sur "+ Add Extension" et sélectionnez "Add New SIP....", renseignez le numéro de téléphone voulu dans "User Extension", choisissez un secret dont vous vous souviendrez (évidemment, en production, des mots de passe forts sont importants!!), et liez un utilisateur existant à ce numéro dans le champ "Link to a Default User" (ici, janmichayl):

Et voilà!
Client SIP
Il existe de nombreux clients SIP, parmi eux:
- Linphone (Linux, Android, Windows, macOS…): https://linphone.org
- Twinkle (oldschool, linux)
- Gnome Calls (Linux)
Et probablement une ribambelle d'autres softphones.
Linphone est pas mal et a l'avantage d'être multi-plateformes. Une fois lancé, cliquez sur l'icône "engrenages" en bas à gauche, puis "Créer un nouveau compte", et remplissez le formulaire de la sorte (en adaptant à votre setup, bien sûr) - supprimez bien tous les liens vers linphone:

Votre mot de passe vous sera ensuite demandé, et hop.
Vous pouvez tester de vous appeler les uns les autres - c'est rigolo