RAPPORT DE PROJET
Plateforme VoIP
Microservices
Participants:
TAHIR Dongui Bostigui
SOUSSOU Madride Jadis
Chargé du cours:
Dr. Keba GUEYE
2025 - 2026
I. Introduction
1.1. Contexte et objectifs du projet
1.2. Technologies utilisées
II. Architecture Système & Réseau
2.1. Design de l'infrastructure conteneurisée
SOMMAIRE 2.2. Protocoles de communication (SIP/RTP)
III. Déploiement Microservices avec Docker
3.1. Orchestration via Docker Compose
IV. Configuration des Services Cœurs
4.1. PBX Asterisk 18 & Persistance
PostgreSQL 15
4.2. Interface Web d'Administration
(Nginx/HTML/JS)
V. Tests d’Appels & Validation
5.1. Analyse des flux avec sngrep
5.2. Validation des objectifs SIP/RTP
VI. Conclusion
INTRODUCTION
Ce projet consiste à concevoir
une plateforme de téléphonie sur IP
(VoIP) d'entreprise moderne reposant
sur une architecture microservices
conteneurisée via Docker, visant à
déployer un serveur Asterisk 18
couplé à une base de données
PostgreSQL 15 et une interface de
monitoring sous Nginx, tout en
assurant la portabilité et l'agilité du
système grâce à une automatisation
avancée par scripts PowerShell.
Architecture Système
& Réseau
L'infrastructure est divisée en trois couches
Couche Accès : Serveur Nginx exposant l'interface
web d'administration.
Couche Application : Le conteneur Asterisk 18
gérant la logique des appels.
Couche Données : PostgreSQL 15 stockant les
configurations et journaux d'appels
(CDR).
Protocoles de communication (SIP/RTP)
Le SIP (Port 5060 UDP) : Pour la signalisation (appel,
sonnerie, fin d'appel).
Le RTP (Ports 10000-20000 UDP) : Pour le transport
de la voix en temps réel.
Déploiement
Microservices
avec Docker
Le fichier docker-
[Link] définit l'ensemble
des services. Il assure que la
base de données PostgreSQL est
prête avant le démarrage
d'Asterisk.
Configuration des Services
Cœurs
Asterisk est configuré en mode
Realtime. Les comptes SIP ne sont pas
écrits dans des fichiers textes, mais lus
dynamiquement dans PostgreSQL 15.
Cela permet d'ajouter des utilisateurs
via l'interface web sans redémarrer le
serveur.
Interface Web d'Administration
(Nginx/HTML/JS)
Le serveur Nginx héberge une
interface développée en HTML/JS. Elle
communique avec les services pour
afficher :
1. Le statut des extensions (En
ligne/Hors ligne).
2. L'historique des appels stocké
dans la base de données.
Live Monitoring & Supervision
des flux (Objectif Clé)
Pour répondre au besoin de surveillance en
temps réel, une brique de monitoring a été intégrée.
Elle permet de suivre l'activité du serveur sans entrer
dans les lignes de commande complexes :
Statut des lignes :Visualisation en direct des
extensions "Online" ou "Offline".
Appels actifs : Affichage dynamique du nombre de
communications en cours via des requêtes JavaScript
sur l'AMI (Asterisk Manager Interface).
Santé du conteneur : Surveillance de la charge CPU
et RAM du conteneur Asterisk via l'interface web pour
anticiper toute dégradation de la qualité vocale.
Tests d’Appels & Validation
Configuration des Terminaux SIP
(Softphones)
Pour valider l'infrastructure, nous avons utilisé
des clients SIP (type Zoiper, Linphone ou MicroSIP)
installés sur des postes de travail ou des appareils
mobiles. Chaque terminal est configuré avec :
L'identifiant : Extension créée dans PostgreSQL (ex:
101).
Le domaine : Localhost
Le mot de passe : 1234
Tests d’Appels & Validation
Validation des appels et
qualité audio
Une série de tests a été effectuée
pour confirmer le bon fonctionnement des flux
SIP/RTP :
Test d'écho : Appel d'un numéro de test pour
vérifier la latence et la bidirectionnalité du son.
Appel entre extensions : Appel de l'extension
101 vers la 102 pour valider le routage interne.
Vérification RTP : Confirmation que le son est
clair des deux côtés, prouvant que les ports UDP
10000-20000 du conteneur Docker sont
correctement ouverts.
Vérification du Live
Monitoring
Pendant l'appel,
l'interface web d'administration
(Nginx) a été consultée pour
confirmer que la ligne apparaissait
bien comme "Occupée" (In Use) et
que les statistiques de trafic
remontaient en temps réel.
Conclusion
En conclusion, le déploiement de cette
plateforme VoIP démontre la puissance de la
conteneurisation pour les services de
communication. L'utilisation conjointe d'Asterisk 18
et de PostgreSQL 15 sous Docker a permis de créer
un environnement de téléphonie robuste, flexible et
facilement reproductible grâce aux scripts
d'automatisation.
Bien que la brique de monitoring en temps
réel nécessite encore quelques ajustements
techniques pour être pleinement opérationnelle,
l'infrastructure principale est fonctionnelle. Les tests
d'appels ont validé la parfaite maîtrise des flux SIP et
RTP, prouvant que cette architecture microservices
est une solution performante pour répondre aux
besoins de téléphonie moderne d'une entreprise.