Building a self-hosted business phone system used to require expensive proprietary hardware and vendor lock-in. Today, three mature open-source PBX platforms let you run a full-featured telephony system on your own infrastructure: FreePBX, FusionPBX, and Wazo.
This guide compares these platforms side by side, covers Docker deployment options, and provides configuration examples to help you choose the right PBX for your self-hosted infrastructure.
Why Self-Host Your PBX?
Running your own PBX platform gives you complete control over your business communications:
- No per-seat licensing fees — open-source PBX platforms are free regardless of how many extensions you add
- Full data sovereignty — call recordings, voicemails, and call detail records stay on your servers
- Deep customization — modify dialplans, IVR flows, and integrations without vendor restrictions
- Integration with existing infrastructure — connect to your own SIP trunks, gateways, and CRM systems
- Resilience — no dependency on a third-party cloud provider’s uptime
For organizations that already self-host their email, file storage, and collaboration tools, adding a self-hosted PBX is a natural extension of that philosophy.
FreePBX: The Most Popular Asterisk GUI
FreePBX is the most widely deployed open-source PBX platform, serving as a web-based management interface for Asterisk. Originally created by Schmooze Communications and now maintained by Sangoma Technologies, FreePBX powers millions of phone systems worldwide.
Key Features
- Web-based GUI for managing extensions, trunks, routes, and IVRs
- Module-based architecture with 200+ free and commercial modules
- Built-in call recording, voicemail, and conferencing
- REST API for integrations
- Support for SIP, IAX2, and PJSIP protocols
- Fail2ban integration for brute-force protection
GitHub Stats
The FreePBX framework module has 71 stars on GitHub, with the core module at 180 stars. While the GitHub presence is modest (much of the code is distributed through their own module repository), FreePBX is actively maintained with regular security updates.
Installation (Docker)
FreePBX does not provide an official Docker Compose file, but the community maintains several working images. The most popular approach uses the wisteful/freepbx image:
| |
Configuration Example: Setting Up a SIP Trunk
After installing FreePBX, navigate to Connectivity > Trunks to add a SIP trunk:
| |
FreePBX manages these configurations automatically through its GUI, but understanding the underlying Asterisk config helps with troubleshooting.
FusionPBX: Multi-Tenant FreeSWITCH Platform
FusionPBX is a full-featured, domain-based multi-tenant PBX built on FreeSWITCH. Created by Mark J. Crane, FusionPBX offers enterprise-grade features including true multi-tenancy, making it ideal for service providers and organizations managing multiple departments or clients.
Key Features
- True multi-tenant architecture — isolate clients or departments
- Built on FreeSWITCH for superior audio processing
- Domain-based provisioning for auto-configuring IP phones
- Advanced call center features with queue management
- Real-time call detail records (CDR) and billing
- Native support for WebRTC, SRTP, and TLS
- High-availability clustering support
GitHub Stats
FusionPBX has 997 stars on GitHub, with the last commit on April 25, 2026. The project is written primarily in PHP and has a very active development community.
Installation (Traditional + Docker)
FusionPBX provides an install script rather than Docker images. Here’s the standard Debian installation:
| |
For Docker deployments, you can build a custom compose setup:
| |
Configuration Example: Multi-Tenant Setup
FusionPBX’s multi-tenancy is managed through the GUI. Each domain acts as a separate tenant:
| |
FusionPBX automatically generates FreeSWITCH XML configurations based on your GUI settings, managing the complex mapping between domains and dialplans.
Wazo: Modern Unified Communications Platform
Wazo is a modern, API-first unified communications platform built on Asterisk. Unlike FreePBX and FusionPBX, Wazo was designed from the ground up with a microservices architecture and a comprehensive REST API, making it ideal for organizations that want to integrate telephony deeply into their applications.
Key Features
- Microservices architecture with separate daemons for each function
- REST API for all operations — no GUI-only configuration
- CTI (Computer Telephony Integration) with real-time events via WebSocket
- Built-in provisioning system for IP phones
- Call queue management with real-time statistics
- WebRTC support with built-in browser-based phone (wazo-webrc)
- Plugin architecture for custom integrations
GitHub Stats
Wazo is split across multiple microservice repositories under the wazo-platform organization. Key repos include wazo-confd (12 stars), wazo-calld (36 stars), and wazo-docker (17 stars). The project is actively maintained with recent updates in April 2026.
Installation (Docker Compose)
Wazo provides an official Docker Compose setup, making it the easiest of the three to deploy in containers:
| |
Configuration Example: API-Driven Extension Creation
Wazo’s API-first approach means you can manage everything programmatically:
| |
Comparison Table
| Feature | FreePBX | FusionPBX | Wazo |
|---|---|---|---|
| Engine | Asterisk | FreeSWITCH | Asterisk |
| License | GPLv3 | MPL 1.1 | GPLv3 |
| Multi-tenant | No (per-installation) | Yes (domain-based) | Yes (tenant-based) |
| Docker Support | Community images | Community/Custom | Official docker-compose |
| API | REST (limited) | REST API | Full REST + WebSocket |
| Architecture | Monolithic | Monolithic | Microservices |
| Phone Provisioning | Yes (via Endpoint Manager) | Yes (built-in) | Yes (provd service) |
| WebRTC | Via modules | Native | Native (wazo-webrc) |
| Call Recording | Yes | Yes | Yes |
| Call Center/Queues | Yes (Queue module) | Yes (built-in) | Yes (calld service) |
| High Availability | Limited | Yes (clustering) | Yes (microservice scaling) |
| Programming Language | PHP/Python | PHP | Python |
| Database | MySQL/MariaDB | PostgreSQL | PostgreSQL |
| Message Queue | None | None | RabbitMQ |
| GitHub Stars | ~250 (combined) | 997 | ~65 (combined) |
| Best For | SMBs, single-site | MSPs, multi-tenant | Developers, API-first |
Which Should You Choose?
Choose FreePBX if:
- You want the most mature and widely-deployed platform
- You need the largest ecosystem of modules and community support
- You’re running a single-site or small multi-site deployment
- Your team already knows Asterisk
Choose FusionPBX if:
- You need true multi-tenant isolation (MSPs, managed services)
- You prefer FreeSWITCH’s audio processing capabilities
- You need high-availability clustering
- You’re deploying for multiple departments or clients on one instance
Choose Wazo if:
- You want an API-first platform for deep application integration
- You need real-time CTI events via WebSocket
- You prefer modern microservices architecture
- You want official Docker Compose deployment out of the box
For related reading, see our VoIP PBX engines comparison (Kamailio vs Asterisk vs FreeSWITCH) and self-hosted video conferencing with Jitsi.
FAQ
Can I run a self-hosted PBX without a dedicated server?
Yes. All three platforms can run on a modest VPS with 2-4 CPU cores and 4GB RAM for small deployments (up to ~50 concurrent calls). FreePBX and FusionPBX also support bare-metal installation on older hardware you may already have.
How do I connect my self-hosted PBX to the public telephone network?
You need a SIP trunk provider. Popular options include Twilio, VoIP.ms, and Flowroute. Configure the SIP trunk credentials in your PBX GUI (FreePBX: Connectivity > Trunks, FusionPBX: Account > SIP, Wazo: via API or GUI) and route outbound calls through it.
Is it legal to run your own PBX?
Yes, running a PBX is legal in most jurisdictions. You must comply with emergency calling regulations (E911 in the US) and call recording consent laws. Consult local telecom regulations for specific requirements.
Can I migrate from FreePBX to FusionPBX or Wazo?
Migration is possible but not automatic. You’ll need to manually recreate extensions, trunks, IVR flows, and dialplans. Call detail records and voicemail can be exported and imported, but the process requires planning. Consider running both systems in parallel during migration.
Do these platforms support encrypted calls?
All three platforms support TLS for SIP signaling and SRTP for media encryption. FusionPBX and Wazo have the most straightforward WebRTC setup for browser-based encrypted calls. FreePBX requires additional module configuration for full SRTP support.
How do I back up my PBX configuration?
- FreePBX: Use the built-in Backup & Restore module, or
fwconsole backup --all - FusionPBX: Use the GUI backup tool or export the PostgreSQL database with
pg_dump - Wazo: Use
wazo-backupCLI tool or back up the PostgreSQL database and/etc/wazoconfiguration
What SIP phones work with these platforms?
All three support standard SIP phones. Yealink, Grandstream, and Polycom phones are widely compatible. FusionPBX and Wazo have built-in provisioning systems that can auto-configure supported phone models. FreePBX requires the Endpoint Manager module for auto-provisioning.