🚀 Installing FusionPBX — A No-Nonsense Guide from Someone Who’s Been There

So you wanna run your own VoIP system with FusionPBX? Solid choice. It’s a super powerful GUI for FreeSWITCH that honestly makes life a lot easier — once it’s up and running, that is 😅.

I’ve installed this thing more times than I can count (sometimes on live servers, yeah I know, not ideal). Here’s a real-world, no-BS guide that’ll get you from zero to dial tone on a fresh Debian box. Let’s go.


🧰 What You’ll Need (Don’t Skip This!)

Before you dive in, make sure you’ve got:

  • A fresh Debian 12 (trust me, Debian plays nicer)
  • Root access or sudo privileges
  • A static IP — floating IPs from cloud providers sometimes freak out SIP
  • Basic Linux terminal skills (nothing wild, just enough to not nuke your system)

⚙️ Step 1: Update Your System

Start clean. Run:

sudo apt update && apt upgrade

Also grab the basics:

apt install -y git lsb-release wget

📝 One time I skipped this and got weird errors about lsb_release missing. Took 20 mins of head-scratching. Don’t be like me.


📦 Step 2: Grab the FusionPBX Install Script

Let’s clone the official script. It’ll do most of the heavy lifting for you:

wget -O - https://raw.githubusercontent.com/fusionpbx/fusionpbx-install.sh/master/debian/pre-install.sh | sh;
cd /usr/src/fusionpbx-install.sh/debian

🧨 Step 3: Run the Install Script (This Part’s Magic… or Chaos)

Okay, now kick off the installer:

./install.sh

This will:

  • Install FreeSWITCH (the brains behind it all)
  • Set up PostgreSQL (your DB backend)
  • Install PHP, NGINX, fail2ban, etc.
  • Deploy FusionPBX itself

🎯 Heads up: If the install fails halfway through, just… don’t panic. I’ve had it hang on FreeSWITCH compilation once. Reboot. Rerun.


🌐 Step 4: Access the Web Interface

Once it’s done (grab coffee, takes ~10-20 mins), go to:

http://your-server-ip

Log in:

  • Username: admin
  • Password: whatever password auto generated during install

And boom — you’re in 🎉


🔐 Step 5: Lock It Down (Security Stuff You Really Shouldn’t Skip)

This ain’t a toy — it’s a VoIP server. Wide open ports = bots will hammer it.

  1. Set up the firewall:
ufw allow http

ufw allow https

ufw allow 5060,5061,5080,5081/udp

ufw enable
  1. Secure with SSL (this part tripped me up once when certbot couldn’t auto-detect NGINX — just force it):
apt install certbot python3-certbot-nginx
certbot --nginx

🧙‍♂️ Post-Install Tips (Trust Me, These Help)

  • Add your domain(s): System > Domains
  • Create some extensions: Accounts > Extensions
  • Outbound routes & trunks — get your call flow sorted
  • IVRs, voicemail, call queues — it’s all there, but kinda hidden under layers

⚠️ Tip: FusionPBX auto-create voicemail for extensions.


😵‍💫 Gotchas (Because You Will Hit Some)

NGINX won’t start? You probs have Apache running. Kill it:

systemctl stop apache2 && systemctl disable apache2

FreeSWITCH won’t start? Oh man. This one took me hours once. Turns out it didn’t like the hostname. Run this:

hostnamectl set-hostname pbx.yourdomain.com
reboot
  • No audio or one-way audio? Check your external IP in SIP profiles and make sure ports are open. STUN servers help too.
  • Logs? Honestly, FreeSWITCH’s logging can be a bit of a nightmare at first. Everything’s in /var/log/freeswitch/freeswitch.log, but good luck making sense of it 😅

🎯 Final Thoughts

Look, FusionPBX is powerful, but it’s not always smooth sailing. The install script helps a ton, but you’ll still probably hit a wall or two — and that’s okay. Keep notes, be patient, and use the FusionPBX forum when you’re stuck.

Would I use it in production? Yup. Have done. But not without backups and a solid restore plan.


Need help? I do custom FusionPBX installs, trunk setup, and SIP debugging. Happy to save you a headache. Just ask.