"The FreePBX Factory"
- Chris Maj [email protected]
- Duncan Patterson [email protected]
- Mallavolu Purna Sai [email protected]
- Pushkar Singh [email protected]
Includes many ideas from earlier first-boot.sh by Sirs Purna & Pushkar
Use this script to generate ISOs that can be used to rapidly install FreePBX onto a system, using a base Debian ISO that gets grafted on to bit-by-bit.
$ bash abuild-fpbx-installer-iso -i debian-12.8.0-amd64-netinst.iso
- an ISO ready to write to a USB stick (required: USB stick size less than appx 120G)
- and (optionally) a PXE boot friendly TAR file for use in cobbler, di-netboot-assistant, etc.
- xorriso ISO image tool + ansible automation platform
$ apt-get install xorriso ansible
- An upstream Debian GNU/Linux ISO such as netinst:
$ wget https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-12.8.0-amd64-netinst.iso
- Or instead of netinst in #2, use a DVD image for (potentially) faster installs with more hardware drivers:
$ apt-get install jigdo-file
$ jigdo-lite https://cdimage.debian.org/debian-cd/current/amd64/jigdo-dvd/debian-12.8.0-amd64-DVD-1.jigdo
- Debian 12 "bookworm" was used to develop, test and run this script; but it might work on others.
- The "initrd.gz" is only required for non-Debian PXE boot servers eg. cobbler on CentOS 7, Fedora 41, Rocky 9, etc.:
$ wget -O bookworm-netboot-initrd.gz https://ftp.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz
- Proper RAID support on UEFI boots only. (Any time there are two non-NVM drives you'll get a RAID setup.)
- Minimum disk size when virtual is appx 30G without further adjustments to script defaults eg. see int_lvm_guided_size
- Minimum disk size when physical via USB install is appx 120G as less than that is treated as a USB stick.
This ISO strives for Fully Automated Installation (FAI) and you will lose all existing data on any system you boot with it.
- use "install" instead of "cp" for things
- remove cruft from /var/tmp/ in the sng-eol script (such as leftover systemd temp directories)
- check if the biosgrub is needed anymore in the partitioning
- reduce number of ors to true - errors should be handled better for each command with a notice in the installer log
- crypto at rest version (safer version + LUKS encrypted hard drive with keys on unique USB drive)
- delete packages from ISO that are not used during initial installation (removed gnome/kde but more needed)
- include packages that the shell script installer downloads (some duplicates but archives.tar is pretty good)
- check if archives is actually any faster...
- port archives to the ansible version (still only the legacy shell script)
- simple-cdd (might be easier than all the xorriso usage)
- the bool_automatic toggle set to false is not very step-by-step yet
- make int_mb_ssd_wear a percentage so it dynamically changes based on disk size
- partition mounting improvements (several TODOs there)
- genericize the disk types (s, v, xv -> one)
- nvm "disks" like the UC25 do not show up in the preseed chooser but later on
- consider moving FreePBX apt key to external file as an optional include
- perhaps a proper jigdo of the utilized deb packages instead of archive.tar method
- use preseed_fetch instead of tftp (probably needed for cloud if it will be http instead of tftp)
- consider console=hvc0 in the cloud
- 3rd partition that gets blkdiscard'ed may need to be at end of disk to reclaim space
- GRUB serial no go on reboot (needs Debian template modifation in /etc/grub/ ...)
- consider copyright notice at bottom of GRUB wallpaper like SNG7 did
- consider restoring more command-line options from the legacy shell script
- should allow SSH pub keys to be copied in to ISO then installed on target system for sangoma user