Call Us Today! 877.742.2583

Page tree
Skip to end of metadata
Go to start of metadata


These archived instructions apply to Debian 7 "Wheezy". Substantial changes were made to FreeSWITCH™ version 1.6 that depend on libraries included in Debian 8 "Jessie".

You have the choice of either installing a pre-compiled snapshot package or downloading and compiling the source code of FreeSWITCH™. Debian is the linux distribution of choice for the development team.


Debian 7 "Wheezy" is deprecated. Please use Debian 10 Buster

 Click here to expand Table of Contents

Debian Package

There are pre-compiled Debian packages available for Debian Wheezy, both 32 bit and 64 bit. Currently Freeswitch is not in the main Debian repositories, so please follow the directions below to add the FreeSWITCH repo.

Add the FreeSWITCH APT repository

The following commands apply to Debian Wheezy 7.5

#for 1.4 Release Branch
echo "deb `lsb_release -sc` main" >> /etc/apt/sources.list.d/freeswitch.list

Import the Repo Signing Key
curl | apt-key add -


gpg --keyserver --recv-key D76EDC7725E010CF
gpg -a --export D76EDC7725E010CF | sudo apt-key add -

Update apt-get

apt-get update


Choose from the packages listed to complete your FreeSWITCH™ installation.

apt-cache search freeswitch | less

We suggest that you install the Vanilla meta package to get a basic running installation.

apt-get install freeswitch-meta-vanilla

If you desire other FreeSWITCH modules, run the apt-cache search command above and choose from those listed by running apt-get install <module_name>

The packages do not set up the configuration in /etc/freeswitch, and you need to copy files manually

cp -a /usr/share/freeswitch/conf/vanilla /etc/freeswitch

FS_conf Directory

In the documentation, where you see the FreeSWITCH™ configuration directory specified as /usr/local/freeswitch/conf (the location for systems built from source code), instead you should look under /etc/freeswitch for the configuration files, which follows the F.H.S. location for packages such as these.

Startup Freezes

If you start FreeSWITCH™ and find that it appears to stop loading early in the process, look in /etc/default/freeswitch and ensure that DAEMON_OPTS does NOT contain "-rp" which starts the switch with real-time priority. Either change "-rp" to "-np" (for normal priority) or simply delete the "-rp" flag. Other startup switches can be specified here as well. Run freeswitch -help to see the list.


If you first start FreeSWITCH™ manually as root after installing the packages, all the log, cdr and database files will be created with root as owner and group. If this has happened to your installation you must change these to user freeswitch and group freeswitch (or daemon) before starting with the /etc/init.d/freeswitch script. You can do this using: chown -R freeswitch:freeswitch /var/{log,lib}/freeswitch .

Building From Source

Automatic Makefile

The FreeSWITCH™ team has prepared a Makefile in the source tree that pulls down all dependencies and builds FreeSWITCH. It is available in the repository at

Yes, the same Makefile is used for either CentOS 6 or Debian 7, it's just that smart.

Make sure that make is installed

apt-get install make

Make sure that curl is installed

apt-get install curl

Change directory

cd /usr/src

Download the Makefile

curl > Makefile

If you want to compile and install the RELEASE branch, edit the above Makefile and add " -b v1.4 " just after the word "clone".

To install

make && make install
When finished, FreeSWITCH should be located under /usr/local/freeswitch

Now continue below at Set Owner and Permissions. If you find any errors please see the Corrections page.

Manual Build

If you would prefer to manage each step of building from source to select different build options or modules to compile, follow the these steps instead of using the Makefile above.

Custom Build From Source
apt-get install autoconf automake devscripts gawk g++ git-core 'libjpeg-dev|libjpeg62-turbo-dev' libncurses5-dev 'libtool-bin|libtool' make python-dev gawk pkg-config libtiff5-dev libperl-dev libgdbm-dev libdb-dev gettext libssl-dev libcurl4-openssl-dev libpcre3-dev libspeex-dev libspeexdsp-dev libsqlite3-dev libedit-dev libldns-dev libpq-dev
cd /usr/src

# To build from the current release source code:
git clone -b v1.4
cd /usr/src/freeswitch

# The -j argument spawns multiple threads to speed the build process 
./ -j
# if you want to add or remove modules from the build, edit modules.conf
vi modules.conf
# add a module by removing '#' comment character at the beginning of the line
# remove a module by adding the '#' comment character at the beginning of the line containing the name of the module to be skipped

./configure --enable-core-pgsql-support
make && make install 

Install Sounds

make cd-sounds-install cd-moh-install 

Set Owner and Permissions

# create user 'freeswitch'
# add it to group 'daemon'
# change owner and group of the freeswitch installation
cd /usr/local 
adduser --disabled-password  --quiet --system --home /usr/local/freeswitch --gecos "FreeSWITCH Voice Platform" --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/*

Start FreeSWITCH

Automatic Start At Boot

To start FreeSWITCH™ automatically at system boot, the init script must be modified to point to the file locations built from source instead of the F.H.S. locations installed by the package.

Issue the following commands (copy here and paste into your terminal session):

# link config files from source build to their expected F.H.S. locations to keep init script happy
ln /usr/local/freeswitch/bin/freeswitch /usr/bin/freeswitch
mkdir /etc/freeswitch
ln /usr/local/freeswitch/conf/freeswitch.xml /etc/freeswitch/freeswitch.xml

chown freeswitch:daemon /etc/freeswitch
chmod ug=rwx,o= /etc/freeswitch

mkdir /var/lib/freeswitch
chown freeswitch:daemon /var/lib/freeswitch
chmod -R ug=rwX,o= /var/lib/freeswitch

cp /usr/src/freeswitch/debian/freeswitch-sysvinit.freeswitch.default /etc/default/freeswitch

chown freeswitch:daemon /etc/default/freeswitch
chmod ug=rw,o= /etc/default/freeswitch

cp /usr/src/freeswitch/debian/freeswitch-sysvinit.freeswitch.init  /etc/init.d/freeswitch

chown freeswitch:daemon /etc/init.d/freeswitch
chmod u=rwx,g=rx,o= /etc/init.d/freeswitch
update-rc.d freeswitch defaults

# optionally, to make manual start-up and shutdown of FreeSWITCH a bit easier
ln /etc/init.d/freeswitch /usr/local/bin/fs

Hopefully you created that last link between the FreeSWITCH startup script and the easily typed "fs" command which is already on the path for root. This allows root to start FS for the first time and still allow it to create its work directories with the proper permissions, owner, and group without fussing with typing the entire path.

Next Steps

The next step is to configure FreeSWITCH to run according to your needs. Because it is so versatile and each user has different needs there is no single approach.

Start with the top Configuration Guide page and go from there.