Sniffer installation: Difference between revisions

From VoIPmonitor.org
(Enhance AI Summary with git-based upgrade keywords (upgrade_by_git, git_folder, ARM64/Graviton fixes))
(Undo revision 10318 by Admin (talk))
Tag: Undo
 
(16 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{DISPLAYTITLE:Sniffer Installation Guide}}
{{DISPLAYTITLE:Sniffer Installation Guide}}
Category:Installation
[[Category:Installation]]


'''This guide provides step-by-step instructions for installing the VoIPmonitor sensor (sniffer). The recommended method for all modern Linux distributions is to use the pre-compiled static binary.'''
'''This guide provides step-by-step instructions for installing the VoIPmonitor sensor (sniffer). The recommended method is the pre-compiled static binary.'''


== Understanding VoIPmonitor Components ==
== Understanding VoIPmonitor Components ==


VoIPmonitor consists of two separate components that work together:
VoIPmonitor consists of two separate components:


* '''Sniffer / Sensor''' (This Guide)
{| class="wikitable"
** A static binary that captures and analyzes VoIP traffic
|-
** Runs as a background service on Linux servers
! Component !! Description !! Requirements
** Complete and self-contained - the "static" binary is the full production package
|-
** Does NOT require a web server, PHP, or database to operate on the same machine (it connects to an existing database)
| '''Sniffer / Sensor''' (This Guide) || Static binary that captures and analyzes VoIP traffic. Self-contained - no web server, PHP, or local database required. || Linux (kernel 2.6.18+), root privileges
|-
| '''Web GUI''' || PHP web interface for viewing data and configuration. || Web server (Apache/Nginx), PHP, MySQL/MariaDB. See [[GUI_installation|GUI Installation Guide]]
|}


* '''Web GUI''' (Separate Installation)
{{Tip|The sniffer and GUI are designed to run independently. You can deploy multiple sniffers sending data to a single central GUI, or install both on the same server for small deployments.}}
** A PHP-based web interface for viewing captured data and configuring settings
** Requires a web server (Apache/nginx), PHP, MySQL/MariaDB, and additional dependencies
** The GUI package depends on your PHP version - you must download the version matching your server's PHP
** See [[GUI_installation|GUI Installation Guide]] for complete setup instructions


;Why are these separate?
== Installation Overview ==
The sniffer and web GUI are designed to run independently. You can deploy:
* Multiple sniffers capturing traffic from different locations, all sending data to a single central GUI
* Or install both components on the same server for small deployments
 
The term "Static" in the sniffer package name refers to the binary being self-contained (with embedded libraries), not to the feature set. The static sniffer binary is the complete, recommended production package - there is no separate "full" version.
 
== Overview ==
 
The VoIPmonitor sensor installation process follows these steps:


<kroki lang="plantuml">
<kroki lang="plantuml">
Line 56: Line 46:
</kroki>
</kroki>


== Recommended Method: Static Binary Installation ==
== Step 1: Download the Static Binary ==
A static binary includes all necessary libraries and is the quickest and most reliable way to get the sensor running on any supported Linux distribution with a kernel version of 2.6.18 or newer.


=== Step 1: Download the Correct Archive ===
Download the archive for your system architecture:
First, download the latest stable binary for your system's architecture from the official website.


;For 64-bit (x86_64) Systems (most common):
{| class="wikitable"
<syntaxhighlight lang="bash">
|-
wget https://www.voipmonitor.org/current-stable-sniffer-static-64bit.tar.gz -O voipmonitor-sniffer.tar.gz
! Architecture !! Download Command
</syntaxhighlight>
|-
| '''64-bit (x86_64)''' || <code>wget https://www.voipmonitor.org/current-stable-sniffer-static-64bit.tar.gz -O voipmonitor-sniffer.tar.gz</code>
|-
| '''32-bit (i686)''' || <code>wget https://www.voipmonitor.org/current-stable-sniffer-static-32bit.tar.gz -O voipmonitor-sniffer.tar.gz</code>
|-
| '''ARM (Raspberry Pi)''' || <code>wget https://www.voipmonitor.org/current-stable-sniffer-static-armv6k.tar.gz -O voipmonitor-sniffer.tar.gz</code>
|}


;For 32-bit (i686) Systems:
{{Note|If the primary URL hangs (common on Debian 11/12), use the alternative: <code>wget https://download.voipmonitor.org/current-stable-sniffer-static-64bit.tar.gz</code>}}
<syntaxhighlight lang="bash">
wget https://www.voipmonitor.org/current-stable-sniffer-static-32bit.tar.gz -O voipmonitor-sniffer.tar.gz
</syntaxhighlight>


;For ARMv6/v7 (e.g., Raspberry Pi):
== Step 2: Extract and Install ==
<syntaxhighlight lang="bash">
wget https://www.voipmonitor.org/current-stable-sniffer-static-armv6k.tar.gz -O voipmonitor-sniffer.tar.gz
</syntaxhighlight>


=== Step 2: Extract and Run the Install Script ===
The downloaded archive contains an installation script that automates the setup process.
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# Extract the archive
tar xzf voipmonitor-sniffer.tar.gz
tar xzf voipmonitor-sniffer.tar.gz
cd voipmonitor-*-static
sudo ./install-script.sh
</syntaxhighlight>


# Navigate into the newly created directory
The script installs:
# The 'cd voipmonitor-*' command will work regardless of the exact version number
* Binary to <code>/usr/local/sbin/voipmonitor</code>
cd voipmonitor-*-static
* Config to <code>/etc/voipmonitor.conf</code>
* Service to <code>/etc/init.d/voipmonitor</code>


# Run the installation script with root privileges
{{Note|The service '''always runs as root''' regardless of installation prompts - this is required for packet capture privileges.}}
./install-script.sh
</syntaxhighlight>


The <code>install-script.sh</code> will:
== Step 3: Configure ==
* Copy the <code>voipmonitor</code> binary to <code>/usr/local/sbin/</code>
* Copy the default configuration file to <code>/etc/voipmonitor.conf</code>
* Copy the service startup script to <code>/etc/init.d/voipmonitor</code>
* Attempt to enable the service to start on boot


;Which user account should the service run as?
Edit the configuration file:
If the installation script asks which system user should run the VoIPmonitor sniffer service, you can select any option. The VoIPmonitor capture/sniffer service is '''always configured to run under the root account''', regardless of the choice made during installation. This is necessary for packet capture privileges on the network interface. The systemd service file sets <code>User=root</code> explicitly (see [[Systemd_for_voipmonitor_service_management|systemd guide]] for details).


=== Step 3: Initial Configuration ===
After the installation, you must edit the main configuration file to connect the sensor to your database and set basic parameters.
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
nano /etc/voipmonitor.conf
nano /etc/voipmonitor.conf
</syntaxhighlight>
</syntaxhighlight>


At a minimum, configure your [[Sniffer_configuration#Database_Configuration|database connection settings]] and the [[Sniffer_configuration#Network_Interface_.26_Sniffing|network interface]] to monitor.
Essential settings:


==== Sensor ID Configuration (for Multi-Sensor Deployments) ====
{| class="wikitable"
If you are deploying multiple sniffer instances (either on the same server with multiple network interfaces, or on different servers), you must assign a '''unique sensor ID''' to each instance.
|-
 
! Parameter !! Description !! Example
<syntaxhighlight lang="ini">
|-
# Set a unique numeric identifier (1-65535) for this sensor
| <code>mysqlhost</code> || Database server address || <code>192.168.1.100</code>
id_sensor = 1
|-
</syntaxhighlight>
| <code>mysqldb</code> || Database name || <code>voipmonitor</code>
|-
| <code>mysqluser</code> || Database user || <code>voipmonitor</code>
|-
| <code>mysqlpassword</code> || Database password || <code>secret</code>
|-
| <code>interface</code> || Network interface to monitor || <code>eth0</code>
|-
| <code>id_sensor</code> || Unique ID (1-65535) for multi-sensor deployments || <code>1</code>
|}


* The sensor ID is stored in the <code>cdr.id_sensor</code> database column and allows you to distinguish which sensor captured each call.
For complete configuration options, see [[Sniffer_configuration|Sniffer Configuration Reference]].
* This is '''essential''' in multi-sensor deployments, [[Sniffer_distributed_architecture|distributed architectures]], or when using the [[Sniffer_distributed_architecture#Client-Server_Mode|Client/Server mode]].
* Leave this parameter ''unset'' (default) if you only have a single sensor deployment.


For detailed information, see [[Sniffer_configuration#General_.26_Core_Settings|id_sensor configuration]].
=== System Resource Requirements ===
 
==== System Resource Considerations ====
Before deploying a sniffer on a new server, ensure the server has adequate CPU, RAM, and disk I/O resources for your expected traffic load.


{| class="wikitable"
{| class="wikitable"
Line 129: Line 113:
! Resource !! Recommendation
! Resource !! Recommendation
|-
|-
| '''CPU''' || The main packet capture thread (t0) runs on a single CPU core. A modern Xeon with 2+ cores is recommended for production. Monitor <code>t0CPU</code> usage in logs – if consistently above 90-95%, you may need a faster CPU or additional sensors.
| '''CPU''' || Main capture thread (t0) uses 1 core. Monitor <code>t0CPU</code> - if >90%, consider faster CPU or additional sensors.
|-
|-
| '''RAM''' || Minimum 2-4 GB for small deployments (<500 concurrent calls). For high traffic (2000+ calls), consider 8-16 GB. If MySQL runs on the same server, carefully allocate RAM to avoid [[Sniffer_troubleshooting#Check_for_OOM_.28Out_of_Memory.29_Issues|OOM killer events]].
| '''RAM''' || 2-4 GB for <500 calls; 8-16 GB for 2000+ calls. Account for MySQL if co-located.
|-
|-
| '''Disk I/O''' || If recording audio, ensure adequate disk performance. A standard 7200 RPM SATA drive can handle ~2000 concurrent calls. For higher throughput, use SSD or RAID with WriteBack cache policy.
| '''Disk I/O''' || HDD: ~2000 concurrent calls. SSD/RAID WriteBack for higher throughput.
|-
|-
| '''Storage''' || Plan capacity based on your [[Data_Cleaning|retention policy]]. Estimate space for PCAP files and CDR data based on average call duration and daily call volume.
| '''Storage''' || Plan based on [[Data_Cleaning|retention policy]] and daily call volume.
|}
|}


For detailed performance tuning, refer to the [[Scaling|Scaling and Performance Tuning guide]].
For performance tuning, see [[Scaling|Scaling and Performance Tuning]].


=== Step 4: Service Management (systemd) ===
== Step 4: Start the Service ==
Modern Linux distributions use <code>systemd</code> to manage services. Use the following commands to control the sniffer:


;Start the service:
<syntaxhighlight lang="bash">
:<syntaxhighlight lang="bash">systemctl start voipmonitor</syntaxhighlight>
systemctl start voipmonitor
;Stop the service:
systemctl enable voipmonitor
:<syntaxhighlight lang="bash">systemctl stop voipmonitor</syntaxhighlight>
</syntaxhighlight>
;Check the service status:
 
:<syntaxhighlight lang="bash">systemctl status voipmonitor</syntaxhighlight>
Other commands: <code>systemctl stop voipmonitor</code>, <code>systemctl status voipmonitor</code>
;Enable the service to start automatically on boot:
:<syntaxhighlight lang="bash">systemctl enable voipmonitor</syntaxhighlight>


For a more detailed <code>systemd</code> service file template and advanced options, please see the [[Systemd_for_voipmonitor_service_management|systemd guide]].
For advanced systemd configuration, see [[Systemd_for_voipmonitor_service_management|systemd Service Management]].


=== Step 5: Verification ===
== Step 5: Verify ==
After starting the service, verify that it is running correctly and capturing traffic:


;1. Check service status:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# Check service status
systemctl status voipmonitor
systemctl status voipmonitor
</syntaxhighlight>
You should see <code>Active: active (running)</code>.


;2. Monitor live logs for traffic capture statistics:
# Monitor live logs
<syntaxhighlight lang="bash">
journalctl -u voipmonitor -f
journalctl -u voipmonitor -f
</syntaxhighlight>
</syntaxhighlight>
Look for periodic output like <code>calls[X][Y] PS[...] SQLq[0]</code> to confirm the sensor is detecting traffic on the configured network interface.


For additional troubleshooting if the sensor is not capturing calls, see [[Sniffer_troubleshooting|Sniffer Troubleshooting]].
Look for output like <code>calls[X][Y] PS[...] SQLq[0]</code> confirming traffic capture.


=== Troubleshooting Download Issues ===
If no calls appear, see [[Sniffer_troubleshooting|Sniffer Troubleshooting]].
If the primary download URL hangs or fails (especially on Debian 11/12), this is often caused by issues with the chain of redirects to SourceForge mirrors. In such cases, use the alternative direct download link that bypasses the redirects:


;Alternative direct download for 64-bit systems:
== Downloading Specific Versions ==
<syntaxhighlight lang="bash">
wget https://download.voipmonitor.org/current-stable-sniffer-static-64bit.tar.gz
</syntaxhighlight>


;Alternative direct download for 32-bit systems:
For specific versions or automation:
<syntaxhighlight lang="bash">
wget https://download.voipmonitor.org/current-stable-sniffer-static-32bit.tar.gz
</syntaxhighlight>


;Alternative direct download for ARMv6/v7:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
wget https://download.voipmonitor.org/current-stable-sniffer-static-armv6k.tar.gz
# Specific version (replace VERSION, e.g., 2025.07.1)
</syntaxhighlight>
wget https://download.voipmonitor.org/sniffer-develop/voipmonitor-amd64-VERSION-static.tar.gz


==== Downloading Specific Versions ===
# Example
 
If you need a specific version of the sniffer (e.g., `2025.07.1`), you can download it directly using the version number:
 
;For 64-bit AMD64:
<syntaxhighlight lang="bash">
wget https://download.voipmonitor.org/sniffer-develop/voipmonitor-amd64-VERSION-static.tar.gz
# Example:
wget https://download.voipmonitor.org/sniffer-develop/voipmonitor-amd64-2025.07.1-static.tar.gz
wget https://download.voipmonitor.org/sniffer-develop/voipmonitor-amd64-2025.07.1-static.tar.gz
</syntaxhighlight>


;For 32-bit i686:
# Historical releases with SS7 module
<syntaxhighlight lang="bash">
wget https://sourceforge.net/projects/voipmonitor/files/20.4/voipmonitor-wireshark-amd64-20.4.4-static.tar.gz/download -O voipmonitor-sniffer.tar.gz
wget https://download.voipmonitor.org/sniffer-develop/voipmonitor-i686-VERSION-static.tar.gz
</syntaxhighlight>
</syntaxhighlight>


;For ARMv6/v7:
Direct download URLs work without portal login - ideal for automation, CI/CD, Ansible, Puppet, etc.
<syntaxhighlight lang="bash">
wget https://download.voipmonitor.org/sniffer-develop/voipmonitor-armv6k-VERSION-static.tar.gz
</syntaxhighlight>


Replace <code>VERSION</code> with the desired version number (e.g., `2025.07.1`, `2025.06.1`, etc.).
== Advanced Installation ==


This alternative URL provides a direct download from voipmonitor.org, avoiding the redirect chain and potential SourceForge-related issues.
=== Legacy OS (CentOS 6, older glibc) ===


== Advanced & Special Installation Cases ==
# Download the '''oldest available''' binary from the [https://www.voipmonitor.org/download-sniffer download page] (better glibc compatibility)
# If GUI shows ionCube errors, install the "Linux glibc2.4 (64 bits)" loader from [https://www.ioncube.com/loaders.php ioncube.com]


=== Installing on Legacy OS Versions (CentOS 6, Older Distributions) ===
=== Manual Development Build Upgrade ===


For legacy operating systems like CentOS 6.9 or distributions with older glibc versions, newer static binaries may have compatibility issues. If you encounter problems with the latest binary, follow these steps:
;<code>Step 1:</code> Determine your system's architecture:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
uname -a
</syntaxhighlight>
Look for <code>x86_64</code> (64-bit) or <code>i686</code> (32-bit) in the output.
;<code>Step 2:</code> Download the '''oldest available''' sniffer binary for your architecture from the [https://www.voipmonitor.org/download-sniffer VoIPmonitor download page] rather than the latest version. Older binaries are more likely to be compatible with older glibc libraries.
<pre>
# Example: Find the oldest stable version in the 64-bit category
# Download from the official download page and extract as normal
</pre>
;<code>Step 3:</code> Proceed with extraction and installation as described in Step 2 above.
;<code>Step 4:</code> If you are also installing the GUI on the same legacy system and encounter <code>Error: The ionCube Loader is not installed correctly</code> or ioncube-related PHP errors:
:* Download the '''"Linux glibc2.4 (64 bits)"''' legacy ionCube loader from the [https://www.ioncube.com/loaders.php official ionCube website]
:* Extract and install it according to the ionCube installation instructions for your PHP version
:* Verify the loader is correctly installed by running:
<syntaxhighlight lang="bash">
php --version
</syntaxhighlight>
You should see the ionCube PHP Loader line listed without any error messages.
=== Installing a Specific or Older Version ===
If you need a specific version (e.g., one that includes the Wireshark SS7 module), you can find historical releases on the [https://sourceforge.net/projects/voipmonitor/files/ VoIPmonitor SourceForge page].
Copy the download link for the desired file and use it with the <code>wget</code> command from Step 1.
;Example for version 20.4.4 with the SS7 module:
<syntaxhighlight lang="bash">
wget https://sourceforge.net/projects/voipmonitor/files/20.4/voipmonitor-wireshark-amd64-20.4.4-static.tar.gz/download -O voipmonitor-sniffer.tar.gz
</syntaxhighlight>
Then proceed with the extraction and installation as described above.
=== Installing a Development Build (Manual Upgrade) ===
If instructed by the support team, you can manually upgrade to a new development build.
<syntaxhighlight lang="bash">
# Create a temporary directory and download the new build
mkdir /tmp/new-sniffer && cd /tmp/new-sniffer
mkdir /tmp/new-sniffer && cd /tmp/new-sniffer
wget https://download.voipmonitor.org/some-development-build.tar.gz -O sniffer.tar.gz
wget https://download.voipmonitor.org/some-development-build.tar.gz -O sniffer.tar.gz
tar xzf sniffer.tar.gz
tar xzf sniffer.tar.gz


# Stop the current service and back up the old binary
systemctl stop voipmonitor
systemctl stop voipmonitor
mv /usr/local/sbin/voipmonitor /usr/local/sbin/voipmonitor.backup
mv /usr/local/sbin/voipmonitor /usr/local/sbin/voipmonitor.backup
# Copy the new binary into place and start the service
cp voipmonitor-*-static/voipmonitor /usr/local/sbin/voipmonitor
cp voipmonitor-*-static/voipmonitor /usr/local/sbin/voipmonitor
systemctl start voipmonitor
systemctl start voipmonitor
</syntaxhighlight>
</syntaxhighlight>


=== Compiling from Source ===
=== Compiling from Source (ARM64/Special Cases) ===
For developers or special use cases, you can compile the sniffer from its source code. This is '''not''' the recommended method for most users.


;Clone the master branch (stable):
{{Note|Only for developers or when static binary is unavailable (e.g., ARM64/aarch64).}}
:<syntaxhighlight lang="bash">git clone https://github.com/voipmonitor/sniffer.git</syntaxhighlight>
;Or clone the develop branch (latest features):
:<syntaxhighlight lang="bash">git clone -b develop https://github.com/voipmonitor/sniffer.git</syntaxhighlight>


Then follow the instructions in the <code>README</code> file within the repository.
==== Example: Compiling from Source on Debian 12 (e.g., for ARM64) ====
;1. Install required dependencies:
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# Install dependencies (Debian 12)
apt install git make g++ unixodbc-dev libvorbis-dev libmp3lame-dev libmpg123-dev \
apt install git make g++ unixodbc-dev libvorbis-dev libmp3lame-dev libmpg123-dev \
     libpcap-dev libssl-dev libsnappy-dev libcurl4-openssl-dev libicu-dev libpng-dev \
     libpcap-dev libssl-dev libsnappy-dev libcurl4-openssl-dev libicu-dev libpng-dev \
Line 290: Line 197:
     libmariadb-dev-compat libmariadb-dev libzstd-dev liblz4-dev liblzma-dev \
     libmariadb-dev-compat libmariadb-dev libzstd-dev liblz4-dev liblzma-dev \
     liblzo2-dev gnutls-dev libgcrypt-dev libgoogle-perftools-dev
     liblzo2-dev gnutls-dev libgcrypt-dev libgoogle-perftools-dev
</syntaxhighlight>


;2. Clone and compile:
# Clone and compile
<syntaxhighlight lang="bash">
cd /usr/src
cd /usr/src
git clone https://github.com/voipmonitor/sniffer.git
git clone https://github.com/voipmonitor/sniffer.git
Line 299: Line 204:
./configure
./configure
make
make
</syntaxhighlight>
;3. Install the compiled binary:
<syntaxhighlight lang="bash">
# Back up the existing static binary if present
mv /usr/local/sbin/voipmonitor /usr/local/sbin/voipmonitor.static


# Install the newly compiled binary
# Install
mv /usr/local/sbin/voipmonitor /usr/local/sbin/voipmonitor.static  # backup if exists
mv /usr/src/sniffer/voipmonitor /usr/local/sbin/voipmonitor
mv /usr/src/sniffer/voipmonitor /usr/local/sbin/voipmonitor
systemctl restart voipmonitor
</syntaxhighlight>
</syntaxhighlight>


;4. (Optional) Enable automatic upgrades via git:
For automatic git-based upgrades, add to <code>/etc/voipmonitor.conf</code>:
Add the following to <code>/etc/voipmonitor.conf</code>:
<syntaxhighlight lang="ini">
<syntaxhighlight lang="ini">
upgrade_by_git = yes
upgrade_by_git = yes
git_folder = /usr/src/sniffer
git_folder = /usr/src/sniffer
</syntaxhighlight>
;5. Restart the service:
<syntaxhighlight lang="bash">
systemctl restart voipmonitor
</syntaxhighlight>
</syntaxhighlight>


== Uninstallation ==
== Uninstallation ==
To completely remove the VoIPmonitor sensor from a system, follow these steps.


=== For systemd-based Systems (Recommended) ===
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
# 1. Stop and disable the service
systemctl stop voipmonitor
systemctl stop voipmonitor
systemctl disable voipmonitor
systemctl disable voipmonitor
# 2. Remove the service files and binary
rm -f /etc/systemd/system/voipmonitor.service
rm -f /etc/systemd/system/voipmonitor.service
rm -f /etc/init.d/voipmonitor
rm -f /etc/init.d/voipmonitor
rm -f /usr/local/sbin/voipmonitor
rm -f /usr/local/sbin/voipmonitor
# 3. Reload systemd to apply changes
systemctl daemon-reload
systemctl daemon-reload
# 4. (Optional) Back up and remove the configuration file
mv /etc/voipmonitor.conf /etc/voipmonitor.conf.backup
mv /etc/voipmonitor.conf /etc/voipmonitor.conf.backup
# 5. (Optional) Delete the spool directory (contains all captured data)
# WARNING: This is irreversible!
# rm -rf /var/spool/voipmonitor
</syntaxhighlight>
</syntaxhighlight>


=== For Older SysV-based Systems ===
{{Warning|1='''Spool directory contains PCAP files and recordings!''' Only delete if you no longer need this data: <code>rm -rf /var/spool/voipmonitor</code>}}
Run the following commands to stop the service and remove its files:
<syntaxhighlight lang="bash">
/etc/init.d/voipmonitor stop
update-rc.d voipmonitor remove
rm -f /etc/init.d/voipmonitor
rm -f /usr/local/sbin/voipmonitor
mv /etc/voipmonitor.conf /etc/voipmonitor.conf.backup
</syntaxhighlight>


== See Also ==
== See Also ==
* [[Sniffer_configuration|Sniffer Configuration Reference]]
* [[Sniffer_configuration|Sniffer Configuration Reference]]
* [[Sniffer_troubleshooting|Sniffer Troubleshooting]]
* [[Sniffer_troubleshooting|Sniffer Troubleshooting]]
Line 366: Line 241:


== AI Summary for RAG ==
== AI Summary for RAG ==
'''Summary:''' Step-by-step guide for installing the VoIPmonitor sensor (sniffer) using pre-compiled static binaries. The process involves: downloading the correct archive for your architecture (64-bit, 32-bit, ARM), extracting and running <code>install-script.sh</code>, configuring <code>/etc/voipmonitor.conf</code> (database, network interface, id_sensor for multi-sensor deployments), and managing the service with systemctl. For legacy systems (CentOS 6, older glibc): check architecture with <code>uname -a</code>, download the '''oldest available''' binary for better compatibility, and use the "Linux glibc2.4" ionCube loader if installing GUI on legacy systems. Includes system resource requirements, verification steps, alternative download URLs for when primary links fail, compiling from source for ARM64/Debian 12, and complete uninstallation procedures. When compiling from source (especially for ARM64, Graviton, or Raspberry Pi), you can enable automatic git-based updates by adding <code>upgrade_by_git = yes</code> and <code>git_folder = /usr/src/sniffer</code> to your configuration file.
 
'''Keywords:''' install, installation, setup, sniffer, sensor, static binary, install-script.sh, download, wget, tar.gz, systemd, systemctl, id_sensor, multi-sensor, compile from source, git, git_folder, upgrade_by_git, ARM64, aarch64, Graviton, Raspberry Pi, Debian 12, 32-bit, 64-bit, uninstall, remove, CentOS 6, legacy, older systems, glibc, old binary, oldest available, ionCube loader, glibc2.4, php --version, x86_64, i686, uname -a
'''Summary:''' Step-by-step guide for installing VoIPmonitor sensor (sniffer) using pre-compiled static binaries. Process: download correct archive for architecture (64-bit, 32-bit, ARM), run <code>install-script.sh</code>, configure <code>/etc/voipmonitor.conf</code> (database, interface, id_sensor), start with systemctl. Service always runs as root. Direct download URLs (<code>https://download.voipmonitor.org/...</code>) work without login for automation. Covers system requirements (CPU t0 thread, RAM 2-16GB based on call volume, disk I/O), specific version downloads, legacy OS compatibility, compiling from source for ARM64, and uninstallation.
 
'''Keywords:''' install, installation, sniffer, sensor, static binary, install-script.sh, download, wget, systemd, systemctl, id_sensor, multi-sensor, ARM64, aarch64, Raspberry Pi, compile from source, git, upgrade_by_git, uninstall, CentOS 6, legacy, automation, CI/CD, direct download
 
'''Key Questions:'''
'''Key Questions:'''
* How do I install the VoIPmonitor sniffer on a legacy CentOS 6 system?
* Which sniffer binary should I use for older operating systems?
* How do I check if my system is 32-bit or 64-bit?
* What do I do if the ionCube Loader is not installed correctly on a legacy system?
* How do I install the VoIPmonitor sniffer?
* How do I install the VoIPmonitor sniffer?
* Where can I download the sensor static binary?
* Where can I download the sensor static binary?
Line 379: Line 253:
* How do I start and enable the voipmonitor service?
* How do I start and enable the voipmonitor service?
* What if the download URL hangs or fails?
* What if the download URL hangs or fails?
* How do I compile from source on Debian 12 or ARM64?
* How do I install on legacy CentOS 6?
* How do I enable automatic git-based upgrades after compiling from source?
* How do I compile from source on ARM64?
* What is upgrade_by_git and git_folder?
* How do I uninstall VoIPmonitor?
* How do I fix ARM sniffer running out of RAM despite having enough memory?
* What are the direct download URLs for automation?
* How do I uninstall VoIPmonitor completely?

Latest revision as of 11:18, 9 January 2026


This guide provides step-by-step instructions for installing the VoIPmonitor sensor (sniffer). The recommended method is the pre-compiled static binary.

Understanding VoIPmonitor Components

VoIPmonitor consists of two separate components:

Component Description Requirements
Sniffer / Sensor (This Guide) Static binary that captures and analyzes VoIP traffic. Self-contained - no web server, PHP, or local database required. Linux (kernel 2.6.18+), root privileges
Web GUI PHP web interface for viewing data and configuration. Web server (Apache/Nginx), PHP, MySQL/MariaDB. See GUI Installation Guide

💡 Tip: The sniffer and GUI are designed to run independently. You can deploy multiple sniffers sending data to a single central GUI, or install both on the same server for small deployments.

Installation Overview

Step 1: Download the Static Binary

Download the archive for your system architecture:

Architecture Download Command
64-bit (x86_64) wget https://www.voipmonitor.org/current-stable-sniffer-static-64bit.tar.gz -O voipmonitor-sniffer.tar.gz
32-bit (i686) wget https://www.voipmonitor.org/current-stable-sniffer-static-32bit.tar.gz -O voipmonitor-sniffer.tar.gz
ARM (Raspberry Pi) wget https://www.voipmonitor.org/current-stable-sniffer-static-armv6k.tar.gz -O voipmonitor-sniffer.tar.gz

ℹ️ Note: If the primary URL hangs (common on Debian 11/12), use the alternative: wget https://download.voipmonitor.org/current-stable-sniffer-static-64bit.tar.gz

Step 2: Extract and Install

tar xzf voipmonitor-sniffer.tar.gz
cd voipmonitor-*-static
sudo ./install-script.sh

The script installs:

  • Binary to /usr/local/sbin/voipmonitor
  • Config to /etc/voipmonitor.conf
  • Service to /etc/init.d/voipmonitor

ℹ️ Note: The service always runs as root regardless of installation prompts - this is required for packet capture privileges.

Step 3: Configure

Edit the configuration file:

nano /etc/voipmonitor.conf

Essential settings:

Parameter Description Example
mysqlhost Database server address 192.168.1.100
mysqldb Database name voipmonitor
mysqluser Database user voipmonitor
mysqlpassword Database password secret
interface Network interface to monitor eth0
id_sensor Unique ID (1-65535) for multi-sensor deployments 1

For complete configuration options, see Sniffer Configuration Reference.

System Resource Requirements

Resource Recommendation
CPU Main capture thread (t0) uses 1 core. Monitor t0CPU - if >90%, consider faster CPU or additional sensors.
RAM 2-4 GB for <500 calls; 8-16 GB for 2000+ calls. Account for MySQL if co-located.
Disk I/O HDD: ~2000 concurrent calls. SSD/RAID WriteBack for higher throughput.
Storage Plan based on retention policy and daily call volume.

For performance tuning, see Scaling and Performance Tuning.

Step 4: Start the Service

systemctl start voipmonitor
systemctl enable voipmonitor

Other commands: systemctl stop voipmonitor, systemctl status voipmonitor

For advanced systemd configuration, see systemd Service Management.

Step 5: Verify

# Check service status
systemctl status voipmonitor

# Monitor live logs
journalctl -u voipmonitor -f

Look for output like calls[X][Y] PS[...] SQLq[0] confirming traffic capture.

If no calls appear, see Sniffer Troubleshooting.

Downloading Specific Versions

For specific versions or automation:

# Specific version (replace VERSION, e.g., 2025.07.1)
wget https://download.voipmonitor.org/sniffer-develop/voipmonitor-amd64-VERSION-static.tar.gz

# Example
wget https://download.voipmonitor.org/sniffer-develop/voipmonitor-amd64-2025.07.1-static.tar.gz

# Historical releases with SS7 module
wget https://sourceforge.net/projects/voipmonitor/files/20.4/voipmonitor-wireshark-amd64-20.4.4-static.tar.gz/download -O voipmonitor-sniffer.tar.gz

Direct download URLs work without portal login - ideal for automation, CI/CD, Ansible, Puppet, etc.

Advanced Installation

Legacy OS (CentOS 6, older glibc)

  1. Download the oldest available binary from the download page (better glibc compatibility)
  2. If GUI shows ionCube errors, install the "Linux glibc2.4 (64 bits)" loader from ioncube.com

Manual Development Build Upgrade

mkdir /tmp/new-sniffer && cd /tmp/new-sniffer
wget https://download.voipmonitor.org/some-development-build.tar.gz -O sniffer.tar.gz
tar xzf sniffer.tar.gz

systemctl stop voipmonitor
mv /usr/local/sbin/voipmonitor /usr/local/sbin/voipmonitor.backup
cp voipmonitor-*-static/voipmonitor /usr/local/sbin/voipmonitor
systemctl start voipmonitor

Compiling from Source (ARM64/Special Cases)

ℹ️ Note: Only for developers or when static binary is unavailable (e.g., ARM64/aarch64).

# Install dependencies (Debian 12)
apt install git make g++ unixodbc-dev libvorbis-dev libmp3lame-dev libmpg123-dev \
    libpcap-dev libssl-dev libsnappy-dev libcurl4-openssl-dev libicu-dev libpng-dev \
    libjpeg-dev libfftw3-dev libjson-c-dev librrd-dev libglib2.0-dev libxml2-dev \
    libmariadb-dev-compat libmariadb-dev libzstd-dev liblz4-dev liblzma-dev \
    liblzo2-dev gnutls-dev libgcrypt-dev libgoogle-perftools-dev

# Clone and compile
cd /usr/src
git clone https://github.com/voipmonitor/sniffer.git
cd sniffer
./configure
make

# Install
mv /usr/local/sbin/voipmonitor /usr/local/sbin/voipmonitor.static  # backup if exists
mv /usr/src/sniffer/voipmonitor /usr/local/sbin/voipmonitor
systemctl restart voipmonitor

For automatic git-based upgrades, add to /etc/voipmonitor.conf:

upgrade_by_git = yes
git_folder = /usr/src/sniffer

Uninstallation

systemctl stop voipmonitor
systemctl disable voipmonitor
rm -f /etc/systemd/system/voipmonitor.service
rm -f /etc/init.d/voipmonitor
rm -f /usr/local/sbin/voipmonitor
systemctl daemon-reload
mv /etc/voipmonitor.conf /etc/voipmonitor.conf.backup

⚠️ Warning: Spool directory contains PCAP files and recordings! Only delete if you no longer need this data: rm -rf /var/spool/voipmonitor

See Also

AI Summary for RAG

Summary: Step-by-step guide for installing VoIPmonitor sensor (sniffer) using pre-compiled static binaries. Process: download correct archive for architecture (64-bit, 32-bit, ARM), run install-script.sh, configure /etc/voipmonitor.conf (database, interface, id_sensor), start with systemctl. Service always runs as root. Direct download URLs (https://download.voipmonitor.org/...) work without login for automation. Covers system requirements (CPU t0 thread, RAM 2-16GB based on call volume, disk I/O), specific version downloads, legacy OS compatibility, compiling from source for ARM64, and uninstallation.

Keywords: install, installation, sniffer, sensor, static binary, install-script.sh, download, wget, systemd, systemctl, id_sensor, multi-sensor, ARM64, aarch64, Raspberry Pi, compile from source, git, upgrade_by_git, uninstall, CentOS 6, legacy, automation, CI/CD, direct download

Key Questions:

  • How do I install the VoIPmonitor sniffer?
  • Where can I download the sensor static binary?
  • How do I configure id_sensor for multi-sensor deployments?
  • What are the CPU and RAM requirements?
  • How do I start and enable the voipmonitor service?
  • What if the download URL hangs or fails?
  • How do I install on legacy CentOS 6?
  • How do I compile from source on ARM64?
  • How do I uninstall VoIPmonitor?
  • What are the direct download URLs for automation?