How to install LibreNMS on Clear Linux

LibreNMS is a powerful and flexible network monitoring platform that provides real-time visibility into your network infrastructure. In this tutorial, we will walk you through step-by-step instructions on how to install LibreNMS on Clear Linux.

Prerequisites

Install Required Packages

Before installing LibreNMS, you need to install the following packages:

sudo swupd bundle-add network-monitoring
sudo swupd bundle-add php-basic
sudo swupd bundle-add php-curl
sudo swupd bundle-add php-mbstring
sudo swupd bundle-add php-gd
sudo swupd bundle-add php-mysql
sudo swupd bundle-add php-xml
sudo systemctl enable --now php-fpm
sudo systemctl start php-fpm

Install Required PHP Extensions

In addition to the PHP packages, we also need to install the following PHP extensions:

sudo pecl channel-update pecl.php.net
sudo pecl install redis-5.3.2
sudo pecl install snmp
sudo systemctl restart php-fpm

Install and Configure MariaDB

LibreNMS requires a database to store data, and we'll use MariaDB for this purpose.

To install MariaDB, run the following command:

sudo swupd bundle-add mariadb

Then, start and enable the MariaDB service:

sudo systemctl enable --now mariadb

Now, we need to configure the MariaDB root password:

sudo mysql_secure_installation

Follow the on-screen prompts to set up the root password and other security settings.

After that, create a database and user for LibreNMS:

sudo mysql -u root -p

MariaDB [(none)]> CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost' IDENTIFIED BY 'your_password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit;

Replace your_password with a strong password.

Install and Configure Apache Web Server

LibreNMS requires a web server to run, and we'll use Apache for this purpose.

To install Apache, run the following command:

sudo swupd bundle-add apache

Then, start and enable the Apache service:

sudo systemctl enable --now apache

Now, create a new virtual host configuration for LibreNMS:

sudo nano /etc/httpd/conf.d/librenms.conf

And add the following configuration:

<VirtualHost *:80>
  ServerAdmin webmaster@localhost
  DocumentRoot /opt/librenms/html
  ServerName your_server_hostname
  # Custom Header
  Header always set X-Frame-Options DENY
  
  <Directory /opt/librenms/html>
        AllowOverride all
        Require all granted
        Options FollowSymLinks MultiViews
        DirectoryIndex index.php
  </Directory>
  
  <FilesMatch \.php$>
        SetHandler "proxy:unix:/run/php-fpm/php-fpm.sock|fcgi://localhost"
  </FilesMatch>

  ErrorLog /var/log/librenms/error_log
  CustomLog /var/log/librenms/access_log combined
</VirtualHost>

Replace your_server_hostname with your server's hostname or IP address.

Next, create the log directory and set the correct permissions:

sudo mkdir -p /var/log/librenms
sudo chown -R apache:apache /var/log/librenms
sudo chmod -R 775 /var/log/librenms

Download and Install LibreNMS

Now, we can download and install LibreNMS:

cd /opt
sudo git clone https://github.com/librenms/librenms.git
cd librenms
sudo ./scripts/composer_wrapper.php install --no-dev
sudo ./scripts/install.php

Follow the on-screen prompts to configure LibreNMS. When asked for the database details, use the following:

Configure SELinux

If you're using SELinux, you'll need to set the correct context for the LibreNMS files:

sudo chcon -t httpd_sys_rw_content_t /opt/librenms/rrd /opt/librenms/logs /var/log/librenms
sudo restorecon -R /opt/librenms/rrd /opt/librenms/logs /var/log/librenms

Set up Cron Jobs

Finally, set up the LibreNMS cron jobs:

sudo cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
sudo systemctl enable --now cronie

Conclusion

Congratulations! You have successfully installed LibreNMS on Clear Linux. You can now access LibreNMS via your web browser by visiting http://your_server_hostname.

If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!

Alternatively, for the best virtual desktop, try Shells!