How to Install FusionPBX on OpenBSD

FusionPBX is a full-featured open source PBX platform for VoIP communications. In this tutorial, we will learn how to install FusionPBX on OpenBSD.

Requirements

Step 1: Update the System

Before we proceed with the installation of FusionPBX, we need to make sure that our OpenBSD system is up to date. To update the system, run the following command:

sudo sysupgrade

Step 2: Install Dependencies

Next, we need to install the dependencies required for FusionPBX. Run the following command to install the required packages:

sudo pkg_add -i bash git sqlite3 sudo php php-fpm php-curl php-gd php-mbstring php-pdflib php-xml php-intl php-zip php-pdo_sqlite

Step 3: Clone the FusionPBX Repository

We will clone the FusionPBX source code from the official GitHub repository. To do this, run the following command:

sudo git clone https://github.com/fusionpbx/fusionpbx.git /usr/local/www/fusionpbx

Step 4: Add a User for FusionPBX

We will create a dedicated user for FusionPBX. This user will run the Nginx web server and the PHP FPM process. To create a user, run the following command:

sudo useradd -d /nonexistent -s /usr/sbin/nologin -u 1042 -c "FusionPBX User" fusionpbx

Step 5: Configure PHP-FPM

We need to configure PHP-FPM to ensure that it runs under the FusionPBX user. To do this, run the following command:

sudo vi /etc/php-fpm.d/fusionpbx.conf

Add the following lines in this file:

[fusionpbx]
user = fusionpbx
group = www
listen = /var/run/php-fpm.fusionpbx.sock
listen.owner = fusionpbx
listen.group = www
listen.mode = 0660
pm = ondemand
pm.max_children = 50
pm.process_idle_timeout = 30s
pm.max_requests = 500

Save and exit the file.

Step 6: Configure Nginx

We will configure the Nginx web server to serve the FusionPBX files. To do this, run the following command:

sudo vi /etc/nginx/nginx.conf

Replace the contents of this file with the following:

user fusionpbx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    access_log /var/log/nginx/access.log combined;
    sendfile on;

    upstream php-fpm {
        server unix:/var/run/php-fpm.fusionpbx.sock;
    }

    server {
        listen 80 default_server;
        server_name _;
        root /usr/local/www/fusionpbx;
        index index.php;

        error_page 404 /404.html;
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root /usr/local/www/nginx-dist;
        }

        location / {
            try_files $uri $uri/ /index.php?$args;
        }

        location ~ \.php$ {
            fastcgi_pass php-fpm;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }

        location ~ /\.ht {
            deny all;
        }
    }
}

Save and exit the file.

Step 7: Start the Services

Finally, we need to start the required services and enable them to start automatically on boot. Run the following commands:

sudo rcctl enable nginx
sudo rcctl start nginx
sudo rcctl enable php_fpm
sudo rcctl start php_fpm

Step 8: Configure Firewall

If you have a firewall enabled on your OpenBSD server, you need to allow HTTP traffic to access the FusionPBX web interface. Run the following command to allow HTTP traffic:

sudo pfctl -e
echo 'pass in proto tcp from any to any port 80' | sudo tee /etc/pf.conf.local
sudo pfctl -f /etc/pf.conf

Step 9: Access FusionPBX

By default, FusionPBX web interface will be available at http://your_server_ip. Open your web browser and enter the server's IP address to access the FusionPBX web interface.

Congratulations! You have successfully installed FusionPBX on OpenBSD.

If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!