Get started

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.

Sofia-SIP 2.0.4

Build the project’s documented Sofia-SIP fork first, installed under /usr/local.

C / GNU make / pkg-config

A compiler toolchain and development headers for your selected modules.

Opus / SRTP / SpanDSP

Optional libraries for Opus translation, encrypted media and fax support.

PostgreSQL / ODBC / SQLite

Build only the database drivers your realtime, CDR/CEL and push store need.

libcurl + HTTP/2 / OpenSSL

Needed for native APNs/FCM push, together with your app credentials and provisioning.

usrsctp

Optional build dependency for WebRTC DataChannels; enable the feature explicitly.

Read the full dependency and package list ↗

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

Build the documented SIP stack
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

Configure, select modules and build
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 -V

Use 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.

  1. 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.
  2. Configure sofia.conf peers, dialplan contexts, listeners, external address and local networks. Load only chan_sofia or chan_sip, never both.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
Read-only checks on your running lab
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.

modules.conf [modules]
noload => chan_sip.so
load   => chan_sofia.so
  1. Back up the existing configuration and record loaded modules and library versions.
  2. Prepare sofia.conf, realtime mappings, bind ports, certificates, NAT and media policies. Keep directmedia disabled until the media path is proven.
  3. Review RTP inactivity timeouts: current releases enforce configured values. A value of 0 disables the timeout; choose a policy that suits your call flows.
  4. 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.
Full migration reference ↗

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.