πŸ“žInstalling FreePBX via ISO β€” The Easy Way Nobody Tells You About

So you want your own phone system and you don’t want to spend a weekend compiling Asterisk from source and arguing with PHP dependencies. Totally valid. The FreePBX ISO is exactly what you need.

I’ve set this up on everything from proper rack servers to a dusty old desktop under someone’s desk. The ISO method is hands-down the fastest, cleanest way to get FreePBX running β€” it bundles the OS, Asterisk, and FreePBX all in one shot. No dependency hell, no manual configs, no mystery errors at 2am.

Here’s how it goes.

πŸ“‹ What You’ll Need (Don’t Skip This)

  • A physical server or VM with at least 2GB RAM (4GB+ if you’re doing this for real)
  • 20GB+ of free disk β€” the installer will wipe the whole drive, heads up
  • A USB drive (8GB+) to boot from
  • Rufus, Etcher, or dd β€” whatever you use to flash ISOs
  • Internet connection on the server during install
  • About 20-30 minutes and a coffee
⚠️ Heads up: The ISO installer will format your entire disk. Don’t install this on a machine with data you care about unless you know what you’re doing with partitioning.

πŸ“₯ Step 1: Grab the ISO

Head over to the official FreePBX downloads page:

https://www.freepbx.org/downloads

Download the latest FreePBX Distro ISO. At time of writing it’s something like SNG7-PBX17-64bit-2502.iso. Big file, around 1.5GB, so maybe don’t do this on hotel WiFi.

Don’t go grabbing random mirrors. Get it straight from freepbx.org and verify the SHA256 if you’re security-minded (you should be).

πŸ’Ύ Step 2: Flash It to a USB

Burn the ISO to your USB. Pick your weapon:

  • Windows: Rufus β€” free, simple, just works
  • Mac/Linux: Balena Etcher β€” drag, drop, flash, done
  • Linux terminal people:

sudo dd if=SNG7-PBX17-64bit-2502.iso of=/dev/sdX bs=4M status=progress

πŸ’‘ Tip: Double-check your /dev/sdX target before running dd. Writing to the wrong disk is a really bad day.

πŸš€ Step 3: Boot from USB and Start the Installer

Plug the USB in, boot the server, and hit whatever key gets you into the boot menu β€” usually F11, F12, or Del depending on your board.

You’ll land on the FreePBX installer menu. Select:

FreePBX 17 Installation (Asterisk 21) — Recommended

Running this in a VM? Just mount the ISO directly in VMware, Proxmox, or VirtualBox β€” no USB needed. Easy.

βš™οΈ Step 4: Let the Installer Do Its Thing

Sit back. Watch a progress bar. This part takes 15-25 minutes. The installer will:

  1. Partition and format the disk automatically
  2. Install Rocky Linux 8 as the base OS
  3. Pull down and install Asterisk
  4. Deploy FreePBX and all the core modules
  5. Configure Apache, MariaDB, and everything else
  6. Reboot the server when it’s done

I’ve had it hang once or twice on slow spinning disks. If it freezes for more than 10 minutes with zero disk activity, hard reboot and try again. Usually sorts itself out.

⚠️ Don’t touch it: Seriously, let it run. Don’t SSH in mid-install, don’t reboot early. I learned this the hard way with a half-installed MariaDB that took an hour to clean up.

πŸ”“ Step 5: First Login

Once the server reboots, the console will show its IP address. Open a browser on any machine on the same network and go to:

http://<your-server-ip>/admin

First time you hit that URL, FreePBX walks you through creating an admin account. Do it, save the password somewhere real (not a sticky note), and you’re in.

You’ll see the dashboard with a big orange ‘Apply Config’ bar at the top. Click it. That writes your initial config to Asterisk and gets the system actually running. And boom β€” you’re in.

πŸ”§ Step 6: Basic Setup You Should Do Immediately

Don’t start connecting phones to a fresh unconfigured system. Do these first:

πŸ•’ Set your timezone

Admin > System Admin > Time Zone. Get this wrong and your CDRs and voicemail timestamps will be complete nonsense.

πŸ“ž Configure your SIP trunk

Connectivity > Trunks. Add your VoIP provider credentials. No trunk = no calls in or out, obviously.

πŸ“± Create some extensions

Applications > Extensions. Add PJSIP extensions for your phones or softphones. FreePBX defaults to PJSIP now β€” don’t fight it, it’s better.

πŸ“ Set up inbound routes

Connectivity > Inbound Routes. Tell FreePBX what to do when a call hits your DID β€” ring an extension, hit an IVR, go to a queue, whatever you need.

πŸ’₯ Gotchas (Because You Will Hit Some)

🚫 Can’t reach the web interface?

Check that Apache is running and your firewall isn’t blocking port 80. The ISO sets up firewalld by default β€” run this to check:

firewall-cmd –list-all

πŸ”Š One-way audio or no audio on calls?

Classic NAT issue. Go to Admin > SIP Settings (PJSIP) and set your External Address and Local Network. Make sure UDP ports 10000-20000 are open on your router too. This trips up almost everyone the first time.

πŸ“΅ SIP registration failing?

Check your trunk credentials twice. Then check them again. Also make sure port 5060 UDP is open. If your provider uses TLS, you want 5061 TCP instead.

πŸ€– Phones getting hammered by SIP scanners?

This will happen if your server is internet-facing. FreePBX ships with fail2ban β€” make sure it’s enabled under Admin > System Admin > Intrusion Detection. Also consider not exposing port 5060 publicly at all and using a VPN for remote phones.

πŸ’¬ Final Thoughts

The ISO method is genuinely the way to go if you’re not doing something exotic. It just works, the system is preconfigured sensibly, and you’re not spending half a day fighting library versions.

Is it perfect? Nah. The base OS is Rocky Linux which some people love and some people don’t. And FreePBX’s module system can be a bit of a rabbit hole once you start adding features. But for getting from zero to a working phone system in under an hour? Hard to beat.

Would I run this in production? Already do. Just make sure you’ve got backups sorted β€” Admin > Admin > Backup & Restore β€” before you point real phone numbers at it.
Got stuck somewhere? Drop a comment below or reach out β€” happy to save you a headache.