Introduction
FreeSwitch is an open source telephony platform, with support for multiple protocols
(SIP, IAX, Googletalk, Jabber, XMPP, WOOMERA/H.323, PRI/T1/E1) and it is cross
platform (Linux, Windows and Mac). It is a softswitch which implies that it does the job
of a traditional PBX and much more. It is scalable and has been tested to handle
thousands of simultaneous calls. It is fully extendable and can be customized to meet
customers VOIP needs.
FreeSwitch pre-built binaries packages are available for download for installation Linux, Windows and Mac, with minimal modules included to get it running.
But to harness the power of FreeSwitch with the various modules it has, FreeSwitch needs to be built from source with the option
of enabling the modules required for your custom PBX setup.
FreeSwitch development team recommends Debian as the operating system of choice,
starting from FreeSwitch 1.6 a number of libraries required to build Freeswitch are included in Debian 8,
this blog post will run through steps involved to build Freeswitch on a fresh installation of Debain 8 (Jessie).
Debian 8 Installation
Download and install Debian 8 installation packages from the following link.
http://cdimage.debian.org/debian-cd/8.1.0/amd64/iso-dvd/.
Run through the installation process and set the server up accordingly.
After the installation is completed, edit the
/etc/apt/sources.list file, add # to comment out the dvd source in the file
to prevent apt-get from requesting to get packages from the dvd path.
Uncomment the other download sources and add the mirror
deb http://http.us.debian.org/debian jessie main contrib and
save the file. Run the command below to download available updates and upgrade the pc with the latest available libraries.
sudo apt-update && apt-upgrade
Preparing to Build FreeSwitch
All commands to be run on the terminal should be run using
root account to ensure that required
permissions and priviledges are granted.
FreeSwitch Debian Jessie repository needs to be enabled, the commands below will create 99FreeSWITCH.test.list file
and add it to
/etc/apt/sources.list.d folder and also download and add a GPG key to the apt sources keyring.
echo "deb http://files.freeswitch.org/repo/deb/debian/ jessie main" > /etc/apt/sources.list.d/99FreeSWITCH.test.list
wget -O - http://files.freeswitch.org/repo/deb/debian/key.gpg |apt-key add -
apt-get update
Next, download the needed dependecies to build FreeSwitch using this command
DEBIAN_FRONTEND=none APT_LISTCHANGES_FRONTEND=none apt-get install -y --force-yes freeswitch-video-deps-most
Now, the source code will be cloneed from repository.
cd /usr/src/
git config --global pull.rebase true
git clone https://freeswitch.org/stash/scm/fs/freeswitch.git freeswitch.git
cd /usr/src/freeswitch.git
Building FreeSwitch
After the Freeswitch source has be cloned from the repository, edit modules.conf file inside the freeswitch source
folder to enable specific modules needed for your Freeswitch installation. Then run the following commands
./bootstrap.sh -j
./configure -C
make
make install
make cd-sounds-install
make cd-moh-install
make samples
You might be tempted to run FreeSwitch immediately the after the make and install. But hold on, few configurations need to be done.
Edit the System Kernel setting file
/etc/sysctl.d/vid.conf and add the following lines.
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
kernel.core_pattern = core.%p
Next, activate the kernel settings changes earlier made by running the following commands.
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216
sysctl -w kernel.core_pattern=core.%p
Remember earlier, I said all commands should be run as super user, this implies that FreeSwitch was built as root.
To allow system to system to interact with FreeSwitch, a user ‘freeswitch’ will be created and put in group ‘daemon’
and we will change the ownership of the FreeSwitch installation folder and the containing to the user ‘freeswitch’ to be created.
Run the following commands on the terminal
cd /usr/local
adduser --disabled-password --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH" --ingroup daemon freeswitch
chown -R freeswitch:daemon /usr/local/freeswitch/
chmod -R ug=rwX,o= /usr/local/freeswitch/
chmod -R u=rwx,g=rx /usr/local/freeswitch/bin/*
Freeswitch source comes with a systemd file which when configured properly will at boot time, monitor the Freeswich to start
it as a daemon, restart it if it fails. The file can be found in this location
usr/src/freeswitch.git/debian/freeswitch-systemd.freeswitch.service
you can change the con-tent to reflect the path to your freeswitch installation.
Lets link the systemd unif file above to systemd using this command
ln -s /usr/src/freeswitch.git/debian/freeswitch-systemd.freeswitch.service /etc/systemd/system/freeswitch.service
Next, run the following command systemctl daemon-reload to notify systemd to reload and look for changes in its configuration.
Now run
systemctl enable freeswitch to install FreeSWITCH to start at boot time.
To start Freeswitch for the first time run this command
systemctl start freeswitch
Freeswitch comes with a Command Line Interface program that can be used to
to interact and send commands to Freeswitch .
/usr/local/freeswitch/bin/fs_cli –l 6
And that is it, you have FreeSwitch built and configured.