Skip to main content

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