Cómo instalar FreeSwitch

En este artículo veremos como instalar FreeSwitch, una PBX más versátil que Asterisk, para montar un servidor del protocolo SIP. La instalación la haremos sobre Ubuntu 18.04 LTS, en otras distribuciones no debería ser muy diferente si se sabe traducir los comandos de una a otra distribución.

Prerequisitos

Se aconseja partir de un servidor recien desplegado, o máquina virtual, y los paquetes para poder compilar FreeSwitch son los siguientes:

$ apt-get install --yes build-essential pkg-config uuid-dev \
zlib1g-dev libjpeg-dev libsqlite3-dev libcurl4-openssl-dev \
libpcre3-dev libspeexdsp-dev libldns-dev libedit-dev libtiff5-dev \
yasm libopus-dev libsndfile1-dev liblua5.3-dev

A continuación es necesario descargar el código fuente de FreeSwitch desde https://files.freeswitch.org/freeswitch-releases/ Nosotros hemos usado la versión 1.8.5. Así que nos iremos al directorio /usr/local/src y como root descargaremos esa versión.

$ wget https://files.freeswitch.org/freeswitch-releases/freeswitch-1.8.5.tar.gz
$ tar xvzf freeswitch-1.8.5.tar.gz
$ cd freeswitch-1.8.5

Ahora ya podemos compilar FreeSwitch:

./configure && make

Algunos errores se pueden presentar mientras se compila por la falta de algunos paquetes, los instalamos y reiniciamos la compilación:

./configure && make clean && make

Tras una compilación exitosa instalaremos el software. La localización por defecto es /usr/local/freeswitch:

make install

Configurar FreeSwitch como servicio

Crearemos el fichero /etc/systemd/system/freeswitch.service con el editor que más nos guste y añadiremos lo siguiente:

; This file in installations built from Master can be found in
; /usr/src/freeswitch.git/debian
; or
; /usr/src/freeswitch/debian
[Unit]
Description=freeswitch
After=syslog.target network.target local-fs.target

[Service]
; service
Type=forking
PIDFile=/usr/local/freeswitch/run/freeswitch.pid
PermissionsStartOnly=true
; blank ExecStart= line flushes the list
ExecStart=
ExecStart=/usr/local/freeswitch/bin/freeswitch -u freeswitch -g freeswitch -ncwait -nonat -rp
TimeoutSec=45s
Restart=on-failure
; exec
WorkingDirectory=/usr/local/freeswitch/bin
User=root
Group=daemon
LimitCORE=infinity
LimitNOFILE=100000
LimitNPROC=60000
;LimitSTACK=240
LimitRTPRIO=infinity
LimitRTTIME=7000000
IOSchedulingClass=realtime
IOSchedulingPriority=2
CPUSchedulingPolicy=rr
CPUSchedulingPriority=89
UMask=0007

[Install]
WantedBy=multi-user.target

Iniciamos el servicio:

service freeswitch start

Y por último ya podemos ingresar en la consola con el comando /usr/local/freeswitch/bin/fs_cli

Recordar que antes de exponer el servicio a Internet es casi obligatorio leerse la documentación disponible en el wiki.

Otro día veremos como hacer un teléfono SIP para la web usando alguna librería de SIP sobre Websockets.

Avatar
Antonio Pardo
Arquitecto de Sistemas

Areas de interes comunicaciones unificadas y el lenguaje Elixir.