Cómo instalar LibreNMS con Nginx en Ubuntu 22.04

LibreNMS es una potente herramienta de monitorización de red gratuita y de código abierto para sistemas operativos basados en Linux. Te permite supervisar los principales sistemas operativos, así como los dispositivos de red, como Cisco, Juniper, Foundry, FreeBSD, Brocade y muchos más, a través de un navegador web. LibreNMS utiliza varios protocolos de red como SNMP, ARP, CDP, FDP, LLDP, OSPF y BGP para autodescubrir todos los sistemas operativos y dispositivos de red. Ofrece una amplia gama de funciones, como la detección automática, el acceso a la API, las alertas personalizables, las actualizaciones automáticas y muchas más.

En este tutorial, te mostraremos instrucciones paso a paso sobre cómo instalar LibreNMS en Ubuntu 22.04.

Requisitos previos

  • Un servidor con Ubuntu 22.04.
  • Una contraseña de root configurada en tu servidor.

Cómo empezar

En primer lugar, se recomienda actualizar los paquetes de tu sistema a la última versión. Puedes hacerlo con el siguiente comando:

apt-get update -y

Después de actualizar todos los paquetes, instala todas las dependencias necesarias para LibreNMS con el siguiente comando:

apt-get install rrdtool whois fping imagemagick graphviz mtr-tiny nmap python3-mysqldb snmp snmpd python3-pip python3-memcache mtr-tiny acl unzip git curl wget -y

Una vez instaladas todas las dependencias, puedes pasar al siguiente paso.

Instalar el servidor Nginx, PHP y MariaDB

A continuación, tendrás que instalar el servidor web Nginx, el servidor MariaDB, PHP y otras extensiones de PHP en tu servidor. Puedes instalarlos todos ejecutando el siguiente comando:

apt-get install nginx mariadb-server php php-pear php-cgi php-common php-curl php-mbstring php-gd php-mysql php-bcmath php-imap php-json php-xml php-snmp php-fpm php-zip -y

Después de instalar todos los paquetes, tendrás que establecer la zona horaria en tu archivo php.ini.

nano /etc/php/8.1/fpm/php.ini
nano /etc/php/8.1/cli/php.ini

Define la zona horaria de tu sistema como se muestra a continuación:

date.timezone = UTC

Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio PHP-FPM para aplicar los cambios:

systemctl restart php8.1-fpm

Una vez que hayas terminado, puedes pasar al siguiente paso.

Crear una base de datos LibreNMS

A continuación, tendrás que crear una base de datos y un usuario para LibreNMS.

En primer lugar, inicia sesión en el shell de MariaDB con el siguiente comando:

mysql

Una vez iniciada la sesión, crea una base de datos y un usuario con el siguiente comando:

MariaDB [(none)]> create database librenmsdb CHARACTER SET utf8 COLLATE utf8_unicode_ci;
MariaDB [(none)]> grant all privileges on librenmsdb.* to librenms@localhost IDENTIFIED by "password";

A continuación, vacía los privilegios y sal del shell de MariaDB con el siguiente comando:

MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit;

A continuación, edita el archivo de configuración de MariaDB y modifica algunos ajustes recomendados:

nano /etc/mysql/mariadb.conf.d/50-server.cnf

Añade las siguientes líneas dentro de la sección [mysqld]:

innodb_file_per_table=1
sql-mode=""
lower_case_table_names=0

Guarda y cierra el archivo y luego reinicia el servicio MariaDB para aplicar los cambios:

systemctl restart mariadb

En este punto, tu MariaDB está configurada. Ahora puedes pasar al siguiente paso.

Instalar y configurar LibreNMS

En primer lugar, tendrás que crear un usuario dedicado para LibreNMS. Puedes añadirlo con el siguiente comando:

useradd -r -M -d /opt/librenms librenms

A continuación, añade el usuario librenms al grupo www-data con el siguiente comando:

usermod -a -G librenms www-data

A continuación, cambia el directorio a /opt y descarga la última versión de LibreNMS con el siguiente comando:

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

A continuación, crea un archivo de registro para LibreNMS con el siguiente comando:

touch /opt/librenms/logs/librenms.log

A continuación, copia el archivo de configuración de ejemplo de SNMP con el siguiente comando:

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

A continuación, edita el archivo snmpd.conf:

nano /etc/snmp/snmpd.conf

Busca la siguiente línea:

com2sec readonly  default RANDOMSTRINGGOESHERE

Y, sustitúyela por la siguiente línea:

com2sec readonly  default mysnmpserverkey        

Guarda y cierra el archivo y luego descarga el binario de la distro SNMP y cópialo en la ubicación deseada:

curl -o distro https://raw.githubusercontent.com/librenms/librenms-agent/master/snmp/distro
chmod +x distro
mv distro /usr/bin/distro

A continuación, reinicia el servicio SNMP para aplicar los cambios:

systemctl restart snmpd

A continuación, también tendrás que copiar el archivo cron y logrotate de LibreNMS en la ubicación deseada. Puedes copiarlos con el siguiente comando:

cp /opt/librenms/librenms.nonroot.cron /etc/cron.d/librenms
cp /opt/librenms/misc/librenms.logrotate /etc/logrotate.d/librenms

A continuación, cambia el directorio a librenms e instala las dependencias necesarias con el siguiente comando:

cd /opt/librenms
./scripts/composer_wrapper.php install --no-dev

Una vez instaladas todas las dependencias, cambia la propiedad del directorio librenms y dale los permisos necesarios con el siguiente comando:

chown -R www-data:librenms /opt/librenms
chmod -R 775 /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/

Una vez que hayas terminado, puedes pasar al siguiente paso.

Crear un host virtual Nginx para LibreNMS

A continuación, tendrás que crear un archivo de configuración del host virtual Nginx para LibreNMS. Puedes crearlo con el siguiente comando:

nano /etc/nginx/conf.d/librenms.conf

Añade las siguientes líneas:

server {
 listen      80;
 server_name librenms.example.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 /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/php8.1-fpm.sock;
 }
 location ~ /\.ht {
  deny all;
 }
}

Guarda y cierra el archivo y luego comprueba si el Nginx tiene algún error de sintaxis con el siguiente comando:

nginx -t

Deberías ver la siguiente salida:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

A continuación, reinicia el servicio Nginx para aplicar los cambios:

systemctl restart nginx

También puedes verificar el estado del servicio Nginx con el siguiente comando:

systemctl status nginx

Deberías obtener la siguiente salida:

? nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Sat 2022-07-02 08:35:53 UTC; 8s ago
       Docs: man:nginx(8)
    Process: 49538 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 49539 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 49543 (nginx)
      Tasks: 3 (limit: 4579)
     Memory: 3.3M
        CPU: 43ms
     CGroup: /system.slice/nginx.service
             ??49543 "nginx: master process /usr/sbin/nginx -g daemon on; master_process on;"
             ??49544 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ??49545 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Jul 02 08:35:53 ubuntu2204 systemd[1]: Starting A high performance web server and a reverse proxy server...
Jul 02 08:35:53 ubuntu2204 systemd[1]: Started A high performance web server and a reverse proxy server.

Una vez que hayas terminado, puedes pasar al siguiente paso.

Accede a la interfaz web de LibreNMS

Ahora, abre tu navegador web y escribe la URL http://librenms.example.com para acceder a LibreNMS. Serás redirigido a la página de comprobación de la preinstalación:

Comprobación previa a la instalación

Asegúrate de que todas las extensiones necesarias están instaladas y luego haz clic en la configuración de la base de datos. Deberías ver la siguiente página:

Configurar la base de datos

Proporciona tu nombre de usuario de la base de datos, el nombre de la base de datos, la contraseña y haz clic en el botón Comprobar credenciales. Una vez que se haya realizado con éxito, deberías ver la siguiente página:

Credenciales de la base de datos

Ahora, haz clic en el botón Construir base de datos. Deberías ver la siguiente página:

Construir la base de datos - con éxito

A continuación, haz clic en el botón de creación de usuario administrador. Deberías ver la siguiente página:

Crear usuario administrador

Proporciona tu nombre de usuario de administrador, tu correo electrónico y tu contraseña, y haz clic en el botón Añadir usuario. Deberías ver la siguiente página:

Usuario administrador

A continuación, haz clic en el botón Finalizar la instalación. Deberías ver la siguiente página:

Terminar la instalación

A continuación, haz clic en el botón «Validar la instalación». Deberías ver la página de inicio de sesión de LibreNMS:

Iniciar sesión en LibreNMS

Proporciona tu nombre de usuario y contraseña de administrador de LibreNMS y haz clic en el botón de inicio de sesión. Deberías ver el panel de control de LibreNMS:

Panel de control de LibreNMS

Conclusión

Enhorabuena! has instalado y configurado con éxito LibreNMS en el servidor de Ubuntu 22.04. Ahora puedes añadir un servidor remoto o un dispositivo de red desde el panel de control de LibreNMS y empezar a monitorizar a través del navegador web. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...