# Instalando LibreNMS

## Metas

- Aprender como inicialmente instalar el sistema de Gestión de Redes LibreNMS

## Notas

- Los comandos precedidos por el signo de pesos “$”, deben ser ejecutados como un usuario general - y no como superusuario (root).

- Los comandos precedidos por el signo de número “#”, Implica que debe estar trabajando como root.

- Los comandos precedidos por lineas de comando más específicas (e.g. “rtrX>” or “mysql>”) implica que deben ser ejecutados en equipos remotos, o dentro de otras aplicaciones.

- Estas instrucciones suponen que usted es el usuario root. Si no lo es, anteponga ‘’sudo’’ a los comandos shell (los que no están en ‘’mysql’‘) o invoque temporalmente privilegios de root con’‘sudo -s’’.

## Crear base de datos

NOTA: Estas instrucciones estan basadas en la Instruccion oficial de LibreNMS y fueron probadas con una instalación nueva de Ubuntu 14.04.

Supondremos que la base de datos se está ejecutando en la misma máquina que su Servidor de administración de red (este es el escenario de implementación inicial más común).

Primero convertirse en root:

    $ sudo bash

Luego instale mysql y configure:

    # apt update
    # apt install mysql-server mysql-client

Puede seleccionar cualquier contraseña para el usuario root mysql. Pero este absolutamente seguro que recuerda lo que usted eligio aquí. Lo usarás más tarde.

    # mysql -uroot -p

Introduzca la contraseña de root de MySQL para ingresar a la interfaz de línea de comandos de MySQL donde obtendrá un prompt mysql >.

Crear la base de datos:

    CREATE DATABASE librenms CHARACTER SET utf8 COLLATE utf8_unicode_ci;
    CREATE USER 'librenms'@'localhost' IDENTIFIED BY '\<CLASS_PASSWORD\>';
    GRANT ALL PRIVILEGES ON librenms.* TO 'librenms'@'localhost';
    FLUSH PRIVILEGES;
    exit

TENGA EN CUENTA

Aquí estamos usando *<CLASS_PASSWORD> como la contraseña de LibreNMS para acceder a MySQL. Por favor, reemplace <CLASS_PASSWORD> por, has adivinado, la contraseña de clase :)

Para optimizar los ajustes del base de datos por LibreNMS, debería agregar los dos siguiente lineas al final del archivo mysqld.conf:

    # editor /etc/mysql/mysql.conf.d/mysqld.cnf

    innodb_file_per_table=1
    lower_case_table_names=0

Ahora, reinicializar el servidor de mysql para activar estes ajustes, y luego verifique que el servidor mysql reiniciado con éxito.

    # systemctl restart mysql
    # systemctl status mysql

## Instalar LibreNMS

El NMS es el host donde se ejecuta el servidor web y el poller SNMP.

Nuestra versión de Linux (Ubuntu 16.04) no viene con una versión actual de PHP, asi necesitamos instalarlo desde un repositorio personalizado. Después que confirmamos que php versión 7.2 instalado podemos habilitarlo en nuestro servidor Web Apache.

    # add-apt-repository ppa:ondrej/php
    # apt update
    # apt install php7.3
    # php -v
    # a2dismod php7.0
    # a2enmod php7.3
    # systemctl restart apache2

No se preocupa si ya esta habilitado php 7.3 en Apache, hacemos el `a2dismod` y `a2enmod` para asegurar que php funciona bien con Apache.

Ahora, instalamos el software necesario:

    apt install acl apache2 composer fping git graphviz imagemagick libapache2-mod-php7.3 mtr-tiny nmap php7.3-cli php7.3-curl php7.3-gd php7.3-json php7.3-mbstring php7.3-mysql php7.3-snmp php7.3-xml php7.3-zip python-memcache python-mysqldb rrdtool snmp snmpd whois

Los paquetes enumerados arriba son una lista completa de paquetes que fueron necesarios en una instalación limpia de Ubuntu 16.04.

### Configuración de post-instalación

#### snmp

Debe configurar snmp apropiadamente. Si aún no lo ha hecho, haremos una configuración mínima de snmp en nuestro servidor: –NO haga esto si ya ha c configurado SNMP antes!

    # mv /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.orig
    # editor /etc/snmp/snmpd.conf

Y, agregue la línea siguiente al archivo vacío:

    rocommunity NetManage 127.0.0.1

Y, ahora reinicie el servicio snmp para que los cambios se activen.

    # systemctl restart snmpd

Puede comprobar que snmp ahora responde a usted localmente escribiendo:

    # snmpstatus -v2c -c NetManage 127.0.0.1 sysStatus

#### php

En ambos ’‘/etc/php/7.3/apache2/php.ini’’ y ’‘/etc/php/7.3/cli/php.ini’‘, asegurese que en’‘date.timezone’’ se establece su zona horaria preferida.

Ver http://php.net/manual/en/timezones.php o los archivos bajo ‘/usr/share/zoneinfo’ para obtener una lista de zonas horarias compatibles. Para este taller todos vamos a usar la misma zona horaria, POR FAVOR USE UTC solamente. Si selecciona algo que no sea UTC, entonces otros programas no funcionarán correctamente.

En los dos archivos mencionados arriba encuentre la línea:

    ;date.timezone =

Y cámbielo a:

    date.timezone = Etc/UTC

Guarde y salga de los archivos.

## Agregar el usuario LibreNMS

Necesitamos crear un usuario del sistema LibreNMS, `librenms`

    # useradd librenms -d /opt/librenms -M -r
    # usermod -a -G librenms www-data

## Clonando el código fuente LibreNMS con git

El clon inicial puede tomar bastante tiempo ya que el tamaño del repositorio de software es de 510+ MB en tamaño.

Ejecute lo siguiente:

    # cd /opt
    # git clone --depth 1 https://github.com/librenms/librenms.git

En este punto, debe tener un directorio ‘’librenms’’, con la revisión más reciente comprobada.

Ahora necesitamos configurar los permisos de los archivos de LibreNMS para que el usuario librenms tiene acceso a ellos:

    # chown -R librenms:librenms /opt/librenms

## Instalar las dependencias PHP con Composer

Las dependencias de LibreNMS se instala usando composer. La instalación inicial puede demorar bastante tiempo porque el tamaño del software instalado es 220+ MB.

Ejecuta lo siguiente:

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

Ahora deberiá tener un directorio ‘’librenms’’ con la versión más receinte de LibreNMS.

## Interfaz Web

Para preparar la interfaz web (y agregar dispositivos brevemente), tendrá que crear y cambiar el dueno de un directorio, así como crear la definición de un host virtual de Apache.

Necesitamos cambiar al usuario root en nuestro servidor de srv1-campusY.ws.nsrc.org, así asegura que tipea `exit` y que su linea de comando cambia a `#`:

    $ exit
    # chown -R librenms:librenms /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/

Luego, crear ’‘/etc/apache2/sites-available/librenms.conf’’:

     # editor /etc/apache2/sites-available/librenms.conf

Añada las siguientes líneas:

    <VirtualHost *:80>
      DocumentRoot /opt/librenms/html/
      ServerAlias librenms*.ws.nsrc.org
      CustomLog /opt/librenms/logs/access_log combined
      ErrorLog /opt/librenms/logs/error_log
      AllowEncodedSlashes NoDecode
      <Directory "/opt/librenms/html/">
        Require all granted
        AllowOverride All
        Options FollowSymLinks MultiViews
      </Directory>
    </VirtualHost>

Ahora habilita su host virtual de Apache, pero espera para reinicializar Apache:

    # a2ensite librenms
    # a2enmod rewrite

Ahora tiene que dar acceso a su servidor de Web al directorio /opt/librenms en forma temporaria. Primero haz…

    # chown www-data /opt/librenms

…y, ahora reinicializa el servidor de web:

    # systemctl restart apache2

## Instalador Web

Puede elegir entre una configuración web o una configuración manual por línea de comando. Vamos a utilizar el instalador Web, que es con mucho el más fácil, pero Incluiremos la configuración manual como referencia al final de este documento.

En esta etapa, puede iniciar el instalador web http://librenmsN.ws.nsrc.org/install.php

Sigue las instrucciones en la pantalla.

- Etapa 0 es un resumen de los módulos de PHP instalado, normalmente sólo debe Haga clic en ’’ Próxima etapa ’’

- Etapa 1 solicita la configuración de la base de datos. Enter

  - DB Host: localhost

  - DB User: librenms

  - DB Pass: <CLASS_PASSWORD>

  - DB Name: librenms

- Etapa 2 es la creación de la BD - debe terminar correctamente, y usted simplemente haga clic en “Ir a Añadir usuario’” en la parte inferior

- Etapa 3: ingrese un nombre de usuario, contraseña y dirección de correo electrónico. Esto se convertirá en el inicio de sesión que utilizara para acceder a la interfaz web.

Le sugerimos que utilice ‘’sysadm’’, la contraseña de clase y su propia dirección de correo electrónico.

- Etapa 4 le mostrará la creación exitosa del usuario, haga clic en " Generar Configuracion"

- Etapa 5: la interfaz debe mostrar, en este punto:

    The config file has been created

Ahora puede hacer clic en ‘’Finalizar instalación’’.

Nota: SI el instalador le dice que no puede escribir el archivo de configuración, Puede ser que te olvidaste de correr ‘’chown www-data /opt/librenms’’.

Debe intentar solucionar el problema y volver a cargarlo. http://librenms-campusX.ws.nsrc.org/install.php

Ver más adelante si usted todavía tiene problemas.

- Etapa 6: ¡ya está!

Hacer click en el enlace que dice, “Click here to Validate your installation and fix any problems”. Esto te deja en la pagína de login de LibreNMS y, ya, terminaste con la instalación inicial.

Una herramienta útil se proporciona con LibreNMS para ayudar a verificar que el software está instalado correctamente. Antes que corremos esta herramienta deberiamos reponer los permisos de los archivos en /opt/librenms parea asegurar la instalación.

    # chown -R librenms:librenms /opt/librenms
    # setfacl -d -m g::rwx /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/
    # chmod -R ug=rwX /opt/librenms/rrd /opt/librenms/logs /opt/librenms/bootstrap/cache/ /opt/librenms/storage/

Ahora vamos a probar la herramienta de verificación:

    # cd /opt/librenms
    # ./validate.php

Va a ver un aviso que no hay dispositivos (devices) configurado. No se preocupa, agregamos dispositivos en el próximo ejercicio. Si hay avisos de permisos puede elegir de repararlos como sugere validate.php. Se vea avisos sobre archivos de git modificados puede ignorarlo por ahora.

Ahora generamos una llave de seguridad por LibreNMS:

    # sudo -Hu librenms php artisan key:generate

Instalar la tarea de cron de LibreNMS:

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

Configurar LibreNMS para que los archivos de registros roten:

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

=> AHORA PUEDE PROCEDER A LOS EJERCICIOS DE AJUSTES! <=

## Si sigue con Problemas de Instalación

Si todavía no funciona, necesitará copiar la configuración generada desde la ventana del navegador, crear un nuevo archivo:

’‘/opt/librenms/config.php’’

con un editor de texto, y pegar la configuración en este archivo. (Recuerde que si está usando “vi” entrar en el modo de inserción antes de pegar)