From source to your first call.
A guided path for administrators and developers. Start in a lab, build the modules you need, then verify signalling and media before exposing the service.
Start with the right dependencies.
The official build guide documents a Debian 13 source installation. GABPBX is not a preconfigured PBX appliance: you choose the modules, configuration, service account, network exposure and integrations.
Build the project’s documented Sofia-SIP fork first, installed under /usr/local.
A compiler toolchain and development headers for your selected modules.
Optional libraries for Opus translation, encrypted media and fax support.
Build only the database drivers your realtime, CDR/CEL and push store need.
Needed for native APNs/FCM push, together with your app credentials and provisioning.
Optional build dependency for WebRTC DataChannels; enable the feature explicitly.
Build a pinned release.
These commands are a source-build outline for a prepared lab. Install the dependencies from the official guide first. Installation commands write to system directories; do not run them on a live PBX without a backup and a maintenance plan.
1. Sofia-SIP
git clone --depth 1 --branch v2.0.4 https://github.com/garacil/sofia-sip.git
cd sofia-sip
./autogen.sh
./configure --prefix=/usr/local
make -j$(nproc)
sudo make install
sudo ldconfig
pkg-config --modversion sofia-sip-ua
cd ..2. GABPBX 1.8.2
git clone --depth 1 --branch v1.8.2 https://github.com/garacil/gabpbx.git
cd gabpbx
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/local/lib/x86_64-linux-gnu/pkgconfig:${PKG_CONFIG_PATH:-}
./configure
make menuselect.makeopts
menuselect/menuselect --enable chan_sofia menuselect.makeopts
make menuselect
make -j$(nproc)
sudo make install
gabpbx -VUse menuselect to review additional modules and dependency availability. Enabling a module in configuration does not install its library dependencies. The official guide covers Opus, service setup and troubleshooting.
Do not run make samples over an existing installation: it can overwrite /etc/gabpbx configuration. Use samples only in a new, disposable lab and review them before use.
Configure deliberately. Verify both directions.
- Set up a dedicated service account, writable runtime paths and a service unit appropriate for your installation. Do not copy an unreviewed systemd unit into production.
- Configure sofia.conf peers, dialplan contexts, listeners, external address and local networks. Load only chan_sofia or chan_sip, never both.
- Set an explicit authentication policy: disable unwanted guest calls, use strong credentials, constrain ACLs and verify TLS certificates. Compatibility defaults are not a security baseline.
- For WebRTC, enable webrtc and configure certificates and a reachable media address. For max-bundle browser video, also enable webrtc_video_bundle=yes and negotiate a common codec. DataChannels additionally need usrsctp and datachannel=yes.
- For mobile wake-up, enable push and provision app integration, APNs/FCM credentials and the SQLite schema. Native HTTP/2 is preferred; fallback sender scripts are not bundled in the public repository.
- Test registration, inbound and outbound audio, DTMF, hold/resume, transfers, video and every device/transport combination you plan to use. Capture logs without exposing credentials or customer data.
gabpbx -rx 'core show version'
gabpbx -rx 'module show like sofia'
gabpbx -rx 'sip show version'
gabpbx -rx 'sip show settings'
gabpbx -rx 'sip show peers'
gabpbx -rx 'sip show push'A compatible interface is not a blind upgrade.
The migration keeps SIP/<peer>, the sippeers/sipregs realtime families, familiar sip CLI verbs and AMI actions. It still needs a configuration review and a restart to change drivers.
noload => chan_sip.so
load => chan_sofia.so- Back up the existing configuration and record loaded modules and library versions.
- Prepare sofia.conf, realtime mappings, bind ports, certificates, NAT and media policies. Keep directmedia disabled until the media path is proven.
- Review RTP inactivity timeouts: current releases enforce configured values. A value of 0 disables the timeout; choose a policy that suits your call flows.
- Schedule the restart: replacing the SIP driver is not an in-call hot swap. Test peer bindings, AMI events and calls after cutover; keep a rollback plan.
Go deeper in the official wiki.
The wiki is maintained alongside the code. If a historical example conflicts with the current implementation, check the source and the release notes for the exact version.