EchoPBX is a PBX that aims to be simple to set up. It provides you with an easy-to-use web interface for managing extensions, trunks and queues. It is built on top of Asterisk,
The primary target audience for EchoPBX is for those who want to self-host their VoIP solution, without the hassle that usually comes with it.
Disclaimer: EchoPBX is currently in BETA. EchoPBX is made in the hope that it is useful. If you experience difficulties installing or configuring, please feel free to open an issue. Even if you think it's a stupid question, I'm happy to help :)
Make sure Docker is installed on your system. If not, you can install it for Ubuntu-based distributions using:
sudo apt install docker.ioThen, run the container
sudo docker run -d --name echopbx --restart unless-stopped --network=host -v /opt/echopbx:/data ghcr.io/ljfloor/echopbx:mainAfter which you can access the Web UI by going to http://(serverip):8740. The container runs in the background and starts again after a reboot. To see the logs, run sudo docker logs -f echopbx.
Pull the new image, remove the old container and start it again. Your data in /opt/echopbx is kept.
sudo docker pull ghcr.io/ljfloor/echopbx:main
sudo docker rm -f echopbx
sudo docker run -d --name echopbx --restart unless-stopped --network=host -v /opt/echopbx:/data ghcr.io/ljfloor/echopbx:mainFor running a SoftPhone (a virtual IP phone on your computer), I recommend using MicroSIP, as it is fairly easy to setup and I use it myself for testing.
EchoPBX has a phone that runs in the browser. Click "Open webphone" on the login page, or go to https://(serverip):8741/phone, and sign in with an extension number and its password. In Chrome and Edge you can install it as an app, which gives it its own small window.
Browsers only allow microphone access on secure (HTTPS) pages, which is why the webphone uses port 8741. By default, EchoPBX creates a self-signed certificate, so your browser shows a warning the first time. To use your own certificate instead, place cert.pem and key.pem in /opt/echopbx/certs and restart the container. You can also put a reverse proxy (such as Caddy or nginx) with a valid certificate in front of port 8740; make sure it forwards WebSockets on /api/ws.
The webphone rings along with the other devices of the extension. For now it is meant for use on the local network.
Can I install EchoPBX on Windows?
EchoPBX uses Asterisk under the hood. Asterisk does not support Windows, hence you cannot install EchoPBX for Windows directly. However, you can install Docker Desktop on Windows, and run EchoPBX on that as a Docker container.
Besides SIP, are other protocols available?
Nope. Since SIP is by far the most used VoIP protocol, EchoPBX only supports SIP to keep things simple. If you need other protocols like IAX2, you can install FreePBX, which is very feature rich.
Maybe in the future when there is nothing to do. Let's just say that this isn't my priority right now.
Do I have to use --host on the docker command
When I tried to bind 5060 (SIP) and 8740 (Web interface) manually in bridge mode, some of my phones had trouble connecting to Asterisk. When they did connect, I wouldn't hear audio.
--host works. I still have to figure this part out
So this is "just another frontend" for Asterisk?
When you typically make a front-end for an already existing backend, you tend to make it very close to the backend. Every key in the config file translates to a textbox or checkbox in the UI. This is not the case with EchoPBX. EchoPBX abstracts away many of the complexities of Asterisk. This might not be for everyone though, and I respect that. So if you want a more traditional approach, FreePBX is a great alternative.
docker build -t echopbx .
The easiest way I found to develop locally is not with docker, but to install the dependencies directly on your machine. Because EchoPBX uses Asterisk, you will need to install and configure Asterisk first.
Like said before, Asterisk only runs on Linux, so you will need a Linux machine or a Linux VM. Alternatively, you can use Windows Subsystem for Linux (WSL2) on Windows 10/11.
First, install asterisk and other dependencies:
sudo apt install asterisk ffmpegDisable it auto-starting, since EchoPBX will start and stop asterisk, not the system.
sudo systemctl disable asterisk --nowBecause we run asterisk as our normal user, we need to set some permissions
sudo chown -R $USER /etc/asterisk
sudo chown -R $USER /var/spool/asterisk
sudo chown -R $USER /var/lib/asteriskCopy the rootfs files to your system. You shouldn't get any permission denied errors here, since you just changed the ownership of the asterisk directories.
cp -rv rootfs/* /Lastly, give yourself permission to the run dirctory, so EchoPBX can run asterisk -r commands:
sudo mkdir /var/run/asterisk && sudo chown -R $USER /var/run/asteriskNote: Every time you reboot your pc, you will need to run the above command again, since
/var/runis cleared on reboot.