How to Install Freeswitch from Source on Debian 12

Step 1: Install dependencies

Please execute the following commands to resolve the package/library dependencies for package installation in further steps


apt install aptitude build-essential
aptitude install autoconf libtool libtool-bin pkg-config libpq-dev lua5.4 liblua5.4-dev libmariadb-dev git libtiff-dev libsqlite3-dev libcurl4-openssl-dev libcurl4-nss-dev libcurl4-gnutls-dev libpcre3 libpcre3-dev libspeex-dev libspeexdsp-dev libldns-dev yasm uuid-dev uuid libopencore-amrnb-dev libopencore-amrnb0 libopencore-amrwb-dev libopencore-amrwb0 libvo-amrwbenc-dev libvo-amrwbenc0 libswscale-dev libavformat-dev libopus-dev libshout3-dev libmpg123-dev libmp3lame-dev libsndfile-dev libapr1 libapr1-dev libncurses5 libncurses5-dev libsctp-dev libsctp1 libtinfo5 sqlite3 unzip zip libedit-dev cmake


For Rockey Linux follow this

Step 2: Install spandsp

git clone https://github.com/freeswitch/spandsp.git
cd spandsp
./bootstrap.sh
./configure
make 
make install

Step 3: Install Sofia SIP

wget https://github.com/freeswitch/sofia-sip/archive/refs/tags/v1.13.17.tar.gz
tar -zxvf v1.13.17.tar.gz
cd sofia-sip-1.13.17
./bootstrap.sh
./configure
make
make install

Step 4: Install libks

build and install libks2 - needed for mod_verto and signalwire


git clone https://github.com/signalwire/libks.git
cd libks
cmake . -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX:PATH=$PREFIX
make
sudo make install

Step 5: Install Freeswitch

Download the latest version from the Freeswitch Github repo.


wget https://github.com/signalwire/freeswitch/archive/refs/tags/v1.10.12.tar.gz
tar -zxvf v1.10.12.tar.gz
cd freeswitch
./bootstrap.sh -j


Edit Module files as per your requirements

vim modules.conf
  • enable mod_xml_curl
  • enable mod_curl
  • enable mod_shout
  • disable mod_signalwire

./configure --prefix=/opt/freeswitch


Faced this issue while compiling the code


vim ./src/mod/applications/mod_spandsp/mod_spandsp_dsp.c


Edit file as per the above-mentioned GitHub Issue.


make
make install
ln -s /opt/freeswitch/etc/freeswitch /etc/freeswitch
ln -s /opt/freeswitch/bin/freeswitch /usr/bin/freeswitch
ln -s /opt/freeswitch/bin/fs_cli /usr/bin/fs_cli
useradd -M freeswitch
mkdir -p /opt/freeswitch/run/freeswitch/
chown -R freeswitch:freeswitch /opt/freeswitch


Now create a Service file


vim /etc/systemd/system/freeswitch.service


copy the following content in the file


[Unit]
Description=freeswitch
Wants=network-online.target
Requires=network.target local-fs.target
After=network.target network-online.target

[Service]
; service
Type=forking
#PIDFile=/run/freeswitch.pid
PIDFile=/opt/freeswitch/run/freeswitch/freeswitch.pid
Environment="DAEMON_OPTS=-nonat"
Environment="USER=freeswitch"
Environment="GROUP=freeswitch"
EnvironmentFile=-/etc/default/freeswitch
ExecStartPre=/bin/chown -R ${USER}:${GROUP} /opt/freeswitch
ExecStart=/usr/bin/freeswitch -u ${USER} -g ${GROUP} -run /opt/freeswitch/run/freeswitch -ncwait ${DAEMON_OPTS}
TimeoutSec=45s
Restart=always
; exec
;User=${USER}
;Group=${GROUP}
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=60000
LimitSTACK=250000
LimitRTPRIO=infinity
LimitRTTIME=infinity
IOSchedulingClass=realtime
IOSchedulingPriority=2
CPUSchedulingPolicy=rr
CPUSchedulingPriority=89
UMask=0007
NoNewPrivileges=false


Start FreeSWITCH


systemctl daemon-reload
systemctl restart freeswitch


Enjoy 😉

No comments:

Post a Comment

SIPp UAC Scenario to send RTP

Please install the latest sipp ( >=3.7.3 ) wget https://github.com/SIPp/sipp/releases/download/v3.7.3/sipp chmor +x sipp mv sipp /usr/bin...