# Telephony

# Asterisk and FreePBX on Debian12

# Preparations

## Database

Create new user in Cloud SQL

```
https://console.cloud.google.com/sql/instances/xxx/users?project=yyy

```

Warning: `-` dashes (hyphens) **can not** be used in the MariaDB databases' naming. To match user to database, only underlines are used.

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/scaled-1680-/vlsJQBF7pTLWaY47-image-1759891637304.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/vlsJQBF7pTLWaY47-image-1759891637304.png)

Verify connection from the host to database server

```bash
mysql -h 172.21.32.6 -u pbx_2dz_fi_asterisk -p

```

Create database and grante permissions for Asterisk

```sql
CREATE DATABASE pbx_2dz_fi_asterisk      CHARACTER SET utf8 COLLATE utf8_general_ci;
CREATE DATABASE pbx_2dz_fi_asteriskcdrdb CHARACTER SET utf8 COLLATE utf8_general_ci;


GRANT ALL PRIVILEGES ON pbx_2dz_fi_asterisk.*      TO 'pbx_2dz_fi_asterisk'@'10.166.0.2';
GRANT ALL PRIVILEGES ON pbx_2dz_fi_asteriskcdrdb.* TO 'pbx_2dz_fi_asterisk'@'10.166.0.2';

FLUSH PRIVILEGES;

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/scaled-1680-/w4fvsn9UNyV69QlJ-image-1759891985374.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/w4fvsn9UNyV69QlJ-image-1759891985374.png)

## PHP installation

Elevate

```bash
sudo su

```

Install PHP and depending libraries

```bash
apt install \
    php \
    php-cli \
    php-mysql \
    php-gd \
    php-curl \
    php-mbstring \
    php-xml \
    php-bcmath \
    php-zip \
    php-json \
    php-pear

```

## node.js installation

```bash
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

```

## Asterisk installation

Choosing Asterisk version considerations

Pickup LTS version from Versions page. On the moment of writing (2025-10-08), it is v22. [![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/scaled-1680-/hWdAHXVeo1TkoGph-image-1759892909508.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/hWdAHXVeo1TkoGph-image-1759892909508.png)

```url
https://docs.asterisk.org/About-the-Project/Asterisk-Versions/

```

Observer releases From official Github page

```
https://github.com/asterisk/asterisk/releases
https://github.com/asterisk/asterisk/releases/tag/22.5.2

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/scaled-1680-/Xv4Zj0FxaqYhfbHN-image-1759893110678.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/Xv4Zj0FxaqYhfbHN-image-1759893110678.png)

Download Asterisk

```bash
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)

```bash
tar -xzvf asterisk-${v}.tar.gz

```

Change dir and install prerequisites

```bash
cd asterisk-${v}
contrib/scripts/install_prereq install

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/scaled-1680-/AZIGi83eA4HhOtLz-image-1759894408072.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/AZIGi83eA4HhOtLz-image-1759894408072.png)

Configure

```bash
./configure

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/scaled-1680-/WZrLzlZLPQBQrBWS-image-1759894526700.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/WZrLzlZLPQBQrBWS-image-1759894526700.png)

Define additional features

```bash
make menuselect

```

Enable mp3 support:

```
+ format_mp3
+ app_macro

```

Download additional libraries

```bash
contrib/scripts/get_mp3_source.sh

```

Build and install

```bash
make -j$(nproc)
make install
make samples
make basic-pbx
make config
ldconfig

```

Create run directory

```bash
mkdir -p /var/run/asterisk

```

Set permissions

```bash
useradd -m asterisk
chown -R asterisk:asterisk \
    /var/lib/asterisk \
    /var/spool/asterisk \
    /var/log/asterisk \
    /var/run/asterisk \
    /usr/lib/asterisk

```

Copy default config

```bash
cp /home/anton/delme/asterisk-22.5.2/configs/samples/asterisk.conf.sample /etc/asterisk/asterisk.conf

```

Modify config

```bash
vi /etc/asterisk/asterisk.conf

```

```ini
runuser = asterisk              ; The user to run as.
rungroup = asterisk             ; The group to run as.

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/scaled-1680-/0s5AUUlaWjsIait8-image-1759900900934.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2025-10/0s5AUUlaWjsIait8-image-1759900900934.png)

Create service override

```bash
mkdir -p /etc/systemd/system/asterisk.service.d/
vi /etc/systemd/system/asterisk.service.d/override.conf

```

```ini
[Service]
User=asterisk
Group=asterisk

```

Enable and start the services

```bash
systemctl daemon-reexec
systemctl enable asterisk
systemctl restart asterisk
systemctl status asterisk

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/scaled-1680-/ON2n7olMmBIQfOy8-image-1772890565365.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/ON2n7olMmBIQfOy8-image-1772890565365.png)

Verify

```bash
ps aux  | grep asterisk
ss -ntap | grep asterisk

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/scaled-1680-/79pd8Dr7hTrtjB8S-image-1772890723006.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/79pd8Dr7hTrtjB8S-image-1772890723006.png)

Define cert in config

```bash
TODO: update cert in Asterisk

```

## FreePBX installation

Install preresequitives

```bash
apt install \
    composer \
    unzip

```

Check compatible version

```bash
https://github.com/FreePBX/framework/tags

```

Download FreePBX

```bash
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

```

## Initial FreePBX config

before

```bash
fwconsole ma list

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/scaled-1680-/Mc6PdWCQm6hZLu4I-image-1772892950296.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/Mc6PdWCQm6hZLu4I-image-1772892950296.png)

List available online

```bash
fwconsole ma listonline

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/scaled-1680-/SQp9uwnnTqbLVV4Y-image-1772893057009.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/SQp9uwnnTqbLVV4Y-image-1772893057009.png)

Install core module

```bash
fwconsole ma downloadinstall core

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/scaled-1680-/wB2qaSXcNW3SXOQC-image-1772894754507.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/wB2qaSXcNW3SXOQC-image-1772894754507.png)

Update framework

```bash
fwconsole ma downloadinstall framework

```

after

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/scaled-1680-/PW8yNwTv8IkaFOhy-image-1772898691149.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/PW8yNwTv8IkaFOhy-image-1772898691149.png)

Install FreePBX

```bash
rm -rf /etc/freepbx.conf
rm -rf /etc/amportal.conf

./start_asterisk start
./install 

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/scaled-1680-/mscRyzZt71G968NR-image-1772897624433.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/mscRyzZt71G968NR-image-1772897624433.png)

Check that application installed

```bash
ls -la /var/www/html/admin
fgrep -irn freepbx.conf /var/www/html/admin/config.php

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/scaled-1680-/NUIUjqq8iShyeosN-image-1772891090518.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/NUIUjqq8iShyeosN-image-1772891090518.png)

Enable host on Nginx webserver

```bash
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/

```

Modify virtual host file to point to

```nginx
TODO: move to  /var/www/pbx.2dz.fi
    root /var/www/html/;

```

Test config and reload webserver

```bash
nginx -t
nginx -s reload

```

Request cert from LE (this will create additional SSL block in virtual server config)

```bash
certbot --nginx -d pbx.2dz.fi

```

Permissions fix

```bash
#? 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

chown -R www-data:www-data /var/lib/php/sessions/
chown -R www-data:www-data /var/www/html/admin/
chown    www-data:www-data /etc/freepbx.conf

usermod -aG asterisk www-data
usermod -aG www-data asterisk

```

Change FreePBX log's group to www-data, for webserver user to write into

```bash
chown asterisk:www-data /var/log/asterisk/freepbx.log

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/scaled-1680-/FBk3zpimted2nUNq-image-1772895104382.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/FBk3zpimted2nUNq-image-1772895104382.png)

Define database credentials created in the beginning

```bash
vi /etc/freepbx.conf

```

[![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/scaled-1680-/i1UI7WqPfp3L3mKt-image-1772896352759.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/i1UI7WqPfp3L3mKt-image-1772896352759.png)

Initial page [![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/scaled-1680-/pKe9M4PzYVfr5NQF-image-1772899335240.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/pKe9M4PzYVfr5NQF-image-1772899335240.png)

Welcome page [![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/scaled-1680-/4vni4IT0ZKkSKHK0-image-1772899509459.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/4vni4IT0ZKkSKHK0-image-1772899509459.png)

No nodules found [![](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/scaled-1680-/jFiuz6et7xedJExN-image-1772899602250.png)](https://storage.googleapis.com/iau-data-dox/uploads/images/gallery/2026-03/jFiuz6et7xedJExN-image-1772899602250.png)

## SIP configuration

Install modules

```bash
fwconsole ma downloadinstall sipsettings

```

---

Upgrade:

```bash
fwconsole ma listonline
fwconsole ma upgrade framework
fwconsole ma refreshsignatures
fwconsole chown
#? fwconsole backup --list
fwconsole reload

```