I would air some caution running a PBX on a pi since you might get a bit of jitter running it on one. although you mentioned you had it already running on a PI so I presume you had no issues. I also ran into jitter issues running FreePBX on a VM a few years ago too. Only had 5 phones and 2 SIP trunks on it too and the performance was terrible.
I would always advise running a PBX on a dedicated piece of hardware with a decent number of CPU cores for codec processing.
You’ll probably get away with using GSM codecs since they are small, but use any of the uLAW or aLAW codecs at 64Kb and your asking for trouble on a PI or VM, in my honest opinion.
Tom’s right with FreePBX. I’ve used it for over 10 years with Cisco phones running the SIP OS on them and it works great. I have my PBX running on an IBM x3250 server with a single CPU and 8GB of memory, so the hardware doesn;t have to be top notch to run it.
The new PI’s might be ok to run it on, but my experience with the Pi 3b led to me realize it’s probably not man enough to run a PBX. I’m also not sure how easy it would be to install FreePBX on a PI and possibly the VM route might be the easiest option to give it a try and explore it’s potential.
If you run into any issues with setting it up then I should be able to guide you through it as i’ve set a few up myself. The trickiest bit is getting the SIP trunks to work properly through the firewall with NAT. That’s always been where i’ve had the most issues, but as far as setting up the extensions, it’s a piece of cake since the Web GUI on FreePBX makes things very easy and it’s fairly configurable too.