Dockerized FreePBX 17 w/Asterisk 22, Separate MariaDB database support, and Data Persistence and UCP
645
Dockerfile to build a FreePBX - A Voice over IP manager for Asterisk. Upon starting this image it will give you a turn-key PBX system for SIP calling.
If you are presently running this image when it utilized FreePBX 14 and Asterisk 14 and can no longer use your image, please see this post
This project is a fork of tiredofit/docker-freepbx by Dave Conroy, which provided the original container layout, init scripts, and documentation this image builds on.
You will also need an external MySQL/MariaDB container, although it can use an internally provided service (not recommended).
Clone this repository and build the image with docker build -t (imagename) .
Builds of the image are available on Docker Hub and is the recommended method of installation.
docker pull savagecore/freepbx:(imagetag)
The following image tags are available along with their tagged release based on what's written in the Changelog:
| Version | Container OS | FreePBX Version | Tag |
|---|---|---|---|
| latest | Debian | 17.x | latest |
| 17 | Debian | 17.x | 17 |
The quickest way to get started is using docker-compose. See the examples folder for a working docker-compose.yml that can be modified for development or production use.
docker-compose.yml is provided that will work right out of the box for most people without any fancy optimizations.The first boot can take from 3 minutes - 30 minutes depending on your internet connection as there is a considerable amount of downloading to do!
Login to the web server's admin URL (default /admin) and enter in your admin username, admin password, and email address and start configuring the system!
The container supports data persistence and during Dockerfile build creates symbolic links for
/var/lib/asterisk, /var/spool/asterisk, /home/asterisk, and /etc/asterisk.
Upon startup configuration files are copied and generated to support portability.
The following directories should be mapped for persistent storage in order to utilize the container effectively.
| Directory | Description |
|---|---|
/certs | Drop your certificates here for TLS w/PJSIP / UCP / HTTPd/ FOP |
/var/log/ | Apache, Asterisk and FreePBX Log Files |
/data | Data persistence for Asterisk and FreePBX and FOP |
/assets/custom | OPTIONAL - If you would like to overwrite some files in the container, |
| put them here following the same folder structure for anything underneath the /var/www/html directory |
This image is based on Debian Bookworm with the s6-overlay init system for added capabilities. Outgoing SMTP capabilities are handlded via msmtp. Individual container performance monitoring is performed by zabbix-agent. Additional tools include: bash,curl,less,logrotate, nano,vim.
The container layout and base init scripts were originally adapted from the tiredofit/docker-debian base image family.
| Parameter | Description | Default |
|---|---|---|
ADMIN_DIRECTORY | What folder to access admin panel | /admin |
DB_EMBEDDED | Allows you to use an internally provided MariaDB Server e.g. TRUE or FALSE | TRUE |
DB_HOST | Host or container name of MySQL Server e.g. freepbx-db | |
DB_PORT | MySQL Port | 3306 |
DB_NAME | MySQL Database name e.g. asterisk | |
DB_USER | MySQL Username for above database e.g. asterisk | |
DB_PASS | MySQL Password for above database e.g. password | |
ENABLE_FAIL2BAN | Enable Fail2ban to block the "bad guys" | TRUE |
ENABLE_FOP | Enable Flash Operator Panel | FALSE |
ENABLE_SSL | Enable HTTPd to serve SSL requests | FALSE |
FOP_DIRECTORY | What folder to access FOP | /fop |
HTTP_PORT | HTTP listening port | 80 |
HTTPS_PORT | HTTPS listening port | 443 |
INSTALL_ADDITIONAL_MODULES | Comma separated list of modules to additionally install on first container startup | |
RTP_START | What port to start RTP transmissions | 18000 |
RTP_FINISH | What port to start RTP transmissions | 20000 |
UCP_FIRST | Load UCP as web frontpage TRUE or FALSE | TRUE |
TLS_CERT | TLS certificate to drop in /certs for HTTPS if no reverse proxy | |
TLS_KEY | TLS Key to drop in /certs for HTTPS if no reverse proxy | |
WEBROOT | If you wish to install to a subfolder use this. Example: /var/www/html/pbx | /var/www/html |
ADMIN_DIRECTORY and FOP_DIRECTORY may not work correctly if WEBROOT is changed or UCP_FIRST=FALSE
The following ports are exposed.
| Port | Description |
|---|---|
80 | HTTP |
443 | HTTPS |
4445 | FOP |
4569 | IAX |
5060/udp | PJSIP |
5160/udp | SIP |
5061 | PJSIP TLS |
5161 | SIP TLS |
8001 | UCP |
8003 | UCP SSL |
8008 | UCP |
8009 | UCP SSL |
8025 | PM2 |
18000-20000/udp | RTP ports |
security log level needs to be enable for asterisk full log file. This can be done from the Settings > Log File Settings > Log files.There is no in-place upgrade. 15 to 17 crosses Debian Buster to Bookworm, PHP 5.6 to 8.2, and Asterisk 17 to 22 (dialplan macros removed).
/data volume and complete first boot.fwconsole reload so Asterisk ODBC follows.Macro(), MacroExit) and rewrite as GoSub before cutover.upgrade-cdr, which will download the latest CDR module,
apply a tweak, install, and reload the system for you.SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'helptext' at row 1. To resolve login to your SQL server and issue this statement:
alter table featurecodes modify column helptext varchar(500);upgrade-core which will truncate the column and auto upgrade the core and framework modules.For debugging and maintenance purposes you may want access the containers shell.
docker exec -it (whatever your container name is e.g. freepbx) bash
These images were built to serve a specific need in a production environment and gradually have had more functionality added based on requests from the community.
MIT. See LICENSE for more details.
Content type
Image
Digest
sha256:39349ba0f…
Size
1.4 GB
Last updated
about 1 month ago
docker pull savagecore/freepbx