Installing the package
The PBX also ships as a Debian package, centrex-v3, for a machine where FusionPBX and
FreeSWITCH are already installed. The image remains the recommended way: it sets up
FreeSWITCH and FusionPBX as the PBX expects, which has to be done by hand here.
Expected machine
- Debian 13, PostgreSQL (the
postgresql-clientof the same version, for backups); - FreeSWITCH 1.11 and FusionPBX 5.6.5, the tested versions;
- nginx in front of the portal, with TLS.
What the package contains
| Path | Role |
|---|---|
/usr/bin/centrex | The binary: API, portal, MCP server, background tasks, operations commands. |
/usr/share/centrex-v3/portail | The portal and this guide (guide/, guide/en/). |
centrex.service | The service, under the centrex account (www-data group, for FreeSWITCH files and the FusionPBX cache). |
/etc/centrex-v3/centrex.env | The settings, created on first install from the template /usr/share/centrex-v3/centrex.env, never rewritten afterwards. |
/etc/centrex-v3/cles | The keyring of the secrets encryption keys, created with a first key. |
/usr/share/doc/centrex-v3/ | License, third-party library notices, reference Prometheus alerts. |
Installing
-
Declare the vendor’s repository (Updates), then
sudo apt update && sudo apt install centrex-v3. -
Set up FreeSWITCH as the image’s first boot does:
- event socket: listening on
127.0.0.1,loopback.autoACL, a password of its own (event_socket.conf.xml); - CDRs: load
mod_json_cdrand send tohttp://127.0.0.1:8085/cdr, withbasicauthentication and a username and password drawn for the purpose (json_cdr.conf.xml); - sessions:
sessions-per-secondat 100 (switch.conf.xml); - SIP over TLS: variables
internal_ssl_enableset totrueandsip_tls_versiontotlsv1.2,tlsv1.3(FusionPBX, Advanced > Variables), then in/etc/freeswitch/tlsagent.pem(certificate, chain and key) andcafile.pem(the chain), readable bywww-data;fs_cli -x reloadcertreloads them on every renewal; - files:
www-datagroup and setgid bit on/var/lib/freeswitch/recordings,/var/lib/freeswitch/storage(andvoicemail,json_cdrbelow it) and/var/cache/fusionpbx, where the PBX writes.
- event socket: listening on
-
Fill in
/etc/centrex-v3/centrex.env(Server settings): FusionPBX’s PostgreSQL database, public address, event socket, CDR credentials. -
Create the operator and its first administrator, as for the image:
sudo -u centrex sh -c 'set -a; . /etc/centrex-v3/centrex.env; centrex migrate; \ centrex initialiser --operateur "…" --admin-courriel … --admin-nom "…"' -
Optional, text-to-speech: without it, announcements are uploaded as audio files. Install Piper and its voices like the image does, then set
CENTREX_PIPER,CENTREX_VOIX_PIPERandCENTREX_VOIX_PIPER_EN:sudo apt install python3-venv sudo python3 -m venv /opt/centrex-v3/piper sudo /opt/centrex-v3/piper/bin/pip install piper-tts==1.8.0 sudo mkdir -p /usr/share/centrex-v3/voix && cd /usr/share/centrex-v3/voix v=https://huggingface.co/rhasspy/piper-voices/resolve/main for f in fr/fr_FR/siwis/medium/fr_FR-siwis-medium en/en_US/ljspeech/medium/en_US-ljspeech-medium; do sudo curl -fsSLO "$v/$f.onnx" && sudo curl -fsSLO "$v/$f.onnx.json" done -
sudo systemctl start centrex, then nginx with TLS in front, to127.0.0.1:8080, forwardingHost(with the port),X-Forwarded-ForandX-Forwarded-Proto, and accepting 21 MB uploads (audio files). -
Give recordings their own volume (Recordings volume).
-
In the portal: email (Settings page), then your team and your resellers (Resellers feature to turn on first, same page).
The service applies database migrations on every start. As long as the settings are empty, the package does not start it.
Removing
apt remove stops the service and removes the binary; apt purge also removes the settings, but
keeps the keyring: without it, the database secrets would be unreadable.