Instalação Asterisk 18 + FreePBX 16 no Ubuntu Server 22.04 LTS

1. Atualizar o sistema

apt-get update && apt-get upgrade -y

Depois que fizer o update e upgrade do sistema, somente aperte “ok”, para reiniciar. Depois continue com as instalações dependência básicas:

sudo apt -y install software-properties-common ca-certificates
sudo add-apt-repository universe

Adding component(s) ‘universe’ to all repositories.

Press [ENTER] to continue or Ctrl-c to cancel.

Basta apertar ENTER para confirmar e prosseguir com a adição.

Depois continue com as instalações dependência básicas

sudo apt update

2. Instalar dependência necessárias

sudo apt install build-essential git wget curl subversion libnewt-dev libssl-dev libncurses5-dev libsqlite3-dev libjansson-dev libxml2-dev uuid-dev pkg-config libedit-dev libsrtp2-dev sox pkg-config mpg123 ffmpeg lame -y

Somente aperte “ok”, para reiniciar.

3. (Recomendado) Instalar pjproject (PJSIP) — melhora compatibilidade PJSIP

Asterisk usa PJSIP para SIP moderno; é recomendado compilar/instalar pjproject antes do Asterisk (ou usar o empacotado do Asterisk, mas muitos preferem compilar separado). Consulte a documentação de pré-requisitos do Asterisk/PJSIP

cd /usr/src

sudo git clone https://github.com/pjsip/pjproject.git

cd pjproject

# opcional: checkout de versão estável, ex: git checkout 2.13

sudo ./configure CFLAGS="-fPIC" --prefix=/usr --enable-shared --disable-sound

sudo make dep && sudo make && sudo make install

sudo ldconfig

3. Instalar Asterisk 18

Faça o download da versão 18 do asterisk, no site oficial com o comando abaixo:

cd /usr/src

wget https://downloads.asterisk.org/pub/telephony/asterisk/asterisk-18-26.4.tar.gz

sudo tar xvf asterisk-18-current.tar.gz

cd asterisk-18*/

contrib/scripts/get_mp3_source.sh

contrib/scripts/install_prereq install

Acima aperte somente “ok”, para reiniciar. Abaixo, o “ITU-I telephone code” é o código internacional de discagem o DDI, coloca o do Brasil 55, depois dê o ok.

Abaixo aperte somente “ok”, para reiniciar.

Em seguida, execute o seguinte comando para configurar o Asterisk:

./configure

Em seguida, defina as opções de menu com o seguinte comando:

sudo make menuselect.makeopts
sudo make menuselect

Você pode usar a tecla de seta para navegar e a tecla Enter para selecionar.

Habilite os add-ons necessários, habilite na Applications, habilite Core Sound Modules, habilite MOH packages e habilite Extra Sound Packages

Vai na opção “Save & Exit”. Após a escolher módulos opcionais, execute o seguinte comando:

sudo make

Em seguida, instale o Asterisk usando o seguinte comando:

sudo make install

Em seguida, instale as configurações e os exemplos usando o seguinte comando:

sudo make samples

sudo make config

sudo ldconfig

cd

4. Configurar o Asterisk

Em seguida, você precisa criar um usuário e um grupo separados para o Asterisk. Você pode criá-los com o seguinte comando:

groupadd asterisk

useradd -r -d /var/lib/asterisk -g asterisk asterisk

useradd -s /usr/sbin/nologin -g asterisk asterisk

usermod -aG audio,dialout asterisk

Em seguida, defina as permissões e a propriedade adequadas usando o seguinte comando:

chown -R asterisk:asterisk /etc/asterisk

chown -R asterisk:asterisk /var/{lib,log,spool}/asterisk

chown -R asterisk:asterisk /usr/lib/asterisk

Em seguida, edite o arquivo /etc/default/asterisk e defina o usuário asterisk como usuário padrão, altere as seguintes linhas:

AST_USER="asterisk"

AST_GROUP="asterisk"

Salve e feche o arquivo, edite o arquivo de configuração padrão do Asterisk e defina o usuário e o grupo “run as”, no caminho /etc/asterisk/asterisk.conf, e altere as seguintes linhas:

runuser = asterisk ; The user to run as.

rungroup = asterisk ; The group to run as.

Salve e feche o arquivo, reinicie o serviço Asterisk e habilite-o para iniciar na reinicialização do sistema e verificação dos status com o seguinte comando:

systemctl restart asterisk

systemctl enable asterisk

systemctl status asterisk

Em alguns casos, você deve receber o seguinte erro:

radcli: rc_read_config: rc_read_config: can’t open /etc/radiusclient-ng/radiusclient.conf: No such

file or directory

Você pode resolver esse erro, parando o serviço do asterisk e usando os seguintes comandos:

systemctl stop asterisk

sed -i 's";\[radius\]"\[radius\]"g' /etc/asterisk/cdr.conf

sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cdr.conf

sed -i 's";radiuscfg => /usr/local/etc/radiusclient-ng/radiusclient.conf"radiuscfg => /etc/radcli/radiusclient.conf"g' /etc/asterisk/cel.conf

Em seguida, inicie o serviço Asterisk novamente com o seguinte comando:

systemctl start asterisk

systemctl status asterisk

Em seguida, conecte-se à interface de linha de comando do Asterisk com o seguinte comando:

asterisk -rvv

Você deverá obter a seguinte saída:

Asterisk 18.26.4, Copyright (C) 1999 - 2022, Sangoma Technologies Corporation and others.

Created by Mark Spencer [email protected]

Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.

This is free software, with components licensed under the GNU General Public

License version 2 and other licenses; you are welcome to redistribute it under

certain conditions. Type ‘core show license’ for details.

=========================================================================

Running as user ‘asterisk’

Running under group ‘asterisk’

Connected to Asterisk 18.26.4 currently running on freepbx (pid = 1316)

Para sair do CLI:

Exit ou Ctrl+C

Após isso, o Asterisk 18 estará instalado, e os headers estarão em:

ls /usr/src/asterisk-18.26.4/include/asterisk.h

Se aparecer então o asterisk.h está lá

Se existirem, exporte a variável de include para o compilador:

export CFLAGS="-I/usr/src/asterisk-18.26.4/include"

Verifique a versão do asterisk

asterisk -V

5. Instalar Apache2, PHP 7.4 (FreePBX 16 requer PHP 7.4)

O FreePBX requer que o servidor web Apache, o MariaDB e o PHP estejam instalados no seu servidor.

Primeiro, instale o Apache, o MariaDB, o PHP e outros pacotes necessários com o seguinte comando.

Importante: Ubuntu 22.04 não traz PHP 7.4 nos repositórios oficiais — normalmente usamos o PPA do Ondřej Surý para instalar PHP 7.4. FreePBX 16 foi escrito para PHP 7.4; garantir essa versão é crítico.

sudo add-apt-repository ppa:ondrej/php -y

sudo apt update

Agora o Apache

sudo apt install apache2 libapache2-mod-php7.4 -y

Agora o PHP7.4

sudo apt install php7.4 php7.4-cli php7.4-common php7.4-mysql php7.4-xml php7.4-mbstring php7.4-curl php7.4-zip php7.4-gd php7.4-bcmath php7.4-json php7.4-intl php7.4-soap php7.4-imap php7.4-ldap -y

Depois do diretório extraído e instale o pacote Node.js com o seguinte comando:

Por exemplo, para Node.js 18 LTS (compatível com FreePBX):

sudo apt-get install -y curl

curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -

sudo apt-get install -y nsolid

Isso instala automaticamente node + npm.

Verifique as versões:

nsolid -v

node -v

npm -v

Ajuste caso ainda haja pacotes quebrados

sudo apt --fix-broken install

sudo apt update && apt upgrade -y

Isso instala automaticamente node + npm.

Agora certifique-se que o módulo PHP está ativo:

sudo a2enmod rewrite

sudo systemctl restart apache2

Verifique se o Apache está funcionando:

systemctl status apache2

Agora o MariaDB

sudo apt install mariadb-server mariadb-client -y

Inicialize e proteja o MariaDB:

sudo systemctl enable mariadb

sudo systemctl start mariadb

Verifique se o Apache está funcionando:

systemctl status mariadb

Rodando o comando

sudo mysql_secure_installation

Vai abrir um assistente interativo no terminal, com perguntas e respostas recomendadas

Pergunta que você está vendo agora:

Switch to unix_socket authentication [Y/n]

Isso significa: quer que o login do usuário root do MariaDB seja feito apenas pelo sistema operacional (unix_socket), e não por senha?

Se responder Y (yes) → o root do MariaDB só poderá ser acessado com sudo mysql (sem senha). Isso é mais seguro, mas pode atrapalhar o FreePBX se ele precisar de acesso direto como root.

Se responder n (no) → o root continuará usando senha para acessar, o que é o mais recomendado para FreePBX.

Depois disso, o script vai perguntar:

Set root password? [Y/n]

Coloque Y e crie uma senha forte.

Essa senha você vai precisar depois no FreePBX, quando configurar o banco.

Remove anonymous users? [Y/n]

Responda Y → remove usuários anônimos que podem ser usados para invadir.

Disallow root login remotely? [Y/n]

Responda Y → impede que o root acesse de fora do servidor (mais seguro).

Remove test database and access to it? [Y/n]

Responda Y → remove o banco de testes que não é necessário.

Reload privilege tables now? [Y/n]

Responda Y → aplica as mudanças imediatamente.

Resultado esperado no final, você verá algo como:

All done! If you’ve completed all of the above steps, your MariaDB

installation should now be secure.

Thanks for using MariaDB!

Agora o MariaDB está pronto, seguro e com senha definida para o usuário root.

No terminal, digite:

sudo mysql -u root -p

AVISO: Ele vai pedir a senha do root do MariaDB (que você configurou durante mysql_secure_installation).

Crie o banco e usuário do FreePBX (na SENHA_FORTE, foi o que você configurou no mysql_secure_installation):

CREATE DATABASE asterisk;

CREATE USER 'asterisk'@'localhost' IDENTIFIED BY '#Metux2025';

GRANT ALL PRIVILEGES ON asterisk.* TO 'asterisk'@'localhost';

FLUSH PRIVILEGES;

EXIT;

Ajustar permissões da pasta de sessões PHP

sudo chown -R asterisk:asterisk /var/lib/php/sessions

sudo chmod 770 /var/lib/php/sessions

Garantir que o Apache use o usuário asterisk, edite o arquivo /etc/apache2/envvars:

sudo nano /etc/apache2/envvars

Procure por:

export APACHE_RUN_USER=www-data

export APACHE_RUN_GROUP=www-data

Altere para:

export APACHE_RUN_USER=asterisk

export APACHE_RUN_GROUP=asterisk

Salve e reinicie:

sudo systemctl restart apache2

sudo systemctl restart asterisk

Verifique se o Apache e Asterisk estão funcionando:

systemctl status apache2

systemctl status asterisk

Editar a configuração do Apache, abra o arquivo de configuração principal:

sudo nano /etc/apache2/sites-available/000-default.conf

Dentro do bloco <VirtualHost *:80>, adicione (ou ajuste se já existir):

<Directory "/var/www/html">

AllowOverride All

Options FollowSymLinks

Require all granted

</Directory>

Isso permite que o .htaccess dentro do FreePBX funcione corretamente.

Ativar módulo rewrite

sudo a2enmod rewrite

Garantir permissões corretas

sudo chown -R asterisk:asterisk /var/www/html

Reiniciar o Apache

sudo systemctl restart apache2

Verifique se o Apache está funcionando:

systemctl status apache2

6. Instalar FreePBX 16

Depois que todos os pacotes estiverem instalados, baixe a versão do FreePBX 16 usando o seguinte comando:

cd /usr/src

sudo wget http://mirror.freepbx.org/modules/packages/freepbx/freepbx-16.0-latest.tgz

sudo tar vxfz freepbx-16.0-latest.tgz

cd freepbx

sudo touch /etc/asterisk/{modules,cdr}.conf

sudo ./start_asterisk start

Depois que executa esse comando, aparecerá essa mensagem abaixo:

STARTING ASTERISK

Asterisk is already running

Depois execute o seguinte comando:

sudo ./install -n

Ajustar permissões do FreePBX

sudo chown asterisk:asterisk /etc/freepbx.conf

sudo chmod 644 /etc/freepbx.conf

Salve e reinicie:

fwconsole chown

fwconsole reload

Abra seu no navegador:

http://SEU_IP/admin

Minha playlist sobre isso https://youtube.com/playlist?list=PLftD87Y8Ci4K6sGtb5B1_EUfPTJ-wVaA2&si=ImdnO6Aax6gH_3ps, aproveite colabore para a gente usar da melhor forma

Veja os videos, compartilhe e deixe o link para me ajudar a continuar a fazer esses videos sobre FreePBX, tem o UCP e varias outras coisas, IVR e etc.

Obrigado!

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.