LibreNMS is an auto discovering PHP/MySQL/SNMP based network monitoring which includes support for a wide range of network hardware and operating systems including Cisco, Linux, FreeBSD, Juniper, Brocade, Foundry, HP and many more. To install LibreNMS on Debian 10 Buster, follow the following steps.

Step 1: Install Required Packages

We need to install all dependency packages required by LibreNMS to function.

sudo apt install software-properties-common
sudo apt update && sudo apt -y upgrade
sudo apt install nginx
sudo apt install curl acl composer fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap python-memcache python-mysqldb rrdtool snmp snmpd whois

Step 2: Install PHP and required extensions

Use the guide below to install PHP 7.3 and PHP Extensions on your server

How To Install PHP / PHP on Debian 10 Buster

Step 3: Add librenms user to the system

Run the following commands on your Debian 10 terminal to add librenms user.

sudo useradd librenms -d /opt/librenms -M -r
sudo usermod -aG librenms www-data

Step 4: Clone LibreNMS from git

Let us now download LibreNMS files into our server using git.

cd /opt
sudo git clone https://github.com/librenms/librenms.git

Step 5: Set Requisite Permissions on LibreNMS Directories

LibreNMS user requires special rights on the directories and files it is going to access. Set them by running the commands below

sudo chown -R librenms:librenms /opt/librenms
sudo chmod 770 /opt/librenms
sudo setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
sudo setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/

Step 6: Install PHP dependencies

Run the commands below to install all dependencies required by PHP on your Debian 10 server. This might take a while to complete.

sudo su - librenms
./scripts/composer_wrapper.php install --no-dev
exit

You should see an output similar to the one below

<img alt="" data-ezsrc="https://kirelos.com/wp-content/uploads/2020/02/echo/LibreNMS-PHP-dependencies.png" data-ez ezimgfmt="rs rscb5 src ng ngcb5 srcset" height="375" src="data:image/svg xml,” width=”659″>

Step 7: Database Configuration

We installed MariaDB in step 1. Let us proceed to create a database for LibreNMS.

Login to your Database

sudo systemctl enable mysql
sudo systemctl restart mysql
sudo mysql -u root -p

Create Database and librenms user

 CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
 CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'SafePassWord'; ## Make it Strong
 GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
 FLUSH PRIVILEGES;
 exit

Open MariaDB file and add the lines below under [mysqld] section

sudo vim /etc/mysql/mariadb.conf.d/50-server.cnf

Add the following under [mysqld]

[mysql]
........
innodb_file_per_table=1
lower_case_table_names=0

Restart MariaDB

sudo systemctl restart mysql

Step 8: Configure PHP-FPM

Let us ensure date.timezone is set in php.ini to a preferred time zone.

sudo vim /etc/php/7.3/fpm/php.ini

Under [Date] uncomment the date.timezone line and add your timezone.

  [Date]
 ; Defines the default timezone used by the date functions
 ; http://php.net/date.timezone
 date.timezone = Africa/Nairobi ## Place your time zone here
sudo vim /etc/php/7.3/cli/php.ini

Like above, under [Date] uncomment the date.timezone line and add your timezone.

 [Date]
 ; Defines the default timezone used by the date functions
 ; http://php.net/date.timezone
 date.timezone = Africa/Nairobi   ## Place your time zone here 

Restart PHP-FPM

sudo systemctl restart php7.3-fpm

Step 9: Configure Nginx Webserver

Since we chose Nginx as our preferred web server, it is time to add configurations so that we start serving LibreNMS pages.

Delete the default page that loads up after fresh installation of Nginx

sudo rm /etc/nginx/sites-enabled/default

Create a config file under conf.d directory and add the following in it

sudo vim /etc/nginx/conf.d/libreconfig.conf
server {
  listen      80;
  server_name example.com;         ## Input your Server name here.
  root        /opt/librenms/html;
  index       index.php;
 charset utf-8;
  gzip on;
  gzip_types text/css application/javascript text/javascript application/x-javascript image/svg xml text/plain text/xsd text/xsl text/xml image/x-icon; 
  location / {
   try_files $uri $uri/ /index.php?$query_string;
  }
  location /api/v0 {
   try_files $uri $uri/ /api_v0.php?$query_string;
  }
  location ~ .php {
   include fastcgi.conf;
   fastcgi_split_path_info ^(. .php)(/. )$;
   fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
  }
  location ~ /.ht {
   deny all;
  }
 }

Restart Nginx

sudo systemctl restart nginx

Step 10: Configure snmp daemon (snmpd)

LibreNMS uses SNMP extensively to collect metrics from remote devices and servers. Copy the sample config file to /etc

sudo cp /opt/librenms/snmpd.conf.example /etc/snmp/snmpd.conf
sudo vim /etc/snmp/snmpd.conf

On the line below:

com2sec readonly  default         RANDOMSTRINGGOESHERE
##Change to for example:
com2sec readonly  default         teststring

Change RANDOMSTRINGGOESHERE to your own community string as demonstrated above.

Pull the file below, make it executable and restart snmp daemon

The file detects which OS and if it is Linux then it will detect which Linux Distribution

sudo curl -o /usr/bin/distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
sudo chmod  x /usr/bin/distro
sudo systemctl restart snmpd

Step 11: Copy logrotate config

LibreNMS keeps logs in /opt/librenms/logs. Over time these can become large and be rotated out. To rotate out the old logs you can use the provided logrotate config file:

sudo cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

Step 12: Set Cron job

This cron job does a lot of stuff such as checking for updates, autodiscovery of devices among many others.

sudo cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms

Step 13: LibreNMS Web installer

Now head to the web installer and follow the on-screen instructions.

http:// IP or FQDN /install.php

The web installer might prompt you to create a config.php file in your librenms install location manually, copying the content displayed on-screen to the file. If you have to do this, please remember to set the permissions on config.php after you copied the on-screen contents to the file. Run:

sudo chown librenms:librenms /opt/librenms/config.php

Follow the installation process and you can take a look at the images below for guidance.

<img alt="" data-ezsrc="https://kirelos.com/wp-content/uploads/2020/02/echo/LibreNMS-web-installer-1.png" data-ez ezimgfmt="rs rscb5 src ng ngcb5 srcset" height="363" src="data:image/svg xml,” width=”657″>

Input your DB User, DB pass and DB Name

<img alt="" data-ezsrc="https://kirelos.com/wp-content/uploads/2020/02/echo/LibreNMS-web-installer-2.png" data-ez ezimgfmt="rs rscb5 src ng ngcb5 srcset" height="410" src="data:image/svg xml,” width=”681″>

Give it time to import DB

<img alt="" data-ezsrc="https://kirelos.com/wp-content/uploads/2020/02/echo/LibreNMS-web-installer-3.png" data-ez ezimgfmt="rs rscb5 src ng ngcb5 srcset" height="535" src="data:image/svg xml,” width=”658″>
Install and configure LibreNMS on Debian 10 with Nginx How To librenms Linux Tutorials Monitoring

Add a user you will use to login to LibreNMS later.

<img alt="" data-ezsrc="https://kirelos.com/wp-content/uploads/2020/02/echo/LibreNMS-web-installer-5.png" data-ez ezimgfmt="rs rscb5 src ng ngcb5 srcset" height="308" src="data:image/svg xml,” width=”664″>

Generate config

<img alt="" data-ezsrc="https://kirelos.com/wp-content/uploads/2020/02/echo/LibreNMS-web-installer-6.png" data-ez ezimgfmt="rs rscb5 src ng ngcb5 srcset" height="287" src="data:image/svg xml,” width=”704″>

After the config has been generated, please run the following command

sudo chown librenms:librenms /opt/librenms/config.php

Finish Installation

<img alt="" data-ezsrc="https://kirelos.com/wp-content/uploads/2020/02/echo/LibreNMS-web-installer-7.png" data-ez ezimgfmt="rs rscb5 src ng ngcb5 srcset" height="309" src="data:image/svg xml,” width=”708″>

Click on the “validate your install and fix any issues” link to finish up

<img alt="" data-ezsrc="https://kirelos.com/wp-content/uploads/2020/02/echo/LibreNMS-web-installer-8.png" data-ez ezimgfmt="rs rscb5 src ng ngcb5 srcset" height="325" src="data:image/svg xml,” width=”631″>

After everything is done, you should see the login page below when you refresh your browser.

<img alt="" data-ezsrc="https://kirelos.com/wp-content/uploads/2020/02/echo/LibreNMS-web-installer-9.png" data-ez ezimgfmt="rs rscb5 src ng ngcb5 srcset" height="417" src="data:image/svg xml,” width=”687″>

Now that we have installed LibreNMS monitoring tool, we still have some work to do. It includes adding devices, creating alerts, creating thresholds, performance tuning and much more. We hope the guide was helpful and we appreciate your visit. We suggest that you have a read of a few LibreNMS docs to get you going with the next steps.

You can also go through the guides below for your enjoyment.

How To Install LibreNMS on CentOS 8 / RHEL 8

Install and Configure Zabbix Server 4.4 on Debian 10 (Buster)

Install LibreNMS Monitoring Tool on CentOS with Letsencrypt and Nginx

How to Install and configure Zabbix agent 4.0 on Ubuntu 18.04 and CentOS 7

Install Zabbix Server on Ubuntu 18.04

How to Install and Configure LibreNMS on Ubuntu 18.04 LTS with Nginx