Información obtenidad de aquí y aquí

Configuración inicial

$ sudo sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
$ sudo service sshd restart

Probado con:

Debian 8.6 (Jessie) Asterisk v13 Freepbx v13

Se sobre entiende que el modo texto de la consola es multi-user.target y que la ejecución de los comando es realizada como superusuario (root) sudo su.

Instalación de prerequisitos

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-d
ev libjansson-dev tftpd postfix mailutils nano ntp chkconfig libspandsp-dev libcurl4-gnutls-dev unixodbc unixodbc-dev libmyodbc xinetd e2fsprogs dbus sudo linux-headers*

Durante la instalación de MySQL se nos solicitará la contraseña del usuario root.

Instalación requisitos pear

pear install Console_getopt

Configuración de la zona horaria

Para ello emplearemos el paquete tzselect.

## EJEMPLO
timedatectl set-timezone Europe/Madrid
timedatectl status

Instalación de DAHDI

Será necesario instalarlo en caso de que sea necesario el empleo de tarjetas.

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

Si falla make all hay que reiniciar y tratar de instalar las cabeceras.

apt-get install linux-headers*

Podemos comprobar is dahdi está funcionando con:

lsmod | grep dahdi
dahdi_voicebus         53442  1 wctdm24xxp
dahdi                 212264  2 wctdm24xxp,dahdi_voicebus
crc_ccitt              12347  2 wctdm24xxp,dahdi

Con dahdi_hardware comprobaremos el harware conectado.

dahdi_hardware 
pci:0000:04:05.0     wctdm24xxp+  d161:8005 Wildcard TDM410P

Finalmente habrá que hacer propietario de los siguientes archivos al usuario asterisk, si no existen también habrá que crearlos.

touch /etc/dahdi/system.conf
chown asterisk /etc/dahdi/system.conf
touch /etc/modprobe.d/dahdi.conf
chown asterisk /etc/modprobe.d/dahdi.conf
touch /etc/dahdi/modules
chown asterisk /etc/dahdi/modules
touch /etc/asterisk/chan_dahdi_general.conf
touch /etc/asterisk/chan_dahdi_groups.conf
touch /etc/asterisk/chan_dahdi.conf
chown asterisk /etc/asterisk/chan_dahdi_general.conf
chown asterisk /etc/asterisk/chan_dahdi_groups.conf
chown asterisk /etc/asterisk/chan_dahdi.conf
mkdir wanpipe
touch wanpipe/global.conf
chown -R asterisk wanpipe/

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

Su falla la instalación (make install) repetir de nuevo desde ldconfig. Depués, para verificar la instalación ldconfig -p | grep pj que deberá mostrar varios ficheros *.so el el directorio /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 la instalación ejectuamos nano -v config.log

Y

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

Para compilar las opciones manualmente ejecutaremos make menuselect. Para mostrar las opciones ejecutaremos menuselect/menuselect --list-options. Si Asterisk falla a ejecutarse en una máquina virtual se añade la opción --disable BUILD_NATIVE. Para aplicaciones de tiempo real como A2billing añadimos la opción --enable res_config_mysql.

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

Creación de los usuarios de asterisk

adduser asterisk --disabled-password --shell /sbin/nologin --gecos "Asterisk User"
chown -R asterisk. /var/lib/asterisk
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/lib/asterisk

Freepbx

Haremos lo siguiente.

cd /usr/src
wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-13.0-latest.tgz
tar vxfz freepbx-13.0-latest.tgz
rm -f freepbx-13.0-latest.tgz
cd freepbx
./start_asterisk start
./install -n --dbpass contraseña_mysql

Reemplazar “contraseña_mysql” con la contraseña del usuario root en MySQL.

Instalación del los módulos mínimos.

fwconsole ma upgrade framework core voicemail sipsettings infoservices featurecodeadmin logfiles callrecording cdr dashboard
fwconsole restart
fwconsole reload
fwconsole chown

Configuración de Apache

Cambiarmos ahora el usuario de ejecución al nombre 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

Y la configuración…

cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
sed -i 's/\= 128M/\= 256M/g' /etc/php5/apache2/php.ini

Reiniciamos apache2.

systemctl restart apache2

Configurar FreePBX en arranque

Configurar para que Freepbx comience al arrancar el sistema requiere las siguientes operaciones.

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

Y ahora se habilita.

systemctl enable freepbx

reboot

Ahora podremos accedemos al GUI de FreePBX en http://iP_del_servidor

Tareas a realizar tras la instalación

Lo primero es asegurar el servidor de bases de datos.

mysql_secure_installation

Introduciremos la contraseña de root y diremos que sí (y) a todo.

Configuración de la rotación de los logs para que no se acumulen editando nano /etc/logrotate.d/asterisk y añadiendo:

/var/spool/mail/asterisk
/var/log/asterisk/*log
/var/log/asterisk/messages
/var/log/asterisk/full
/var/log/asterisk/dtmf
/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

Se recomienda la instalación de este módulo aunque si crd_mysql.so está instalado esta parte es opcional.

Añadimos al fichero de configuración mediante nano /etc/odbcinst.ini el siguiente texto.

[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

y también 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 del driver ODBC

Ejecutamos:

odbcinst -s -q

Debemos usar “usuario” y “clave” en /etc/asterisk/res_odbc_additional.conf para comprobar la conexión con la base de datos vía ODBC.

isql -v MySQL-asteriskcdrdb usuario_freepbx clave_freepbx

Servidor TFTP

En caso de emplear teléfonos IP es interesante configurar un servidor TFTP para cargar la configuración.

Creamos y editamos archivo con nano /etc/xinetd.d/tftp para incluir.

service tftp { 
protocol = udp 
port = 69 
socket_type = dgram 
wait = yes 
user = nobody 
server = /usr/sbin/xinetd
server_args = /tftpboot 
disable = no 
*}

Creamos el directorio /tftpboot si no esta creado, cambiamos permisos y reiniciamos el servico.

mkdir /tftpboot 
chmod 777 /tftpboot 
systemctl restart xinetd

Toques finales

Cambiamos “upload_max_filesize” de 2M a 20M para permitir ficheros de audio mayores editanado el siguiente fichero nano +810/etc/php5/apache2/php.ini. Si va mos a usar dahdi, es conveniente ejecutar dahdi_genconf.