HomeBlog › Install FreeSWITCH on Ubuntu

How to install FreeSWITCH and FusionPBX on Ubuntu

FreeSWITCH is a high-performance media server built for heavy concurrency, transcoding and video. This guide builds FreeSWITCH 1.10 from source on Ubuntu (the token-free route) and then adds the FusionPBX web GUI.

The official FreeSWITCH Debian/Ubuntu packages now require a free SignalWire personal access token. Building from source, shown here, avoids that. Always confirm the latest branch and dependencies in the official FreeSWITCH docs before starting, and test on a non-production box.

Step 1 — Install build dependencies

sudo apt update && sudo apt upgrade -y
sudo apt install -y git build-essential cmake automake autoconf \
  libtool libtool-bin pkg-config libssl-dev zlib1g-dev libjpeg-dev \
  libsqlite3-dev libcurl4-openssl-dev libpcre3-dev libspeexdsp-dev \
  libldns-dev libedit-dev libtiff-dev libopus-dev libsndfile1-dev \
  liblua5.2-dev libavformat-dev libswscale-dev uuid-dev

Step 2 — Clone and build FreeSWITCH

Clone the 1.10 branch, then build the two core dependency libraries (libks and sofia-sip) before FreeSWITCH itself:

cd /usr/src
sudo git clone https://github.com/signalwire/libks.git
cd libks && sudo cmake . && sudo make && sudo make install && cd ..

sudo git clone https://github.com/freeswitch/sofia-sip.git
cd sofia-sip && sudo ./bootstrap.sh && sudo ./configure && sudo make && sudo make install && cd ..

sudo git clone -b v1.10 https://github.com/signalwire/freeswitch.git
cd freeswitch
sudo ./bootstrap.sh -j
# Edit modules.conf to enable/disable modules if needed
sudo ./configure
sudo make -j$(nproc)
sudo make install

Step 3 — Install sounds, service and verify

# Prompt + music-on-hold sounds
sudo make cd-sounds-install cd-moh-install

# Dedicated user and permissions
sudo groupadd freeswitch
sudo useradd -r -g freeswitch -d /usr/local/freeswitch freeswitch
sudo chown -R freeswitch:freeswitch /usr/local/freeswitch
sudo chmod -R ug=rwX,o= /usr/local/freeswitch

# Symlinks + start
sudo ln -s /usr/local/freeswitch/bin/freeswitch /usr/bin/freeswitch
sudo ln -s /usr/local/freeswitch/bin/fs_cli /usr/bin/fs_cli
sudo /usr/local/freeswitch/bin/freeswitch -nc -u freeswitch -g freeswitch
sudo fs_cli      # connect to the CLI; type '/exit' to leave

Create a systemd unit so FreeSWITCH starts on boot (a ready-made freeswitch.service ships in the source tree under debian/).

Step 4 — Install FusionPBX (web GUI)

FusionPBX provides a multi-tenant browser interface on top of FreeSWITCH (PHP + PostgreSQL + Nginx). The maintainers publish an install script:

cd /usr/src
sudo git clone https://github.com/fusionpbx/fusionpbx-install.sh.git
cd fusionpbx-install.sh/ubuntu
sudo ./pre-install.sh
sudo ./install.sh
FusionPBX's installer is primarily maintained for Debian; the Ubuntu scripts exist but track a specific release. Read the script and the FusionPBX docs first, and match your Ubuntu version to what it supports. When it finishes, it prints the admin URL and credentials.

Security best practices

  • Firewall SIP (5060/5061) and the RTP range; restrict to trusted IPs.
  • Strong SIP/extension passwords and TLS + SRTP where possible.
  • Run fail2ban; FreeSWITCH ships example filters.
  • Keep the OS, FreeSWITCH and FusionPBX patched.

Prefer a managed platform?

FreeSWITCH is powerful but demanding to run and secure. Qallixo delivers the finished contact-center product on a managed stack — no builds, no patching. See how FreeSWITCH compares to Asterisk, Kamailio and OpenSIPS.

Next: Install Kamailio on Ubuntu →

Skip the build — dial today

Qallixo runs the media stack for you. Start free, no servers required.

Chat with us