FreePBX is a web-based GUI that sits on top of Asterisk, the open-source telephony engine. Together they form the most widely deployed PBX stack in the world. For Australian businesses with IT capability in-house, FreePBX offers a powerful self-hosted alternative to commercial hosted PBX platforms -- with full control over call routing, data sovereignty, and no per-user subscription cost. The trade-off is that you own the maintenance, the hardware, the uptime, and the configuration. This guide covers the setup process specifically for Australian deployments: which SIP trunk providers work well with Asterisk/FreePBX in Australia, how to handle number porting, and the configuration decisions that trip up most AU installs.
What FreePBX Is (and Is Not)
FreePBX is a graphical administration interface for Asterisk. Asterisk itself is a C-based telephony engine that handles call processing, protocol handling (SIP, IAX2, DAHDI), and audio manipulation. FreePBX wraps Asterisk's configuration files in a web UI so you can manage extensions, trunks, ring groups, and IVR menus without writing Asterisk dialplan directly.
The FreePBX Distro (maintained by Sangoma, who acquired FreePBX in 2013) bundles Asterisk, FreePBX, and a stripped CentOS/AlmaLinux base into a single installable ISO. This is the recommended installation path for most deployments -- installing FreePBX manually on an existing Linux system introduces version compatibility issues that the distro avoids.
FreePBX is not a SIP trunk provider, not a cloud PBX service, and not a phone number provider. It is the PBX software. You still need a SIP trunk from an Australian carrier to connect your FreePBX system to the PSTN and give you phone numbers. The PBX handles call routing internally; the SIP trunk connects it to the outside world.
Hardware Requirements for a FreePBX Server
FreePBX is lightweight by modern standards. For a business of up to 30 concurrent calls, a modest server handles it comfortably. The key resource is CPU -- Asterisk uses CPU for audio transcoding when call codecs do not match between the SIP trunk and the endpoint. Choose G.711 (PCMU/PCMA) end-to-end wherever possible to minimise transcoding load.
FreePBX Server Specs by Business Size
| Up to 10 concurrent calls | Up to 30 concurrent calls | Up to 100 concurrent calls | |
|---|---|---|---|
| CPU | 2 cores, 2GHz+ | 4 cores, 2.4GHz+ | 8 cores, 2.8GHz+ |
| RAM | 2 GB | 4 GB | 8 GB |
| Storage | 32 GB SSD | 64 GB SSD | 128 GB SSD (+ CDR storage) |
| Network | 100 Mbps | 100 Mbps | 1 Gbps |
| Call recording storage | Not included above | Not included above | Add 1 GB per ~100 hours |
A virtualised server (VMware, KVM, Proxmox) works well for FreePBX as long as you dedicate CPU resources and avoid noisy neighbour situations during business hours. Running FreePBX on shared virtualisation with bursty workloads causes audio quality issues. For production deployments, a dedicated small server or a reserved cloud VPS (AWS, Azure, or an Australian VPS provider) is preferable to shared hosting.
Installation: FreePBX Distro
The official installation path uses the Sangoma FreePBX Distro ISO, which installs a pre-configured AlmaLinux 8 system with Asterisk and FreePBX already integrated.
Step 1: Download and boot the ISO
Download the latest FreePBX Distro ISO from the official Sangoma download page. Write it to a USB drive using Balena Etcher or Rufus, or mount it directly in your hypervisor. Boot from the ISO and select the standard install option (not the minimal install -- you want the full web UI and module set from day one).
Step 2: First boot and web setup
After installation completes and the system reboots, access the FreePBX admin interface at the server's IP address via a browser. The setup wizard prompts you to create an admin username and password, configure the system language (select English -- Australia), and set your timezone to Australia/Sydney or the relevant Australian timezone.
Run the module updates immediately after first login. FreePBX core modules update independently of the distro. Go to Admin > Module Admin > Check Online and update all modules. This can take 10 to 15 minutes. Do not skip this step -- outdated modules are the cause of many post-install issues.
Step 3: Firewall configuration
FreePBX includes a built-in firewall module (based on iptables/nftables). Enable it immediately after installation -- an unprotected Asterisk instance on the public internet will be scanned and attacked within hours by SIP brute-force bots. In the FreePBX firewall module, set your network to 'Trusted' and enable intrusion detection. If your server is behind a NAT firewall (which it should be for a business deployment), also configure the Asterisk SIP settings for NAT traversal (covered below).
Configuring Extensions
Extensions in FreePBX represent individual users or devices. Each extension has a unique number (typically 3 to 4 digits for internal use) and SIP credentials that a phone or softphone uses to register.
To create an extension: Applications > Extensions > Add Extension > PJSIP Extension (use PJSIP, not the legacy chan_sip -- PJSIP is the current Asterisk SIP stack and handles NAT and transport correctly).
Key settings for each extension:
- User Extension: The internal number (e.g. 101, 102). Keep a consistent numbering scheme -- all extensions in the 100s, ring groups in the 600s, IVR in the 700s.
- Display Name: The name shown on caller ID for internal calls.
- Secret: The SIP password. Use a randomly generated 16+ character password. Do not use the extension number as the password.
- Transport: Set to UDP for standard desk phones on a local network; TLS for softphones connecting over the internet.
- Voicemail: Enable voicemail per extension and configure email notification with the staff member's email address for voicemail-to-email delivery.
Configuring a SIP Trunk for Australia
A SIP trunk connects your FreePBX system to an Australian carrier so it can send and receive calls. The trunk provider gives you a set of SIP credentials, a server address, and optionally assigns you DID numbers (Australian phone numbers) that route inbound calls to your system.
Australian SIP trunk providers that work well with FreePBX/Asterisk include Telnyx (AU PoP in Sydney), Symbio Networks (wholesale, for businesses with volume), and several others. The key requirements for an AU SIP trunk with FreePBX:
- Supports G.711 PCMA or PCMU codec (AU standard for PSTN calls)
- Supports PJSIP registration or IP authentication
- Australian DID numbers available (02/03/07/08 area codes)
- AU PoP (point of presence) for low-latency routing
- Supports number porting in for existing AU numbers
Adding the SIP trunk in FreePBX
Go to Connectivity > Trunks > Add Trunk > Add PJSIP Trunk. Key settings:
- Trunk Name: A label for your own reference (e.g. 'Telnyx-AU').
- Outbound CallerID: Your main business number in E.164 format (e.g. +61299991234). This is the number displayed to people you call.
- PJSIP Settings > Authentication > Username and Password: From your SIP trunk provider's portal.
- PJSIP Settings > Registration > Server URI: Your provider's SIP server address (e.g. sip.telnyx.com for Telnyx).
- Codec: Set ulaw (PCMU) or alaw (PCMA) as the first codec. Disable video codecs -- they waste bandwidth and cause negotiation issues.
NAT traversal settings
Most Australian business FreePBX installations sit behind a NAT router. Without correct NAT settings, Asterisk sends SIP messages with the internal RFC1918 IP address (e.g. 192.168.1.x) in the SDP body, which breaks audio on inbound calls. Fix this in Admin > Asterisk SIP Settings:
- External Address: Your public IP address or FQDN (use a DDNS service like No-IP if you have a dynamic IP).
- Local Networks: Add your internal network range (e.g. 192.168.1.0/255.255.255.0). Asterisk will only apply NAT rewriting to connections outside this range.
Inbound Routes and Outbound Routes
Inbound routes tell FreePBX what to do with calls arriving on your DID numbers. Go to Connectivity > Inbound Routes > Add Inbound Route. Set the DID Number to your Australian DID (e.g. 0299991234 -- use the national format without country code for most AU SIP providers, but verify with your provider). Set the destination to a ring group, extension, or IVR depending on your call flow.
Outbound routes tell FreePBX which trunk to use for outbound calls and what number patterns to route through it. Go to Connectivity > Outbound Routes > Add Route. For an Australian deployment:
- Route name: 'AU-Local-National'
- Trunk Sequence: select your SIP trunk
- Dial Patterns: add patterns for AU call types:
- 0NXXXXXXXX -- 10-digit AU numbers (mobiles and landlines in national format)
- 00X. -- international calls (prefix 00)
- 1[389]XXXXXXX -- 1300, 1800, 1900 numbers
- 000 -- emergency services
- 1[012]. -- service numbers (13-xxxx short codes)
Ring Groups
Ring groups (called Hunt Groups in some systems) define how inbound calls are distributed across multiple extensions. Applications > Ring Groups > Add Ring Group. Key settings:
- Ring Group Number: An internal number that routes to the group (e.g. 600 for reception).
- Group Description: Reception, Sales Team, Support, etc.
- Extensions: List the extension numbers to ring.
- Strategy: ringall (all ring simultaneously) is standard for reception groups. hunt (ring each in sequence) suits small support teams where you want a primary answerer. memoryhunt rings the first extension, then the first two, then all three -- good for single-person-first routing.
- Ring Time: How many seconds before moving to the next step. 20 to 30 seconds is standard. Too short creates anxiety; too long frustrates callers.
- Destination if No Answer: Where the call goes if nobody answers. Typically voicemail for the ring group or the IVR with an after-hours message.
IVR (Auto-Attendant)
FreePBX's IVR module (Applications > IVR > Add IVR) creates auto-attendant menus. Record or upload your greeting audio first (Admin > System Recordings). For an Australian business, record your greeting in a professional voice -- AI-generated audio has improved significantly but a human recording still sounds more natural on a business phone system.
Key IVR configuration:
- IVR Name: MainMenu or similar.
- Announcement: The recording that plays when the call arrives (e.g. 'Thank you for calling Acme Pty Ltd. For sales, press 1. For support, press 2. To speak with reception, press 0 or hold.').
- Timeout: How long to wait for a keypress before taking the timeout action. 10 seconds is standard.
- Invalid Retries: How many times to replay the menu if the caller presses an invalid key. 2 is standard.
- Digit destinations: Map each key to a ring group, extension, or another IVR.
- Timeout destination: If the caller does not press anything, route to reception or voicemail.
- Invalid destination: If the caller presses an unrecognised key, replay the menu or route to reception.
Time Conditions: Business Hours and After-Hours Routing
FreePBX handles business hours routing through Time Conditions (Admin > Time Conditions). Create a time condition that matches your business hours (e.g. Monday to Friday, 9:00 to 17:30 AEST). Apply the time condition to your inbound route as the initial destination: if it matches business hours, route to your main IVR or reception ring group; if it does not match, route to an after-hours IVR or voicemail.
Important for Australian businesses: set your FreePBX system timezone correctly (Admin > Asterisk SIP Settings > Time Zone to Australia/Sydney or your state's timezone). Time conditions evaluate against the server clock -- if the server is in UTC and the timezone is not set, your business hours routing will be 10 to 11 hours off.
Number Porting: Bringing Your Existing Numbers to FreePBX
Number porting for a FreePBX deployment works the same way as for any hosted VOIP system -- you port your existing numbers to your SIP trunk provider, and they route inbound calls for those numbers to your FreePBX system via the SIP trunk. The process is carrier-side; FreePBX just needs an inbound route configured for each DID.
Steps: request port-in from your SIP trunk provider (they submit the Local Number Portability request to the losing carrier). For Australian geographic numbers (02/03/07/08), allow 3 to 10 business days. For 1300/1800 numbers, allow 10 to 15 business days. During the porting window, keep your old system active. Once porting completes, add inbound routes in FreePBX for the ported DIDs and test before decommissioning the old system. See our Australian number porting guide for the full process.
Ongoing Maintenance and Updates
FreePBX requires ongoing maintenance that a hosted PBX provider handles for you automatically. The key maintenance tasks:
- Module updates: Check Admin > Module Admin monthly for security and feature updates. Critical security patches (Asterisk CVEs) should be applied promptly -- Asterisk has had several high-severity RCE and denial-of-service vulnerabilities historically.
- OS updates: Apply AlmaLinux security patches via
yum updateregularly. Enable automatic security updates for critical patches. - Backup: FreePBX Admin > Backup and Restore -- configure daily backups to a remote location. A local-only backup does not protect you if the server fails. Backup to an offsite location or cloud storage.
- Call detail records (CDR): FreePBX logs all calls. CDR tables grow over time -- set a retention policy in the CDR/CEL management module to prune records older than 90 days unless you have compliance requirements.
- SIP registration monitoring: Check that your SIP trunk registration stays active. A dropped trunk registration means inbound calls stop working silently. Configure alerts in the Asterisk Logfiles module or use an external monitoring tool.
When to Consider Moving to a Managed Hosted PBX
FreePBX makes sense when you have in-house IT capability and want control over your telephony stack. It stops making sense when:
- The person who set it up leaves the business and nobody else understands it.
- A security patch or module update breaks call routing and nobody can diagnose it.
- Your SIP trunk drops registration and customer calls are silently failing.
- You want to add a mobile softphone for remote staff and it takes two days to configure correctly.
At that point, the hidden cost of self-hosting (staff time, downtime, troubleshooting) exceeds the per-seat cost of a managed hosted PBX. The crossover point varies by business but is typically when the IT overhead reaches 2 to 4 hours per month on average. Track your actual maintenance time in the first 6 months.
Is FreePBX free to use for commercial purposes?
Can I run FreePBX on a cloud VPS in Australia?
Which Australian SIP trunk providers work best with FreePBX?
How do I handle 000 emergency calls on FreePBX?
What is the difference between FreePBX and 3CX?
Related reading:
- 3CX vs FreePBX
- 3CX review for Australian businesses
- Best hosted PBX providers in Australia
- SIP trunk providers in Australia
Not sure whether FreePBX or a managed hosted PBX is right for your business? Tell us your setup and we will give you a straight recommendation.
Get a Recommendation