quarta-feira, 15 de novembro de 2017

Asterisk, FreePBX e CentOS v7 tudo que você queria!

By: Angelo de Barros Delphini On: novembro 15, 2017
  • Share The Gag

  • Bom o foco blog é mostrar o mundo GUI do FreePBX e o AsteriskNow. Não gosto muito de estradas mal sinalizadas, por isto hoje vamos mostrar como instalar na unha, e passo a passo o Asterisk v14, FreePBX v14 e o CentOS v7. Este post tem como base o material do Eduardo Azevedo (@dudutecinf ). Vamos colocar a mão na massa!

    NOTA: Testado em CentOS v7 x64, Asterisk v13 e 14 standart e FreePBX v14. Premissas, instalação feita com o usário root (#) toda em modo texto (multi-user.target).

    Pré requisitos, vamos assegure uma instalação básica do servidor com dependências iniciais para começar.

    Dependências:
    # yum -y update && yum -y groupinstall core && yum -y groupinstall base && yum -y install epel-release

    # yum -y install automake gcc gcc-c++ ncurses-devel openssl-devel libxml2-devel unixODBC-devel libcurl-devel libogg-devel libvorbis-devel speex-devel spandsp-devel freetds-devel net-snmp-devel iksemel-devel corosynclib-devel newt-devel popt-devel libtool-ltdl-devel lua-devel sqlite-devel radiusclient-ng-devel portaudio-devel neon-devel libical-devel openldap-devel gmime-devel mysql-devel bluez-libs-devel jack-audio-connection-kit-devel gsm-devel libedit-devel libuuid-devel jansson-devel libsrtp-devel git subversion libxslt-devel kernel-devel audiofile-devel gtk2-devel libtiff-devel libtermcap-devel ilbc-devel python-devel bison tftp-server httpd sox tzdata mysql-connector-odbc mariadb mariadb-server fail2ban jwhois xmlstarlet ghostscript libtiff-tools patch e2fsprogs mpg123 lame gstreamer mongodb-server

    Node.js:
    # curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
    # yum -y install nodejs

    ODBC:
    # cat >> /etc/odbc.ini << EOF
    [MySQL-asteriskcdrdb]
    Description = MariaDB connection to 'asteriskcdrdb' database
    driver = MySQL
    server = localhost
    database = asteriskcdrdb
    Port = 3306
    Socket = /var/lib/mysql/mysql.sock
    option = 3
    Charset=utf8

    EOF

    PHP, vamos instalar o repositório e substituir os pacotes existentes do PHP.
    # yum -y install https://centos7.iuscommunity.org/ius-release.rpm
    # yum -y install yum-plugin-replace
    # yum replace --replace-with php56u php

    Instalando o PHP v5.6:
    # yum -y install php56u php56u-mysqlnd php56u-process php56u-pear php56u-mbstring php56u-xml php56u-gd php56u-curl

    Perfumarias:
    # yum localinstall --nogpgcheck https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm

    # yum install ffmpeg

    Configurando o Timezone:
    ## Procurando seu Timezone
    tzselect

    ## Exemplo de configurar o Timezone
    # timedatectl set-timezone America/Sao_Paulo

    # timedatectl status

    Vamos instalar o DAHDI:

    Nota: Mesmo que não esteja usando um servidor físico e não tenha uma placa de comutação faça a instalação do DAHDI pois vamos usar o Timing dele para transferências, salas de conferencias e para trunks IAX2. No momento da edição deste post, as versões mais recentes do que 2.10.2 (2.11.0 e 2.11.1) não estão sendo instaladas corretamente. Caso queira fazer um teste é por sua conta e risco.

    # 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 ocorrer durante o MAKE ALL falhas, faça um reboot em seu sistema operacional e execute a instalação do "linux-headers". 

    # yum install kernel-devel

    Instalando o Asterisk:

    Nota:  Para instalar o Asterisk v14, vamos definir "VERSION=14". Caso você tenha outra versão no servidor que está utilizando este post, é melhor primeiro você executar: 

    # rm -rf /usr/lib64/asterisk/modules

    Com isto evitaremos conflitos de versões dos módulos. Então lembre-se de selecionar versão 13 (VERSION=13) ou 14 (VERSION=14).


    # 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-${VERSION}*/
    # make distclean

    Instalando as dependências adicionais:

    Nota: Usando install_prereq. O script install_prereq está incluído em todas as versões do Asterisk no subdiretório contrib/scripts. O script possui as seguintes opções:
    *test - imprime apenas as bibliotecas a serem instaladas.

    *install - instala apenas dependências de pacotes. Dependendo da sua distribuição de Linux, versão do Asterisk e recursos que você deseja usar, isso pode ser suficiente.

    *install-unpacakged - instala dependências que não possuem pacotes, mas que tenham apenas tarballs. Você pode precisar dessas dependências para determinados recursos no Asterisk. 

    Você sempre deve usar as ferramentas de gerenciamento de pacotes do seu sistema operacional para garantir que seu sistema esteja executando o software mais recente antes de executar o install_prereq. O pacote libsnmp-dev do Ubuntu 14 em diante, por exemplo, tem um problema em que tentará remover pacotes críticos do sistema se o sistema não for atualizado antes de tentar fazer uso deste script.


    # cd /usr/src/asterisk-${VERSION}*/
    # yum -y update
    # yum -y upgrade
    # ./contrib/scripts/install_prereq install
    # ./install_prereq install-unpackaged


    Configurando a instalação do Asterisk:
    # cd /usr/src/asterisk-${VERSION}*/
    # ./configure --libdir=/usr/lib64 --with-pjproject-bundled

    Nota: para fazer uma analise sobre o comando e os modulos que foram habilitados e os que não foram e o porque execute:
    # vim config.log

    Definir as opções de compilação:
    # cd /usr/src/asterisk-${VERSION}*/
    # make menuselect

    Nota: Selecione as opções de compilação adicionais ou deixe no padrão, saia e salve. Para adicionar/alterar opções de compilação, após instalado o Asterisk, basta realizar os procedimentos, make menuselect e depois make && make install novamente. 

    Criando o usuário para o Asterisk, compilando, instalando e definindo a propriedade preliminar.
    # adduser asterisk -s /sbin/nologin -c "Asterisk User"
    # make && make install && chown -R asterisk. /var/lib/asterisk

    Instalando o FreePBX:
    # systemctl restart mariadb
    # 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

    Se você receber um erro de versão, é porque não foi possível determinar o Asterisk, faça o seguinte:

    # Substitua a linha 266 do freepbx/installlib/installcommand.class.php para ficar como a seguir

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

    Execute reboot no seu servidor e execute novamente os seguintes procedimentos:
    # cd /usr/src/freepbx
    # ./start_asterisk start

    # ./install -n

    Instalação do Módulo:
    # fwconsole ma upgrade framework core voicemail sipsettings infoservices \
    # featurecodeadmin logfiles callrecording cdr dashboard music conferences
    # fwconsole chown
    # fwconsole reload

    Nota: Módulos adicionais podem ser instalados via GUI: Admin > Module Admin. Opcionalmente, você pode instalar todos os módulos (o que não é recomendado). Você provavelmente precisará executar os seguintes comandos duas vezes.

    # fwconsole ma installall
    # fwconsole chown
    # fwconsole reload

    Configurando o FreePBX para inicializar com o BOOT do seu sistema operacional.
    # 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

    Tarefas pós-instalação, primeiro, bloqueie o servidor de banco de dados:
    # mysql_secure_installation

    Responda Y para tudo!

    Altere as configurações do servidor Apache2:
    # sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php.ini
    # sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
    # sed -i ':a;N;$!ba;s/AllowOverride None/AllowOverride All/2' /etc/httpd/conf/httpd.conf

    Certifique-se de que tanto o Banco de Dados quanto o servidor Web estejam configurados para iniciar no boot do sistema operacional.
    # systemctl enable mariadb
    # systemctl enable httpd

    Finalmente, reinicie para que todas as alterações entrem em vigor.
    # reboot

    Uma perfumaria, totalmente opcional, rotação do arquivo de log. Se isto não for feito, os arquivos de LOGs continuarão crescendo indefinidamente. Logo apesar de ser uma perfumaria é importante fazer pois temos que ter os LOGs para analise de possiveis falas em nosso sistema.

    # vim /etc/logrotate.d/asterisk

    /var/spool/mail/asterisk
    /var/log/asterisk/*log
    /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
    }

    Novas politicas de firewall.
    # systemctl enable firewalld
    # systemctl restart firewalld
    # firewall-cmd --permanent --zone=public --add-service={http,https}
    # firewall-cmd --permanent --zone=public --add-port=5060-5061/tcp
    # firewall-cmd --permanent --zone=public --add-port=5060-5061/udp
    # firewall-cmd --permanent --zone=public --add-port=10000-20000/udp
    # firewall-cmd --reload


    Recurso TFTP, o servidor TFTP é bom caso você use Telefone IP (hardware), assim pode fazer o provisionamento do mesmo. Para isto basta criar um arquivo com nome do MAC do aparelho IP e nele disponibilizar toda configuração necessária para funcionar com seu Softswitch PBX IP.
    # yum -y install tftp-server
    # vim /etc/xinetd.d/tftp

    Altere server_args = -s /var/lib/tftpboot para server_args = -s /tftpboot

    Altere disable=yes para disable=no

    # mkdir /tftpboot
    # chmod 777 /tftpboot
    # systemctl restart xinetd
    # firewall-cmd --permanent --zone=public --add-port=69/udp
    # firewall-cmd --reload

    Vamos testar o ODBC.
    # odbcinst -s -q

    Use o nome de usuário e senha do /etc/asterisk/res_odbc_additional.conf para testar a conectividade com o Banco de Dados via ODBC.

    # isql -v MySQL-asteriskcdrdb seunomedeusuario suasenhadeusuario

    Vamos testar o ODBC na console do Asterisk.
    # rasterisk -vvvvgci
    *CLI> odbc show

    Aumentando o tamanho de memory_limit = 256 do PHP.
    # sed -i 's/memory_limit = .*/memory_limit = 256M/g' /etc/php.ini

    Vamos travar o Asterisk para usar o Timing do DAHDI.
    # rasterisk -vvvvgci
    *CLI> module show like timing
    Module                           Description                              Use Count  Status
    res_timing_dahdi.so       DAHDI Timing Interface                0          Running
    res_timing_pthread.so    pthread Timing Interface                 0          Running
    res_timing_timerfd.so    Timerfd Timing Interface                1          Running
    3 modules loaded
    *CLI> 

    Edite o arquivo modules em /etc/modules.conf e inclua.

    noload = res_timing_pthread.so
    noload = res_timing_timerfd.so

    # reboot

    # rasterisk -vvvvgci

    *CLI> module show like timing
    Module                         Description                              Use Count  Status
    res_timing_dahdi.so            DAHDI Timing Interface                   1          Running
    1 modules loaded
    *CLI> 

    Pronto! Seu sistema Softswitch PBX IP com GUI FreePBX v14 está pronto! Basta usar!

    quarta-feira, 7 de junho de 2017

    Asterisk Now 10.13 – Instale uma Central Telefónica VoIP

    By: Angelo de Barros Delphini On: junho 07, 2017
  • Share The Gag
  • Quando falamos em VoIP (Voz sobre IP) e soluções gratuitas, é quase inevitável não falar do popular Asterisk Framework Communications. Para quem não conhece, o Asterisk é um software de código aberto que permite “transformar” um simples computador num servidor de comunicações como a uma central telefónica, só que de multi protocolo.
    A Digium é a empresa que promove o Asterisk, mas atualmente é a comunidade de programadores que contribui fortemente para os avanços da aplicação. Hoje vamos ver como é fácil instalar o Asterisk Now 10.13.

    O Asterisk tem suporte para os principais protocolos abertos, dos quais destacamos o SIP, MGCP e IAX.
    Principais características do Asterisk
    • Sistema de telefonia IP-PBX;
    • Distribuidor Automático de Chamadas (DAC);
    • Unidade de Resposta Audível (URA);
    • Correio de Voz com integração com o correio eletrônico;
    • Relatório e estatísticas das chamadas;
    • Facilidade de administração e gestão através da Web;
    • Compatível com os PBX’s analógicos;
    • Compatível com os telefones digitais IP;
    • Conectividade com troncos analógicos e digitais;
    • Sistema voltado para pequenas e médias empresas

    Como instalar o Asterisk Now 10.13?

    Depois de fazer o download do Asterisk Now 10.13 basta gravar o .iso num CD/DVD ou PEN e realizar o boot por meio destas opções. Na primeira interface de instalação devem escolher Full Install (ou então a opção que se adeque ao seu cenário).
    O sistema vai carregar alguns pacotes necessários para a instalação de toda a plataforma. O processo demorará entre 3 a 5 minutos.




    Na parte da configuração do TCP/IP devem ativar o protocolo IPv4 e IPv6. Neste ponto podem fazer uma configuração manual ou definir que será via DHCP.

    Agora devem indicar o fuso horário.

    E por fim indicar uma password inicial para acesso ao sistema. pela regra de segurança é necessário ser 6 caracteres, contendo letras e números, exemplo "y2y017". 

    A instalação completa da plataforma demora cerca de 30 minutos. Depois de reiniciado, devem introduzir as credenciais definidas anteriormente (utilizador: root/ password: definida anteriormente, se seguiu este post, usamos "y2y017"). Depois de autenticados com sucesso, o sistema informa o endereço IP para acesso via Interface Web.

    Após introduzir o usuário e password vai ter está tela onde iremos ter as informações do IP em nosso Servidor PBX IP.


    Com as informações do IP podemos ir até o acesso web via browser.

    Já dentro da interface web, devem começar por criar uma conta para acesso à plataforma.

    Nos próximos artigos vamos explorar as funcionalidades mais importantes do FreePBX e mostrar como podem realizar algumas configurações.


    Licença: GPL

    Download: Escolha aqui a sua versão (32 bits ou 64 bits) 

    Homepage: Asterisk