FreeSWITCH can be installed in two ways: from pre-built packages provided through the SignalWire package repository (recommended for production), or compiled from source for maximum control over build flags and module selection. Pre-built packages are available for Debian and its derivatives. Building from source works on Linux, macOS, BSD, and Windows. Both paths produce a fully functional FreeSWITCH installation.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/signalwire/freeswitch/llms.txt
Use this file to discover all available pages before exploring further.
Pre-built packages are hosted on the SignalWire package repository and require a SignalWire Personal Access Token (PAT) for authentication. You can generate one free at the SignalWire Dashboard. Enterprise customers with a FreeSWITCH Advantage subscription use an API Token instead.
- Debian / Ubuntu
- CentOS / RHEL
- Build from Source
The recommended installation method for Debian-based systems is the FSGET script, which configures the SignalWire apt repository and installs FreeSWITCH in a single command.
Configure the SignalWire apt repository
Run the Replace
fsget script with your SignalWire Personal Access Token (PAT). Community tokens begin with pat_; enterprise (FreeSWITCH Advantage) tokens begin with PT. The optional third argument install causes the script to install FreeSWITCH immediately after configuring the repository:YOUR_PAT_TOKEN with your actual token. Use prerelease instead of release to track the master branch builds.To configure the repository without installing immediately, omit the install argument:Install the FreeSWITCH meta-package
If you did not pass The
install to fsget, install the meta-package now:freeswitch-meta-all package pulls in FreeSWITCH core plus the full set of commonly used modules and sound files.Directory Layout
After installation, FreeSWITCH uses the following standard directories:| Path | Purpose |
|---|---|
/etc/freeswitch | Main configuration directory. Contains freeswitch.xml, vars.xml, dialplan, directory, and module configs. |
/var/log/freeswitch | Log files, including freeswitch.log and the compiled XML snapshot freeswitch.xml.fsxml. |
/var/run/freeswitch | PID file and runtime socket. |
/var/lib/freeswitch/db | Internal SQLite databases for registrations, call state, voicemail, etc. |
/var/lib/freeswitch/recordings | Default destination for call recordings. |
/var/lib/freeswitch/storage | Voicemail message storage. |
/usr/share/freeswitch/sounds | Bundled audio prompts and music on hold. |
/usr/share/freeswitch/conf | Example configuration templates (vanilla, default, etc.). |
/usr/lib/freeswitch/mod | Compiled module shared libraries (.so files). |
/usr/local/freeswitch, which places configs at /usr/local/freeswitch/conf, logs at /usr/local/freeswitch/log, and so on. Pass --prefix=/usr to ./configure to match the package layout.
Verify Installation
Confirm that FreeSWITCH is installed and check its version:fs_cli: