Asterisk is a popular open-source PBX platform for developing communications applications such as conference servers and VoIP gateways. It is used by individuals, small businesses, large enterprises, and governments worldwide.
Asterisk features include voicemail, music on hold, conference calling, call queuing, call recording, interactive voice response, SMS messaging, and more.
This tutorial explains how to install Asterisk on Ubuntu 20.04.
Ubuntu repositories include an older Asterisk version. We’ll install the latest Asterisk from the source code.
Prerequisites
Install the following packages that are necessary to download and build Asterisk:
sudo apt update
sudo apt install wget build-essential git autoconf subversion pkg-config libtool
Installing DAHDI and LibPRI
DAHDI is a set of drivers and utilities that allows Asterisk to communicate with analog and digital telephones. The LibPRI library allows Asterisk to communicate with ISDN connections. If you don’t need these libraries, you can skip this section.
Switch to the /usr/src
directory and download and install DAHDI:
cd /usr/src/
sudo git clone -b next git://git.asterisk.org/dahdi/linux dahdi-linux
cd dahdi-linux
sudo make
sudo make install
cd /usr/src/
sudo git clone -b next git://git.asterisk.org/dahdi/tools dahdi-tools
cd dahdi-tools
sudo autoreconf -i
sudo ./configure
sudo make install
sudo make install-config
sudo dahdi_genconf modules
Run the following commands to build LibPRI:
cd /usr/src/
sudo git clone https://gerrit.asterisk.org/libpri libpri
cd libpri
sudo make
sudo make install
Installing Asterisk
Clone the Asterisk source in the /usr/src
directory:
cd /usr/src/
sudo git clone -b 18 https://gerrit.asterisk.org/asterisk asterisk-18
At the time of writing, the latest version of Asterisk is 18.x. If there is a new version available, change the branch number in the command above.
Before continuing with the next steps, change to the Asterisk source directory:
cd asterisk-18/
Download the MP3 sources which are required to build the MP3 module and use MP3 files on Asterisk:
sudo contrib/scripts/get_mp3_source.sh
Run the install_prereq
script to install the necessary dependencies:
sudo contrib/scripts/install_prereq install
The configure
script performs several checks to make sure all of the dependencies on your system are present. Run the script by typing:
sudo ./configure
The next step is to select the modules you want to compile and install. Access menu select, by typing:
sudo make menuselect
Select the “format_mp3” option to tell Asterisk to build the MP3 module.
Once you are finished, switch to the “Save and Exit” button and press “Enter”.
Start the compilation process:
sudo make -j2
The compilation may take some time, depending on your system. You can modify the -j
flag according to the number of cores in your processor.
Once completed, install Asterisk and its modules by typing:
sudo make install
You can install either the generic configuration files with reference documentation by typing:
sudo make samples
Or install the basic PBX configuration files:
sudo make basic-pbx
The last step is to install the Asterisk init script by typing:
sudo make config
It is also a good idea to run ldconfig
to update the shared libraries cache:
sudo ldconfig
Creating Asterisk User
By default, Asterisk runs as the root user. We’ll create a new system user and configure Asterisk to run as the newly created user for security reasons.
Run the following command to create a new system user named asterisk
:
sudo adduser --system --group --home /var/lib/asterisk --no-create-home --gecos "Asterisk PBX" asterisk
To configure Asterisk to run as asterisk
user, open the /etc/default/asterisk
file and uncomment the following two lines:
sudo nano /etc/default/asterisk
AST_USER="asterisk"
AST_GROUP="asterisk"
Add the asterisk
user to the dialout
and audio
groups:
sudo usermod -a -G dialout,audio asterisk
We also need to change the ownership and permissions of all asterisk files and directories so the user asterisk can access those files:
sudo chown -R asterisk: /var/{lib,log,run,spool}/asterisk /usr/lib/asterisk /etc/asterisk
sudo chmod -R 750 /var/{lib,log,run,spool}/asterisk /usr/lib/asterisk /etc/asterisk
Starting Asterisk
Now that you are all set up, start the Asterisk service with the following command:
sudo systemctl start asterisk
To verify that Asterisk is running, connect to the Asterisk command-line interface (CLI) by typing:
sudo asterisk -vvvr
You’ll see the default Asterisk CLI prompt:
Connected to Asterisk GIT-18-263f906af4 currently running on ubuntu2004 (pid = 9010)
ubuntu2004*CLI>
The last step is to enable Asterisk service to start on boot with:
sudo systemctl enable asterisk
Configuring Firewall
The firewall will secure your server against unwanted traffic.
By default, SIP uses the UDP port 5060, to open the port run:
sudo ufw allow 5060/udp
If you enabled the Real-Time Protocol (RTP) then you also need to open the following port range:
sudo ufw allow 10000:20000/udp
Feel free to adjust the firewall according to your needs.