3CX = VM 192.168.1.191 (phone.aadw.lu), V20 Pro (pas de XAPI), sur la Virtualization Station du QNAP. Trunk MixVoip (enregistrement, entrant+sortant). Port SIP local = 5062 (5060 est pris par la FritzBox). 30 extensions, ~8 appels simultanés.
But : afficher le contact eGroupware sur les appels 3CX. Mécanisme = répertoire d'entreprise 3CX (le lookup CRM temps-réel n'affiche pas sur les combinés → désactivé).
Chaîne : base eGroupware (VPS, egroupware-db) → vue v_3cx_phonebook (numéros E.164 dédupliqués, ~1475) lue en direct depuis le QNAP (sync.sh en --network host → VPS 10.8.0.1:3306 via WireGuard ; egw.cnf host=10.8.0.1 port=3306). (L'ancien egw-db-proxy socat a été supprimé le 2026-06-09 — plus de point de blocage, plus de port en écoute sur le QNAP.) → sync.sh (cron QNAP 03:30) → SSH root@192.168.1.191 → import.sql (PostgreSQL database_single, table public.phonebook, fkiddn=NULL, tag='egroupware') → restart 3CXSystemService01.
Affichage composé : la vue met toute la chaîne « Prénom Nom - Société » dans firstname et lastname='' (robuste quel que soit l'ordre d'affichage 3CX). Société seule → juste la société.
⚠️ Un numéro rattaché à une extension 3CX (champ « mobile » de l'utilisateur) affiche le nom de l'utilisateur, PAS la fiche du répertoire → le « - Société » ne vaut que pour les contacts externes.
Schéma table public.phonebook : idphonebook, firstname, lastname, phonenumber, fkidtenant, fkiddn, company, tag, pv_an0/1/3/5/6/7. Les anciennes fiches stockaient le n° dans pv_an1/pv_an3 (mobile pv_an7, email pv_an5) — toutes migrées vers egw puis supprimées (répertoire 100 % egw).
Cron QNAP 30 3 * * * dans /etc/config/crontab + autorun.sh sur le DOM (/dev/sdk6) + Misc Autorun=TRUE → survit reboot et MAJ firmware. Surveillance : fraîcheur de /share/CACHEDEV1_DATA/egw-sync/sync.log.
Objectif : fermer le dernier port entrant maison (443). Le 443 = accès distant (apps mobiles + qq postes), PAS les appels (trunk MixVoip = enregistrement sortant).
:443 split SNI → phone.aadw.lu passthrough TCP vers la VM) → ferme le 443 FritzBox. Seul le 443 est nécessaire (en V20 tout le distant y passe).