How To Install FreePBX 16 on CentOS 8 / RHEL 8

Posted on 170 views

How can I install FreePBX 16 on CentOS 8 / RHEL 8?.  FreePBX is an open source GUI tool for administering Asterisk PBX systems. It is majorly written in PHP and it can be installed on both Red Hat and Debian Linux family distributions.

In this blog post, we will cover the steps of installing and configuring FreePBX 16 on RHEL / CentOS 8. This setup assumes you have a working installation of Asterisk PBX server. If you don’t have Asterisk PBX server, refer to our guide below.

Step 1 – Update system and set SELinux in permissive

Start work on an up-to-date system.

sudo dnf -y update

If you’re not comfortable with SELinux running in enforcing mode, put it to permissive mode.

sudo setenforce 0
sudo sed -i 's/\(^SELINUX=\).*/\SELINUX=permissive/' /etc/selinux/config

Add EPEL repository using How to Install EPEL repository on RHEL / CentOS 8

CentOS 8:

sudo yum -y install epel-release
sudo yum config-manager --set-enabled powertools


sudo yum -y install
ARCH=$( /bin/arch )
sudo subscription-manager repos --enable "codeready-builder-for-rhel-8-$ARCH-rpms

Step 2 – Install FreePBX Dependencies

Install Development Tools on RHEL / CentOS server.

sudo dnf -y groupinstall "Development Tools"

Install other required dependencies:

sudo dnf install -y tftp-server ncurses-devel sendmail sendmail-cf newt-devel libxml2-devel libtiff-devel gtk2-devel subversion kernel-devel git crontabs cronie cronie-anacron wget vim  sqlite-devel net-tools gnutls-devel unixODBC

Step 3 – Install MariaDB Database server

FreePBX requires a database server for configurations and data storage. Use the guide on the link below to install and configure MariaDB Database server.

Step 4 – Installing Node.js LTS

FreePBX has Node.js as a dependency, install it on your system by using our guide below:

sudo dnf -y module install nodejs

Confirm installation was successful:

$ node --version

Step 5 – Install and configure Apache Web Server

Install httpd package using yum package manager:

sudo dnf -y install @httpd

Remove default index.html page

sudo rm -f /var/www/html/index.html
sudo rm /etc/httpd/conf.d/welcome.conf

Start and enable httpd service to start at boot.

sudo systemctl enable --now httpd

If you have an active firewalld firewall service, open http & https ports

sudo firewall-cmd --add-service=http,https --permanent
sudo firewall-cmd --reload

Step 6 – Install PHP and required extensions

Add EPEL and REMI repositories:

sudo dnf -y install yum-utils
sudo dnf -y install
sudo dnf -y install
sudo dnf module -y reset php
sudo dnf module -y install php:remi-7.4

Run the command below to install required php extensions which are needed to run FreePBX.

sudo dnf install -y wget php php-pear php-cgi php-common php-curl php-mbstring php-gd php-mysqlnd php-gettext php-bcmath php-zip php-xml  php-json php-process php-snmp

sudo pear install Console_Getopt

Set the maximum upload size for php

sudo sed -i 's/\(^upload_max_filesize = \).*/\l20M/' /etc/php.ini
sudo sed -i 's/\(^upload_max_filesize = \).*/\1128M/' /etc/php.ini

and set upload_max_filesize = 20M and proceed to start php-fpm and httpd.

sudo systemctl restart php-fpm httpd
sudo systemctl enable php-fpm httpd

Verify the status of two services.

$ systemctl status php-fpm httpdphp-fpm.service - The PHP FastCGI Process Manager
    Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; vendor preset: disabled)
    Active: active (running) since Sat 2022-04-13 21:26:53 EAT; 11s ago
  Main PID: 29086 (php-fpm)
    Status: "Processes active: 0, idle: 5, Requests: 0, slow: 0, Traffic: 0req/sec"
     Tasks: 6 (limit: 11510)
    Memory: 22.8M
    CGroup: /system.slice/php-fpm.service
            ├─29086 php-fpm: master process (/etc/php-fpm.conf)
            ├─29087 php-fpm: pool www
            ├─29088 php-fpm: pool www
            ├─29089 php-fpm: pool www
            ├─29090 php-fpm: pool www
            └─29091 php-fpm: pool www
 Mar 23 21:26:53 rhel8.local systemd[1]: Starting The PHP FastCGI Process Manager…
 Mar 23 21:26:53 rhel8.local systemd[1]: Started The PHP FastCGI Process Manager.
 ● httpd.service - The Apache HTTP Server
    Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
   Drop-In: /usr/lib/systemd/system/httpd.service.d
    Active: active (running) since Sat 2022-04-13 21:26:54 EAT; 10s ago
      Docs: man:httpd.service(8)
  Main PID: 29095 (httpd)
    Status: "Running, listening on: port 443, port 80"
     Tasks: 213 (limit: 11510)
    Memory: 31.0M
    CGroup: /system.slice/httpd.service
            ├─29095 /usr/sbin/httpd -DFOREGROUND
            ├─29096 /usr/sbin/httpd -DFOREGROUND
            ├─29097 /usr/sbin/httpd -DFOREGROUND
            ├─29098 /usr/sbin/httpd -DFOREGROUND
            └─29099 /usr/sbin/httpd -DFOREGROUND
 Mar 23 21:26:54 rhel8.local systemd[1]: Starting The Apache HTTP Server…
 Mar 23 21:26:54 rhel8.local httpd[29095]: Server configured, listening on: port 443, port 80
 Mar 23 21:26:54 rhel8.local systemd[1]: Started The Apache HTTP Server.

Step 7 – Install FreePBX 16 on CentOS 8 / RHEL 8

Before installing FreePBX, make the following modifications for Apache

sudo sed -i 's/\(^memory_limit = \).*/\1128M/' /etc/php.ini
sudo sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/httpd/conf/httpd.conf
sudo sed -i 's/AllowOverride None/AllowOverride All/' /etc/httpd/conf/httpd.conf
sudo sed -i 's/\(^user = \).*/\1asterisk/' /etc/php-fpm.d/www.conf
sudo sed -i 's/\(^group = \).*/\1asterisk/' /etc/php-fpm.d/www.conf
sudo sed -i 's/\(^listen.acl_users = \).*/\1apache,nginx,asterisk/' /etc/php-fpm.d/www.conf

Download the latest version of FreePBX 16 LTS:


Extract the file:

tar xfz freepbx-16.0-latest.tgz

Install FreePBX on CentOS / RHEL 8.

cd freepbx
sudo systemctl stop asterisk
sudo ./start_asterisk start
sudo ./install -n

If you have a root password for database server, use:

sudo ./install -n --dbuser root --dbpass password

Replace password with the root database password. Below is a sample installation output:


Install all Freepbx modules

sudo fwconsole ma disablerepo commercial
sudo fwconsole ma installall
sudo fwconsole ma delete firewall
sudo fwconsole reload
sudo fwconsole restart

Restart httpd.

sudo systemctl restart httpd php-fpm

Create FreePBX systemd (startup script)

Create a systemd unit for auto-starting the service:

sudo tee /etc/systemd/system/freepbx.service<

Enable the service to autostart

sudo systemctl daemon-reload
sudo systemctl enable freepbx

Step 8 – Access FreePBX Web Interface

Open your web browser and connect to the IP address or hostname of your new FreePBX server.

1. Create the first admin account

install-freepbx-ubuntu-18.04-set-username-min (2)

2. When done providing admin user details, click “Create Account” to create the account. On the next page, you’ll get a login console.

freepbx-15-ubuntu-18.04-debian-9-login (1)

You’ll get to FreePBX dashboard where you can manage your Asterisk PBX. You now have FreePBX installed on RHEL / CentOS 8 server.


Gravatar Image
A systems engineer with excellent skills in systems administration, cloud computing, systems deployment, virtualization, containers, and a certified ethical hacker.