These instructions work fine on a raspberry pi b...


Manual installations of FreePBX is considered an EXPERTS ONLY exercise. This method of installation is enough to get CORE functionality of FreePBX. Non-commercial modules may not function as expected or detailed in the Wiki's. Certain modules and features may require additional software to be installed and configured on the server.



Initial System Setup

When installing the machine, at package selection make sure you pick - at least - 'web server' and 'SSH server'. You can also turn off 'Debian desktop environment'.

Log in as, or switch to, the Root User

Please  note: THIS IS IMPORTANT!  You must run the entire process as root. Attempting to use 'sudo' later on will not work. Please don't ignore this. You must run this entire installer as the root user. If will be helpful to enable ssh logins as root. To do so, you need to change the line 'PermitRootLogin without-password' to 'PermitRootLogin yes' in /etc/ssh/sshd_config.  You can do this with the following commands.

sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config
service sshd restart

Update Your System

apt-get update && apt-get upgrade -y 

Install Required Dependencies

apt-get install -y build-essential linux-headers-`uname -r` openssh-server apache2 mysql-server\
  mysql-client MongoDB bison flex php5 php5-curl php5-cli php5-mysql php-pear php5-gd curl sox\
  libncurses5-dev libssl-dev libmysqlclient-dev mpg123 libxml2-dev libnewt-dev sqlite3\
  libsqlite3-dev pkg-config automake libtool autoconf git unixodbc-dev uuid uuid-dev\
  libasound2-dev libogg-dev libvorbis-dev libicu-dev libcurl4-openssl-dev libical-dev libneon27-dev libsrtp0-dev\
  libspandsp-dev sudo libmyodbc subversion libtool-bin python-dev

As part of this install, you will be asked several times for a mysql password. You can leave this blank (just push enter) as the instructions further down will generate a secure password. If you set a password now, you will cause problems further down. Please do not set a mysql password unless you are confident in your abilities to secure a SQL server.

Install nodejs

curl -sL | sudo -E bash -
sudo apt-get install -y nodejs

Reboot server


Install Prerequisites

After you machine has rebooted, you are now sure you're running the latest Linux kernel. (At the time of writing this document, the Kernel supplied was 3.16.)

Install Legacy pear requirements

pear install Console_Getopt

Install Dependencies for Google Voice (if required)

You may skip this section if you do not require Google Voice support.

Install iksemel

cd /usr/src
git clone
cd iksemel
make install

Install and Configure Asterisk

Download Asterisk source files.

cd /usr/src
wget -O jansson.tar.gz

Compile and install DAHDI.

If you don't have any physical PSTN hardware attached to this machine, you don't need to install DAHDI.(For example, a T1 or E1 card, or a USB device). Most smaller setups will not have DAHDI hardware, and this step can be safely skipped.

cd /usr/src
tar xvfz dahdi-linux-complete-current.tar.gz
rm -f dahdi-linux-complete-current.tar.gz
cd dahdi-linux-complete-*
make all
make install
make config
cd /usr/src
tar xvfz libpri-current.tar.gz
rm -f libpri-current.tar.gz
cd libpri-*
make install

Compile and Install jansson

cd /usr/src
tar vxfz jansson.tar.gz
rm -f jansson.tar.gz
cd jansson-*
autoreconf -i
make install

Compile and install Asterisk

cd /usr/src
tar xvfz asterisk-13-current.tar.gz
rm -f asterisk-13-current.tar.gz
cd asterisk-*
contrib/scripts/install_prereq install
./configure --with-pjproject-bundled
make menuselect

You will be prompted at the point to pick which modules to build. Most of them will already be enabled, but if you want to have MP3 support (eg, for Music on Hold), you need to manually turn on 'format_mp3' on the first page.

After selecting 'Save & Exit' you can then continue

make install
make config
update-rc.d -f asterisk remove

Install and Configure FreePBX

Create the Asterisk user and set base file permissions.

useradd -m asterisk
chown asterisk. /var/run/asterisk
chown -R asterisk. /etc/asterisk
chown -R asterisk. /var/{lib,log,spool}/asterisk
chown -R asterisk. /usr/lib/asterisk
rm -rf /var/www/html

A few small modifications to Apache.

sed -i 's/\(^upload_max_filesize = \).*/\120M/' /etc/php5/apache2/php.ini
cp /etc/apache2/apache2.conf /etc/apache2/apache2.conf_orig
sed -i 's/^\(User\|Group\).*/\1 asterisk/' /etc/apache2/apache2.conf
sed -i 's/AllowOverride None/AllowOverride All/' /etc/apache2/apache2.conf
service apache2 restart

Configure ODBC

Edit /etc/odbcinst.ini and add the following. Note that this command assumes you are installing to a new machine, and that the file is empty. If this is not a freshly installed machine, please manually verify the contents of the file, rather than just copying and pasting the lines below. The 'EOF' does no go in the file, it simply signals to the 'cat' command that you have finished pasting.

cat >> /etc/odbcinst.ini << EOF
Description = ODBC for MySQL
Driver = /usr/lib/x86_64-linux-gnu/odbc/
Setup = /usr/lib/x86_64-linux-gnu/odbc/
FileUsage = 1

You may need to verify these paths, if you're not on a x86_64 machine. You can use the command `find / -name` to verify the location

Edit or create /etc/odbc.ini and add the following section. Note that, again, this command assumes you are installing to a new machine, and the file is empty. Please manually verify the contents of the files if this is not the case.

cat >> /etc/odbc.ini << EOF
Description=MySQL connection to 'asteriskcdrdb' database

 Download and install FreePBX.

cd /usr/src
tar vxfz freepbx-14.0-latest.tgz
rm -f freepbx-14.0-latest.tgz
cd freepbx
touch /etc/asterisk/ari.conf
./start_asterisk start
./install -n

Restart Apache

a2enmod rewrite
service apache2 restart

That's it!

You can now start using FreePBX.  Open up your web browser and connect to the IP address or hostname of your new FreePBX server.  You will see the Admin setup page, which is where you set your  'admin' account password, and configure an email address to receive update notifications. 

There are (at the time of writing) approximately 50 additional modules that can be installed to enhance the usability of your FreePBX machine - you can install these via Module Admin.

We hope you enjoy using FreePBX 14!

Automatic Startup

Please note you need to set up FreePBX to start asterisk (and it's associated services) on bootup. You can view an example systemd startup script here.