Previously I introduced you to what the object of this series is about. Now, we'll get diving in. This will be done with Ubuntu 12.04 LTS (I'll go into a simple reason why soon). This could potentially work with a different version (or distro), but there are no guarantees. Usually I'll do everything by hand. I have learned with FreeSWITCH (the PBX system) and FusionPBX (web panel) though that if you can find an easier way to install it. DO IT! This is why we're using Ubuntu 12.04 LTS. There's an install script created by the people at FusionPBX to simplify and ease the installation tremendously. So, we'll do that instead. I've done this on a 32-bit machine. Even though it shouldn't matter, I don't run 64-bit servers (since memory is < 4GB I see no point), and thus can't confirm or deny its success. Step 1: Download the Installer Script Since I'm using a VPS I'm forced to log in as root, but most of these commands will need to be done by root user anyways. Downloading the script is the easiest part of this all: Code: root@eric:/opt# wget -O /usr/local/bin/install_fusionpbx.sh http://fusionpbx.googlecode.com/svn/branches/dev/scripts/install/ubunt/install_fusionpbx.sh Step 2: Make the Script Executable Simple chmod line: Code: chmod 755 /usr/local/bin/install_fusionpbx.sh Step 3: Install Now the real fun. The install script offers a few options, such as installing only FreeSWITCH, FusionPBX, or both. We'll be doing both, but so you know what you're doing we'll be installing it in interactive mode as well. So run the install script: Code: install_fusionpbx.sh install-both user Step 4: Intro Install When you first run it it'll prompt you with some debug information (i.e.: hash checking), press enter to install the required packages for FreeSWITCH. Once the packages are installed hit enter again to continue. Step 5: FreeSWITCH Database Choice You'll get a prompt like this: Code: Would you like to install PostgreSQL or stay with Sqlite (p/S)? While I'm a huge fan of PostgreSQL, for a small project like this we'll stick with Sqlite, so hit enter. Now FreeSWITCH's code will be downloaded. Press enter if there were no errors (shouldn't be). Press enter again to begin bootstrapping (not familiar with what this is but hey, its needed anyways). This process can take a bit of time so grab a cup of coffee, tea, whatever you like to drink and enjoy the scrolling text. Got no errors? Hit enter again! Step 6: Plugins List The next portion will list all of the plugins that will be compiled with FreeSWITCH. While most won't have any purpose for our project, we'll leave it be for now and strip it down later once we get things settled. So hit enter. This will be another long session for compiling FreeSWITCH, so drink more coffee. No errors? Good, hit enter again. Step 7: Compiling FreeSWITCH Part 2 Yeah this is another long process. Hope you made lots of coffee! Hit enter again when the compiling is done, FreeSWITCH will then be installed. Again hit enter afterwards. Next will be installing the hold music audio bytes (i.e.: the classical music you hear when on hold). Hit enter again after. Step 8: Setting Up System Accounts Simple set up of freeswitch user account, hit enter. Hit enter again to enable plugins. Step 9: System Hardening Next is installing logrotate and fail2ban to help lock down the system a bit. Step 10: Apache or Nginx I prefer Nginx as it seems to work out better for me on low-end machines, but if you prefer Apache do it there. Hit enter and FusionPBX will now be installed. Step 11: FusionPBX Install Since FusionPBX is a PHP-based website, we just hit enter once the files are copied over. Step 12: Configure FusionPBX You'll get prompted with this again: Code: Would you like to install PostgreSQL or stay with Sqlite (p/S)? We'll use SQLite again. Next you'll be prompted to go to your IP address to access FusionPBX and continue upgrading. Enter a username and password then click next, then for the database path enter /usr/local/freeswitch/db to get the configuration done. Once you reach this point, FusionPBX is installed and next we'll get to configuring it for Google Voice!