100 lines
5.0 KiB
Markdown
100 lines
5.0 KiB
Markdown
# NexusPBX - Système de Téléphonie IP Moderne & Souverain
|
|
|
|
**NexusPBX** est une plateforme de communication d'entreprise tout-en-un, moderne, ultra-légère et hautement sécurisée, construite au-dessus d'**Asterisk (PJSIP)**, **Nginx**, **PHP 8.4** et **SQLite 3**.
|
|
|
|
---
|
|
|
|
## 🚀 Fonctionnalités Clés
|
|
|
|
### 1. Gestion Avancée des Postes (PJSIP)
|
|
- **Multi-profils de transport** :
|
|
- **UDP Interne** (Réseau local d'entreprise, faible latence).
|
|
- **TLS + SRTP Chiffré** (Postes distants et nomades avec chiffrement de la signalisation et de la voix AES-128).
|
|
- **WebRTC WSS** (Téléphonie navigateur temps réel).
|
|
- **Détection dynamique en temps réel** : Analyse des contacts PJSIP en direct (transport actif négocié, User-Agent du téléphone, latence RTT, statut de joignabilité).
|
|
|
|
### 2. Annuaire d'Entreprise & XML Téléphones IP (Yealink)
|
|
- Synchronisation automatique en temps réel avec les extensions PBX (numéro, nom, email, groupe).
|
|
- Prise en charge des contacts externes (fournisseurs, clients, partenaires).
|
|
- Gestion des avatars et photos de contacts.
|
|
- **Endpoint XML Yealink officiel** :
|
|
- `http://<PBX_IP>:8080/phonebook.php?group=<NomDuGroupe>` (ou `?group=all`)
|
|
- Génération conforme `<YealinkIPPhoneDirectory>` avec `<Name>`, `<Telephone>`, `<Email>`, `<Photo>`, `<Picture>`.
|
|
|
|
### 3. Trunks SIP & Routage
|
|
- Trunks SIP sortants (Orange Business, OVH Telecom, Free Pro, etc.).
|
|
- Routes sortantes avec sélection de préfixes et restriction par groupes d'extensions (Sites / Agences).
|
|
- Routes entrantes (DID / SDA) avec redirection intelligente vers Postes, Groupes de sonnerie ou SVI.
|
|
|
|
### 4. Serveur Vocal Interactif (SVI / IVR) & Groupes
|
|
- Menu vocal interactif avec gestion des touches DTMF (0-9, \*, #).
|
|
- Gestion des musiques d'attente (MoH) et téléversement de fichiers audio.
|
|
- Groupes de sonnerie simultanés ou séquentiels.
|
|
|
|
### 5. Sécurité Renforcée & Pare-feu PBX
|
|
- **Mode Strict Port 80** : Le port 80 standard est hermétiquement verrouillé et exclusivement réservé aux challenges ACME Let's Encrypt Certbot (retour 404 sur tout le reste).
|
|
- **Port d'administration HTTPS dédié** (ex: port 8443) avec certificats SSL Let's Encrypt automatisés.
|
|
- **Fail2ban unifié** : Jails Fail2ban actives pour les attaques SIP (PJSIP brute-force, scan SIPVicious) et attaques Web (recherche d'exploits HTTP).
|
|
|
|
### 6. Sauvegardes & Restauration
|
|
- Sauvegardes complètes à chaud (Base de données, configurations Asterisk, fichiers sons, règles pare-feu).
|
|
- Stockage local ou export automatique distant via **SSH / SCP / SFTP**.
|
|
- Restauration en un clic.
|
|
|
|
---
|
|
|
|
## 📂 Architecture du Projet
|
|
|
|
```text
|
|
nexus-pbx/
|
|
├── public/ # Racine Web Nginx
|
|
│ ├── index.php # Interface Web SPA moderne
|
|
│ ├── api.php # API RESTful backend
|
|
│ ├── phonebook.php # Générateur XML Yealink Remote Phonebook
|
|
│ ├── assets/ # JavaScript (app.js), styles Tailwind CSS
|
|
│ └── avatars/ # Photos des contacts de l'annuaire
|
|
├── src/ # Classes PHP d'orchestration
|
|
│ ├── AmiClient.php # Client Asterisk Manager Interface (AMI)
|
|
│ ├── Auth.php # Authentification & sessions
|
|
│ ├── BackupManager.php # Moteur de sauvegarde locale & distante SSH
|
|
│ ├── CertificateManager.php # Gestionnaire SSL & Certbot
|
|
│ ├── ConfigGenerator.php # Générateur dynamique de conf Asterisk (pjsip, extensions)
|
|
│ ├── Database.php # Connexion PDO SQLite
|
|
│ ├── FirewallManager.php # Moteur Pare-feu & règles Nginx
|
|
│ ├── PhonebookManager.php # Moteur d'annuaire et export XML
|
|
│ ├── SystemChecker.php # Diagnostic de santé système
|
|
│ └── SystemMetrics.php # Monitoring CPU, RAM, Disque, Asterisk
|
|
├── scripts/ # Scripts CLI et daemons système
|
|
│ ├── setup-debian.sh # Script d'installation automatisé Debian 12 / 13
|
|
│ ├── nexus-firewall # Script de gestion iptables/nftables
|
|
│ └── nexus_autobackup.php# Cronjob de sauvegarde automatique
|
|
└── storage/ # Données persistantes (exclues du Git)
|
|
├── database.sqlite # Base de données applicative
|
|
├── backups/ # Archives de sauvegarde
|
|
└── sounds/ # Fichiers audio MoH et annonces
|
|
```
|
|
|
|
---
|
|
|
|
## ⚙️ Prérequis & Installation
|
|
|
|
- **Système d'exploitation** : Debian 12 (Bookworm) ou Debian 13 (Trixie).
|
|
- **Paquets requis** : Asterisk 20+, PHP 8.2+, Nginx, SQLite3, Fail2ban, Certbot.
|
|
|
|
Pour déployer sur une machine fraîche :
|
|
```bash
|
|
sudo bash scripts/setup-debian.sh
|
|
```
|
|
|
|
---
|
|
|
|
## 🔒 Confidentialité & Sécurité du Dépôt
|
|
|
|
Ce dépôt de code source exclut rigoureusement :
|
|
- Les bases de données SQLite contenant les identifiants locaux.
|
|
- Les clés privées et certificats SSL.
|
|
- Les enregistrements vocaux et sauvegardes d'entreprise.
|
|
|
|
---
|
|
*Développé pour les télécoms d'entreprise souveraines.*
|