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!