Instalar LibreNMS en Debian
Instalar libreNMS no se diferencia mucho de la instalación de otros paquetes basados en el stack LAMP (Linux, Apache, MySQL, PHP) como pueden ser Wordpress u otros.
Requisitos previos
Empezamos instalando una serie de paquetes básicos de Debian.
apt install apt-transport-https lsb-release ca-certificates wget
Instalamos las claves de los paquetes PHP de sury.
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
Añadimos los repositorios de sury a la lista de paquetes de Debian
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/sury-php.list
Realizamos un apt update para que se recoja la información de los nuevos repositorios
apt update
Instalación de paquetes
Procedemos a instalar los paquetes necesarios entre los que podemos ver python, snmp, fping, mariadb, etc
apt install acl curl fping git graphviz imagemagick mariadb-client mariadb-server mtr-tiny nginx-full nmap php-cli php-curl php-fpm php-gd php-gmp php-json php-mbstring php-mysql php-snmp php-xml php-zip python3-dotenv python3-pymysql python3-redis python3-setuptools python3-systemd python3-pip rrdtool snmp snmpd unzip whois
Creación del usuario
Crearemos un usuario libreNMS para que ejecute el paquete de libreNMS
useradd librenms -d /opt/librenms -M -r -s "$(which bash)"
Descarga de LibreNMS
Vamos a la carpeta opt y clonamos del repositorio de LibreNMS mediante git
cd /opt
git clone https://github.com/librenms/librenms.git
Permisos en la carpeta de LibreNMS
Procedemos a otorgar permisos al usuario librenms que hemos creado antes.
chown -R librenms:librenms /opt/librenms
chmod 771 /opt/librenms
setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
setfacl -R -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
El comando setfacl tendremos que usarlo si por lo que sea nos da en el futuro cualquier problema de permisos alguna de las carpetas o archivos de LibreNMS
Instalar las dependencias de PHP
su - librenms
./scripts/composer_wrapper.php install --no-dev
exit
Como vemos hecho un su con el usuario librenms, hay que usar siempre esto para cualquier cosa que vayamos a realizar con librenms para evitar problemas
Zona horaria
Modificamos la zona horaria en PHP a través del php.ini
Recuerda modificar también la zona horaria en el sistema y configuramos ntp o chrony para mantener sincronizada la hora del sistema.
Configurar MariaDB
Procedemos a modificar los ajustes de MariaDB para nuestro sistema de monitorización LibreNMS
vi /etc/mysql/mariadb.conf.d/50-server.cnf
En la sección [mysqld] añadimos las siguientes líneas
innodb_file_per_table=1
lower_case_table_names=0
Reiniciamos MariaDB
systemctl enable mariadb
systemctl restart mariadb
Entramos en MariaDB para crear la base de datos
mysql -u root
Creamos la base de datos
CREATE DATABASE librenms CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
En este ejemplo usamos una base de datos llamada librenms y un usuario librenms, puedes usar cualquier nombre igual o diferente para la base de datos y el usuario.
Creamos el usuario y le otorgamos permisos
CREATE USER 'librenms'@'localhost' IDENTIFIED BY 'unapasswordsegura';
GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
exit
Configurar php-fpm
Para ello vamos a copiar el archivo de www para crear una versión específica para librenms
cp /etc/php/8.2/fpm/pool.d/www.conf /etc/php/8.2/fpm/pool.d/librenms.conf
vi /etc/php/8.2/fpm/pool.d/librenms.conf
Cambiamos en el archivo [www] por [librenms] y cambiamos el usuario y el grupo a librenms.
También cambiaremos el sock del listener de php
listen = /run/php-fpm-librenms.sock
Borramos el www.conf para ahorrar recursos de ejecución.
Configurar Nginx
Instalaremos nginx
apt install nginx
Ahora configuraremos nginx para nuestro librenms
vi /etc/nginx/sites-enabled/librenms.vhost
Introduciremos la siguiente configuración (recuerda cambiar el server_name por el tuyo )
server {
listen 80;
server_name librenms.eduardotaboada.com;
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 ~ [^/]\.php(/|$) {
fastcgi_pass unix:/run/php-fpm-librenms.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi.conf;
}
location ~ /\.(?!well-known).* {
deny all;
}
}
Comprobamos que todo funciona
root@librenms:~# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Borramos el archivo por defecto de nginx, para que solo que de el de librenms y reiniciamos servicios
rm /etc/nginx/sites-enabled/default
systemctl reload nginx
systemctl restart php8.2-fpm