Asterisk con Freepbx en Debian (Debian v8, Asterisk v13, Freepbx v13)

Esta guía cubre la instalación de Asterisk y Freepbx de la fuente en Debian v8.

Probado en:
Debian v8 (Jessie)
Asterisk v13
Freepbx v13

Suposiciones
Modo de texto de la consola (multiusuario.objetivo)
Instalación hecha como usuario root (#)

Instalar Prerrequisitos

apt-get update && apt-get upgrade -y
apt-get install -y build-essential openssh-server apache2 mysql-server mysql-client bison flex \
php5 php5-curl php5-cli php5-mysql php-pear php5-gd curl sox libncurses5-dev libssl-dev \
libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake \
libtool autoconf git subversion uuid uuid-dev libiksemel-dev libjansson-dev tftpd postfix mailutils \
nano ntp chkconfig libspandsp-dev libcurl4-gnutls-dev unixodbc unixodbc-dev libmyodbc xinetd \
e2fsprogs dbus sudo xmlstarlet linux-headers*

Pedirá establecer la contraseña de root de MySQL para configurarlo ahora.

Instalar el requisito de pera legado

pear install Console_getopt

Establecer zona horaria

Usar tzselect es una forma de encontrar la zona horaria correcta.

tzselect
## SET TIMEZONE EXAMPLE
timedatectl set-timezone America/Mexico_City
​timedatectl status

Instalar

DAHDI

Solo se requiere si se usa un servidor físico y se instala hardware de telecomunicaciones.

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
tar zxvf dahdi-linux-complete*
cd /usr/src/dahdi-linux-complete*/
make all && make install && make config
systemctl start dahdi

Si make all falla intente reiniciar y ejecute apt-get install linux-headers *

PJSIP

cd /usr/src
wget http://www.pjsip.org/release/2.5.5/pjproject-2.5.5.tar.bz2
tar -xjvf pjproject-2.5.5*
cd /usr/src/pjproject-2.5.5*/
make distclean
./configure --enable-shared --disable-sound --disable-resample \
--disable-video --disable-opencore-amr CFLAGS='-O2 -DNDEBUG'
make uninstall && ldconfig && make dep && make && make install && ldconfig

Para verificar escribe ldconfig -p | grep pj que debería mostrar varios enlaces *.so archivos en /usr/local/lib.

Asterisk

cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-13-current.tar.gz
tar zxvf asterisk-13-current.tar.gz
cd /usr/src/asterisk-13*/
make distclean
./configure

Para verificar escribe nano -v config.log.

cd /usr/src/asterisk-13*/
make menuselect.makeopts

#To select compile options manually from menu run make menuselect instead of the following command.
#To list command line options run menuselect/menuselect --list-options
#If Asterisk fails to run on a virtual machine try add "--disable BUILD_NATIVE"
#To add asterisk realtime for applications such as A2billing add "--enable res_config_mysql"

menuselect/menuselect --enable cdr_mysql --enable EXTRA-SOUNDS-EN-GSM menuselect.makeopts

Crear el usuario Asterisk, compilar, instalar y establecer como dueño de los archivos.

adduser asterisk --disabled-password --shell /sbin/nologin --gecos "Asterisk User"
make && make install && chown -R asterisk. /var/lib/asterisk

Freepbx

cd /usr/src
git clone -b release/13.0 --single-branch https://github.com/FreePBX/framework.git freepbx
cd /usr/src/freepbx
./start_asterisk start

## reemplaza "contraseña" con la contraseña que le asignaste a MySQL
./install -n --dbpass contraseña
# Módulos mínimos de instalación
fwconsole ma upgrade framework core voicemail sipsettings infoservices \
featurecodeadmin logfiles callrecording cdr dashboard music conferences
fwconsole restart
fwconsole reload
fwconsole chown

Configurar Apache

Cambiar el usuario de ejecución de Apache y el nombre del grupo a asterisk.

sed -i 's/\(APACHE_RUN_USER=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars
sed -i 's/\(APACHE_RUN_GROUP=\)\(.*\)/\1asterisk/g' /etc/apache2/envvars
chown asterisk. /run/lock/apache2
mv /var/www/html/index.html /var/www/html/index.html.disable
systemctl restart apache2

Establezca Freepbx para iniciar al arrancar

nano /etc/systemd/system/freepbx.service
​[Unit]
Description=Freepbx
After=mysql.service
 
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/sbin/fwconsole start
ExecStop=/usr/sbin/fwconsole stop
 
[Install]
WantedBy=multi-user.target

Ahora habilítalos.

systemctl enable freepbx
reboot

Ahora debería poder acceder a la GUI de FreePBX en http://laipdelservidor

Las tareas posteriores a la instalación son obligatorias

Tareas posteriores a la instalación

Bloquee el servidor de la base de datos.

mysql_secure_installation

Ingrese la contraseña de root y luego responda Y a todo.

Rotación del archivo de LOG

Si esto no se hace, los archivos de registro seguirán creciendo indefinidamente.

nano /etc/logrotate.d/asterisk
/var/spool/mail/asterisk
/var/log/asterisk/messages
/var/log/asterisk/full
/var/log/asterisk/dtmf
/var/log/asterisk/freepbx.log
/var/log/asterisk/freepbx_security.log
/var/log/asterisk/freepbx_dbug
/var/log/asterisk/fail2ban {
        weekly
        missingok
        rotate 4
        #compress
        notifempty
        sharedscripts
        create 0640 asterisk asterisk
        postrotate
        /usr/sbin/asterisk -rx 'logger reload' > /dev/null 2> /dev/null || true
        endscript
        su root root
}

CDR ODBC

Si el módulo cdr_mysql.so obsoleto está instalado, esto es opcional, pero aún así se recomienda.

nano /etc/odbcinst.ini
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmyodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1
nano /etc/odbc.ini
[MySQL-asteriskcdrdb]
Description=MySQL connection to 'asteriskcdrdb' database
driver=MySQL
server=localhost
database=asteriskcdrdb
Port=3306
Socket=/var/run/mysqld/mysqld.sock
option=3

Prueba el driver ODBC

odbcinst -s -q

Utilice el nombre de usuario y la contraseña en  /etc/asterisk/res_odbc_additional.conf para probar la conectividad con el DB a través de ODBC.

isql -v MySQL-asteriskcdrdb freepbxuser <Contraseña>

TFTP

Si planea usar teléfonos SIP de hardware, probablemente quiera habilitar el servidor tftp.

Crear archivo de configuración tftp.

nano /etc/xinetd.d/tftp
service tftp
{
protocol        = udp
port            = 69
socket_type     = dgram
wait            = yes
user            = nobody
server          = /usr/sbin/in.tftpd
server_args     = /tftpboot
disable         = no
}

Cree el directorio y reinicie el demonio para iniciar tftp.

mkdir /tftpboot
chmod 777 /tftpboot
systemctl restart xinetd

Ajustes varios

Cambia el “upload_max_filesize” de 2M a 20M para permitir música más grande en los archivos de espera.

nano +810 /etc/php5/apache2/php.ini

Agregue  AllowOverride All  en DocumentRoot para que los archivos  .htaccess en las carpetas web estén activos. y agrege el modulo rewrite a apache

nano +14 /etc/apache2/sites-available/000-default.conf
<Directory /var/www/html>
    AllowOverride All
    </Directory>
a2enmod rewrite
service apache2 restart

Ahora accede vía web y configura el conmutador.