FreePBX

From SME Server
Jump to navigation Jump to search


Maintainer

Daniel B.
Firewall Services
mailto:daniel@firewall-services.com


Version

Contrib 10:
Contrib 9:
smeserver-freepbx
The latest version of smeserver-freepbx is available in the SME repository, click on the version number(s) for more information.


Contrib 10:
Contrib 9:
freepbx-src
The latest version of freepbx-src is available in the SME repository, click on the version number(s) for more information.


Description

FreePBX is a full-featured PBX web application. If you’ve looked into Asterisk, you know that it doesn’t come with any "built in" programming. You can’t plug a phone into it and make it work without editing configuration files, writing dialplans, and various messing about.

FreePBX simplifies this by giving you pre-programmed functionality accessible by a user-friendly web interfaces that allows you to have a fully functional PBX pretty much straight away with no programming required. Some of the features that FreePBX supports out of the box are:

  • Unlimited number of Voicemail boxes
  • "Follow Me" functionality
  • Ring Groups with calls confirmation (so if, eg, a cellphone is out of range and diverts to voicemail, all the other phones keep ringing)
  • Unlimited number of Conferences (limited by available CPU power - about 300 simultaneous users in conferences on a P4 3ghz - 600 with a dual core!)
  • Paging and Intercom functionality for man SIP phones that support it.
  • Music on Hold (via MP3s, or streamed off the internet)
  • Call Queues
  • And many other features


Requirements

  • SME Server 7.X
  • You may also want some hardware cards if you don't want your installation to be IP only. I've tested successfully the TDM400P, TDM410P and b410P (misdn) from Digium, but any card supported by DAHDI (should be anything working with zaptel) should work.

Installation

  Warning:
FreePBX will manage all asterisk configuration. If you have already configured asterisk by hands, you should backup everything. Of course, you'll latter be able to customize some parts of the diaplan, but in special files. Also, FreePBX is NOT compatible with SAIL (it's an alternative)



  • Install the rpms
yum --enablerepo=smecontribs install smeserver-freepbx

You may also want to install dahdi drivers (it's the new name for zaptel) if you have an hardware card supported

yum --enablerepo=smecontribs install dahdi-tools dahdi-linux dahdi-linux-kmdl-$(uname -r)


  • Finish the installation

To finish the installation, you should issue the command

signal-event freepbx-update

The first time this event runs, it'll install FreePBX. You'll installation's log in /root/freepbx_install.log

You should now be able to start using FreePBX on https://server.domain.tld/freepbx/admin


Components

FreePBX is composed of 4 main parts: the main FreePBX interface, Recordings, Asterisk-Stats and Flash Operator Panel

FreePBX

This is the main web interface for asterisk configuration. This interface is available at https://server.domain.tld/freepbx/admin, or in the server-manager, under FreePBX menu. You'll need to login as admin (password of your admin's SME account) to access this part. You can grant the access to any user of the system using the userpanel contrib (just grant the user or the group the permission to access freepbx panel)


Recordings

Recordings, is a web based portal for users. You may configure some features of your phone here (followme, call forward, call waiting etc...), check you call history, or download/listen to your voicemail. This interface is available at https://server.domain.tld/recordings. The login here is your phone (extension) number and your voicemail password. There's also a special admin account. The admin account can access all call logs and recordings. The login is admin, the password is randomly generated, you can find it in /opt/freepbx/recordings/includes/main.conf.php


Asterisk Stats

Asterisk-Stats is an interface to query CDR (Call Detail Reports) database. It's available on the main FreePBX interface at https://server/domain.tls/freepbx, on the "Reports" tab


Flash Operator Panel

Flash Operator Panel is a switchboard type application for the Asterisk PBX. It runs on a web browser with the flash plugin. It is able to display information about your PBX activity in real time. The layout is configurable (button sizes and colours, icons, etc). The FOP is available at https://server.domain.tld/panel or in the main interface in the "Panel" tab.

You can grant the access to any user of the system using the userpanel contrib (just grant the user or the group the permission to access fop panel)

DB parameters

Here's the list of DB parameters:

This contrib add 3 entries in the configuration db: freepbx, dahdi and fop. Here's a description of available parameters for each entry

  • freepbx
    • CdrDbName: the name of the database for CDR. The default is asteriskcdrdb. You should let this unless you know what you're doing
    • DbName: the name of the database for FreePBX. The default is freepbxdb. You should let this unless you know what you're doing
    • DbPassword: the password to access FreePBX database. A random value is generated at install time.
    • DbUser: the username to access both databases. Default is freepbxuser
    • DeviceAndUser: (enabled|disabled) You can enable the 'deviceanduser' display view of FreePBX. DeviceAndUser is enabled, Devices and Users will be administered separately, and Users will be able to "login" to (adhoc) devices. If disabled Devices and Users will me administered in a single screen.
    • ManagerPassword: This is the asterisk manager password used by FreePBX (the login is 'admin'). The default one is randomly generated at install time.
    • UDPPorts: Lists of ports used by asterisk. This settings is only useful if you want to open asterisk on the public interface (you can also restrict it with AllowHost parameter)
    • access: (private|public). if you want to open asterisk on the public interface, you can set this to public.
    • status: (enabled|disabled). Should asterisk (with FreePBX provided helper script) should be started automatically.
  • fop
    • status: (enabled|disabled) Should we start the FOP server with FreePBX ?
    • Password: This is the additional password for FOP. There's a first password needed to access FOP (by default, only admin is allowed). This first password is your SME account password. The second password (the one on this db parameter) allow users to use drag/drop on the different items (transfer call, initiate a call, hangup etc...). The default password is a random generated one at install time.
    • TCPPort: This is the TCP port used for the communication between the flash applet and FOP daemon. The default is 4445
    • access: The default is to allow only connections from the local network. You can allow external IP if you configure public here (and if you do so, you should limit this access to a list of IP using the AllowHost key)
  • dahdi
    • status: (enabled|disabled) You should let this to enabled, even if you don't have any hardware card because some functions (like meetme) requires the dahdi_dummy driver to be loaded.

How-to

Migrate from Zaptel to DAHDI

If you used previous version of smeserver-freepbx, and was using some Zaptel supported hardware, you'll want to migrate your configuration to the new driver: DAHDI. Here're the steps:

  • Remove any zaptel module (as they requires the main zaptel package, which conflicts with dahdi)

You can get the list of installed modules with:

rpm -qa 2> /dev/null | grep zaptel-kmdl

Now remove the modules:

yum remove zaptel-kmdl-2.6.9-0.78.EL zaptel-kmdl-2.6.9-0.78.ELsmp
  • Update FreeePBX: it will automatically download dahdi-tools and dahdi-linux
yum --enablerepo=smecontribs update smeserver-freepbx
  • Install the module for your current kernel
yum --enablerepo=smecontribs install dahdi-linux-kmdl-$(uname -r)
  • Edit /etc/dahdi/modules

This files controls which drivers are loaded (the same as /etc/sysconfig/zaptel at the time of zaptel). You can comment any driver you don't need.

  • Start DAHDI drivers

You can load the selected drivers with:

/etc/init.d/dahdi start
  • Auto-detect your available channels and migrate the old config file:
dahdi_genconf
sed -i -e "s/from-pstn/from-zaptel/g" /etc/asterisk/dahdi-channels.conf
cat /etc/asterisk/zapata.conf.rpmsave > /etc/asterisk/chan_dahdi.conf
sed -i -e "s/zapata-auto.conf/dahdi-channels.conf/g" /etc/asterisk/chan_dahdi.conf
Now edit the file /etc/dahdi/system.conf and adapt it to your zone (loadzone and defaultzone)
  • Restart FreePBX service
signal-event freepbx-update
amportal restart

Now, go in FreePBX admin interface, and click on the orange button (apply the configuration).

Configure a hardware card supported by DAHDI

FreePBX require that you configure your hardware card by hands before it can use it. This example is with a TDM400 card from Digium. It should be about the same for other models.

  • Insert the card

The first step is of course to connect physicaly the card on your server

  • Check the server detects it

Now check your server can see the card with lspci

[root@sme ~]# lscpi

With the TDM400, you should see something like:

00:0d.0 Communication controller: Tiger Jet Network Inc. Tiger3XX Modem/ISDN interface
  • Remove useless drivers

Edit the file /etc/dahdi/modules and comment all the driver you don't need (the file is well commented). For example, with the TDM400P card, the only driver needed is the wctdm

  • Restart DAHDI

run the following command to unload all the drivers, and load only the one(s) you need

/etc/init.d/dahdi restart
  • Generate a basic configuration file

dahdi-tools include dahdi_genconf, a utility which can autodetect the available channels of your card, and create a basic configuration file

dahdi_genconf

Now, you need to adapt it so it can be used with FreePBX:

sed -i -e "s/from-pstn/from-zaptel/g" /etc/asterisk/dahdi-channels.conf

And edit /etc/dahdi/system.conf to adapt to your zone, for example:

# Global data

loadzone        = fr
defaultzone     = fr
  • Adapt the main dahdi configuration

Now edit to your need the file /etc/asterisk/chan_dahdi.conf, you should include the file /etc/asterisk/dahdi-channels.conf. For example, here's my configuration:

;
; Zapata telephony interface
;
; Configuration file 

[trunkgroups]

[channels]

language=fr
context=from-zaptel
signalling=fxs_ks
rxwink=300              ; Atlas seems to use long (250ms) winks
;
; Whether or not to do distinctive ring detection on FXO lines
;
;usedistinctiveringdetection=yes
busydetect=yes
busycount=6
hanguponpolarityswitch=yes
usecallerid=yes
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=no
echotraining=800
rxgain=6.0
txgain=6.0
group=0
callgroup=1
pickupgroup=1
immediate=no 

;faxdetect=both
faxdetect=incoming
;faxdetect=outgoing
;faxdetect=no

;Include genzaptelconf configs
#include dahdi-channels.conf

group=1

;Include AMP configs
#include chan_dahdi_additional.conf
  • Create your trunk and extensions in FreePBX

Now you can go on the admin interface of FreePBX and create your extension and trunks. To know which channel number is an FXO or an FXS, edit the file /etc/asterisk/dahdi-channels.conf. The section with context=from-internal are for extensions, the ones with context=from-zaptel are for trunks.

Uninstall

yum remove smeserver-freepbx freepbx-src

If you want to cleanup everything (MySQL databases, DB, etc...), you can use this script:


#!/bin/bash

clear
echo "----------------------------"
echo "!!!!!     WARNING     !!!!!"
echo "----------------------------"
echo ""
echo "This script will remove from your server:"
echo "     - freepbx and asterisk cdr MySQL databases"
echo "     - freepbx MySQL User"
echo "     - freepbx DB entries (freepbx, httpd-fpbx and dahdi)"
echo "     - /opt/freepbx"
echo ""
echo -n "Are you sure you want to remove FreePBX permanently ? (y/n) [n] "
read confirm
if [ "$confirm" = "y" -o "$confirm" = "Y" ]; then
       echo "Droping MySQL databases..."
       DBNAME=$(/sbin/e-smith/db configuration getprop freepbx DbName)
       CDRDBNAME=$(/sbin/e-smith/db configuration getprop freepbx CdrDbName)
       mysql -e "DROP DATABASE $DBNAME"
       mysql -e "DROP DATABASE $CDRDBNAME"
       echo "Deleting MySQL User..."
       DBUSER=$(/sbin/e-smith/db configuration getprop freepbx DbUser)
       mysql -u root -e "REVOKE ALL PRIVILEGES ON *.* FROM '$DBUSER'@'localhost';"
       mysql -u root -e "DROP USER '$DBUSER'@'localhost';" > /dev/null 2>&1
       echo "Removing SME DB entries..."
       /sbin/e-smith/db configuration delete freepbx
       /sbin/e-smith/db configuration delete httpd-fpbx
       /sbin/e-smith/db configuration delete dahdi
       echo "Removing /opt/freepbx ..."
       rm -rf /opt/freepbx
       echo "Done!"
fi 



Bugs

Please raise bugs under the SME-Contribs section in bugzilla and select the smeserver-freepbx component or use this link