Déployer son propre serveur 3CX sur un VPS plutôt que de louer la version hébergée présente trois avantages concrets : le contrôle total des données d’appel, un coût mensuel qui se réduit au prix d’une machine virtuelle, et la liberté de dimensionner le serveur selon ses besoins. La contrepartie est qu’il faut installer et sécuriser le système soi-même. Ce tutoriel vous guide de la machine Debian nue jusqu’à un PBX 3CX V20 opérationnel, prêt à recevoir sa première extension.
Prérequis
- Un VPS avec Debian 12 « Bookworm » fraîchement installé, en 64 bits, c’est la seule version supportée par 3CX V20.
- Au minimum 2 vCPU et 2 Go de RAM (4 Go recommandés dès qu’on dépasse une poignée d’appels simultanés).
- Un accès root ou sudo en SSH.
- Un nom de domaine pleinement qualifié (FQDN), par exemple
pbx.monentreprise.com, pointant vers l’adresse IP publique du VPS. 3CX en a besoin pour générer un certificat TLS valide. - Les ports suivants ouverts dans le pare-feu du fournisseur : 5001 (interface web HTTPS), 5060 et 5061 (SIP), 9000-10999 en UDP (média RTP).
- Niveau : intermédiaire. Temps estimé : 30 à 45 minutes.
Étape 0 — Choisir et dimensionner le VPS
Le choix du serveur conditionne la qualité des appels bien plus que n’importe quel réglage logiciel. Trois critères comptent. Le processeur d’abord : la téléphonie consomme peu tant qu’aucun transcodage n’a lieu, mais dès que des codecs différents doivent être convertis en temps réel, chaque appel mange du CPU. Deux cœurs suffisent pour une dizaine d’appels simultanés sans transcodage ; visez quatre cœurs au-delà. La mémoire ensuite : 2 Go permettent l’installation, mais 4 Go offrent une marge confortable pour les boîtes vocales et l’enregistrement. La localisation enfin, et c’est le critère le plus négligé : plus le serveur est proche géographiquement de vos utilisateurs et de votre opérateur, plus la latence est basse. Un VPS situé à des milliers de kilomètres ajoute des dizaines de millisecondes à chaque paquet vocal, ce qui dégrade la conversation.
Côté fournisseur, n’importe quel hébergeur proposant Debian 12 en image officielle convient. Évitez les offres « conteneur » de type OpenVZ : 3CX exige une virtualisation complète (KVM) pour gérer correctement les modules réseau. Au moment de commander, sélectionnez explicitement l’image Debian 12 (Bookworm) 64 bits et non une image préconfigurée avec un panneau de contrôle, qui occuperait les ports dont 3CX a besoin.
Comprendre ce qui change dans la version 20
Si vous avez déjà côtoyé une ancienne version de 3CX, sachez que la V20 a fusionné l’ancienne « console de gestion » et le client web en une seule interface accessible sur le port 5001. Il n’y a plus deux adresses à retenir : toute l’administration et l’usage quotidien passent par la même application web, avec des droits différents selon que l’on se connecte en administrateur ou en simple utilisateur. La mise à jour 9, sortie en mai 2026, a encore affiné ce client web avec une navigation repensée et des files d’attente plus riches. Cette unification simplifie le déploiement mais rend le port 5001 critique : c’est la porte d’entrée de tout le système, à protéger en priorité.
Étape 1 — Préparer le système Debian
Avant toute installation applicative, un serveur doit être à jour et correctement nommé. 3CX s’appuie sur le nom d’hôte du système et a besoin d’un espace d’échange (swap) suffisant pour absorber les pics de charge sans planter. On commence donc par mettre à jour les paquets et installer deux utilitaires que l’installateur attend.
apt update && apt -y full-upgrade
apt -y install net-tools dphys-swapfile gnupg2 wget
Le paquet net-tools fournit des commandes réseau dont l’installateur se sert pour détecter l’adresse IP, et dphys-swapfile crée automatiquement un fichier d’échange dimensionné. Si la commande se termine sans erreur, le système est prêt. Définissez ensuite un nom d’hôte cohérent avec votre FQDN :
hostnamectl set-hostname pbx
Vérifiez avec hostname que le nom est bien pris en compte. Ce nom apparaîtra dans les journaux et dans certains certificats internes ; un nom clair facilite le diagnostic ultérieur.
Étape 2 — Ajouter le dépôt officiel 3CX
3CX distribue son logiciel via un dépôt APT signé. Installer depuis ce dépôt officiel garantit que vous obtenez la dernière mise à jour de la version 20 et que les futures montées de version se feront proprement avec apt. La première commande télécharge la clé publique de signature et l’enregistre dans le trousseau du système ; la seconde déclare le dépôt pour Debian 12 (« bookworm »).
wget -O- https://repo.3cx.com/key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/3cx-archive-keyring.gpg >/dev/null
echo "deb [arch=amd64 by-hash=yes signed-by=/usr/share/keyrings/3cx-archive-keyring.gpg] http://repo.3cx.com/3cx bookworm main" | sudo tee /etc/apt/sources.list.d/3cxpbx.list
La clé est convertie en format binaire par gpg --dearmor avant d’être stockée dans /usr/share/keyrings, l’emplacement recommandé sur Debian 12. Une fois ces deux commandes passées sans erreur, rafraîchissez la liste des paquets pour que le nouveau dépôt soit pris en compte :
apt update
La sortie doit mentionner une ligne repo.3cx.com récupérée avec succès. Si APT signale une signature invalide, c’est que la clé n’a pas été correctement enregistrée : reprenez la commande wget de l’étape.
Étape 3 — Installer le paquet 3CX
L’installation proprement dite tient en une commande. Le paquet 3cxpbx tire toutes ses dépendances (serveur web, base de données, moteur d’appel) automatiquement. C’est l’étape la plus longue car plusieurs centaines de mégaoctets sont téléchargés et configurés.
apt -y install 3cxpbx
À la fin de l’installation, l’installateur affiche dans le terminal une URL de configuration de la forme http://<adresse-IP>:5015/... accompagnée d’un jeton. Notez précieusement cette ligne : c’est par là que passe toute la suite. Si vous l’avez perdue, relancez l’assistant avec la commande indiquée dans la documentation du paquet.
Pendant cette phase, le paquet déploie en arrière-plan tout ce dont un PBX a besoin : un serveur web Nginx qui sert l’interface, un moteur de base de données PostgreSQL qui stocke la configuration et l’historique des appels, le service de gestion d’appels (le « call manager », véritable cœur SIP), et un contrôleur de session intégré qui aide les clients distants à traverser les pare-feu. Vous n’avez aucun de ces composants à configurer manuellement : c’est précisément l’intérêt d’une solution clé-en-main par rapport à un assemblage Asterisk où chaque brique se déclare à la main.
Étape 4 — Lancer l’assistant de configuration web
Toute la configuration de 3CX se fait dans le navigateur, pas en ligne de commande. Ouvrez l’URL notée à l’étape précédente depuis votre poste. L’assistant vous demande d’abord de créer le compte administrateur du PBX : adresse e-mail et mot de passe robuste. Ce compte n’est pas une extension téléphonique, c’est le compte de gestion de tout le système — protégez-le comme un accès root.
L’assistant propose ensuite de choisir entre une installation reliée au compte 3CX (licence et mises à jour gérées en ligne) ou une configuration manuelle. Pour un déploiement auto-hébergé, suivez le parcours qui vous laisse fournir votre propre FQDN.
Étape 5 — Configurer le nom de domaine et le certificat
C’est l’étape qui détermine si vos clients web et mobiles pourront se connecter de manière sécurisée. L’assistant demande le FQDN que vous avez préparé (par exemple pbx.monentreprise.com). 3CX vérifie que ce nom pointe bien vers l’IP du serveur, puis génère automatiquement un certificat TLS reconnu via Let’s Encrypt. C’est pourquoi le port 80 doit être temporairement accessible : la validation du certificat en a besoin.
L’assistant vous fait aussi confirmer les ports : 5001 pour l’interface web et le client, 5060/5061 pour le SIP. Conservez les valeurs par défaut sauf raison impérieuse — les changer complique les configurations ultérieures des postes. Une fois le certificat émis, l’interface bascule en HTTPS : c’est le signal que la sécurisation de base est en place.
Étape 6 — Créer la première extension
Une extension est l’équivalent d’un poste téléphonique : un numéro interne et des identifiants que se partagent l’utilisateur et son téléphone ou softphone. L’assistant vous invite à créer la première extension, généralement le numéro 100 pour l’administrateur. Renseignez nom, prénom et adresse e-mail : 3CX enverra automatiquement à cette adresse un message de bienvenue contenant le QR code et les liens de configuration des applications.
Réfléchissez dès maintenant à la longueur de vos numéros internes. Des extensions à trois chiffres (100, 101, 102…) conviennent à une PME de quelques dizaines de postes ; une organisation plus grande optera pour quatre chiffres afin de réserver des plages par service. Ce choix est structurant car il influence tout le plan de numérotation : le modifier après coup oblige à reconfigurer chaque poste. Pensez aussi à laisser des numéros « ronds » libres pour les usages spéciaux — un numéro d’accueil général, une conférence, une boîte vocale commune.
À ce stade, le système est fonctionnel pour les appels internes : deux extensions enregistrées peuvent déjà s’appeler entre elles. Vous ne pouvez pas encore joindre l’extérieur — cela nécessite un trunk SIP, objet du tutoriel suivant.
Étape 7 — Vérifier que le système tourne
Avant de déclarer la victoire, confirmez que les services 3CX sont bien démarrés et que l’interface répond. De retour en SSH, listez l’état des services systemd liés à 3CX :
systemctl list-units '3cx*' --type=service
Tous les services listés doivent être à l’état active (running). Si l’un d’eux est en failed, la commande journalctl -u <nom-du-service> -n 50 en révèle la cause (le plus souvent un port déjà occupé ou un FQDN qui ne résout pas). Ouvrez enfin https://pbx.monentreprise.com:5001 dans le navigateur : la page de connexion du client web 3CX doit s’afficher avec un cadenas de certificat valide. Connectez-vous avec l’extension 100 pour confirmer que tout répond.
Étape 8 — Premiers réflexes de sécurité
Un serveur de téléphonie fraîchement installé et exposé à Internet est repéré par les robots malveillants en quelques heures. Avant de mettre le système en production, trois gestes minimaux s’imposent ; la sécurisation complète fait l’objet d’un tutoriel dédié, mais ces réflexes de base ne se négocient pas. D’abord, désactivez l’authentification SSH par mot de passe au profit d’une clé : un serveur dont le mot de passe root peut être deviné est une cible facile. Ensuite, restreignez l’accès au port d’administration 5001 aux seules adresses IP de confiance via le pare-feu du fournisseur, plutôt que de l’ouvrir au monde entier. Enfin, vérifiez que les mots de passe d’extension générés par 3CX sont bien longs et aléatoires — ne les remplacez jamais par des valeurs simples comme le numéro d’extension lui-même.
3CX intègre nativement un mécanisme de blocage des adresses qui multiplient les tentatives d’authentification échouées, ainsi qu’une liste noire d’adresses connues pour la fraude. Laissez ces protections activées. Pour aller plus loin, le tutoriel sécuriser 3CX V20 détaille l’anti-fraude, les certificats et les listes d’autorisation IP.
Erreurs fréquentes
| Erreur | Cause | Solution |
|---|---|---|
| L’assistant ne génère pas le certificat | FQDN qui ne pointe pas vers l’IP, ou port 80 fermé | Vérifier l’enregistrement DNS A, ouvrir temporairement le port 80 |
| « Package 3cxpbx not found » | Dépôt mal déclaré ou apt update oublié |
Recontrôler le fichier /etc/apt/sources.list.d/3cxpbx.list puis relancer apt update |
| Interface web inaccessible | Port 5001 bloqué par le pare-feu du fournisseur | Autoriser 5001/TCP dans le panneau du VPS |
| Installation qui échoue par manque de mémoire | RAM insuffisante, pas de swap | Vérifier que dphys-swapfile a bien créé un fichier d’échange |
Tutoriels associés
- Étape suivante logique : configurer un trunk SIP sur 3CX V20 et router les appels, pour joindre l’extérieur.
- Une fois le trunk en place : provisionner téléphones IP et softphones sur 3CX V20.
Pour aller plus loin
- Retour au guide : Téléphonie IP avancée : 3CX, Issabel et softphones WebRTC.
- Documentation officielle : manuel d’administration 3CX.
Questions fréquentes
Puis-je installer 3CX sur Ubuntu ?
Non. 3CX V20 ne supporte officiellement que Debian 12. Installer sur une autre distribution n’est pas pris en charge et expose à des dysfonctionnements lors des mises à jour.
L’édition gratuite suffit-elle ?
Pour une petite structure, l’édition gratuite couvre les besoins essentiels (appels internes, trunk SIP, applications). Les fonctions avancées de centre d’appels relèvent des éditions payantes.
Faut-il un FQDN public obligatoirement ?
Oui pour obtenir un certificat reconnu et permettre aux applications mobiles de se connecter de l’extérieur. En réseau strictement interne, un nom local est possible mais limite l’usage distant.
Comment mettre à jour 3CX ensuite ?
Comme le logiciel vient d’un dépôt APT, les mises à jour de maintenance se récupèrent avec apt update && apt upgrade, et les montées de version majeures suivent la procédure documentée par l’éditeur.