Pour compiler et installer la version stable 1.10.12 de FreeSWITCH, il est recommandé d'utiliser les Dockerfiles fournis dans le dépôt officiel de SignalWire. Ces fichiers permettent une installation reproductible sur un environnement Debian 12.
Le répertoire docker/build contient trois fichiers Dockerfile distincts, chacun servant un objectif spécifique :
| Fichier | Description |
|---|---|
base-image-from-repo.Dockerfile |
Installe FreeSWITCH directement depuis les dépôts binaires officiels. Nécessite un token d'accès. Simple et rapide, mais ne permet pas de personnaliser les modules compilés. |
base-image-from-source.Dockerfile |
Crée une image Docker contenant toutes les dépendances requises pour la compilation. Utile pour générer des paquets .deb à partir du code source. |
debs-from-source.Dockerfile |
Génère une image permettant de construire les paquets de dépendances nécessaires à l'installation de FreeSWITCH. |
Prérequis : une machine Linux avec accès Internet, Git et Docker installés. Créez un répertoire de travail dédié.
Étape 1 : Compilation des paquets FreeSWITCH
Clonez le dépôt et construisez l'image de base pour la compilation :
git clone https://github.com/signalwire/freeswitch.git fs_source
cd fs_source
docker build -t builder-image -f docker/build/base-image-from-source.Dockerfile .
Pour spécifier une version précise, utilisez les arguments de build :
docker build -t builder-image \
--build-arg LIBKS_REF=v1.0.0 \
--build-arg BUILD_NUMBER=100 \
-f docker/build/base-image-from-source.Dockerfile .
Créez un répertoire local pour stocker les paquets générés :
mkdir -p ~/packages/fs
Exécutez la compilation à l'intérieur du conteneur. La durée dépend des performanecs réseau et système (10 à 30 minutes) :
docker run -it --rm \
-v ~/packages/fs:/output \
-v "$(pwd):/src/freeswitch" \
builder-image \
scripts/packaging/build/fsdeb.sh -b 50 -o /output
Les paquets .deb de FreeSWITCH seront disponibles dans ~/packages/fs.
Étape 2 : Génération des paquets de dépendances
Construisez l'image pour les dépendances :
docker build -t deps-builder -f docker/build/debs-from-source.Dockerfile .
Préparez un répertoire pour les dépendances :
mkdir -p ~/packages/deps
Lancez la génération des paquets de dépendances :
docker run -v ~/packages/deps:/output deps-builder
Étape 3 : Installation dans un conteneur Debian
Créez un fichier compose.yaml pour démarrer un conteneur Debian 12 :
services:
fs-base:
image: debian:bookworm
container_name: fs-environment
tty: true
privileged: true
restart: unless-stopped
environment:
- TZ=Europe/Paris
Démarrez le conteneur :
docker compose -f compose.yaml up -d
Copiez les paquets compilés dans le conteneur :
docker cp ~/packages/deps fs-environment:/root/dependencies
docker cp ~/packages/fs fs-environment:/root/freeswitch
Accédez au conteneur et installez les composants :
docker exec -it fs-environment bash
apt-get update
apt-get install -y /root/dependencies/*.deb
apt-get update
apt-get install -y /root/freeswitch/*.deb
Vérifiez l'installation avec which freeswitch et lancez le service avec freeswitch.
Étape 4 : Sauvegarde et déploiement de l'image
Engagez le conteneur personnalisé dans une nouvelle image :
docker commit fs-environment freeswitch-base:v1
Pour un déploiement continu, créez un fichier deployment.yaml :
services:
voip-server:
image: freeswitch-base:v1
container_name: freeswitch-service
privileged: true
restart: always
environment:
- TZ=Europe/Paris
network_mode: host
volumes:
- ./audio_files:/home/media
- ./custom_mod.so:/usr/lib/freeswitch/mod/custom_mod.so
- ./configuration:/etc/freeswitch
- ./logs:/var/log/freeswitch
command: ["freeswitch", "-ncwait", "-nonat", "-rp"]
Paramètres clés du service :
-ncwait: Lance FreeSWITCH en arrière-plan.-nonat: Désactive la détection NAT, adapté aux environnements conteneurisés avec réseau hôte.-rp: Active le traitement en temps réel.
Les volumes mappent les ressuorces audio, les modules personnalisés, la configuration et les journaux de manière persistante.