Minimal FreePBX 17 Install

Hi,

While testing the FreePBX 17 Installation Script I’ve found that it installs a lot of stuff that I doubt I’ll require for my system (that will only use FreePBX open-source modules).

Before I try to customize this script to fit my needs, I would like to know if someone can answer to my doubts about some software packages that are installed by default:

  • Which FreePBX modules and/or functionalities require MongoDB?
  • Which FreePBX modules and/or functionalities require Redis?
  • Is ionCube only required by FreePBX Commercial modules?
  • Is the npm package required in a running system, i.e., is it safe to remove it after FreePBX installation?
  • Is there any reason to not use the PHP 8.2 packages shipped in Debian 12? The script is installing packages from packages.sury.org.

Best regards,
José Gonçalves

I think this may be a rellic as I don’t believe anything currently does. I think it was used with the xmpp stuff or zulu neither of which are in 17.

Framework uses redis for caching but I believe it is conditional and will work without it. I am not aware of anything open source that uses redis. I would probably keep it but again cache has a falback.

Yes but note the commercial module “sysadmin” is required for the oss module firewall

It will be required for many module updates. Technically if you never update you probably won’t need it. I don’t see any harm in the presence.

The latest debian ships with 8.3. Ioncube recently released support for 8.3 so it would probably work fine as long as the official maintainers are also maintaining the required php sub packages. Sury is used because a downgrade of php was required for php 8.2 on the latest debian.

Uninstalling all commercial modules

fwconsole ma list | grep Commercial | awk '{print $2}'  | xargs -I {} fwconsole ma -f uninstall {}
fwconsole ma list | grep Commercial | awk '{print $2}'  | xargs -I {} fwconsole ma remove {}

Hi James.

Thank you very much for your reply, it was very helpfull!

I prefer in my setups to use packages from Debian, unless I need a more recent version. If Debian 12 has PHP 8.2 packages (which are also maintained by Sury) I will stick with the Debian repo for PHP, because that guarantees me to have security updates released by Debian LTS team during the release maintenance period.

An extra doubt. The script is also installing an AAC codec (libfdk-aac2). Anyone knows what is this for? AFAIK Asterisk does not support this codec.

In the wiki there is a guide for a manual installation, which might be suitable for your needs: https://sangomakb.atlassian.net/wiki/spaces/FP/pages/10682545/How+to+Install+FreePBX+17+on+Debian+12+with+Asterisk+21

I would also appreciate if there would be a --minimal flag for the installation script, that only performs a minimal installation. But the wiki instructions do work for what I need.

Hi @raphael. In the meantime I’ve contributed some improvements to the script to slim that installation (MongoDB is gone, PHP is now installed from Debian repo, and there is a --noaac option that do not installs libfdk-aac2 and get’s ffmpeg also from the Debian repo).

Additionally FreePBX maintainers added a --opensourceonly option that removes commercial modules from the installation. It’s not a minimal install, but it’s better now that when I initialy posted these doubts.

I’ve also submitted a pull request that further slims the installation by not installing development packages (Optimize dependencies by JoseGoncalves · Pull Request #94 · FreePBX/sng_freepbx_debian_install · GitHub]), which was not yet merged (but which I’m using in my installations).

3 Likes

This should remove all the commercial modules except sysadmin.

fwconsole ma remove cdrpro sangomaconnect sangomartapi adv_recovery pms restapps pbxmfa areminder broadcast callaccounting callerid calllimit conferencespro cos endpoint extensionroutes faxpro pagingpro parkpro pinsetspro vmnotify voicemail_report voipinnovations webcallback queuestats qxact_reports recording_report sangomacrm smsplus sipstation sms vqplus

The script is calling this function to do it:

remove_commercial_modules() {
  comm_modules=$(fwconsole ma list | grep Commercial | awk '{print $2}')
  echo "$comm_modules" | xargs -I {} fwconsole ma -f uninstall {} >> "$log"
  echo "$comm_modules" | xargs -I {} fwconsole ma remove {} >> "$log"
  # Remove firewall module also because it depends on commercial sysadmin module
  fwconsole ma uninstall firewall >> "$log"
  fwconsole ma remove firewall >> "$log"
}

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.