Forum archive
pbx with turnkey development , notes
I have been working on getting a pbx deployed with turnkey, using turnkey-lxc as a baremetal host.
I thought I would share some fails and successes here for anyone interested, or anyone who would like to take this to another level of development.
I am very unfamiliar with git, aws, and virtual stacks as a whole, and would not consider myself as proficient enough to deploy a truly secure environment for any large enterprise systems. My interest atm is to develop a very lightweight efficient office machine for SOHO environments to provide myself, and hopefully some future clients. I am a network tech with CompTIA A+, Network+, and hopefully by summer Security+ certifications. I deal with a lot of phone systems, cctv, and small commercial networks.
Proxmox, sounds interesting for a development platform, and would maybe be best suited as the bare metal host for future deployments and I will look into it at some point, but at present, it sounds more like a pharmacutical drug, than a IT platform, and I know nil about it, so I'm going to stick with Turnkey_LXC as my host, and perhaps migrate towards PM in the future.
My test environment is a small computer I picked up for free, which has minimal resources :
250 gb harddrive, 8gb ram, 64bit amd dual core processor, and 2 nics one being gigabit speed, and the other fast ethernet. I haven't really found a need for 2 nics, so I use the Gigabit port.
My host is Turnkey-LXC appliance, as I was impressed by it's easy use and quick deployment of other TK appliances. So far my only real issues have been with the appliance features, odoo, for example is very complex, and takes quite a bit of knowledge to navigate and use.
Back to the PBX.
First attempt was partially successful, but not very stable, I use FREEPBX as I am familiar with it , and can navigate and deploy without too much chaos, I consider it to be the standard for Asterisk front ends, and have the utmost confidence in it's security features.
I had already deployed WP , Zoneminder, and Odoo as guest LXCs on the TKLXC host, and all were functioning as expected. Because there is no TK-PBX I decided to install from source on TKL CORE as a guest . It appearred to go well and I was happy for a time, then some anomolies arose:
1. Because Freepbx is built on top of RedHat, the available commercial modules are not available, this limits the functionality and also prevents use of many modules, including the responsive firewall, which I like to use.
2. Although calls were successful 100% of the time, media was not. Sporadic failures with no error messages caused no sound from either side about 50% of the time. This renders a phone system useless. I suspect that this had something to do with passing the media from the host to the guest, and concluded that a PBX needed to reside either at the host level or in a VM as opposed to an LXC.
My second trial was finding a Debian based PBX which I was able to find, and which may be useable at some point, called Fusion PBX. it is a very nice system, built on Switch, not Asterisk. I used the install script from within the LXC host as opposed to building a separate APP, and it installed fine and I was able to access the GUI web interface, on the same ipaddr as the host. However the unfamiliarity of the software made configuring, and deployment appear more daunting than I was ready to tackle, so I've put this on the back burner, thinking that it may work well as a guest on core, with more stability than a RedHat variant. It had quite a few advantages for station provisioning which arent available in Freepbx, but lacked other features like Hospitality and CRM which are available in FreePBX. Never the less this may be a good candidate for an Turnkey-LXC Appliance.
I experimented with TKL Dev, but again, I have much to learn about this before I attempt an appliance of that sophistication level.
So My third endeavor was a KVM install of the FreePBX distro with virt-install.
I made sure everything was ready for a VM by using the guidance at
https://www.cyberciti.biz/faq/install-kvm-server-debian-linux-9-headless...
down to the part where the Centos was going to be deployed.
After some trial and error, I downloaded the distro for freepbx and placed it in a local directory and also install virt-viewer, which maybe wasn't needed, but I was having difficulty with the console. I think it was a syntax in the script to install, but what ended up working was this:
virt-install \
--name freepbx \
--ram 2048 \
--disk path=/var/lib/libvirt/images/freepbx.qcow2,size=20,bus=virtio,format=qcow2 \
--vcpus 2 \
--os-type linux \
--os-variant generic \
--network bridge=br0 \
--graphics none \
--console pty,target_type=serial \
--location /var/lib/libvirt/boot/SNG7-FPBX-64bit-1805-2.iso \
--extra-args 'console=ttyS0,115200n8 serial'
On install, I had to re-set many of the settings, and I'm not sure if the above settings, ever made it through, but ended up with a working FreePBX VM. I then ran:
virsh autostart freepbx
to ensure it loaded on reboots of the host.
The firewall built in requires no other firewalls be used, so I set the ipaddr as a DMZ on my internet router, and allowed all traffic to pass through to the ipaddr on the host firewall.
I'm sure this will keep fail2ban very busy, so I'm gonna watch those logs very carefully for a while.
The calls are going through and the sound is working 100% as expected, so I'm happy with this and will report any issues here.
Great post. Thanks for sharing your experience and the info your discovered. That's awesome.
FWIW I find Proxmox a breeze to use. Although in fairness, I've been using it for years, so it may not be as intuitive as I tend to think it is... IMO the beauty is that is provides both LXC containers and "proper" VMs via (QEMU/KVM) along with a really powerful and (IMO) easy to use web UI.
So it sounds like you have more or less recreated the same environment within your LXC appliance (by installing support for "proper" VMs via libvirt). AFAIK, libvirt can also be used with LXC, although I'm not sure how it would interact with our default LXC setup.
As a general rule, I prefer CLI tools, however because I started using Proxmox before I ever got really comfortable at the commandline, I've never really used LXC or QEMU/KVM to any significant degree from the commandline. It is worth noting though that Proxmox has it's own set of commandline tools, and isn't compatible with libvirt.
Re the specifics of you experience, it all sounds pretty cool although I'm sure was perhaps a disappointment that you couldn't get it running smoothly and reliably on TurnKey Core.
As for using TKLDev, I would not recommend that you start looking at that in too much detail, until you can get your desired functionality working reliably on TurnKey Core. So long as you take good notes along the way of how you created the work TurnKey Core based new appliance, converting it to TKLDev build code is essentially pretty easy. Obviously there is devil in the detail and sometimes something that is a breeze to do interactively, can be a bit tricky to do non-interactively. But we've developed plenty of tricks to tackle that. So when the time comes, I'm more than happy to assist with pointers and feedback.
So great work and good luck with your future adventures! :)