We are going to setup a free phone server !

We can use a simple computer (PC) to setup the server, dual core processor and 2 GB RAM is ok to build the phone server. Hard disk space should be at least 50 GB.

The more higher configuration of your PC will get you the more performance.

We will setup Elastix 4.0.76 version of IP PBX server as open source and free IP PBX.

Elastix, the most popular choice at VOIP telephony server as well as free IP PBX.

From the version 5, Elastix is not free anymore. A subscription key is needed to activate your server.

But, don’t worry !

Elastix old version (up to version 4) was completely free for unlimited extensions/phones. So, I’m going to setup an old version in this tutorial.

Old version of Elastix setup in these days is really tough. Because you can not download Elastix old version software from the official Elastix site (www.elastix.org) and also you might get the system update problem. But, I will guide you to install an old version with system update setup, step by step in this tutorial.


1) To get started, click here to download an Elastix old version ISO image to burn on CD/DVD, and burn it to DVD


2) Insert the Elastix image DVD disk to your cd/dvd drive


3) Start the Server/PC to begin installation

You can also change the Elastix web panel access port from 443 to 56789 (if needed).



After completing the installation, first thing is to adjust repositories.

4) Login to Elastix Web Panel > System > Updates > Repositories

Disable all repositories except the “CentOS-7 – Base” and “CentOS-7 – Updates”.

Save the settings.

5) As the Elastix 4.0.76 version is based on Linux CentOS 7 version, the CentOS 7 is officially unsupported from June 30, 2024.

So, we need to configure the system update server/mirror list, so that we can use Elastix old version for life. To do this, login to your Elastix base (CentOS Linux System) as root by using PuTTy. If you are unfamiliar about basic Linux command please click here to learn the startup command of Linux and PuTTy uses.



Login to PuTTY as root, and run the command:

yum -y install nano wget

Now, for security purposes we should delete the a2billing files.

rm -rf /var/www/html/a2billing*

6) Backup the old repo file and create new one, then open repo file to add base/mirror URL: (Enter the below commands on PuTTy to do this)

cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
cat /dev/null > /etc/yum.repos.d/CentOS-Base.repo
nano /etc/yum.repos.d/CentOS-Base.repo

Now, copy the below script and paste it to the repo file:

# CentOS-Base.repo
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.

name=CentOS-7.9.2009 - Base

#released updates

name=CentOS-7.9.2009 - Updates

#packages used/produced in the build but not released

name=CentOS-7.9.2009 - Extras

#additional packages that extend functionality of existing packages

Save and quit the file.

7) Check all other repositories to remove them.

cd /etc/yum.repos.d/


The result will look like the following:

elastix 4 repo list

So, we will keep only “CentOS-Base.repo” and “CentOS-Vault.repo” repos, and delete all other repos.

rm /etc/yum.repos.d/CentOS-Debuginfo.repo
Press y and Enter

rm /etc/yum.repos.d/CentOS-Sources.repo
Press y and Enter

rm /etc/yum.repos.d/elastix.repo
Press y and Enter

rm /etc/yum.repos.d/commercial-addons.repo
Press y and Enter

rm /etc/yum.repos.d/epel.repo
Press y and Enter

rm /etc/yum.repos.d/epel-testing.repo
Press y and Enter


8) Clean the mirror-list cache

yum -y clean all


9) Update the CentOS system

yum -y update

What is the result ?
Update fail, right ?
No worries! That is ok.

And our Elastix server will not update automatically in future. We will use this free version for life !


10) Now, we will install Call Center extension on Elastix

cd /etc/
wget http://featout.com/download/elastix4-callcenter.noarch.rpm
rpm -Uvh elastix4-callcenter.noarch.rpm

Optional To-Do: Rotate log file to reduce space uses by huge logs

nano /etc/logrotate.conf

ls /etc/logrotate.d
nano /etc/logrotate.d / * each log conf

11) Restart the server


Close the PuTTy SSH client, and wait about 5 minutes to complete the reboot process.

12) PBX > PBX Configuration > Parking Lot

Change the parking lot number from 700 to 9979 and start from 9975

13) PBX > PBX Configuration > Feature Codes

Change the all 3 digit codes to 4 digit codes starting above 9000, remove the Default tick-mark and enter/change each 3 digit code.

14) Additional to do: Run the commands in PuTTy

service elastix-portknock stop
chkconfig elastix-portknock off

service elastix-updaterd stop
chkconfig elastix-updaterd off

Change the admin password, and reboot the server.

* We can always restart or shutdown the Elastix from admin panel.

Congrats ! we have completed the Elastix free PBX installation done. Configure your extensions and Enjoy !

Click here to learn how to forward conditional call from Elastix.

Follow our site to learn about Elastix features, extensions, and more.