Como montar una centralita IP paso a paso: Parte 1

Bienvenido, en esta guía encontraras toda la información necesaria para tener tu propia central IP por una fracción de lo que normalmente cuesta.

La primera parte comprende la instalación del software que utilizaremos la central.

Antes de comenzar…

Una central ip nos permite gestionar llamadas telefónicas dentro de una empresa, pudiendo compartir las líneas de acceso a la red pública entre varios usuarios, todo esto es posible a la utilización de la tecnología opensource Asterisk, pudiendo tener comunicación aun al exterior utilizando PTSN, lo cual se agrega a la unificación de tecnologías como VoIP,  la cual es una tecnología que proporciona la comunicación de voz y sesiones multimedia como vídeo a través de IP, y GSM el cual es el sistema Global de Comunicaciones Móviles.

En esta complementación de Central IP, se utilizan dos protocolos de enrutamiento VoIP. Ayudándonos de SIP para llamadas entre extensiones de la central y de IAX para conectarnos a otros servidores Asterisk mediante DUNDi el cual proporcional información de los direccionamientos de los números.

Materiales a utilizar.

  • Raspberry Pi 3 Modelo B+
Raspberry Pi 3 B+
  • Modem Huawei E303
  • Hub USB con fuente de poder externa
  • Router Technicolor CGA0101

Software necesario:

  • Raspbian Buster
  • Asterisk 14.7
  • Free PBX 14
  • Chan_dongle

Debes asegurarte de cumplir todos los requisitos antes de comenzar.


1. Instalación de dependencias

Paso 1: Actualizar Raspbian Buster.

Solo debemos ejecutar los siguientes comandos

sudo apt-get update 
sudo apt-get upgrade 

Al finalizar la actualización reiniciar la Raspberry Pi

Paso 2: Intalar PHP 5.6.

Para que FreePBX 14 funcione bien se debe instalar la versión 5.6 de PHP.

Si intentas instalarlo desde los repositorios de Buster, te darás cuenta que no esta disponibles. Por lo tanto, debemos descargarlo usando un repositorio externo.

Antes de agregar el nuevo repositorio, debemos instalar los siguientes paquetes.

‎‏‏‎ ‎
sudo apt install wget gpg2 ca-certificates apt-transport-https 
 

Una vez los tenemos instalados, agregamos el nuevo repositorio. Ejecutando lo siguiente:

‎‏‏‎ ‎
wget -q https://packages.sury.org/php/apt.gpg -O- | sudo apt-key add -

echo "deb https://packages.sury.org/php/ buster main" | sudo tee /etc/apt/sources.list.d/php.list
 

Ahora procedemos a instalar PHP. (Y actualizamos la lista de paquetes disponibles)

sudo apt update
sudo apt install php5.6

Luego que PHP este instalado procedemos a instalar las dependencias para las herramientas necesarias para montar la central ip.

‎‏‏‎ ‎
sudo apt-get install php5.6-cli php5.6-common php5.6-curl php5.6-gd php5.6-json php5.6-mbstring php5.6-mysql php5.6-xml

sudo apt-get install apache2 bison php5.6-fpm php-pear php5.6-odbc curl sox libncurses5-dev libssl-dev default-libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev libspandsp-dev subversion libtool-bin python-dev default-mysql-client default-mysql-server default-mysql-client-core default-mysql-server-core bison flex mongodb dirmngr php5.6-cgi libapache2-mod-security2 libapache2-mod-php5.6 --allow-unauthenticated

apt-get install build-essential libjansson-dev
 

Cuando finalice el proceso se reinicia nuevamente la RPi.


2. Instalación de Asterisk

Si te preguntas. ¿Porque vamos a utilizar la version 14.7 de Asterisk ?

Para evitar problemas de compatibilidad con el plugin «Chan_dongle». Mas adelante te diremos para que nos será útil.

Paso 1: Descargar y descomprimir Asterisk.

Cambiamos de directorio a /usr/src/

cd /usr/src/

Para descargarlo ejecutamos el siguiente comando:

‎‏‏‎ ‎
wget http://downloads.asterisk.org/pub/telephony/asterisk/old-releases/asterisk-14.7.8.tar.gz 
‎‏‏‎ ‎

Descomprimimos el tar.gz y cambiamos al nuevo directorio

tar -zxvf asterisk-14.7.8.tar.gz
cd asterisk-14.7.8/

Paso 2: Instalar dependencias adicionales.

Dentro del directorio «asterisk-14.7.8». Ejecutamos el comando:

contrib/scripts/get_mp3_source.sh

Dicho comando nos ayuda a descargar los archivos necesarios para compilar el modulo mp3.

Luego, ejecutamos:

./contrib/scripts/install_prereq install

Nos preguntara si queremos descargar los paquetes adicionales. Aceptamos.

Y + Enter

Comenzará a descargar y configurar todo lo necesario…

Una vez instaladas todas las dependencias adicionales la terminal deberá mostrar un mensaje así:

Paso 3: Aplicar configuraciones previas a la compilación.

Para configurar Asterisk se ejecuta el comando:

sudo ./configure

Si la configuración fue un éxito, al finalizar, la terminal se verá así:

Paso 4: Agregar la extensión format_mp3.

Para agregar extensiones u configurar opciones de compilación adicionales, se ejecuta:

make menuselect

Para fines de esta guía solo será necesario marcar en la pestaña «Add-ons» la opción de «format_mp3»

Paso 5: Compilar e instalar Asterisk.

El siguiente paso es ejecutar el comando para compilar asterisk:

# Dependiendo de la cantidad de núcleos del procesador de la Raspberry.
make
#Dos núcleos
make -j2
#Cuatro núcleos
make -j4

Al terminar la compilación aparecerá en la terminal lo siguiente:

Finalmente para instalar Asterisk se debe ejecutar:

make install

Si todo ha salido bien se vera esto en la terminal:

Ahora que tenemos instalado Asterisk, necesitamos instalar los archivos de configuración de muestra.

sudo make samples

Luego se ejecuta:

sudo make config
sudo ldconfig

Para que el servicio «Asterisk» inicie automáticamente luego del reinicio de la RPi o una falla.

Finalmente.
Si se requiere iniciar el servicio al encender la RPi, se ejecuta:

sudo systemctl enable asterisk

Paso 6: Comprobando la instalación de Asterisk:

Al ejecutar:

sudo asterisk -rvvvvv

Asterisk iniciará y mostrará en pantalla lo siguiente:

Paso Extra: Creación de usuario para el uso de Asterisk

Para mayor seguridad se realiza el siguiente procedimiento.

Se crea un nuevo grupo de cuentas:

sudo groupadd asterisk

Se agrega un nuevo usuario:

sudo adduser --system --group --home /var/lib/asterisk --no-create-home --gecos "Asterisk" asterisk

Asignamos permisos:

sudo chown -R asterisk: /var/{lib,log,run,spool}/asterisk /usr/lib/asterisk /etc/asterisk
sudo chmod -R 750 /var/{lib,log,run,spool}/asterisk /usr/lib/asterisk /etc/asterisk

Finalmente, se modifica el archivo /etc/default/asterisk

sudo nano /etc/default/asterisk

Quitando el # a las siguientes lineas:

AST_USER=»asterisk»
AST_GROUP=»asterisk»

Reiniciar el sistema luego de completar el procedimiento.


3. Intalación de Chan_dongle

En esta sección se usará Chan_dongle, una extensión de Asterisk open source para conectarse a la red telefonía conmutada local. Sirviendo como intermediario entre la red PSTN y nuestro servidor de Asterisk.

Previo a la instalación de Chan_dongle…

Para el correcto desarrollo esta sección y la siguiente se deben cumplir los requisitos:

  • Un modulo GSM compatible con chan_dongle
  • Un hub USB con fuente de alimentación propia
  • Una tarjeta SIM (chip) de alguna compañía local

Lista de dispositivos compatibles: http://asterisk-service.com/page/chan-dongle-modems

OJO: Se debe quitar el pin de bloqueo del modem (Liberar).

Existen 2 formas de liberar el modem.

Debes de cumplir todos los requisitos antes de continuar.

Paso 1: Descargar y descomprimir el plugin.

Para descargar el plugin se ejecuta el siguiente comando:

sudo wget https://github.com/wdoekes/asterisk-chan-dongle/archive/master.zip

Una vez termine la descarga, procedemos a descomprimir el archivo «master.zip»

sudo unzip master.zip

Paso 2: Configurar el plugin.

Se entra a la carpeta del plugin.

cd asterisk-chan-dongle-master

Ejecutamos el comando:

sudo ./bootstrap

Para realizar configuración antes de instalar.

Configuramos la versión de Asterisk a usar en la instalación:

sudo ./configure --with-astversion=14.7

Paso 3: Compilar e instalar chan_dongle.

Para compilar el plugin ejecutamos:

sudo make

Si todo ha salido bien, la terminal se verá asi:

Procedemos a instalar chan_dongle:

make install

La instalación es prácticamente instantánea por lo que no veremos ningún mensaje en la terminal:


4. Comunicando Asterisk y Chan_dongle.

Paso 1: Copiar configuracion del plugin a Asterisk

Ejecutamos:

sudo cp etc/dongle.conf /etc/asterisk

Paso 2: Dar acceso a los puertos seriales al usuario «Asterisk»

Al ejecutar Asterisk con su propio usuario (Paso extra en la sección 2 de esta guía) puede que chan_dongle no detecte los módem USB correctamente. En ese caso, necesitamos otorgar permisos para puertos ttyUSB.

Primero, creamos el archivo: 92-dongle.rules con los siguientes comandos:

cd /etc/udev/rules.d/
sudo nano 92-dongle.rules

Dentro del mismo, colocar las siguientes lineas:

KERNEL=="ttyUSB", MODE="0666", OWNER="asterisk", GROUP="uucp"

También se debe modificar al archivo asterisk.conf

Ejecutamos:

nano /etc/asterisk/asterisk.conf

Y al final del archivo escribimos:

rungroup = dialout

Se reinicia el sistema nuevamente.

Paso 3: Verificar la comunicación.

Se inicia Asterisk

sudo asterisk -rvvvvv

Si chan_dongle esta correctamente cargado se mostrará el siguiente error.

De no ser asi, se debe ejecutar el comando:

 module load chan_dongle.so  

Ahora debería mostrarse el error anterior.

¿Por que se muestra este error?
Esto es porque chan_dongle busca el modulo GSM que aun no sea conectado.

Buscamos el hub USB mencionado anteriormente y lo conectamos a la RPi.
Conectamos el modem al hub y luego de unos segundos deberá quedar configurado.

Ejecutamos:

dongle show devices

Y debería aparecer nuestro modulo GSM con su respectiva información.

¿Que debo hacer si el error persiste?

Extra: Corrección de errores

Se debe verificar el directorio «dev». Ejecutamos:

cd /dev

ls

De no aparecer las interfaces ttyUSB0, ttyUSB1, ttyUSB2 en la lista:

Se modifica el archivo /etc/usb_modeswitch.conf

sudo nano /etc/usb_modeswitch.conf

Al final del arcivo se encontrará la linea «HuaweiAltModelGlobal».

Cambiamos el valor a 1.

Guardamos el archivo y reiniciamos el sistema.

Si el cambio ha funcionado al conectar el módem USB nuevamente se debe configurar sin problemas.

Y en el directorio /dev aparecerán las interfaces.

Si por el contrario, el error continua. Quiere decir que el modulo no es compatible con chan_dongle y se debe conseguir otro.


Si has llegado hasta acá, prácticamente ya tienes lo esencial para poner en marcha tu central VoIP.

Sin embargo, las secciones a continuación harán que la creación y administración de las cuentas así como la conexión al exterior sean mucho mas sencillas.


5. Preparando el sistema para FreePBX.

Antes de comenzar con la instalación se deben completar ciertos pasos:

Paso 1: Asignar mas memoria a PHP.

Se modifica el archivo de configuración «php.ini»

sudo nano /etc/php/5.6/apache2/php.ini

Presionando Crtl+W se puede buscar la linea a cambiar.

Cambiar a: memory_limit = 256M

Paso 2: Instalar el paquete mylibodbc.

El siguiente paso es instalar mylibodbc para que MySQL se comunique con PHP.

Al ejecutar: sudo apt-get install libmyodbc.
Como se observa en la imagen no existe dicho paquete en el repositorio de Raspbian:

Esto se soluciona mediante «APT Pinning» utilizando el repositorio de Raspbian 8 (Jessie)

Primero se agrega un nuevo archivo en el directorio «preferences.d» llamado jessie:

sudo nano /etc/apt/preferences.d/jessie

Dentro del mismo debemos colocar lo siguiente

Package: *
Pin: release n=buster
Pin-Priority: 900
Package:*
Pin: release n=jessie
Pin-Priority: 100

Luego, se agrega Jessie a la lista de repositorios.

sudo nano /etc/apt/sources.list

Al final archivo escribir:

deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib

Luego de guardar los cambios, se ejecuta:

sudo apt-get update

Observamos que ya aparece el repositorio de Jessie

Ahora, instalamos lo necesario:

sudo apt-get install unixodbc libmyodbc sqlite3

Al finalizar la instalación se reinicia el sistema.

Paso 3: Comunicar MySQL con PHP.

Se crea un archivo nuevo:

sudo nano /etc/odbcinst.ini

Escribimos lo siguiente:

[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/arm-linux-gnueabihf/odbc/libmyodbc.so
Setup = /usr/lib/arm-linux-gnueabihf/odbc/libodbcmyS.so
FileUsage = 1

Guardamos el archivo.

También hay que modificar el archivo odbc.ini:

sudo nano /etc/odbc.ini

Con la siguiente información:

[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL
server=localhost
database=asteriskcdrdb
Port=3306
Socket=/var/run/mysqld/mysqld.sock
option=3

Luego de guardar el archivo, se ejecutan los comandos:

a2enmod rewrite
a2enmod proxy_fcgi setenvif
# Seguido de:
service apache2 #Para aplicar los cambios

Se reinicia la Raspberry Pi.

Paso 4: Modificar la configuración de Asterisk.

Se debe acceder al archivo asterisk.conf:

nano /etc/asterisk/asterisk.conf

Solo se borra el «(!)» al final de la primera linea y se aceptan los cambios No modificar nada mas.

¡Luego de todo lo anterior se puede instalar FreePBX!

5. Instalando FreePBX.

Regresamos al directorio donde se descomprimió Asterisk.

cd /usr/src

Ejecutamos el comando:

wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-14.0-latest.tgz

Se descomprime FreePBX y cambiamos al directorio:

tar vxfz freepbx-14.0-latest.tgz

cd freepbx

Se ejecuta el siguiente comando para comenzar la instalación (No olvides reiniciar el sistema al terminar la instalación). :

./install -n

Cuando termine la instalación la terminal debera verse así:

Listo, tenemos instalado FreePBX.


Con esto concluye la instalación de las herramientas.

Para la configuración de FreePBX. Ver parte 2


Deja un comentario

Diseña un sitio como este con WordPress.com
Comenzar