Installation et compilation de FreeSWITCH 1.10.12 via Docker

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.

Étiquettes: FreeSWITCH Docker Debian 12 compilation VoIP

Publié le 10 juillet à 02h55