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.
- Set up the firewall:
ufw allow http
ufw allow https
ufw allow 5060,5061,5080,5081/udp
ufw enable
- 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.