Asterisk and FreePBX on Debian12
Asterisk
Preparations
Create new user in Cloud SQL
https://console.cloud.google.com/sql/instances/xxx/users?project=yyy
dashes can not be used in the MariaDB databases' naming. To match user to database, only underlines are used.
Verify connection from the host
mysql -h 172.21.32.6 -u pbx_2dz_fi_asterisk -p
Create database for Asterisk
CREATE DATABASE pbx_2dz_fi_asterisk CHARACTER SET utf8 COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON pbx_2dz_fi_asterisk.* TO 'pbx_2dz_fi_asterisk'@'10.166.0.2';
FLUSH PRIVILEGES;
Elevate
sudo su
Install PHP
apt install \
php \
php-cli \
php-mysql \
php-gd \
php-curl \
php-mbstring \
php-xml \
php-bcmath \
php-zip \
php-json \
php-pear
Install node.js
export dir="/home/anton/delme"
mkdir -p ${dir}
cd ${dir}
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
apt install nodejs
Pickup LTS version from Versions page. On the moment of writing (2025-10-08), it is v22.
https://docs.asterisk.org/About-the-Project/Asterisk-Versions/
From Github releases page
https://github.com/asterisk/asterisk/releases
https://github.com/asterisk/asterisk/releases/tag/22.5.2
Install Asterisk
export dir="/home/anton/delme"
mkdir -p ${dir}
cd ${dir}
export v="22.5.2"
curl -O -L https://github.com/asterisk/asterisk/releases/download/${v}/asterisk-${v}.tar.gz
curl -O -L https://github.com/asterisk/asterisk/releases/download/${v}/asterisk-${v}.sha256
sha256sum asterisk-${v}.tar.gz
cat asterisk-${v}.sha256
Unpack after checksum verification (comparison)
tar -xzvf asterisk-${v}.tar.gz
Change dir and install prerequisites
cd asterisk-${v}
contrib/scripts/install_prereq install
Configure
./configure
make menuselect
Enable mp3 support:
+ format_mp3
+ app_macro
Download additional libraries
contrib/scripts/get_mp3_source.sh
Build and install
make -j$(nproc)
make install
make samples
make basic-pbx
make config
ldconfig
Set permissions
useradd -m asterisk
chown -R asterisk:asterisk \
/var/lib/asterisk \
/var/spool/asterisk \
/var/log/asterisk \
/var/run/asterisk \
/usr/lib/asterisk
vi /etc/asterisk/asterisk.conf
runuser = asterisk ; The user to run as.
rungroup = asterisk ; The group to run as.
[options]
; If we want to start Asterisk with a default verbosity for the verbose
; or debug logger channel types, then we use these settings (by default
; they are disabled).
verbose = 5
debug = 2
; User and group to run asterisk as. NOTE: This will require changes to
; directory and device permissions.
runuser = asterisk ; The user to run as. The default is root.
rungroup = asterisk ; The group to run as. The default is root
;defaultlanguage = es
Copy default config
cp /home/anton/delme/asterisk-22.5.2/configs/samples/asterisk.conf.sample /etc/asterisk/asterisk.conf
Modify users
vi /etc/asterisk/asterisk.conf
Create service override
mkdir -p /etc/systemd/system/asterisk.service.d/
vi /etc/systemd/system/asterisk.service.d/override.conf
[Service]
User=asterisk
Group=asterisk
Enable and start the services
systemctl daemon-reexec
systemctl enable asterisk
systemctl restart asterisk
systemctl status asterisk
FreePBX
Install preresequitives
apt install \
composer \
unzip
Check version
https://github.com/FreePBX/framework/tags
Download FreePBX
export dir="/home/anton/delme"
mkdir -p ${dir}
cd ${dir}
git clone -b release/17.0 https://github.com/FreePBX/framework.git freepbx
cd freepbx
Install FreePBX
./start_asterisk start
./install -n
Check that application installed
ls -la /var/www/html/admin
Enable host on webserver
cd /etc/nginx/sites-available
cp default pbx.2dz.fi.conf
ln -s /etc/nginx/sites-available/pbx.2dz.fi.conf /etc/nginx/sites-enabled/
Permissions fix
mkdir -p /var/www/pbx.2dz.fi
chown -R asterisk:asterisk /var/www/pbx.2dz.fi
chown -R www-data:www-data /var/www/pbx.2dz.fi
nginx -t
nginx -s reload
Request cert
certbot --nginx -d pbx.2dz.fi
chown -R asterisk:asterisk /var/www/html