Before you Compile ntopng
-------------------------

If you want to use binary packages instead of compiling ntopng from source you can
download them for various platforms at http://packages.ntop.org/

Prerequisites for Compilation
-----------------------------

Prerequisites
- glib2
- GNU autotools/libtool
- libmaxminddb
- libpcap-dev and PF_RING (optional but recommended)
- redis (redis server) 2.2 or newer
- wget (for 'make geoip')
- libxml2-dev
- libglib2.0-dev
- libsqlite3-dev
- libcurl-dev
- libmysqlclient-dev
- uglify-es
- npm (optional - JS/CSS compilation)

On Ubuntu/Debian
~~~~~~~~~~~~~~~~

apt-get install build-essential git bison flex libxml2-dev libpcap-dev libtool libtool-bin rrdtool librrd-dev autoconf pkg-config automake autogen redis-server wget libsqlite3-dev libhiredis-dev libmaxminddb-dev libcurl4-openssl-dev libpango1.0-dev libcairo2-dev libnetfilter-queue-dev zlib1g-dev libssl-dev libcap-dev libnetfilter-conntrack-dev libreadline-dev libjson-c-dev libldap2-dev rename libsnmp-dev libexpat1-dev libmaxminddb-dev libradcli-dev libjson-c-dev libzmq3-dev


If you plan to manipulate javascript you also need to do
- apt-get install npm 
- npm install -g uglify-es
- npm install -g clean-css-cli

If you plan to build packages you should also install:
- apt install debhelper dpkg-sig dkms

If you plan to build ntopng dependencies you should also install:
- apt install libzstd-dev cmake librdkafka-dev libbpfcc-dev libjson-c-dev


On Ubuntu16/18
~~~~~~~~~~~~~~

You also need to do "apt-get install libtool-bin"
You can decide to use MariaDB (instead of MySQL) do "apt-get install libmariadb-client-lgpl-dev" instead.

On Ubuntu20
~~~~~~~~~~~~~~

You also need to do "apt-get install libmariadbclient-dev libzmq3-dev"

On Ubuntu22
~~~~~~~~~~~~~~

You need to do "apt-get install libmariadb-dev"

On Debian 9/10/11/12
~~~~~~~~~~~~~~~~~~~~

You need to do add the `contrib` component to /etc/apt/sources.list entries, then

apt-get install libpng-dev libzmq5-dev default-libmysqlclient-dev libgcrypt20-dev

On Other Debian
~~~~~~~~~~~~~~~

apt-get install libmysqlclient-dev libzmq3-dev libgcrypt20-dev

On Raspbian 10
~~~~~~~~~~~~~~

apt-get install libmariadb-dev libzmq3-dev

On CentOS Stream (8)
~~~~~~~~~~~~~~~~~~~~

dnf install http://rpms.remirepo.net/enterprise/remi-release-8.rpm
dnf config-manager --set-enabled powertools
dnf config-manager --set-enabled remi
dnf group install "Development Tools"
dnf clean all
dnf update
dnf install openldap-devel libpcap-devel openssl-devel libcurl-devel libmaxminddb-devel sqlite-devel mysql-devel radcli-devel librdkafka-devel libcap-devel zeromq-devel rrdtool-devel json-c-devel expect hiredis-devel readline-devel expat-devel npm net-snmp-devel
npm install -g uglify-es

On CentOS/Rocky 8
~~~~~~~~~~~~~~~~~

dnf group install "Development Tools"
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm
Set "enabled=1" in file /etc/yum.repos.d/CentOS-PowerTools.repo [CentOS]
Set "enabled=1" in file /etc/yum.repos.d/Rocky-PowerTools.repo  [Rocky]
yum install http://rpms.remirepo.net/enterprise/remi-release-8.rpm
yum config-manager --set-enabled remi
yum clean all
yum update
yum install openldap-devel libpcap-devel openssl-devel libcurl-devel libmaxminddb-devel sqlite-devel mysql-devel radcli-devel librdkafka-devel libcap-devel zeromq-devel rrdtool-devel json-c-devel expect expat-devel npm net-snmp-devel
npm install -g uglify-es

Then list the streams which provide Redis (dnf module list redis) and install it. For example, to install it from stream 5 run: sudo dnf module install redis:5

yum install hiredis-devel


On Rocky 9
~~~~~~~~~~~~~~~~~
dnf group install "Development Tools"
dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm
yum install http://rpms.remirepo.net/enterprise/remi-release-9.rpm
yum config-manager --set-enabled remi
dnf config-manager --set-enabled crb
yum clean all
yum install openldap-devel libpcap-devel openssl-devel libcurl-devel libmaxminddb-devel sqlite-devel mysql-devel radcli-devel librdkafka-devel libcap-devel zeromq-devel rrdtool-devel json-c-devel expect expat-devel npm numactl-devel net-snmp-devel
yum update
npm install -g uglify-es


On Fedora 30/31/32
~~~~~~~~~~~~~~~~~~

dnf install libtool m4
dnf install autoconf automake
dnf group install "Development Tools"
dnf install libpcap-devel openssl-devel libcurl-devel libmaxminddb-devel sqlite-devel mariadb-devel radcli-devel librdkafka-devel libcap-devel zeromq-devel rrdtool-devel json-c-devel expect readline-devel net-snmp-devel
dnf install redis

On (Older) Fedora/CentOS 6-7
~~~~~~~~~~~~~~~~~~~~~~~~~~~~

yum groupinstall "Development tools"
yum install git autoconf automake autogen bison flex libpcap-devel libmaxminddb-devel hiredis-devel redis glib2-devel libxml2-devel sqlite-devel gcc-c++ libtool wget libcurl-devel pango-devel cairo-devel libpng-devel mysql-devel libnetfilter_queue-devel zlib-devel which libcap-devel readline-devel zeromq-devel json-c-devel net-snmp-devel

On MacOS
~~~~~~~~

Using Brew (http://brew.sh):

brew install redis hiredis autoconf automake libtool rrdtool wget pkg-config git mysql json-c libmaxminddb zmq openssl

Using MacPorts:

sudo port install redis hiredis autoconf automake libtool rrdtool wget pkgconfig git openssl zlib json-c libmaxminddb zmq libgcrypt

On FreeBSD
~~~~~~~~~~

sudo pkg install gcc git autoconf automake libtool pkgconf gmake sudo libmaxminddb libsodium mysql56-client rrdtool lua53 zip json-c libzmq4 sqlite3 libgcrypt librdkafka bison flex libpcap rename cmake redis hiredis

On OpenSuse
~~~~~~~~~~~

zypper install flex bison libpcap-devel libmaxminddb-devel libsqlite3-0-devel sqlite3-devel libmysqlclient-devel czmq-devel

On Windows
~~~~~~~~~~

You can download the Redis server from
https://github.com/rgl/redis/downloads

Additional Notes
~~~~~~~~~~~~~~~~

Compilation of Javascript/CSS scripts to produce httpdocs/dist require npm and the installation of 
npm packages defined in package.json (devDependencies). npm 12 or later is required and can be installed
by configuring the repository:

curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
sudo apt install -y nodejs npm
npm rebuild node-sass

Installation of the required npm packages:

npm install --save-dev @babel/core
jq -c '.devDependencies' package.json | jq -r -M | grep ':' | sed 's/:/@/' | sed 's|[", ^]||g' | xargs -L1 npm install --save-dev 

Building JS/CSS in dist:

npm run build:dev

ZMQ Version
~~~~~~~~~~~

You can use ZMQ 4.x as alternative to 3.x (but not 2.x)

Source Code Compilation
-----------------------

Once you have installed all the prerequisites do

cd <compilation directory>
git clone https://github.com/ntop/nDPI.git
cd nDPI; ./autogen.sh; ./configure; make; cd ..
git clone https://github.com/ntop/ntopng.git
cd ntopng
./autogen.sh
./configure
make

Binary Packages
---------------

Debian/CentOS/Rocky/Windows/MacOS/Raspberry 
Go to http://packages.ntop.org

