How to Install FreePBX

Updated June 2026
The fastest way to install FreePBX is to use the official FreePBX Distro ISO, which packages the operating system, Asterisk, and the FreePBX web interface into a single bootable image. You can also install FreePBX manually on an existing Linux server if you need more control over the base operating system. Both methods produce a fully functional PBX that is ready for extension creation, SIP trunk configuration, and production use.

FreePBX is the most popular open source PBX management interface, providing a web-based GUI for the Asterisk telephony engine. This guide covers both the distro installation path (recommended for most users) and the manual installation path for administrators who need to install FreePBX on an existing server.

Step 1: Choose an Installation Method

FreePBX Distro is the recommended approach for new deployments. It installs a hardened operating system (based on Rocky Linux 9 or a similar RHEL derivative), the latest LTS version of Asterisk, and the FreePBX web interface in a single automated process. You end up with a purpose-built system where everything is preconfigured to work together, including the firewall, the web server, the database, and the Asterisk service.

Manual installation is appropriate when you cannot boot from an ISO (for example, on a cloud VPS where you must use the provider's OS images), when you need a specific Linux distribution that the distro does not support, or when you want to add FreePBX to a server that already runs other services. The manual process involves installing Asterisk and its dependencies, then installing the FreePBX framework and modules on top.

For this guide, we will cover both methods. If you have access to bare metal or a hypervisor where you can boot from ISO, use the distro path. If you are working with a cloud VPS, follow the manual path.

Step 2: Download and Boot the FreePBX Distro ISO

Visit the FreePBX downloads page at freepbx.org and download the latest stable ISO image. The file is typically around 1 GB. If you are installing on physical hardware, write the ISO to a USB drive using a tool like Rufus (Windows), dd (Linux), or balenaEtcher (cross-platform). If you are installing on a virtual machine in VMware, VirtualBox, or Proxmox, attach the ISO to the VM's virtual CD drive.

Allocate at least 2 CPU cores, 4 GB of RAM, and 40 GB of disk space for the virtual machine. These specifications comfortably support a PBX serving up to 50 concurrent calls. For larger deployments, increase the resources proportionally.

Boot the server from the ISO. You will see the FreePBX Distro boot menu. Select the default installation option (which installs Asterisk with the recommended version) and press Enter. The installer begins by loading the operating system installer.

Step 3: Run the Operating System Installer

The operating system installer walks through the standard Linux installation steps. Select your language, keyboard layout, and timezone. The disk partitioning is handled automatically in most cases, using the entire disk for the installation. Set a strong root password when prompted.

Network configuration is typically handled by DHCP during installation. If your server requires a static IP address (which is recommended for production PBX systems), you can either configure it during installation through the network settings screen or change it after installation through the nmtui command-line tool or the FreePBX System Admin module.

After the OS installation completes, the system reboots and begins the automated FreePBX installation. This process downloads and compiles Asterisk, installs the FreePBX framework, sets up MariaDB, configures Apache, and installs the default set of FreePBX modules. The entire process runs unattended and may take 10 to 30 minutes depending on the server's hardware and internet speed. When it finishes, the console displays the server's IP address and a message indicating that the web interface is ready.

Step 4: Complete the FreePBX Web Setup

Open a web browser on any computer on the same network as the PBX and navigate to the server's IP address (for example, http://192.168.1.100). You will see the FreePBX initial setup page, which asks you to create an administrator account. Choose a username and a strong password. This account controls the entire PBX, so use a unique password that you do not use anywhere else.

After creating the admin account, the FreePBX dashboard loads. The dashboard shows the system status, including Asterisk version, uptime, active calls, and any notifications that require attention. Before making any configuration changes, apply any available module updates by navigating to Admin > Module Admin, clicking "Check Online," and then "Download All" and "Process" to bring everything to the latest version.

Set the system identity under Settings > Asterisk SIP Settings. Enter the server's external IP address (or the hostname if you have DNS configured) in the External Address field. Set the local networks field to include your LAN subnet (for example, 192.168.1.0/24). These settings ensure that Asterisk correctly handles NAT traversal for SIP traffic, which is essential for calls to work reliably from remote phones or through SIP trunks.

Step 5: Update and Activate Modules

FreePBX's functionality is delivered through modules, and some useful modules may not be installed by default. Navigate to Admin > Module Admin to see all available modules. Key modules to verify are installed and enabled include:

Core modules that should already be active: Asterisk Info (system diagnostics), Backup and Restore (scheduled backups), Call Recording, CDR Reports (call detail records), Conference Pro or Conferences (conference bridges), Feature Codes, Follow Me, IVR (interactive voice response), Ring Groups, System Admin, Time Conditions, and Voicemail.

Additional free modules worth activating: Caller ID Lookup (looks up caller names from online directories), Phonebook (internal directory), Queue Reports (if using call queues), and UCP (User Control Panel, which gives end users a web interface to manage their own voicemail, call history, and settings).

After enabling new modules, click "Submit" and then the red "Apply Config" button in the top bar. This tells Asterisk to reload its configuration with the new modules active. Always apply configuration changes before testing, as changes are not live until applied.

Step 6: Configure the Firewall

The FreePBX Firewall module (Connectivity > Firewall) provides a GUI for managing iptables rules specific to PBX traffic. Enable the firewall and configure the following zones: mark your local network as "Local" (trusted, full access), mark any known remote office networks as "Local" as well, and leave everything else in the "External" zone with restricted access.

The firewall module automatically allows SIP traffic from registered trunks and blocks SIP traffic from unknown sources. It also implements responsive firewall features that detect SIP scanners and brute-force attacks in real time and block them before they can cause damage.

If you are running FreePBX on a cloud VPS, also configure the cloud provider's security group or network firewall. Allow inbound UDP port 5060 (SIP), UDP ports 10000 to 20000 (RTP media), TCP port 443 (HTTPS for the web interface), and optionally TCP port 8089 (WebSocket for WebRTC). Restrict the source IP addresses to your office networks and SIP trunk provider ranges wherever possible.

Install and configure Fail2ban for additional protection. FreePBX Distro includes Fail2ban preconfigured to monitor Asterisk's security log. Verify that it is running with the command "fail2ban-client status" and check that the asterisk jail is active. The default configuration bans IP addresses for 10 minutes after 5 failed attempts, but you may want to increase the ban time to 24 hours for production systems.

Step 7: Create Your First Extension

Navigate to Applications > Extensions and click "Add Extension." Select "Add New PJSIP Extension" (PJSIP is the modern SIP channel driver that has replaced the older chan_sip in current Asterisk versions). Enter the extension number (for example, 1001), the display name (the user's name), and a strong SIP password. The password is generated automatically, but you can change it to a custom value if needed.

Under the Voicemail tab, enable voicemail for this extension, set a voicemail PIN, and enter the user's email address for voicemail-to-email delivery. Under the Advanced tab, review the default codec settings (usually G.711 ulaw and alaw for maximum compatibility) and adjust if needed.

Click Submit and then Apply Config. The extension is now active and ready for a phone to register. Configure your SIP phone or softphone application with the PBX's IP address (or hostname), the extension number as the SIP username, and the SIP password. Once registered, make a test call to *43 (the default echo test feature code in FreePBX), which plays back your voice with a short delay, confirming that audio is flowing in both directions.

Create additional extensions for other users, set up ring groups if you want multiple phones to ring simultaneously, and configure an IVR menu if you want a professional auto-attendant greeting for incoming callers. With extensions working and a SIP trunk connected, your FreePBX system is ready for production use.

Manual Installation on an Existing Linux Server

If you cannot use the FreePBX Distro ISO, you can install FreePBX on an existing Linux server. The process involves installing Asterisk and its dependencies manually, then installing the FreePBX framework. The FreePBX project provides detailed wiki documentation for manual installation on various Linux distributions.

The general process is: install required packages (Apache/Nginx, MariaDB/MySQL, PHP with required modules, Node.js, and development tools), download and compile Asterisk from source with the modules you need, configure Asterisk to start as a system service, download the FreePBX framework tarball, run the FreePBX installer script, and then access the web interface to complete the setup.

Manual installation gives you more control over the operating system and allows FreePBX to coexist with other applications on the same server, but it requires more Linux expertise and takes longer than the distro path. You are also responsible for keeping Asterisk updated, since the distro handles Asterisk updates through its own package management.

Key Takeaway

Use FreePBX Distro for the fastest, most reliable installation path. It handles the operating system, Asterisk, and FreePBX in a single process, resulting in a production-ready PBX that you can begin configuring immediately through the web interface.