Frequently Asked Questions

I cannot connect to FOP2

When you open up your browser and point to http://your.server/fop2 it attempts to connect for a long time and finally fails with the message 'System is not available rigth now'.

Please check our knowledgbase and interactive troubleshoter

Can I run FOP and FOP2 at the same time?

Yes. But as both applications listen to port 4445 by default you will have to configure the listen port on one of them to something else. We recommend to change FOP 1 listen port to 4444 and let FOP2 use port 4445. You can change FOP 1 listen port by editing op_server.cfg and changing the line that reads:




And then restart FOP 1 for the change to take effect.

How can I upgrade FOP2 to a newer version?

In order to upgrade FOP2 you must have root access to your server command line. From the server command line run the following command:

sudo wget -O - | bash

Your license must be within the yearly period in order to upgrade versions. If your license is older than a year, then you must purchase the annual software maintenance first, apply the annual upgrade code and finally run the above command.

Can I run FOP2 on a plain Asterisk installation?

Yes. The tarball comes ready to work with many popular backends like Issabel, Thirdlane, Elatix, PBX in a Flash, PBXWare, MiRTA, Ombutel, etc, right out of the box, if you use vanilla asterisk or your custom configuration engine, you can still use FOP2 but you will have to either write the configuration for users and buttons by hand or create a set of autoconfiguration scripts You can also use the FOP2 Manager and tweak the functions-custom.php file to suite your needs.

Why is the action toolbar missing when I log in?

In order for the action toolbar to appear, you must login with an extension that is also listed in the main extensions box. If there is no matching button for the extension your are loggin in as, then the toolbar won't be displayed as FOP2 will not be able to figure out the device to use for performing actions. If you are using the free version, you must have to login with an extension that is part of the first 15 buttons displayed on screen.

Is there a way to display only one line per extension?

Yes. You have to edit /var/www/htmlfop2/js/presence.js and set the variable showLines to 1. Take into account that if an extension receives more than one call at a time, you might end up with a busy button with line 1 inactive because the action happens on line 2. It is not recommended to hide line 2. You can also increase the number of lines to any number. That value is global, so it applies to every extension button on display.

How do I change the language?

Since FOP2 version 2.20, you only set the language in /var/www/html/fop2/js/presence.js file, or for individual users by opening the user preference in the FOP2 GUI.

In previous FOP2 versions you have to edit /usr/local/fop2/fop2.cfg and set the language parameter on the server. On the client you need to include the correct .js language file in index.html, and finally set the language for the visual directory in /var/www/html/fop2/config.php. Also you might need to translate or put whatever you want in the /var/www/html/fop2/js/presence.js file.

Does FOP2 show parked calls?

Parking is supported since version 2.10. In most supported backends it will be configured automagically, for vanilla Asterisk instalrs or unsupported backends it is not difficult to make it work, see the README file for instructions on setting it up.

Where are FOP2 initiated recordings stored?

They are stored in the standard asterisk monitor directory: /var/spool/asterisk/monitor. Since FOP version 2.20 it is possible to specify a script to run after a recording is finished, we have included a sample script ( that will sent the recording as a voicemail file. Please read the sample fop2.cfg file for details.

How to replace the FOP link in Elastix/Trixbox to FOP2?

You can do it by means of modifying your apache configuration file. In Centos the file is located in /etc/httpd/conf/httpd.conf. In Debian it is located in /etc/apache2/sites-available/default. For other distros you can check apache wiki. In this file add the following line:

alias /panel/ "/var/www/html/fop2/"

Finally, you will then need to copy the index.html file to index_amp.php:

cp /var/www/html/fop2/index.html /var/www/html/fop2/index_amp.php

After the changes, reload Apache. From then one, all requests to /panel will be redirected to your FOP2 install.

What are the differences between FOP 1 and FOP 2?

Several. In FOP 1 you use drag and drop to perform actions. In FOP 2 you use only clicks, so its easier to control with touchscreens. FOP 1 has limited screen space, so the number of buttons to display depends on the size you choose for the buttons; this method imposes a practical limit of about 140 buttons per screen. In the other hand, FOP 2 does not use flash for the display but regular html, so there is no limit on the number of buttons to display, you will be able to scroll down to show any number of buttons, and with the Filter option it is easy to look for a particular extension if you have dozens of buttons.

FOP 1 uses flash and a custom style configuration for changing the aspect, FOP 2 uses html and css so it is easier to modify the style. FOP 1 supports click 2 dial but you need to code in javascript/php in order to use the feature, while FOP 2 includes a Dial box by default that lets you type any number, sip contact or .tel domain to perform dialing. FOP 1 does not know about users, if you know the security code you can transfer any call to any place, while in FOP 2 there is a user authentication system with fine grained permissions.

This is just a basic list of differences, but you might get the idea. Your best bet is to try it out and experience it yourself.

What permissions are needed in asterisk's manager.conf for the FOP 2 user?

You need at least system,call,command,agent,user,originate in asterisk's manager.conf file for the FOP user. In the latest tribox you might also need the "hud" permission or just use "all"

I cannot install plugins on VitalPBX after an upgrade

VitalPBX has a special directory layout. Plugins are stored in /var/lib/fop2/plugins . You must edit the FOP2 Manager config.php file located in /usr/share/fop2/www/admin and uncomment the $PLUGIN_DIR setting and set it to the correct value:


I have reset FOP1 to run on port 4444 but extensions in FOP1 flash red

Be sure to resetart FOP1 so the config change is applied. (Easiest way is to reboot, harder way is to selectively kill or restart FOP1 and be sure to start FOP2). Verify that FOP1 and FOP2 are running under different ports. Use netstat -an to verify 4444 and 4445 are listening. Also, PIAF installations have tcp port 4445 open so 4444 needs to be open as well. Use webmin to open port 4445.

How do I track DND state?

In order to get DND and CF synchronization between FOP2 and any backend that uses DND and CF astdb entries, some dialplan macros need to be updated. Since version 2.24 there is a script included that will do the hard work for you, all that is needed is run the following command:

/usr/local/fop2/ -w

Can I popup an arbitrary URL when a call comes in?

Yes. When your phone rings you will get a call notification. Via ajax the notification will trigger a request to the server to the script checkdir.php. You can modify that script to insert your own javascript code. At the very top there is a function named custom_popup() that will get 4 parameters: caller id number, caller id name or phonebook name,queue name if any and extension number. You can uncomment the sample function to fire a popup to searching for the contact name. Eg:

function custom_popup($clidnum,$name,$fromqueue,$exten) {
   // Here you can fire your own popups or do whatever you want
   // Uncomment this block to fire a popup to

   header("Content-type: text/javascript");
   echo "'$name')";


When I try to run fop2_server it does not do anything at all.

fop2_server requires the /tmp directory to allow execution. Some systems mount the /tmp directory with the noexec option for security reasons. In that case you need to create a special temp directory for FOP2 and modify the init script to export an environment variable so it uses that directory. So, you can create a temp directory:

mkdir /usr/local/fop2/temp

And then modify the init script by adding the highlighted line:

case "$1" in
        echo -n "Starting Flash Operator Panel 2: "
        export PAR_GLOBAL_TMPDIR=/usr/local/fop2/temp
        daemon $DAEMON $OPTIONS

Since version 2.27 this is not needed anymore as the scripts already include that modification.

Why do I get the error "SQLSATE[HY000]: General error: 8 attempt to write a readonly database" when trying to save settings via FOP2 Manager?

FOP2 settings database is stored by default in the file /usr/local/fop2/fop2settings.db . There are some things to check to ensure that the web server application is able to write on such file:

  • Check file ownership. It should be owned by the same user the web server is running as. Assuming your web server run as user "apache", you can change permissions with the command

chown asterisk /usr/local/fop2/fop2settings.db

  • If you have SELinux enabled, you will need to either disable it or configure it to allow write to that file from a web application, you can use these commands to do so:

To allow httpd to write to the /usr/local/fop2 directory:

chcon -R -t httpd_sys_rw_content_t /usr/local/fop2

To make the changes persistant:

semanage fcontext -a -t httpd_sys_rw_content_t "/usr/local/fop2(/.*)?"

When I try to download voicemail or recordings I get a "no way" message?

If you have SELinux enabled, fop2 php sessions might not work. You will need to disable selinux or enabling some special permissions for it:

setsebool -P telepathy_tcp_connect_generic_network_ports 1
setsebool -P httpd_can_network_connect 1
setsebool -P allow_user_mysql_connect 1
setsebool -P httpd_can_network_connect_db 1

FOP2 segfaults when I try to register my license

In you experience a Segmentation Fault when you run /usr/local/fop2/fop2_server --register , try installing an OpenSSL compatibility library in your distro:

yum install openssl098e

That will probably fix your issue. As an alternative, you can skip using ssl at registration time by passing the --rp parameter, like:

/usr/local/fop2/fop2_server --register --rp=http

I cannot connect to FOP2 while using HTTPS/SSL

When you use SSL to connect to your web server, you must configure the FOP2 server to use the same SSL certificates as your web server in order for the browser to allow secure websockets connections. If not, then the browser will refuse negotiation of secure websockets.

So, you must edit your fop2.cfg file and add the proper certificate files. If you use stock FOP2, you can find your fop2.cfg file in /usr/local/fop2. If you installed it via RPM (Issabel, Ombutel), the file is in /etc/asterisk/fop2.

The settings you want to modify are:

  • ssl_certificate_file
  • ssl_certificate_key_file

If you use Letsencrypt SSL certificates, you might need to set them to something similar to this:


Most usually letsencrypt and certbot utilities will save the certificates on /etc/letsencrypt/live/ so the above settings would be correct (just use the correct domain name instead of If you are not sure, you can search for those files on your drive and be sure to set the accordingly on FOP2.

In order to find out which certificates are in use, if you use a Centos based system and Apache web server, you can run this command:

grep ^SSLCertificate /etc/httpd/conf.d/*

Inspect the output and look for the paramters SSLCertificateFile and SSLCertificateKeyFile, take note on their values and set them on the corresponding entries in fop2.cfg.

AFter the change, restart FOP2 with the command:

service fop2 restart

I try to login and it rejects me every time

If you use the automatic configuration from FOP2 Manager, you can see the list of extensions and passwords that FOP2 will accept by running following command on the server:

For version 2.28 onwards:


If you modified fop2.cfg to use manual configuration, be absolutely sure that you comment the #exec line, if you fail to do so, the automatic config will kick in anyaways and it will override any manual config you do, and check too that you have defined a buttonfile and that the buttonfile exists and contains at least some buttons.

When I try to login after entering my credentials it waits forever and times out

If you use international characters in your configs, be sure to save the button config file as utf-8. That should take care of the problem. You should also open/redirect connections to port TCP/4445.

Can I use international characters as button labels?

Yes, but be sure to save the buttonfile as utf-8. If you fail to do so you might have troubles login in.

I have a multi tenant environment, how does licensing work?

You need only one license per server to unlock the full FOP2 potential. If you use a multi tenant system, the license allows up to 5 tenants (panel contexts). If you need to increase the number of tenants, you can add more by purchasing the appropiate extension pack.

A tenant is a way to compartiment one server into multiple different PBXs. Most configuration backends like Issabel, Trixbox, etc, are single tenant, so you do not have to be concerned about the 5 allowed tenants (as the system uses just 1).

Some of the supported multi tenant backends are: MiRTA PBX, Thridlane and PBXWare