FreeSWITCH is a powerful open-source telephony platform used for SIP trunking, VoIP servers, WebRTC, and AI voice bots. In this guide, we’ll install FreeSWITCH on Ubuntu using the source method (most stable for 24.04).
Maintained by SignalWire, FreeSWITCH is designed for high-performance media processing.
📌 Why Install from Source?
Ubuntu 24.04 often gives repository errors (401 Unauthorized, GPG issues).
Source installation avoids:
- Repo authentication problems
- GPG key issues
- Version conflicts
- GCC compatibility errors
🖥 System Requirements
- Ubuntu 22.04 / 24.04
- 2GB RAM minimum (4GB recommended)
- Root / sudo access
- Open ports 5060 (SIP)
🔹 Step 1: Update Ubuntu
sudo apt update && sudo apt upgrade -y
🔹 Step 2: Install Dependencies
sudo apt install -y \
git build-essential autoconf automake libtool pkg-config \
libssl-dev libcurl4-openssl-dev libpcre3-dev \
libspeexdsp-dev libldns-dev libedit-dev \
libsqlite3-dev libopus-dev libsndfile1-dev \
libavformat-dev libswscale-dev libavcodec-dev \
liblua5.3-dev libjpeg-dev libtiff-dev \
yasm nasm libncurses5-dev uuid-dev
🔹 Step 3: Download FreeSWITCH Source
cd /usr/src
sudo git clone https://github.com/signalwire/freeswitch.git
cd freeswitch
Checkout stable branch:
sudo git checkout v1.10
🔹 Step 4: Bootstrap
sudo ./bootstrap.sh -j
🔹 Step 5: Configure
sudo ./configure
If no errors → continue.
🔹 Step 6: Fix Ubuntu 24.04 Build Errors
Edit modules file:
nano modules.conf
Comment these lines:
#applications/mod_av
#applications/mod_spandsp
#applications/mod_signalwire
#applications/mod_verto
This prevents GCC “warnings treated as errors” issues.
🔹 Step 7: Compile
make clean
make -j$(nproc)
Compilation may take 10–20 minutes.
🔹 Step 8: Install
sudo make install
sudo make sounds-install
sudo make moh-install
🔹 Step 9: Start FreeSWITCH
Foreground mode (testing):
/usr/local/freeswitch/bin/freeswitch -nc
If successful, you’ll see:
Ready to rock
Stop with Ctrl + C.
Run in background:
/usr/local/freeswitch/bin/freeswitch
🔹 Step 10: Connect to CLI
/usr/local/freeswitch/bin/fs_cli
Check status:
status
🔹 Step 11: Verify SIP Port
ss -lunpt | grep 5060
If listening → SIP server is active.
📞 Default Test Extension
FreeSWITCH includes test users:
- Username: 1000
- Password: 1234
- Domain: Your Server IP
- Port: 5060
Use any softphone (Zoiper, Linphone) and test call to 1001.
📂 Important Directories
| Directory | Purpose |
|---|---|
| /usr/local/freeswitch/conf | Configuration |
| /usr/local/freeswitch/log | Logs |
| /usr/local/freeswitch/sounds | Audio files |
🔥 How To Stop FreeSWITCH
Inside CLI:
shutdown
Or:
pkill freeswitch
🚀 What Can You Build With FreeSWITCH?
- SIP Trunk Gateway
- Call Center System
- WebRTC Calling
- AI Voice Assistant
- Replace traditional PBX
- Media Server for scalable telecom
Compared to Asterisk, FreeSWITCH offers better scalability for media-heavy applications.


