Skip to main content

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.

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

Install prerequisites

Ensure curl is available on your system:
apt-get update && apt-get install -y curl
2

Configure the SignalWire apt repository

Run the 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:
curl -sSL https://freeswitch.signalwire.com/repo/deb/debian-release/fsget.sh | bash -s YOUR_PAT_TOKEN release install
Replace 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:
curl -sSL https://freeswitch.signalwire.com/repo/deb/debian-release/fsget.sh | bash -s YOUR_PAT_TOKEN
3

Install the FreeSWITCH meta-package

If you did not pass install to fsget, install the meta-package now:
apt-get install -y freeswitch-meta-all
The freeswitch-meta-all package pulls in FreeSWITCH core plus the full set of commonly used modules and sound files.
4

Enable and start the service

Enable FreeSWITCH to start on boot and then start it immediately:
systemctl enable freeswitch
systemctl start freeswitch

Directory Layout

After installation, FreeSWITCH uses the following standard directories:
PathPurpose
/etc/freeswitchMain configuration directory. Contains freeswitch.xml, vars.xml, dialplan, directory, and module configs.
/var/log/freeswitchLog files, including freeswitch.log and the compiled XML snapshot freeswitch.xml.fsxml.
/var/run/freeswitchPID file and runtime socket.
/var/lib/freeswitch/dbInternal SQLite databases for registrations, call state, voicemail, etc.
/var/lib/freeswitch/recordingsDefault destination for call recordings.
/var/lib/freeswitch/storageVoicemail message storage.
/usr/share/freeswitch/soundsBundled audio prompts and music on hold.
/usr/share/freeswitch/confExample configuration templates (vanilla, default, etc.).
/usr/lib/freeswitch/modCompiled module shared libraries (.so files).
When building from source, the default prefix is /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:
freeswitch -version
Expected output (version number will vary):
FreeSWITCH Version 1.10.x-release (git) ...
If the service is running, you can also verify via fs_cli:
fs_cli -H 127.0.0.1 -P 8021 -p ClueCon -x "version"
To check service status:
systemctl status freeswitch

Build docs developers (and LLMs) love