Pesquisa de site

Como instalar o Asterisk PBX 18 LTS no CentOS 7


Olá pessoal, faremos a instalação do Asterisk 18 LTS neste guia. Este será um tutorial completo e fácil de seguir. Para o lançamento recente do Asterisk, consulte Como instalar o Asterisk 16 PBX no CentOS 7. Então, vamos começar definindo o que é um PBX e um Asterisk?

O que é um PABX?

Asterisk, antes de mais nada, é uma bolsa de filiais privadas. Um PBX é um equipamento que lida com comutação telefônica de propriedade de uma empresa privada, e não de uma companhia telefônica. Um PBX pode ser considerado uma central telefônica privada, conectando-se a um ou mais telefones de um lado e geralmente conectando-se a uma ou mais linhas telefônicas do outro.

O que é Asterisco?

Asterisk é um PABX completo. Ele implementa todos os principais recursos da maioria dos PBXs disponíveis comercialmente. Ele também implementa, gratuitamente, recursos que muitas vezes custam muito em uma instalação comercial: chamadas em conferência, acesso direto ao sistema interno, estacionamento de chamadas e filas de chamadas, apenas para citar alguns.

Os recursos básicos fornecidos pelo Asterisk são:

  1. Identificador de chamadas
  2. Lista negra (bloquear chamadores por identificador de chamadas)
  3. Chamada em espera
  4. Transferência de chamadas
  5. Conferência por chamada
  6. Centro de Conferências/Ponte
  7. Não perturbe
  8. Encaminhamento de chamadas
  9. Estacionamento de chamadas
  10. Relatório de detalhes de chamadas
  11. Discar por diretório de nome
  12. Resposta de voz interativa (atendente automático)
  13. Roteamento de chamada com condição de tempo
  14. Enfileiramento de chamadas
  15. Ligar de volta
  16. Segure músicas/gravações (MP3)
  17. Integração de aplicativos
  18. Relatório de chamadas estendido
  19. DISA (acesso direto ao sistema interno)
  20. Ditado
  21. Me siga
  22. Paginação/Intercomunicação
  23. Grupos de toque
  24. Gerenciador de chamadas gráficas
  25. Controles diurnos/noturnos

Entre outros. Então vamos começar.

Passo 1 – Definir nome de host do servidor

Você pode definir o nome do host e o fuso horário antes de fazer qualquer instalação. Use os comandos abaixo.

sudo timedatectl  list-timezones
sudo timedatectl  set-timezone Africa/Nairobi

Para definir o tipo de nome de host:

sudo hostnamectl set-hostname pbx-01.example.com

Caso seu servidor CentOS tenha mapas de teclado incorretos. Você pode consertá-los.

localectl 
   System Locale: LANG=en_US.UTF-8
       VC Keymap: us
      X11 Layout: us
$ localectl list-keymaps

Para definir o mapa de teclado para nós:

sudo localectl set-keymap us

Você pode definir o idioma do sistema para inglês digitando os seguintes comandos em seu terminal como root.

sudo localectl set-locale LANG=en_US.UTF-8

Passo 2 – Atualizar o sistema e instalar dependências

sudo yum -y update
sudo yum -y install "@Development Tools"

Reinicialize após atualização do sistema

sudo reboot

Instale outras dependências necessárias para construir e executar o Asterisk 18 LTS no CentOS 7:

sudo yum -y install lynx mariadb-server mariadb php php-mysql \
  php-mbstring tftp-server httpd ncurses-devel sendmail sendmail-cf \
  sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel \
  subversion kernel-devel git php-process crontabs cronie cronie-anacron \
  wget vim php-xml uuid-devel sqlite-devel net-tools gnutls-devel php-pear \
  autoconf bzip2 libedit-devel

Instale outras dependências ausentes, não na etapa anterior.

sudo yum -y install gcc gcc-c++ php-xml php php-mysql php-pear php-mbstring mariadb-devel mariadb-server mariadb sqlite-devel lynx bison psmisc tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel audiofile-devel gtk2-devel uuid-devel libtool libuuid-devel subversion kernel-devel kernel-devel-$(uname -r) git subversion kernel-devel php-process crontabs cronie cronie-anacron wget vim

Configure e configure o banco de dados mariadb, definindo também a senha.

systemctl start mariadb
systemctl enable mariadb

Agora defina a senha executando o comando abaixo.

sudo mysql_secure_installation

Basta pressionar enter se você ainda não tiver uma senha definida para mysql. Concorde em remover o banco de dados de teste e proibir o login remoto.

Etapa 3 – Instale a biblioteca Jasson C

Instalando Jansson que é uma biblioteca C para codificação, decodificação e manipulação de dados JSON. Vamos baixar, descompactar e compilar usando o comando abaixo.

sudo su -
cd /usr/src
mkdir asterisk-18 && cd asterisk-18
git clone https://github.com/akheron/jansson.git
cd jansson
autoreconf  -i
./configure --prefix=/usr/
make && make install

Instale os requisitos do Legacy Pear

pear install Console_Getopt

Passo 4 – Instale o Asterisk 18 LTS no CentOS 7

Navegue até o diretório /usr/src/asterisk-18 e instale o download do Asterisk 18 LTS no CentOS 7

cd  /usr/src/asterisk-18
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/dahdi-linux-complete-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-current.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-current.tar.gz
git clone https://github.com/pjsip/pjproject.git

Compile e instale o DAHDI se estiver se conectando ao PSTN. Isso é OPCIONAL, instale se você se conectar ao PSTN.

cd  /usr/src/asterisk-18
tar xvfz dahdi-linux-complete-current.tar.gz
tar xvfz libpri-current.tar.gz
rm -f dahdi-linux-complete-current.tar.gz libpri-current.tar.gz
cd dahdi-linux-complete-*/
make all
make install
make config
cd ..
cd libpri-*/
make
make install

Compilar e instalar o pjproject

cd  /usr/src/asterisk-18
cd pjproject
CFLAGS='-DPJ_HAS_IPV6=1' ./configure --prefix=/usr \
  --enable-shared --disable-sound \
  --disable-resample --disable-video \
  --disable-opencore-amr --libdir=/usr/lib64
make dep
make all
make install

Compile e instale o Asterisk

cd /usr/src/asterisk-18
tar xvfz asterisk-18-current.tar.gz
cd asterisk-*
./configure --libdir=/usr/lib64

Opções do menu de configuração executando o seguinte comando

make menuselect

Em complementos, selecione chan_ooh323 e format_mp3  conforme mostrado abaixo

Em Core Sound Packages, selecione os formatos de pacotes de áudio como abaixo


Em  Música em espera, selecione a opção dos seguintes módulos, conforme mostrado na imagem abaixo

Em Pacotes de Som Extra selecione conforme mostrado abaixo:

Agora execute o seguinte comando para baixar a biblioteca do decodificador mp3 na árvore de origem.

cd /usr/src/asterisk-18/asterisk-*
contrib/scripts/get_mp3_source.sh

Faça a instalação dos módulos selecionados

cd /usr/src/asterisk-18/asterisk-*/
make
make install
make samples
make config

Etapa 5 – Configurar Asterisk 18 LTS no CentOS 7

Crie usuário e grupo separados para executar serviços asterisk

useradd -m asterisk
chown asterisk.asterisk /var/run/asterisk
chown -R asterisk.asterisk /etc/asterisk
chown -R asterisk.asterisk /var/{lib,log,spool}/asterisk 
chown -R asterisk.asterisk /usr/lib64/asterisk

Faça o systemctl iniciar o asterisco copiando o script init para o diretório init.d.

cd /usr/src/asterisk-18/asterisk-*
cp contrib/init.d/rc.redhat.asterisk  /etc/init.d/asterisk
chmod 755 /etc/init.d/asterisk

Localize o asterisco por

$ which asterisk

Em seguida, abra o arquivo /etc/init.d/asterisk por

sudo vim /etc/init.d/asterisk

Substitua AST_SBIN= pela localização do binário asterisco, no meu caso é /sbin/. Veja a imagem abaixo.

Desabilitar SELinux

sed -i 's/(^SELINUX=).*/SELINUX=disabled/' /etc/selinux/config
sestatus

Configurar banco de dados Asterisk

[root@asterisk-cloud ~]# mysql -u root -p
create user 'asterisk'@'localhost' identified by 'password';
create database cdrdb;
create database asterisk;
GRANT ALL PRIVILEGES ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON cdrdb.* TO asterisk@localhost IDENTIFIED BY 'password';
flush privileges; 
exit

Torne todas as portas PBX do asterisco acessíveis adicionando as seguintes regras

firewall-cmd --zone=public --add-port=5060/udp --permanent
firewall-cmd --zone=public --add-port=5060/tcp --permanent
firewall-cmd --zone=public --add-port=5061/udp --permanent
firewall-cmd --zone=public --add-port=5061/tcp --permanent
firewall-cmd --zone=public --add-port=4569/udp --permanent
firewall-cmd --zone=public --add-port=5038/tcp --permanent 
firewall-cmd --zone=public --add-port=10000-20000/udp --permanent

Confirmar alterações

firewall-cmd --reload

Confirme se as regras foram adicionadas.

[root@asterisk-cloud ~]# firewall-cmd --zone=public --list-all 
public (default, active)
  interfaces: eth0
  sources: 
  services: dhcpv6-client ssh
  ports: 5061/tcp 4569/udp 5060/tcp 10000-20000/udp 5061/udp 5060/udp 5038/tcp
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules:

Reinicie o servidor asterisk

systemctl restart asterisk

Verifique se está em execução

sudo systemctl status asterisk

Leitura adicional: Como proteger o Asterisk e o FreePBX contra fraudes de VoIP e ataques de força bruta

Artigos relacionados: