Ubuntu 26.04 LTS
The following steps are necessary to follow, to install the VoIPmonitor GUI and sniffer, including MySQL database, on an Ubuntu 26.04 minimal server installation with 16GB of RAM. Beware that all commands need to be run with root privileges
Database
Install
You can choose between MariaDB 11.8 and Mysql 8.4
Mysql 8.4
apt-get update apt-get install tshark mtr librsvg2-bin gsfonts mysql-server ethtool
MariaDB 11.8
apt-get update apt-get install tshark mtr librsvg2-bin gsfonts mariadb-server ethtool
Configure
Add the recommended settings from the Scaling section of our documentation into MySQL's/MariaDB's configuration. Keep in mind to allocate up to half of the available RAM for the MySQL/MariaDB read cache (innodb_buffer_pool_size). The example assumes 16GB of total RAM!
Mysql 8.4
echo 'innodb_flush_log_at_trx_commit = 2' >> /etc/mysql/mysql.conf.d/mysqld.cnf echo 'innodb_buffer_pool_size = 8GB' >> /etc/mysql/mysql.conf.d/mysqld.cnf echo 'skip-log-bin' >> /etc/mysql/mysql.conf.d/mysqld.cnf echo 'skip-name-resolve' >> /etc/mysql/mysql.conf.d/mysqld.cnf
MariaDB 11.8
echo 'innodb_flush_log_at_trx_commit = 2' >> /etc/mysql/mariadb.conf.d/50-server.cnf echo 'innodb_buffer_pool_size = 8GB' >> /etc/mysql/mariadb.conf.d/50-server.cnf echo 'skip-log-bin' >> /etc/mysql/mariadb.conf.d/50-server.cnf echo 'skip-name-resolve' >> /etc/mysql/mariadb.conf.d/50-server.cnf
Apply
Changes made to MySQL are applied after the service is restarted. Please restart the MySQL/MariaDB service before proceeding to the next steps. You can do this with the following command:
systemctl restart mysql
OR
systemctl restart mariadb
Create User and DB
Create a new user in the database for VoIPmonitor’s use, with ALL privileges. Please change the ‘YourPassword’ string to something strong and make a note of it. You will need to enter this password again when configuring the service in /etc/voipmonitor.conf, and when you log in for the first time to the GUI using a web browser.
CREATE USER `voipmonitor`@`127.0.0.1` IDENTIFIED BY 'YourPassword'; GRANT ALL ON voipmonitor.* TO 'voipmonitor'@'127.0.0.1'; GRANT SUPER ON *.* TO 'voipmonitor'@'127.0.0.1'; FLUSH PRIVILEGES; CREATE DATABASE voipmonitor;
PHP + modules and ioncube:
Install php ad modules
apt install php php-gd php-mysql php-cli php-curl php-mbstring php-xml php-zip apache2 libapache2-mod-php cron lsof
Ioncube install
wget --no-continue http://voipmonitor.org/ioncube/x86_64/ioncube_loader_lin_8.5.so -O /usr/lib/php/20250925/ioncube_loader_lin_8.5.so echo "zend_extension = /usr/lib/php/20250925/ioncube_loader_lin_8.5.so" > /etc/php/8.5/apache2/conf.d/01-ioncube.ini echo "zend_extension = /usr/lib/php/20250925/ioncube_loader_lin_8.5.so" > /etc/php/8.5/cli/conf.d/01-ioncube.ini
In case of PHP-fpm:
echo "zend_extension = /usr/lib/php/20250925/ioncube_loader_lin_8.5.so" > /etc/php/8.5/fpm/conf.d/01-ioncube.ini
Voipmonitor sniffer
Install
cd /usr/src wget http://www.voipmonitor.org/current-stable-sniffer-static-64bit.tar.gz -O vm-sniffer.tar.gz tar xzf vm-sniffer.tar.gz cd voipmonitor* ./install-script.sh --no-user-input
RRD graphs
Install suport for graphs in the sensor.
apt-get install rrdtool
Configure
Edit /etc/voipmonitor.conf (set mysqlpass=YourPassword ,mysqluser=voipmonitor, interface=ens33 options at least) /etc/init.d/voipmonitor start systemctl enable voipmonitor
Voipmonitor GUI
Install package
cd /var/www/html wget "http://www.voipmonitor.org/download-gui?version=latest&allowed&phpver=85&festry" -O w.tar.gz tar xzf w.tar.gz mv voipmonitor-gui*/* ./ rm -f index.html chown www-data /var/spool/voipmonitor/ chown -R www-data /var/www echo " * * * * * root php /var/www/html/php/run.php cron" >> /etc/crontab kill -HUP `pgrep cron`
Avoid some Apache2 unnecessary messages
When you see something like this:
[Tue May 12 11:31:02.053355 2026] [php:warn] [pid 19190:tid 19190] [client 10.133.1.7:50984] PHP Warning: preg_match(): Allocation of JIT memory failed, PCRE JIT will be disabled. This is likely caused by security restrictions. Either grant PHP permission to allocate executable memory, or set pcre.jit=0 in /var/www/html/php/lib/functions.php on line 14037, referer: http://10.1.1.2/admin.php sysctl: unable to open directory "/proc/sys/" sysctl: unable to open directory "/proc/sys/"
Adjust Apache2's systemd startup config:
mkdir /etc/systemd/system/apache2.service.d tee /etc/systemd/system/apache2.service.d/override.conf >/dev/null <<'EOF' [Service] ProcSubset=all ProtectKernelTunables=no ProtectControlGroups=no MemoryDenyWriteExecute=no EOF systemctl daemon-reload systemctl restart apache2
First login to a GUI
Logging in to the VoIPmonitor’s host for the first time requires the MySQL credentials that you set at the beginning of this document.
Configure
Open your web browser and enter the following into the address bar
http://IP_of_voipmonitor_host
Replace IP_of_voipmonitor_host with the actual IP address of your VoIPmonitor host.
On the VoIPmonitor page, change the MySQL user from ‘root’ to ‘voipmonitor’ and set the password. Then click on ‘Re-check’. These basic settings are stored in the GUI’s installation directory, which is /var/www/html/ by default, in the file ./config/configuration.php.