|
|
| (9 intermediate revisions by the same user not shown) |
| Line 1: |
Line 1: |
| *Download the latest GUI tar.gz package from http://www.voipmonitor.org/download-gui?version=latest
| | = GUI Installation = |
| *Untar to /var/www/ (On debian like systems) or /var/www/html (On redhat like systems) and rename created folder to voipmonitor
| |
| *Open web browser and point it to voipmonitor http://yourserver/voipmonitor (you can choose whatever directory you want) and follow installation steps
| |
|
| |
|
| Note: you need to install the sniffer too - complete installation [[Content#Installaion]]
| | This guide covers installing the VoIPmonitor Web GUI. The GUI is a PHP web application for viewing CDR data and managing sensors. |
|
| |
|
| = System Requirements =
| | {{Note|The GUI is separate from the sniffer/sensor. You need to install both - see [[Sniffer_installation|Sniffer Installation]].}} |
|
| |
|
| The VoIPmonitor GUI has specific hardware and software requirements.
| | == Quick Start == |
|
| |
|
| === Hardware Architecture Requirements === | | # Download the latest GUI package from http://www.voipmonitor.org/download-gui?version=latest |
| | # Extract to <code>/var/www/html/</code> (RHEL/CentOS) or <code>/var/www/</code> (Debian/Ubuntu) |
| | # Rename the extracted folder to <code>voipmonitor</code> |
| | # Open <code>http://your-server/voipmonitor</code> in a browser and follow the installation wizard |
|
| |
|
| '''IMPORTANT:''' The VoIPmonitor GUI requires an '''x86 (32-bit or 64-bit) architecture system'''. The GUI is '''not supported''' on aarch64 (ARM64) platforms.
| | == Prerequisites == |
|
| |
|
| If you need to run VoIPmonitor on ARM64/aarch64 hardware:
| | {| class="wikitable" |
| * The '''sensor/sniffer component''' can be '''compiled from source''' for ARM64 architectures - see [[Sniffer_installation#Compiling_from_Source|Compiling from Source]]
| | |- |
| * You must run the '''GUI on a separate x86 system''' that connects to the ARM64 sensor's database
| | ! Component !! Requirement |
| * This client-server architecture allows the ARM64 sensor to capture traffic while the x86 GUI provides the web interface
| | |- |
| | | '''Architecture''' || x86 (32/64-bit) only. '''ARM64 not supported''' for GUI. |
| | |- |
| | | '''Web Server''' || Apache2 or Nginx with PHP support |
| | |- |
| | | '''PHP''' || 7.4, 8.1, 8.2, or 8.3 with ionCube Loader |
| | |- |
| | | '''Database''' || MySQL 5.7+ or MariaDB 10.3+ |
| | |- |
| | | '''Extensions''' || php-mysql, php-gd, php-curl, php-mbstring, php-zip, php-cli |
| | |} |
|
| |
|
| For more information about supported architectures, see the [[FAQ#What_hardware_architectures_does_the_GUI_support.3F|FAQ entry on architecture support]]. | | {{Tip|For ARM64 systems: Compile the [[Sniffer_installation#Compiling_from_Source|sensor from source]] on ARM64, then run GUI on a separate x86 server connecting to the same database.}} |
|
| |
|
| = Hosting Environments = | | === Hosting Environments === |
|
| |
|
| The VoIPmonitor GUI is fully supported in various hosting environments, including:
| | {| class="wikitable" |
| | |- |
| | ! Environment !! License Status |
| | |- |
| | | Docker, Kubernetes, LXC, Podman || Fully supported, no special licensing |
| | |- |
| | | VMware, VirtualBox, KVM, Hyper-V || Works normally |
| | |- |
| | | AWS EC2, Azure VMs, GCP || Works normally |
| | |} |
|
| |
|
| === Containerized Deployment (Docker, Kubernetes) === | | {{Note|1=For cloud instances: '''Stop/Start''' preserves Hardware ID (license OK). '''Terminate/Launch''' changes Hardware ID (requires license reconfiguration or domain-based licensing).}} |
|
| |
|
| Running the VoIPmonitor web UI inside a container (Docker, Kubernetes, or other containerization technologies) is '''fully supported''' and will '''not cause any licensing issues'''.
| | == Installation Steps == |
|
| |
|
| The GUI license validation works normally in containerized environments without requiring special licensing configurations. You can run the GUI in a container without needing to contact support for domain-based licensing or multiple server licensing.
| | === Step 1: Prepare the Environment === |
|
| |
|
| This applies to:
| | Install required packages: |
| * Docker containers
| |
| * Kubernetes pods
| |
| * Other containerization technologies (LXC, Podman, etc.)
| |
| * Cloud-based container services (AWS ECS, Azure Container Instances, Google Cloud Run, etc.)
| |
|
| |
|
| === Virtual Machines and Cloud Instances === | | <syntaxhighlight lang="bash"> |
| | # Debian/Ubuntu |
| | apt update |
| | apt install apache2 php php-mysql php-gd php-curl php-mbstring mariadb-server unzip wget |
|
| |
|
| The VoIPmonitor GUI also runs normally in virtualized environments:
| | # RHEL/Rocky/AlmaLinux |
| | dnf install httpd php php-mysqlnd php-gd php-curl php-mbstring mariadb-server unzip wget |
| | </syntaxhighlight> |
|
| |
|
| * '''VMware ESXi, VirtualBox, KVM, Hyper-V, QEMU/KVM''': The GUI license works without issues
| | === Step 2: Download and Extract === |
| * '''AWS EC2, Google Cloud Platform, Azure VMs''': License validation works normally
| |
|
| |
|
| '''Important distinction for AWS/Cloud:'''
| | <syntaxhighlight lang="bash"> |
| * '''Stop/Start an instance''': The Hardware ID typically remains the same, so your license continues to work
| | # Download latest GUI (replace phpver with your PHP version: 74, 81, 82, 83) |
| * '''Terminate and launch a new instance''': The Hardware ID changes, requiring a new license or reconfiguration
| | cd /tmp |
| | wget "https://www.voipmonitor.org/download-gui?version=latest&major=5&allowed&phpver=81" -O gui.tar.gz |
|
| |
|
| If you frequently destroy and recreate cloud instances and want to avoid license reconfiguration, you may request domain-based licensing from VoIPmonitor support as an alternative to hardware ID binding.
| | # Extract to web root |
| | tar xzf gui.tar.gz |
| | mv voipmonitor-gui-* /var/www/html/voipmonitor |
|
| |
|
| = License key =
| | # Set permissions |
| | chown -R www-data:www-data /var/www/html/voipmonitor # Debian/Ubuntu |
| | # OR |
| | chown -R apache:apache /var/www/html/voipmonitor # RHEL/Rocky |
| | </syntaxhighlight> |
|
| |
|
| == Obtaining a Trial License (30 Days) == | | {{Warning|1=Download the GUI package matching your PHP version. Check with <code>php --version</code>.}} |
|
| |
|
| For a new installation, you can obtain a 30-day trial license for testing purposes through one of the following methods:
| | === Step 3: Complete Web Setup === |
|
| |
|
| === Method 1: Contact Support ===
| | # Open browser: <code>http://yourserver/voipmonitor</code> |
| | # Follow the installation wizard to configure database connection |
| | # Enter license token (see [[#License Activation|License Activation]] below) |
|
| |
|
| Send a request to the VoIPmonitor support team to obtain a trial license. This method is useful if you encounter issues with automated license generation.
| | === Step 4: Configure Cron Job === |
|
| |
|
| === Method 2: Members' Area (Automated) ===
| | The GUI requires a cron job for alerts, reports, and maintenance: |
|
| |
|
| Log in to the VoIPmonitor members' area and find the license token in the "my services" section.
| | <syntaxhighlight lang="bash"> |
| | echo "* * * * * root php /var/www/html/voipmonitor/php/run.php cron" >> /etc/crontab |
| | </syntaxhighlight> |
|
| |
|
| ==== Troubleshooting Shopping Cart Issues ==== | | === Step 5: Configure Sniffer === |
|
| |
|
| If you are unable to complete the trial order process (the checkout does not proceed):
| | Ensure the sniffer uses the '''same database''' as the GUI. Edit <code>/etc/voipmonitor.conf</code>: |
|
| |
|
| # Review the items in your shopping cart
| | <syntaxhighlight lang="ini"> |
| # Ensure there is only one trial product in the cart
| | mysqlhost = localhost |
| # Remove any duplicate or conflicting items (multiple trial products can block checkout)
| | mysqldb = voipmonitor |
| # Proceed with the checkout process once only one trial product remains
| | mysqlusername = voipmonitor |
| | mysqlpassword = your_password |
| | </syntaxhighlight> |
|
| |
|
| This is a common issue - accidentally adding the trial product multiple times to the shopping cart will prevent the automated order from completing.
| | Then restart: <code>systemctl restart voipmonitor</code> |
|
| |
|
| ==== Troubleshooting Email Verification Issues ==== | | == System Requirements == |
|
| |
|
| If you are using the Members' Area method and cannot receive the verification email:
| | === Hardware Architecture === |
|
| |
|
| # Check your inbox and spam/junk folder for the verification email
| | {| class="wikitable" |
| # If the email contains a typo or is not found, contact support to manually resend the verification email to the correct email address
| | |- |
| # Verification links are typically valid for 24 hours - if expired, request a new verification email
| | ! Component !! Supported Architectures |
| | |- |
| | | '''Web GUI''' || x86 (32-bit and 64-bit) only |
| | |- |
| | | '''Sniffer''' || x86, ARMv7, ARMv8/ARM64 |
| | |} |
|
| |
|
| If you continue to experience issues receiving the verification email, you can use Method 1 (Contact Support) as an alternative. | | {{Warning|The GUI does '''NOT''' support ARM64/aarch64 architecture. If you need to run on ARM64, deploy the sniffer on ARM and connect it to a GUI running on a separate x86 server.}} |
|
| |
|
| ==== Troubleshooting "Only One Trial Is Allowed" Error ====
| | For ARM64 deployments, use a split architecture: |
|
| |
|
| When using the Members' Area, you may encounter an error stating that only one trial license is allowed. This occurs when:
| | <kroki lang="mermaid"> |
| | %%{init: {'flowchart': {'nodeSpacing': 15, 'rankSpacing': 40}}}%% |
| | flowchart LR |
| | subgraph ARM64["ARM64 Server"] |
| | S[Sensor] --> DB[(MySQL)] |
| | end |
| | subgraph X86["x86 Server"] |
| | GUI[Web GUI] |
| | end |
| | GUI --> DB |
| | </kroki> |
|
| |
|
| * You previously used a trial license (even on a different or deleted server)
| | == License Activation == |
| * The trial status in the back-end system was not properly reset after the trial expired
| |
|
| |
|
| To resolve this issue:
| | === Obtaining a Trial License === |
|
| |
|
| # Contact VoIPmonitor support and explain that the automated portal is showing "only one trial is allowed" for your account
| | Request a 30-day trial license: |
| # Specify that you need a trial license for a new installation or testing environment
| | * '''Option 1:''' Contact VoIPmonitor support |
| # Support will manually correct the trial license status in the back-end system
| | * '''Option 2:''' Generate via Members' Area at voipmonitor.org |
| # Once the status is corrected, return to the Members' Area and generate the trial license through the normal automated process
| |
|
| |
|
| Alternatively, you can bypass this issue entirely by using Method 1 (Contact Support) to request a manual trial license issuance.
| | === Activating the License === |
|
| |
|
| To download the license key, visit: http://www.voipmonitor.org/download-gui?version=license
| | <kroki lang="mermaid"> |
| | %%{init: {'flowchart': {'nodeSpacing': 15, 'rankSpacing': 40}}}%% |
| | flowchart TB |
| | A{Internet Access?} |
| | A -->|Yes| B["Online: Paste token in 'License token' field"] |
| | A -->|No| C["Offline: Paste full key in 'License key' field"] |
| | B --> D["Click 'get/update license key'"] |
| | </kroki> |
|
| |
|
| The license file is located in the web root folder as <code>key.php</code>
| | '''Online Activation''' (server has internet): |
| | # Navigate to '''Settings > License''' |
| | # Paste the short token into '''"License token"''' field |
| | # Click '''"get/update license key"''' |
|
| |
|
| == Activating a License in the GUI ==
| | '''Offline Activation''' (air-gapped server): |
| | # Get full multi-line key from support |
| | # Paste entire key into '''"License key"''' field |
| | # Save changes |
|
| |
|
| VoIPmonitor GUI provides two separate activation methods depending on your scenario. Using the wrong method will result in a "Bad Key Content" error.
| | {{Warning|1=Using the wrong field causes "Bad Key Content" error. Token = short string, Key = multi-line text.}} |
|
| |
|
| === Online Activation (Recommended) === | | === License File Location === |
|
| |
|
| Use this method when your server has internet access and you have a license token from the Members' Area or support:
| | The license is stored in <code>key.php</code> in the GUI root directory (e.g., <code>/var/www/html/voipmonitor/key.php</code>). |
|
| |
|
| # Log in to the GUI
| | ==== Manual License Update ==== |
| # Navigate to '''Settings > License'''
| |
| # Paste your '''license token''' (short text string, NOT the full key) into the '''"License token"''' field
| |
| # Click the '''"get/update license key"''' button
| |
| # The GUI will automatically fetch and apply the full license from the license server
| |
|
| |
|
| '''Important:''' The "License token" field is for short tokens only. Do not paste the full multi-line license key into this field.
| | If automatic activation fails: |
|
| |
|
| === Offline Activation === | | <syntaxhighlight lang="bash"> |
| | # Download key from portal: Services > My services |
| | # Copy content to key.php on server |
| | # Verify: |
| | php /var/www/voipmonitor/php/apilicensecheck.php?task=licenseCheck |
| | </syntaxhighlight> |
|
| |
|
| Use this method when your server cannot connect to the license server (network restrictions, firewall, air-gapped environment):
| | === Channel-Based Licensing === |
|
| |
|
| # Contact VoIPmonitor support to obtain the full, formatted license key
| | * License is based on '''maximum concurrent calls''' (channels) |
| # Log in to the GUI
| | * Check current usage: '''Tools > System Status > Concurrent calls''' |
| # Navigate to '''Settings > License'''
| | * Grace period: If limit exceeded, GUI locks after 14 days |
| # Paste the '''entire multi-line license key''' into the '''"License key"''' text field
| | * See [[License]] for detailed information |
| # Ensure you copy all lines (Expires, id, hwid, maxcalls, upgradeexpire, etc.)
| |
| # Save the changes
| |
|
| |
|
| '''Important:''' The "License key" field is for the complete multi-line key. Do not paste a short token into this field.
| | == Post-Installation == |
|
| |
|
| === Troubleshooting "Bad Key Content" Error === | | === Add Sensors (Multi-Sensor Setup) === |
|
| |
|
| If you receive a "Bad Key Content" error, you are likely using the wrong field:
| | For distributed deployments with multiple sensors: |
| | # In GUI: '''Settings > Sensors > Add''' |
| | # Enter Sensor ID (must match <code>id_sensor</code> in sniffer config) |
| | # Enter Manager IP and Port (default: 5029) |
|
| |
|
| * '''Pasting a full license key into the "License token" field''' → This will fail. Use the "License key" field instead.
| | See [[Settings#Sensors]] for detailed configuration. |
| * '''Pasting a short token into the "License key" field''' → This will fail. Use the "License token" field instead and click "get/update license key".
| |
| * '''Incomplete license key''' → For offline activation, ensure you copied ALL lines of the multi-line key.
| |
|
| |
|
| === Manually Updating License from Customer Portal === | | == Distribution-Specific Guides == |
|
| |
|
| Use this method when you need to update the license file directly from the VoIPmonitor customer portal (for example, when the GUI license interface is not working properly, or when you need to manually replace the <code>key.php</code> file).
| | For detailed step-by-step installation on specific distributions, see: |
| | * [[Debian_12]] - Debian 12 (Bookworm) installation |
| | * [[Rocky_9]] - Rocky Linux 9 / AlmaLinux 9 installation |
| | * [[Ubuntu_24.04_LTS]] - Ubuntu 24.04 LTS installation |
|
| |
|
| # Log in to the VoIPmonitor customer portal
| | == GUI Configuration Options == |
| # Navigate to '''Services > My services'''
| |
| # Find your license in the list and click the '''license''' button
| |
| # Copy the entire license key content displayed
| |
| # Locate the <code>key.php</code> file on your GUI server (typically in <code>/var/www/voipmonitor</code> or <code>/var/www/html/voipmonitor</code>)
| |
| # Replace the entire content of <code>key.php</code> with the new license key from the portal
| |
| # Verify the license is updated by running: <code>php /var/www/voipmonitor/php/apilicensecheck.php?task=licenseCheck</code>
| |
|
| |
|
| '''Important:'''
| | Edit <code>config/system_configuration.php</code> to disable features: |
| * Ensure you have the correct file permissions set (web server user, e.g., <code>www-data</code> or <code>apache</code>, must be able to read the file)
| |
| * When pasting the key content, replace ALL previous content (do not append or partially update)
| |
| * Common causes for file update issues include: file ownership problems, insufficient write permissions, or the web server caching old file content
| |
|
| |
|
| See also: [[WEB_API#Check_License|Check License API]] for verifying license status.
| | <syntaxhighlight lang="php"> |
| | define('DISABLE_LIVE_SNIFFER', true); // Remove Live Sniffer menu |
| | define('DISABLE_REGISTER', true); // Disable SIP Register view |
| | define('DISABLE_CDR_SHARE', true); // Disable CDR sharing feature |
| | </syntaxhighlight> |
|
| |
|
| == Extending a Trial License ==
| | For additional configuration constants, see [[GUI_Configuration_PHP]]. |
|
| |
|
| If your testing period requires more than 30 days, you can request a trial license extension:
| | == Troubleshooting == |
|
| |
|
| # Contact VoIPmonitor support to request an extension of your trial license
| | === "hwid invalid or corrupted" Error === |
| # After the license is extended by support, apply the update in the GUI by clicking the '''"get/update license key"''' button
| |
| # You do not need to change your server ID when extending the license
| |
|
| |
|
| == Full Licenses ==
| | The GUI cannot read the Hardware ID. |
|
| |
|
| For production use, you can purchase a full license through the VoIPmonitor customer portal. Your license is based on the '''maximum number of concurrent calls''' during your peak hours.
| | '''Solution:''' |
| | <syntaxhighlight lang="bash"> |
| | chmod +r /dev/root |
| | </syntaxhighlight> |
|
| |
|
| You can view your current license status and concurrent call usage in the GUI under '''Tools -> System Status -> Concurrent calls'''.
| | === "Missing sniffer tables" or "Table 'voipmonitor.cdr' doesn't exist" === |
|
| |
|
| See the [[FAQ]] for more information about licensing, including:
| | The GUI and sniffer are using different databases. |
| * How to calculate the number of channels you need
| |
| * What happens if you temporarily exceed your license limit
| |
| * License warning and blocking behavior
| |
| * Upgrading your license via the customer portal
| |
|
| |
|
| == Retrieving a License Token from an Existing Installation ==
| | '''Solution:''' |
| | # Check GUI database settings in <code>/var/www/html/voipmonitor/config/configuration.php</code> |
| | # Update sniffer config <code>/etc/voipmonitor.conf</code> to use the same database |
| | # Restart sniffer: <code>systemctl restart voipmonitor</code> |
|
| |
|
| If you need to find the license token for an existing VoIPmonitor installation (for example, to set up a new development or test system), you can retrieve it using one of the following methods:
| | {{Warning|Do NOT run schema.sql to "fix" this - the tables already exist in the sniffer's database.}} |
|
| |
|
| === Method 1: Retrieve from the GUI === | | === HTTP 500 Errors === |
|
| |
|
| This is the recommended method for retrieving your license token:
| | # Try a different browser or incognito mode |
| | # Check PHP and web server error logs: |
| | <syntaxhighlight lang="bash"> |
| | tail -f /var/log/apache2/error.log |
| | # or |
| | tail -f /var/log/nginx/error.log |
| | </syntaxhighlight> |
| | # Verify IonCube Loader version matches PHP version |
| | # Test PHP with info file: |
| | <syntaxhighlight lang="bash"> |
| | echo "<?php phpinfo(); ?>" > /var/www/html/info.php |
| | # Then access http://your-server/info.php |
| | </syntaxhighlight> |
|
| |
|
| # Log in to your existing VoIPmonitor GUI
| | === ionCube Loader Errors === |
| # Navigate to '''Settings > License'''
| |
| # Locate the '''"License token"''' field
| |
| # Copy the short text string displayed there
| |
|
| |
|
| === Method 2: Retrieve from key.php File (Alternative) ===
| | The ionCube Loader version doesn't match PHP version. |
|
| |
|
| If you cannot access the GUI or need to recover the license programmatically, the <code>key.php</code> file in your GUI installation directory contains the license information.
| | '''Solution:''' |
| | # Check PHP version: <code>php --version</code> |
| | # Download correct IonCube loader from [https://www.ioncube.com/loaders.php ioncube.com] |
| | # Place in PHP extensions directory |
| | # Add to php.ini: <code>zend_extension = /path/to/ioncube_loader.so</code> |
| | # Restart web server |
|
| |
|
| # Navigate to your GUI installation directory (typically <code>/var/www/html/voipmonitor</code> or <code>/var/www/voipmonitor</code>)
| | See [[Re-install_the_GUI]] for details. |
| # Open the <code>key.php</code> file in a text editor
| |
| # The file contains the license information including the license ID
| |
|
| |
|
| You can use the license ID found in <code>key.php</code> to retrieve your full license from the GUI or by contacting VoIPmonitor support.
| | === Database Connection Issues === |
|
| |
|
| === Using the Token on a New Development/Test System ===
| | # Verify MySQL/MariaDB is running: <code>systemctl status mysql</code> |
| | # Test connection: <code>mysql -u voipmonitor -p voipmonitor</code> |
| | # Check credentials in GUI configuration |
|
| |
|
| The license token is cryptographically bound to the Hardware ID (HWID) of the server it was generated for.
| | === "Crontab log is empty" === |
|
| |
|
| * '''If the new test system has the SAME Hardware ID''' (e.g., a cloned VM or restored backup): You can paste this token directly into the '''"License token"''' field on the new system and click '''"get/update license key"'''.
| | The cron job is not configured or not running. |
| * '''If the new test system has a DIFFERENT Hardware ID''' (e.g., a new VM or physical server): The token from the old installation '''will not work''' automatically.
| |
| * '''Solution:''' Contact VoIPmonitor support to have your license token reconfigured to allow multiple servers (specifically for the test/dev environment). Once support adds the new HWID to your license, you can use the same token or a new one provided by them.
| |
|
| |
|
| See also: [[Tls#Can_I_use_my_license_on_multiple_servers|Can I use my license on multiple servers?]]
| | '''Solution:''' |
| | <syntaxhighlight lang="bash"> |
| | # Add cron job |
| | echo "* * * * * root php /var/www/html/voipmonitor/php/run.php cron" >> /etc/crontab |
|
| |
|
| = config/system_configuration.php =
| | # Test manually |
| | php /var/www/html/voipmonitor/php/run.php cron |
| | </syntaxhighlight> |
|
| |
|
| This file allows disabling some features
| | === License Shows Expired When Valid === |
|
| |
|
| === Disable Live Sniffer Menu ===
| | The server cannot reach the license validation server. |
|
| |
|
| To completely remove the Live Sniffer functionality from the GUI (including the menu item), edit the <code>config/system_configuration.php</code> file:
| | '''Diagnostic:''' |
| | <syntaxhighlight lang="bash"> |
| | curl -I https://download.voipmonitor.org |
| | </syntaxhighlight> |
|
| |
|
| <syntaxhighlight lang="php">
| | '''Solution:''' Allow outbound HTTPS (port 443) to <code>download.voipmonitor.org</code> in your firewall. |
| define('DISABLE_LIVE_SNIFFER', true);
| |
| </syntaxhighlight> | |
|
| |
|
| When enabled, this constant removes the entire Live Sniffer menu item from the GUI. This is different from hiding play buttons (see FAQ for <code>DISABLE_LIVEPLAY</code>).
| | == See Also == |
|
| |
|
| '''Important Security Note:''' Even with <code>DISABLE_LIVE_SNIFFER</code> enabled, users with administrator privileges can override global capture settings to enable recording or listening for specific calls. For strict compliance scenarios, ensure users are not granted administrator privileges.
| | * [[Sniffer_installation]] - Install the packet capture sensor |
| | * [[Re-install_the_GUI]] - Reinstall or upgrade the GUI |
| | * [[License]] - Detailed licensing information |
| | * [[GUI_troubleshooting]] - Additional troubleshooting |
| | * [[GUI_Configuration_PHP]] - Advanced configuration options |
| | * [[Nginx]] - Configure Nginx as reverse proxy |
|
| |
|
| === Other Feature Disabling Options ===
| | [[Category:Installation]] |
|
| |
|
| define('DISABLE_ISSUE_TRACKER', true);
| |
| define('DISABLE_REGISTER', true);
| |
| define('DISABLE_CDR_SHARE', true);
| |
| define('WIKI_URL', 'http://voipmonitor.org');
| |
| define('WIKI_URL', false);
| |
| define('APP_WEB', 'http://voipmonitor.org');
| |
|
| |
|
| == AI Summary for RAG == | | == AI Summary for RAG == |
| '''Summary:''' This guide covers the VoIPmonitor GUI installation process, including downloading the package, extracting files, and running the installation wizard. It provides detailed information about obtaining trial licenses (30-day) for new testing installations, including two methods: contacting support or finding license tokens in the "my services" section of the members' area. For the Members' Area method, it includes troubleshooting steps for common issues. First, if you are unable to complete the trial order process (checkout does not proceed), this is typically caused by having multiple trial products in the shopping cart - you must review the cart, ensure only one trial product exists, remove any duplicate or conflicting items, then proceed with checkout. Second, it covers email verification issues: checking spam/junk folders, contacting support to manually resend verification emails, and understanding that verification links are valid for 24 hours. Third, it includes troubleshooting for the "only one trial is allowed" error, which occurs when a previous trial was used; the solution is to contact support to manually correct the trial status in the back-end system, then return to the Members' Area to generate the trial. Alternatively, users can bypass issues by directly contacting support for manual trial issuance. The guide explains how to extend trial licenses beyond 30 days by contacting support and using the "get/update license" button in the GUI without needing to change the server ID.
| |
|
| |
| CONTAINERIZED DEPLOYMENT SUPPORT: Running the VoIPmonitor web UI inside a container (Docker, Kubernetes, LXC, Podman, or cloud container services like AWS ECS, Azure Container Instances, Google Cloud Run) is fully supported and will NOT cause any licensing issues. The GUI license validation works normally in containerized environments without requiring special licensing configurations. Users do NOT need to contact support for domain-based licensing or multiple server licensing when running the GUI in a container.
| |
|
| |
| VIRTUAL MACHINE AND CLOUD SUPPORT: The VoIPmonitor GUI also works normally in VMs (VMware ESXi, VirtualBox, KVM, Hyper-V) and cloud instances (AWS EC2, GCP, Azure VMs). For cloud instances, there is an important distinction: stopping and starting an instance typically preserves the Hardware ID so the license continues to work, but terminating and launching a new instance changes the Hardware ID and requires license reconfiguration. For users who frequently destroy and recreate cloud instances, domain-based licensing can be requested from support as an alternative to hardware ID binding.
| |
|
| |
| CRITICAL: License activation in the GUI uses TWO SEPARATE FIELDS. For ONLINE activation (server has internet access), paste the SHORT "license token" into the "License token" field and click "get/update license key" button to automatically fetch the license. For OFFLINE activation (air-gapped or restricted networks), paste the COMPLETE multi-line LICENSE KEY (Expires, id, hwid, maxcalls, upgradeexpire, etc.) into the "License key" field and save. Common "Bad Key Content" errors are caused by using the WRONG field: pasting a full key into "License token" or a short token into "License key" will fail. Also ensure the offline key includes ALL lines, not just the first line.
| |
|
| |
|
| To retrieve a license token from an existing installation (e.g., for setting up a new development or test system), use either Method 1: Navigate to Settings > License in the GUI and copy the token, or Method 2: Open the key.php file in the GUI installation directory (typically /var/www/html/voipmonitor) which contains the license ID that can be used to retrieve the full license. When using the retrieved token on a new development/test system, note that it is cryptographically bound to the Hardware ID (HWID). If the new system has the SAME HWID (e.g., cloned VM), the token works directly. If it has a DIFFERENT HWID (e.g., new VM), contact VoIPmonitor support to reconfigure the license for multiple servers.
| | '''Summary:''' VoIPmonitor GUI installation guide. Prerequisites: x86 architecture (ARM64 not supported for GUI), PHP 7.4/8.x with ionCube, MySQL/MariaDB, Apache/Nginx. Installation steps: (1) Install packages, (2) Download GUI matching PHP version, (3) Extract to webroot, (4) Run web setup wizard, (5) Add cron job for run.php, (6) Configure sniffer to use same database. Docker/Kubernetes/cloud fully supported. License activation: Online uses "License token" field + click button, Offline uses "License key" field with full multi-line key. Common issues: "hwid invalid" = run chmod +r /dev/root; "Missing sniffer tables" = GUI and sniffer using different databases (fix sniffer config, don't run schema.sql); "Crontab log empty" = add cron job. |
|
| |
|
| For manual license file updates when the GUI license interface is not working properly, you can manually replace the key.php file from the customer portal. Navigate to Services > My services in the portal, click the license button to view and copy the full license content, then replace the entire content of key.php on your GUI server (typically /var/www/voipmonitor or /var/www/html/voipmonitor). Verify the update with the apilicensecheck.php API endpoint. Common issues include file ownership problems (web server user must be able to read), insufficient write permissions, or the web server caching old file content.
| | '''Keywords:''' gui installation, web interface, php installation, ionCube, trial license, license activation, license token, license key, bad key content, hwid invalid, /dev/root, docker, kubernetes, container, arm64, x86, missing sniffer tables, crontab log empty, cdr table missing, cron job, run.php, system_configuration.php, DISABLE_LIVE_SNIFFER |
|
| |
|
| It also covers full license purchasing, which is based on maximum concurrent calls during peak hours, and references the FAQ for more details on license calculation, exceeding limits, warnings, blocking behavior, and upgrading licenses. The config/system_configuration.php file allows disabling specific features like live sniffer (DISABLE_LIVE_SNIFFER to remove menu), issue tracker, registration, and CDR sharing. IMPORTANT: DISABLE_LIVE_SNIFFER removes the menu item entirely, while DISABLE_LIVEPLAY only hides play buttons. Admin users can override capture settings to enable recording, so avoid granting admin privileges for strict compliance scenarios.
| |
| '''Keywords:''' gui installation, trial license, 30-day trial, license extension, my services, members area, get/update license, concurrent calls, server id, full license, customer portal, license key, license token, online activation, offline activation, bad key content, license token field, license key field, key.php, system configuration, disable features, only one trial allowed, trial status, back-end system, DISABLE_LIVE_SNIFFER, DISABLE_LIVEPLAY, disable live sniffer, disable issue tracker, disable registration, admin privileges, override capture settings, compliance, shopping cart, duplicate products, trial order, checkout, unable to complete order, retrieve license token, existing installation, development system, test system, hardware id, hwid, reconfigure license, multiple servers, manual license update, customer portal license button, replace key.php manually, services my services, license file permissions, file ownership, web server permissions, apilicensecheck.php, container, docker, kubernetes, lxc, podman, containerized gui, gui in container, cloud container, aws ecs, azure container instances, google cloud run, virtual machine, vm, cloud instance, aws ec2, google cloud platform, azure vm, vmware esxi, virtualbox, kvm, hyper-v, gui deployment, hosting environment
| |
| '''Key Questions:''' | | '''Key Questions:''' |
| * How do I retrieve a license token from an existing VoIPmonitor installation? | | * How do I install the VoIPmonitor GUI? |
| * Where can I find the license token in the GUI?
| | * What PHP version do I need for VoIPmonitor GUI? |
| * How do I find the license information in the key.php file?
| | * Does VoIPmonitor GUI work on ARM64? |
| * Can I use my license token on a new development or test system?
| | * Does VoIPmonitor GUI work in Docker/Kubernetes? |
| * What happens if the new test system has a different hardware ID? | | * How do I activate a VoIPmonitor license? |
| * How do I transfer my license to a new development server?
| | * What is the difference between "License token" and "License key" fields? |
| * What is the hardware ID (HWID) requirement for license tokens?
| | * How do I fix "hwid invalid or corrupted" error? |
| * Can I use the same license token on multiple servers?
| | * How do I fix "Missing sniffer tables" error? |
| * Where is the key.php file located in the GUI installation?
| | * How do I add the GUI cron job? |
| * How do I reconfigure my license for multiple servers? | | * Where is the VoIPmonitor license file stored (key.php)? |
| * What is the difference between "license token" and "license key" fields in the GUI?
| | * How do I disable Live Sniffer in the GUI? |
| * Which field should I use for online license activation in VoIPmonitor? | |
| * Which field should I use for offline license activation in VoIPmonitor?
| |
| * Why do I get "Bad Key Content" error when pasting my license?
| |
| * How do I activate a license online using a token?
| |
| * How do I activate a license offline using the full key? | |
| * What should I paste into the "License token" field? | |
| * What should I paste into the "License key" field?
| |
| * How do I obtain a trial license for VoIPmonitor? | |
| * What is the trial license period?
| |
| * How can I get a trial license for a new VoIPmonitor installation?
| |
| * Where do I find my license token for VoIPmonitor?
| |
| * How do I extend my VoIPmonitor trial license beyond 30 days?
| |
| * Do I need to change my server ID when extending my license?
| |
| * How is the VoIPmonitor license calculated?
| |
| * What happens if I exceed my license limit?
| |
| * What is the "get/update license" button in the GUI?
| |
| * Where do I check my VoIPmonitor license status and concurrent calls?
| |
| * What should I do if I cannot complete the trial order process?
| |
| * Why does my trial order checkout fail?
| |
| * How do I fix duplicate trial products in my shopping cart? | |
| * What should I do if I cannot receive the verification email for a trial license?
| |
| * How long is the trial license verification link valid?
| |
| * Can support resend the verification email if I made a typo in my email address?
| |
| * What should I do if I get an "only one trial is allowed" error?
| |
| * How can I fix the trial license status to generate a new trial?
| |
| * Why does the automated portal block my trial request?
| |
| * How do I manually update the license key from the customer portal? | |
| * Where is the license button in the customer portal Services section? | |
| * How do I replace the key.php file with a new license from the portal?
| |
| * What should I do if the GUI license interface is not working?
| |
| * What file permissions are required for key.php?
| |
| * How do I verify the license file was updated correctly? | |
| * What are common causes for license file update failures?
| |
| * Where is the key.php file located on the GUI server?
| |
| * How do I check license status with apilicensecheck.php?
| |
| * What happens if the web server cannot read key.php?
| |
| * Does the VoIPmonitor GUI work in Docker containers?
| |
| * Can I run the VoIPmonitor GUI in a container?
| |
| * Will running the GUI in a container cause licensing issues?
| |
| * Do I need special licensing for containerized GUI deployment?
| |
| * Can I use the VoIPmonitor GUI in Kubernetes?
| |
| * Does the GUI require domain-based licensing when running in containers?
| |
| * Does the GUI work in virtual machines (VMs)?
| |
| * Can I deploy the GUI on AWS EC2 or other cloud instances?
| |
| * What happens to my license if I stop and start an AWS EC2 instance?
| |
| * What happens to my license if I terminate and recreate a cloud instance?
| |
| * Can I use the same license on multiple cloud instances?
| |
| * When should I request domain-based licensing instead of hardware binding?
| |
| * What hosting environments does the VoIPmonitor GUI support?
| |
GUI Installation
This guide covers installing the VoIPmonitor Web GUI. The GUI is a PHP web application for viewing CDR data and managing sensors.
ℹ️ Note: The GUI is separate from the sniffer/sensor. You need to install both - see Sniffer Installation.
Quick Start
- Download the latest GUI package from http://www.voipmonitor.org/download-gui?version=latest
- Extract to
/var/www/html/ (RHEL/CentOS) or /var/www/ (Debian/Ubuntu)
- Rename the extracted folder to
voipmonitor
- Open
http://your-server/voipmonitor in a browser and follow the installation wizard
Prerequisites
| Component |
Requirement
|
| Architecture |
x86 (32/64-bit) only. ARM64 not supported for GUI.
|
| Web Server |
Apache2 or Nginx with PHP support
|
| PHP |
7.4, 8.1, 8.2, or 8.3 with ionCube Loader
|
| Database |
MySQL 5.7+ or MariaDB 10.3+
|
| Extensions |
php-mysql, php-gd, php-curl, php-mbstring, php-zip, php-cli
|
💡 Tip: For ARM64 systems: Compile the sensor from source on ARM64, then run GUI on a separate x86 server connecting to the same database.
Hosting Environments
| Environment |
License Status
|
| Docker, Kubernetes, LXC, Podman |
Fully supported, no special licensing
|
| VMware, VirtualBox, KVM, Hyper-V |
Works normally
|
| AWS EC2, Azure VMs, GCP |
Works normally
|
ℹ️ Note: For cloud instances: Stop/Start preserves Hardware ID (license OK). Terminate/Launch changes Hardware ID (requires license reconfiguration or domain-based licensing).
Installation Steps
Step 1: Prepare the Environment
Install required packages:
# Debian/Ubuntu
apt update
apt install apache2 php php-mysql php-gd php-curl php-mbstring mariadb-server unzip wget
# RHEL/Rocky/AlmaLinux
dnf install httpd php php-mysqlnd php-gd php-curl php-mbstring mariadb-server unzip wget
Step 2: Download and Extract
# Download latest GUI (replace phpver with your PHP version: 74, 81, 82, 83)
cd /tmp
wget "https://www.voipmonitor.org/download-gui?version=latest&major=5&allowed&phpver=81" -O gui.tar.gz
# Extract to web root
tar xzf gui.tar.gz
mv voipmonitor-gui-* /var/www/html/voipmonitor
# Set permissions
chown -R www-data:www-data /var/www/html/voipmonitor # Debian/Ubuntu
# OR
chown -R apache:apache /var/www/html/voipmonitor # RHEL/Rocky
⚠️ Warning: Download the GUI package matching your PHP version. Check with php --version.
Step 3: Complete Web Setup
- Open browser:
http://yourserver/voipmonitor
- Follow the installation wizard to configure database connection
- Enter license token (see License Activation below)
Step 4: Configure Cron Job
The GUI requires a cron job for alerts, reports, and maintenance:
echo "* * * * * root php /var/www/html/voipmonitor/php/run.php cron" >> /etc/crontab
Step 5: Configure Sniffer
Ensure the sniffer uses the same database as the GUI. Edit /etc/voipmonitor.conf:
mysqlhost = localhost
mysqldb = voipmonitor
mysqlusername = voipmonitor
mysqlpassword = your_password
Then restart: systemctl restart voipmonitor
System Requirements
Hardware Architecture
| Component |
Supported Architectures
|
| Web GUI |
x86 (32-bit and 64-bit) only
|
| Sniffer |
x86, ARMv7, ARMv8/ARM64
|
⚠️ Warning: The GUI does NOT support ARM64/aarch64 architecture. If you need to run on ARM64, deploy the sniffer on ARM and connect it to a GUI running on a separate x86 server.
For ARM64 deployments, use a split architecture:
License Activation
Obtaining a Trial License
Request a 30-day trial license:
- Option 1: Contact VoIPmonitor support
- Option 2: Generate via Members' Area at voipmonitor.org
Activating the License
Online Activation (server has internet):
- Navigate to Settings > License
- Paste the short token into "License token" field
- Click "get/update license key"
Offline Activation (air-gapped server):
- Get full multi-line key from support
- Paste entire key into "License key" field
- Save changes
⚠️ Warning: Using the wrong field causes "Bad Key Content" error. Token = short string, Key = multi-line text.
License File Location
The license is stored in key.php in the GUI root directory (e.g., /var/www/html/voipmonitor/key.php).
Manual License Update
If automatic activation fails:
# Download key from portal: Services > My services
# Copy content to key.php on server
# Verify:
php /var/www/voipmonitor/php/apilicensecheck.php?task=licenseCheck
Channel-Based Licensing
- License is based on maximum concurrent calls (channels)
- Check current usage: Tools > System Status > Concurrent calls
- Grace period: If limit exceeded, GUI locks after 14 days
- See License for detailed information
Post-Installation
Add Sensors (Multi-Sensor Setup)
For distributed deployments with multiple sensors:
- In GUI: Settings > Sensors > Add
- Enter Sensor ID (must match
id_sensor in sniffer config)
- Enter Manager IP and Port (default: 5029)
See Settings#Sensors for detailed configuration.
Distribution-Specific Guides
For detailed step-by-step installation on specific distributions, see:
GUI Configuration Options
Edit config/system_configuration.php to disable features:
define('DISABLE_LIVE_SNIFFER', true); // Remove Live Sniffer menu
define('DISABLE_REGISTER', true); // Disable SIP Register view
define('DISABLE_CDR_SHARE', true); // Disable CDR sharing feature
For additional configuration constants, see GUI_Configuration_PHP.
Troubleshooting
"hwid invalid or corrupted" Error
The GUI cannot read the Hardware ID.
Solution:
"Missing sniffer tables" or "Table 'voipmonitor.cdr' doesn't exist"
The GUI and sniffer are using different databases.
Solution:
- Check GUI database settings in
/var/www/html/voipmonitor/config/configuration.php
- Update sniffer config
/etc/voipmonitor.conf to use the same database
- Restart sniffer:
systemctl restart voipmonitor
⚠️ Warning: Do NOT run schema.sql to "fix" this - the tables already exist in the sniffer's database.
HTTP 500 Errors
- Try a different browser or incognito mode
- Check PHP and web server error logs:
tail -f /var/log/apache2/error.log
# or
tail -f /var/log/nginx/error.log
- Verify IonCube Loader version matches PHP version
- Test PHP with info file:
echo "<?php phpinfo(); ?>" > /var/www/html/info.php
# Then access http://your-server/info.php
ionCube Loader Errors
The ionCube Loader version doesn't match PHP version.
Solution:
- Check PHP version:
php --version
- Download correct IonCube loader from ioncube.com
- Place in PHP extensions directory
- Add to php.ini:
zend_extension = /path/to/ioncube_loader.so
- Restart web server
See Re-install_the_GUI for details.
Database Connection Issues
- Verify MySQL/MariaDB is running:
systemctl status mysql
- Test connection:
mysql -u voipmonitor -p voipmonitor
- Check credentials in GUI configuration
"Crontab log is empty"
The cron job is not configured or not running.
Solution:
# Add cron job
echo "* * * * * root php /var/www/html/voipmonitor/php/run.php cron" >> /etc/crontab
# Test manually
php /var/www/html/voipmonitor/php/run.php cron
License Shows Expired When Valid
The server cannot reach the license validation server.
Diagnostic:
curl -I https://download.voipmonitor.org
Solution: Allow outbound HTTPS (port 443) to download.voipmonitor.org in your firewall.
See Also
AI Summary for RAG
Summary: VoIPmonitor GUI installation guide. Prerequisites: x86 architecture (ARM64 not supported for GUI), PHP 7.4/8.x with ionCube, MySQL/MariaDB, Apache/Nginx. Installation steps: (1) Install packages, (2) Download GUI matching PHP version, (3) Extract to webroot, (4) Run web setup wizard, (5) Add cron job for run.php, (6) Configure sniffer to use same database. Docker/Kubernetes/cloud fully supported. License activation: Online uses "License token" field + click button, Offline uses "License key" field with full multi-line key. Common issues: "hwid invalid" = run chmod +r /dev/root; "Missing sniffer tables" = GUI and sniffer using different databases (fix sniffer config, don't run schema.sql); "Crontab log empty" = add cron job.
Keywords: gui installation, web interface, php installation, ionCube, trial license, license activation, license token, license key, bad key content, hwid invalid, /dev/root, docker, kubernetes, container, arm64, x86, missing sniffer tables, crontab log empty, cdr table missing, cron job, run.php, system_configuration.php, DISABLE_LIVE_SNIFFER
Key Questions:
- How do I install the VoIPmonitor GUI?
- What PHP version do I need for VoIPmonitor GUI?
- Does VoIPmonitor GUI work on ARM64?
- Does VoIPmonitor GUI work in Docker/Kubernetes?
- How do I activate a VoIPmonitor license?
- What is the difference between "License token" and "License key" fields?
- How do I fix "hwid invalid or corrupted" error?
- How do I fix "Missing sniffer tables" error?
- How do I add the GUI cron job?
- Where is the VoIPmonitor license file stored (key.php)?
- How do I disable Live Sniffer in the GUI?