Asterisk e FreePBX no Debian (Debian v9, Asterisk v13/14 e FreePBX v14)

Smiley face


Olá seja bem vindo a mais um tutorial de Asterisk, FreePBX e linux, que é disponibilizado para ajudar a comunidade, este foi feito com muito carinho, é sim, não estou exagerando, nas ultimas semanas em um projeto com os um de meus colegas de profissão, o Rafael Tavares nos deparamos com um Debian 9.6 que nos deu um baita trabalho, mas nós como amamos o que fazemos, não deixamos barato, resolvemos e estamos disponibilizando o material homologado, ele assim como eu não deseja este sofrimento para o seu próximo. Bom vamos ao que interessa.

Essa documentação foi homologada em dois ambientes:

1-) Laboratório:

  • XenCenter Versão 7.4;
  • Debian 9.6 amd64;
  • HD: 20Gb;
  • RAM: 1024Mb;
  • Asterisk: Versão 13;
  • FreePBX: Versão 14;

2-) Laboratório:

  • VMware ESX 6.5;
  • Debian 9.6 amd64;
  • HD: 50Gb;
  • RAM: 2048Mb;
  • Asterisk: Versão 13;
  • FreePBX: Versão 14;

# Pré-requisitos
apt -y update && apt -y upgrade && apt install lsb-release

# PHP, removendo a versão atual e instalando a compativel para a instalação do FreePBX
apt -y purge php* 
apt -y install curl apt-transport-https
curl https://packages.sury.org/php/apt.gpg | apt-key add -
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/deb.sury.org.list
apt -y update && apt -y install php5.6 php5.6-curl php5.6-cli php5.6-mysql php5.6-mbstring php5.6-gd php5.6-xml

Dependencias necessárias

apt -y install build-essential aptitude openssh-server apache2 mariadb-server mariadb-client \
bison doxygen flex php-pear curl sox libncurses5-dev libssl-dev libmariadbclient-dev mpg123 \
libxml2-dev libnewt-dev sqlite3 libsqlite3-dev pkg-config automake libtool-bin autoconf \
git subversion uuid uuid-dev libiksemel-dev libjansson-dev tftpd postfix mailutils nano \
ntp libspandsp-dev libcurl4-openssl-dev libical-dev libneon27-dev libasound2-dev libogg-dev \
libvorbis-dev libicu-dev libsrtp0-dev unixodbc unixodbc-dev python-dev xinetd e2fsprogs dbus \
sudo xmlstarlet mongodb lame ffmpeg dirmngr linux-headers*

Node.js

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
apt -y install nodejs

ODBC

cd /usr/src
wget https://downloads.mariadb.com/Connectors/odbc/connector-odbc-2.0.15/\
mariadb-connector-odbc-2.0.15-ga-debian-x86_64.tar.gz
tar -zxvf mariadb-connector-odbc-2.0.15*.tar.gz
cp mariadb-connector-odbc-2.0.15*/lib/libmaodbc.so /usr/lib/x86_64-linux-gnu/odbc/

#Crie /etc/odbcinst.ini
cat >> /etc/odbcinst.ini << EOF
[MySQL]
Description = ODBC for MariaDB
Driver = /usr/lib/x86_64-linux-gnu/odbc/libmaodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libodbcmyS.so
FileUsage = 1
  
EOF

# Crie /etc/odbc.ini
cat >> /etc/odbc.ini << EOF
[MySQL-asteriskcdrdb]
Description = MariaDB connection to 'asteriskcdrdb' database
driver = MySQL
server = localhost
database = asteriskcdrdb
Port = 3306
Socket = /var/run/mysqld/mysqld.sock
option = 3
  
EOF

TimeZone

# Configure o Timezone do server
tzselect

Instalar DAHDI

Necessário somente se estiver usando um servidor físico e instalando hardware de telecom. Neste momento, as versões mais recentes que 2.10.2 (2.11.0 e 2.11.1) não são instaladas corretamente.

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

# Se caso make all falhar reinicie o servidor e execute apt -y install linux-headers*

Instalação do Asterisk

# Será instalado a versão 13 que é certificada, mas se caso quiser instalar a 14 sem problemas, basta definir VERSION=14

VERSION=13
cd /usr/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-${VERSION}-current.tar.gz
tar zxvf asterisk-${VERSION}-current.tar.gz
cd /usr/src/asterisk-13.23.1/
make distclean

Instalando dependencias adicionais

cd /usr/src/asterisk-13.23.1/
./contrib/scripts/install_prereq install

Configurar

cd /usr/src/asterisk-13.23.1/
./configure --with-pjproject-bundled

Definir opções de compilação

make menuselect

Selecione opções adicionais de compilação ou deixe no padrão e salve.
Para adicionar mais opções de compilação, basta executar make menuselect novamente e compilar/instalar novamente.


Crie um usuário Asterisk, compile, instale e defina a propriedade preliminar.

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

Instalar FreePBX

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

Obs. Se você receber um erro que a versão não foi possível determinar o Asterisk, modifique a seguinte linha:

vim +266  installlib/installcommand.class.php
$lastline = exec("runuser" . $answers['user'] . ' -s /bin/bash -c "cd ~/ && asterisk -rx \'core show version\' | grep ^Asterisk 2>&1"', $tmpout, $ret);

Instalar os modulos básicos do FreePBX

fwconsole ma downloadinstall framework core voicemail sipsettings infoservices \
featurecodeadmin logfiles callrecording cdr dashboard music conferences

fwconsole chown
fwconsole reload

Opcionalmente, você pode instalar todos os módulos (não recomendado). Você provavelmente precisará executar os seguintes comandos duas vezes.

fwconsole ma installall
fwconsole chown
fwconsole reload

Habilitar Freepbx para iniciar no boot de servidor

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

EOF
systemctl enable freepbx

Configurar o Apache

Adicione AllowOverride All ao diretório da Web para que o .htaccess esteja ativo.

cat >> /etc/apache2/conf-available/allowoverride.conf << EOF 

    AllowOverride All
    
EOF

a2enconf allowoverride

Alterar usuário/grupo padrão do apache, desabilitar index.html, habilitar o módulo rewrite.

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
a2enmod rewrite
systemctl restart apache2

Reinicie o Servidor

Após o reboot, você deve conseguir acessa a interface do seu FreePBX http://IP_Do_Servidor,deve apresentar a seguinte tela abaixo:

Os processos a seguir são obrigatórios

Tarefas pós-instalação
Configuração do banco de dados.

mysql_secure_installation

Responda 'N' para não alterar a senha do Root, as demais respostas, todas 'Y'

Rotação de Arquivo de Log

Se isso não for feito, os arquivos de log continuarão crescendo indefinidamente.

vim /etc/logrotate.d/asterisk
/var/spool/mail/asterisk
/var/log/asterisk/full
/var/log/asterisk/dtmf
/var/log/asterisk/fail2ban
/var/log/asterisk/freepbx.log
/var/log/asterisk/freepbx_security.log 
/var/log/asterisk/freepbx_debug {
        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
}

Bom, encerramos por aqui, agora você já tem um painel de administração funcionando para o seu PBX IP, não deixe de compartilhar e nos dar seu feedback.

Participe dos nossos grupos no telegram: