Instalación de FreePBX 13 con Asterisk 13.13.1 en CentOS 7.2

He decidido escribir esta guía para aquellos que “aman” las GUI gráficas para administrar Asterisk y para aquellos que utilizan/utilizaban Elastix y dentro de poco se verán obligados a optar por otro tipo de solución. Este tipo de instalación se realiza a partir del paquete de FreePBX y no de la ISO. Esto porque a veces nos veremos obligados a este tipo de solución si queremos instalar FreePBX en un servidor remoto donde no es posible instalar el sistema operativo a partir de una ISO. En este caso se ha utilizado un VPS (Servidor virtual remoto) de Digital Ocean. La única limitación de este tipo de instalación es que no se pueden instalar los paquetes de pago de FreePBX. Una vez adquirido el VPS, se accede vía SSH y se actualiza el sistema:

yum update -y

Se instalan los repositorios epel:

yum install epel-release -y

Se instala el editor nano:

yum installa nano -y

Se configura la zona horaria (personalizar):

rm /etc/localtime
ln -s /usr/share/zoneinfo/America/Bogota /etc/localtime

Se configura el idioma del servidor:

localectl set-locale LANG=es_CO.iso88591

Se instala el Network Time Protocolo y se configura para que arranque con el servidor:

yum install ntp -y
systemctl enable ntpd
systemctl start ntpd

Se instala el paquete de desarrollo de la versión del Kernel instalada:

yum install -y kernel-devel-$(uname -r)

Se crea la memoria de Swap:

dd if=/dev/zero of=/swapfile bs=1024 count=512k
mkswap /swapfile
swapon /swapfile
nano /etc/fstab

Al final del archivo se añade:

/swapfile          swap            swap    defaults        0 0

Se guardan los cambios y se cambian los permisos del archivo /swapfile:

chmod 0600 /swapfile

Se configura la consola del usuario root:

nano .bash_profile

al final del archivo se añade:

export EDITOR=/usr/bin/nano
export PS1='\[\033[0;35m\]\H\[\033[0;33m\] \w\[\033[00m\]: '
alias free="free -m"

Se guardan los cambios y se recarga la configuración de la consola:

source .bash_profile

Si tenemos asociado a la IP publica del servidor un subdominio (ejemplo sip.miodominio.org) lo configuramos:

hostnamectl set-hostname sip.miodominio.org --static

Reiniciamos el servidor:

reboot

Volvemos a entrar vía SSH y iniciamos con la instalación/compilación de las dependencias necesarias para la instalación de Asterisk:

yum install libvorbis libvorbis-devel vorbis-tools libogg libogg-devel -y
yum install gsm gsm-devel gsm-tools -y
yum install curl curl-devel libidn-devel -y
yum install gcc ncurses-devel make gcc-c++ zlib-devel libtool bison-devel bison openssl-devel bzip2-devel newt-devel subversion flex gtk2-devel bzip2 patch -y
yum install mariadb mariadb-server mariadb-devel -y
yum install unixODBC unixODBC-devel mysql-connector-odbc libtool-ltdl-devel -y
yum install sqlite sqlite-devel -y
yum install festival festival-devel hispavoces-pal-diphone hispavoces-sfl-diphone -y
yum install libuuid libuuid-devel uuid uuid-devel -y
yum install speex speex-devel wavpack wavpack-devel -y

cd /usr/src/
wget http://downloads.sourceforge.net/project/sox/sox/14.4.2/sox-14.4.2.tar.gz
tar -xf sox-14.4.2.tar.gz
cd sox-14.4.2
./configure --prefix=/usr --libdir=/usr/lib64
make && make install

yum install libtiff libtiff-devel libxml2 libxml2-devel -y
yum install spandsp spandsp-apidoc spandsp-devel -y
yum install gnutls gnutls-devel gnutls-utils -y
yum install iksemel iksemel-devel iksemel-utils -y
yum install sendmail sendmail-devel sendmail-cf -y
systemctl stop postfix
yum remove postfix -y
systemctl enable sendmail
systemctl restart sendmail
yum install compat-openldap openldap openldap-clients openldap-devel openldap-servers -y
yum install net-snmp net-snmp-devel net-snmp-libs net-snmp-utils -y
yum install radiusclient-ng  radiusclient-ng-devel  radiusclient-ng-utils -y
yum install lua lua-devel -y
yum install libical libical-devel -y

cd ..
wget http://webdav.org/neon/neon-0.30.1.tar.gz
tar -xf neon-0.30.1.tar.gz
cd neon-0.30.1
./configure --prefix=/usr --with-ssl=openssl --libdir=/usr/lib64
make
make install
yum install libsrtp libsrtp-devel
jansson jansson-devel -y
yum --enablerepo=epel install portaudio portaudio-devel python-devel -y

Instalamos la ultima versión de la rama 13 de Asterisk:

cd ..
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13.13.1.ta...
tar -xf asterisk-13.13.1.tar.gz
cd asterisk-13.13.1
./configure --libdir=/usr/lib64 --with-pjproject-bundled
make menuselect

image

En Add-ons se seleccionan los módulos indicados y se guardan los cambios con el botón “Save & Exit”

contrib/scripts/get_mp3_source.sh
make
make install
make samples
make config

Como será el script de FreePBX que se encargará de iniciar Asterisk, se desactiva el arranque automático:

systemctl disable asterisk

Se crea el usuario Asterisk:

adduser asterisk -M -c "Asterisk User"

Se instalan los paquetes necesarios para FreePBX:

yum install lynx php php-mysql php-mbstring tftp-server httpd mod_ssl audiofile-devel git php-process vim php-xml php-pear -y

yum install php-pear-DB -y

pear install Console_Getopt

Se cambian los permisos en las carpetas a que accederá el servidor Web:

chown -Rf asterisk:asterisk /var/run/asterisk
chown -Rf asterisk:asterisk /etc/asterisk
chown -Rf asterisk:asterisk /var/lib/asterisk
chown -Rf asterisk:asterisk /var/log/asterisk
chown -Rf asterisk:asterisk /var/spool/asterisk
chown -Rf asterisk:asterisk /lib64/asterisk
chown -Rf asterisk:asterisk /var/www
chown -Rf asterisk:asterisk /var/lib/php/session

Se inicia MariaDB y se pone en seguridad:

systemctl start mariadb
systemctl enable mariadb
mysql_secure_installation

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y
New password:
Re-enter new password:

Password updated successfully!
Reloading privilege tables..
... Success!

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y
... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] y
... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y
... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -psesamo mysql

Se configura la zona horaria de MariaDB:

nano /etc/my.cnf

se añade bajo el bloque:

[mysqld]

la siguiente linea:

default-time-zone = America/Bogota

Se guardan los cambios y se reinicia MariaDB:

systemctl restart mariadb

Se crean dos base de datos; una para el registro de las llamadas y otra donde FreePBX guardará algunas configuraciónes de Asterisk:

mysql -u root -psesamo

(sesamo es la contraseña de root):

MariaDB [(none)]> create database asteriskcdr;

MariaDB [(none)]> create database asterisk;

MariaDB [(none)]>  GRANT ALL PRIVILEGES ON asteriskcdr.* TO 'asterisk'@'localhost' IDENTIFIED BY 'sesamo';

MariaDB [(none)]>  GRANT ALL PRIVILEGES ON asteriskcdr.* TO 'asterisk'@'localhost' IDENTIFIED BY 'sesamo';

MariaDB [(none)]> quit

Ahora se modifica la configuración de PHP:

nano /etc/php.ini

Se cambian estas dos lineas:

upload_max_filesize = 2M
;date.timezone =

Para que queden:

upload_max_filesize = 256M
date.timezone = America/Bogota

Se guardan los cambios y se pasa a la configuración del servidor WEB:

nano /etc/httpd/conf/httpd.conf

Se cambian estas lineas:

User apache
Group apache
AllowOverride None

para que queden:

User asterisk
Group asterisk
AllowOverride All

Se guardan los cambios y se inicia:

systemctl enable httpd.service
systemctl start httpd

Se crea el certificado para el subdominio sip.miodominio.org (personalizar):

yum install python-certbot-apache -y

Se ejecuta:

certbot

En la ventana:

image

Se pone el nombre del sub domibio y se presiona aceptar:

image

Se pone el correo electronico y nuevamente aceptar:

image

Se acepta la licencia y se presiona Agree:

image

Si el programa no encuentra un virtual host configurado utilizará el archivo ssl.conf:

image

Todos las visitas hacia el sitio no cifrado se direccionarán hacia la dirección cifrada. Se reinicia el servidor WEB:

systemctl restart httpd

Se añade uno cronjob de forma que el certificado se renueve de forma automatica:

crontab -e

se añade:

##### CertBot
30 3 * * * /usr/bin/certbot renew –quiet

Se guadan los cambios y se installa mpg123, un reproductor MP3:

cd /usr/src

wget http://downloads.sourceforge.net/project/mpg123/mpg123/1.23.8/mpg123-1.2...
tar -xf mpg123-1.23.8.tar.bz2
cd mpg123-1.23.8
./configure --prefix=/usr --libdir=/usr/lib64
make
make install

Se continua con el paquete de FreePBX:

cd ..
wget
http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
tar -xf freepbx-13.0-latest.tgz
cd freepbx
./start_asterisk start
STARTING ASTERISK
Asterisk Started

Para que el script de instalación funcione correctamente:

nano /etc/asterisk/asterisk.conf

se modifica esta linea:

[directories](!)

para que quede:

[directories]

Se gaurdan los cambios y se continua con:

./install

image

Se contestan las preguntas como aparece en la imagen. Iniciará la instalación de FreePBX. Cuando el sistema lo pregunte confirmar con Y las modificaciones realizadas en algunos archivos de configuración de Asterisk. El resultado final:

image

Se accede a la pagina: https://sip.miodominio.org o al subdominio que han configurado:

image

Se presiona el Botón “Create Account”:

image

image

“Continue”

image

Como se puede leer CHAN_PJSIP utilizará el puerto 5060 mientras que CHAN_SIP el 5160. Como por defecto no se configura ningún cortafuegos:

systemctl stop firewalld
systemctl disable firewalld
yum install iptables-services -y
mv /etc/sysconfig/iptables /etc/sysconfig/iptables.old
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT ! -i lo -d 127.0.0.0/8 -j REJECT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -p udp --dport 4569 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "friendly-scanner" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "sipcli" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "VaxSIPUserAgent" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "sipvicious" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "sundayddr" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "iWar" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5060 -m string --string "sipsak" --algo bm -j DROP
iptables -A INPUT -p udp --dport 5060 -j ACCEPT
iptables -A INPUT -p udp -m udp --dport 5160 -m string --string "friendly-scanner" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5160 -m string --string "sipcli" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5160 -m string --string "VaxSIPUserAgent" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5160 -m string --string "sipvicious" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5160 -m string --string "sundayddr" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5160 -m string --string "iWar" --algo bm -j DROP
iptables -A INPUT -p udp -m udp --dport 5160 -m string --string "sipsak" --algo bm -j DROP
iptables -A INPUT -p udp --dport 5160 -j ACCEPT
iptables -A INPUT -p udp --dport 10000:20000 -j ACCEPT
iptables -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -j REJECT
iptables -A FORWARD -j REJECT
service iptables save
systemctl enable iptables
systemctl start iptables
systemctl status iptables

Para que FreePBX arranque con el sistema:

nano /etc/systemd/system/freepbx.service

Se copian las siguientes lineas:

[Unit]
Description=FreePBX VoIP Server
After=mariadb.service

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/fwconsole start
ExecStop=/usr/sbin/fwconsole stop

[Install]
WantedBy=multi-user.target

Se guardan los cambios y se activa:

systemctl enable freepbx.service

Para probar el sistema se reinicia:

reboot

Si toda funciona bien, los pasos a seguir son:

  1. Corregir los errores/sugerencias presente en la pagina principal (DASHBOARD)
  2. Personalizar la configuración general del canal SIP y del canal  PJSIP en Settings –> Asterisk SIP Settings
  3. Instalar los modulos que se necesite en Admin –> Module Admin
  4. Cambiar el idioma de la GUI (si no les gusta el ingles) en Settings –> Advanced Settings –> Default Language
  5. Se instalan las locuciones en español a partir de esta pagina
  6. ¡¡¡Disfrutar!!!

Vota el Articulo: 

Sin votos (todavía)
Evalúa la calidad del articulo

3 comentarios

Ayuda Instalación Centos 7.2+FreePbx 13

Muchas Gracias Señores de VoicetoVoice, excelente manual.
Pude realizar la instalación del FreePbx 13 en Centos 7.2, pero después de realizar el procedimiento indicado en esta manual, me aparece el error en FreePbx "Can Not Connect to Asterisk" y no he podido hacer nada en FreePbx.
Me podrían ayudar para poder resolver este inconveniente?.
Muchas Gracias por la ayuda que me puedan brindar.
Atentamente,

Yeison Manrique
Cel. +57 300 217 20 29
Email: yefreman@hotmail.com

Re: Ayuda Instalación Centos 7.2+FreePbx 13

Hola,

primero revisa si Asterisk está corriendo:

asterisk -rvvvvvvvvvvvvvv

Si no está corriendo y no se inicia cuando reinicias el servidor mira si tienes configurada la parte que inicia desde está linea:

Para que FreePBX arranque con el sistema:

Saludos

Error

Buenos noches.
Gracias por el manual muy bien explicado
Pero se me ha presentado en siguiente error

SIP.local /usr/src/asterisk-14.4.0: mysql -u root -psesamo
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
SIP.local /usr/src/asterisk-14.4.0:

Gracias por su ayuda

Suscribirse a Comentarios de "Instalación de FreePBX 13 con Asterisk 13.13.1 en CentOS 7.2" Suscribirse a VozToVoice - Todos los comentarios