Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Dépannage

La plupart des incidents se traitent depuis le portail, page Diagnostic (voir Diagnostic), sans SSH : santé, appels en cours, capture SIP en direct, trace d’un appel, adresses bannies, rechargement et redémarrage de FreeSWITCH. Chaque action y est tracée au journal d’audit, et existe aussi dans l’API et le serveur MCP.

Incidents types

SymptômeOù regarderQue faire
Un client n’a plus d’appels entrants ni sortantsSanté : son trunk n’est pas REGED, avec le dernier refus du fournisseur401/403 : corriger l’identifiant ou le mot de passe sur la fiche du trunk ; 404 : compte inconnu du fournisseur ; 408/503 ou FAIL_WAIT : le fournisseur ne répond pas (adresse, réseau). Puis Réenregistrer.
Tout un site n’a plus de téléphone, le portail répondAdresses IP bannies : l’adresse du site, le compte visé et l’appareil fautifCorriger l’appareil (mot de passe, domaine), puis Débannir ; une adresse qui ne doit jamais l’être va dans la liste blanche.
Un robot essaie des mots de passeCapture en direct, Adresses IP banniesBannir une adresse à la main, pour la durée choisie.
« Mon appel n’a pas abouti », « ça a coupé »Journal d’appels du client, puis Trace de l’appelLa trace montre les étapes suivies, la cause et le code SIP. Une erreur de parcours : Rejouer la publication sur la fiche du client.
Un téléphone ne s’enregistre pas, un appel échoue sans explicationCapture en directLes messages SIP du client, en texte, en diagramme en échelle ou en pcap pour Wireshark.
Un poste réglé pour enregistrer n’a aucun enregistrementsudo centrex verifier (ligne « FusionPBX ») et le journal du serviceLe modèle d’enregistrement de FusionPBX doit être lisible (CENTREX_MODELES_FUSIONPBX, par défaut sous /var/www/fusionpbx) ; le service l’ajoute aux clients qui ne l’ont pas à son redémarrage. Volume plein : voir Enregistrements.
Un appel reste bloquéAppels en coursCouper.
Rien ne va plus dans FreeSWITCHSantéRecharger la configuration, puis en dernier recours Redémarrer FreeSWITCH.

Sur la VM

PourCommande
Tout vérifier d’un coupcentrex verifier
État des servicessystemctl status centrex freeswitch nginx postgresql
Journaux du centrexjournalctl -u centrex (niveau réglé par CENTREX_LOG)
Journaux de FreeSWITCH/var/log/freeswitch/freeswitch.log
Premier démarrage de l’imagejournalctl -u centrex-premier-demarrage
Actif/passifcentrex bascule etat, /var/log/centrex-bascule.log
Intégrité du journal d’auditcentrex audit verifier

Les commandes centrex se lancent avec les réglages du service : voir Réglages du serveur.

Comptes

  • Mot de passe oublié : le lien « Mot de passe oublié » de la page de connexion, ou Renvoyer l’invitation sur la fiche du client. Sans e-mails réglés : centrex inviter --courriel … affiche le lien.
  • Téléphone du second facteur perdu : un administrateur le réinitialise dans le portail, ou centrex reinitialiser-second-facteur --courriel … sur la VM.
  • Compte bloqué après 5 échecs : il se débloque seul au bout de 15 minutes.

Interface FusionPBX

Le centrex écrit dans FusionPBX, mais son interface est fermée : nginx ne la sert pas. Pour un dépannage, ouvrez-la en local, le temps de l’intervention. Ne modifiez rien depuis cette interface : le centrex n’y retrouverait pas ses réglages. Ses dialplans y paraissent incomplets, c’est normal.

  1. Sur la VM, installer PHP-FPM et servir FusionPBX sur l’adresse locale seulement :

    sudo apt install php8.4-fpm
    sudo tee /etc/nginx/sites-available/fusionpbx-local >/dev/null <<'NGINX'
    server {
    	listen 127.0.0.1:8081;
    	root /var/www/fusionpbx;
    	index index.php;
    	location / { try_files $uri $uri/ /index.php?$args; }
    	location ~ \.php$ {
    		include snippets/fastcgi-php.conf;
    		fastcgi_pass unix:/run/php/php8.4-fpm.sock;
    	}
    	location ~ /\. { deny all; }
    	location ~ \.(db|sql|conf)$ { deny all; }
    }
    NGINX
    sudo ln -s ../sites-available/fusionpbx-local /etc/nginx/sites-enabled/
    sudo nginx -t && sudo systemctl reload nginx
    
  2. Créer un compte superadmin de FusionPBX, comme le fait son installeur, dans le domaine par défaut, créé au premier démarrage au nom de la machine :

    read -r -s -p "Mot de passe : " MDP; echo
    HASH=$(MDP="$MDP" php -r 'echo password_hash(getenv("MDP"), PASSWORD_DEFAULT);')
    sudo -u postgres psql -v ON_ERROR_STOP=1 -v hash="$HASH" -v domaine="$(hostname -f)" fusionpbx <<'SQL'
    with d as (select domain_uuid from v_domains where domain_name = :'domaine'),
    u as (insert into v_users (user_uuid, domain_uuid, username, password, salt, user_enabled)
          select gen_random_uuid(), domain_uuid, 'depannage', :'hash', '', 'true' from d
          returning user_uuid, domain_uuid)
    insert into v_user_groups (user_group_uuid, domain_uuid, group_name, group_uuid, user_uuid)
    select gen_random_uuid(), u.domain_uuid, 'superadmin', g.group_uuid, u.user_uuid
    from u, v_groups g where g.group_name = 'superadmin';
    SQL
    
  3. Depuis votre poste, ouvrir un tunnel SSH, puis http://127.0.0.1:8081 dans le navigateur :

    ssh -L 8081:127.0.0.1:8081 debian@VM
    

    Se connecter avec depannage@ suivi du nom de la machine (hostname -f) : l’adresse 127.0.0.1 ne désigne aucun domaine, le nom après @ le donne.

  4. Après l’intervention, refermer :

    sudo rm /etc/nginx/sites-enabled/fusionpbx-local && sudo systemctl reload nginx
    sudo systemctl disable --now php8.4-fpm
    sudo -u postgres psql fusionpbx -c "update v_users set user_enabled = 'false' where username = 'depannage'"
    

Assistance de l’éditeur

Pour une intervention de l’éditeur, ouvrez-lui un accès limité dans le temps : portail, page Diagnostic, section Accès de l’assistance, ou centrex acces-assistance ouvrir --heures 24. Il est fermé par défaut, refermable à tout moment, et chacune de ses actions est au journal d’audit.