Enviado por admin el
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
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:
Se pone el nombre del sub domibio y se presiona aceptar:
Se pone el correo electronico y nuevamente aceptar:
Se acepta la licencia y se presiona Agree:
Si el programa no encuentra un virtual host configurado utilizará el archivo ssl.conf:
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
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:
Se accede a la pagina: https://sip.miodominio.org o al subdominio que han configurado:
Se presiona el Botón “Create Account”:
“Continue”
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:
- Corregir los errores/sugerencias presente en la pagina principal (DASHBOARD)
- Personalizar la configuración general del canal SIP y del canal PJSIP en Settings –> Asterisk SIP Settings
- Instalar los modulos que se necesite en Admin –> Module Admin
- Cambiar el idioma de la GUI (si no les gusta el ingles) en Settings –> Advanced Settings –> Default Language
- Se instalan las locuciones en español a partir de esta pagina
- ¡¡¡Disfrutar!!!
3 comentarios
Ayuda Instalación Centos 7.2+FreePbx 13
Enviado por Yeison Manrique (no verificado) el
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
Enviado por admin el
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
Enviado por bsalazar el
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