GenieACS : como instalarlo y configurarlo

GenieACS es sin duda uno de los sistemas de auto configuración de routers más usados actualmente, en este artículo vamos a ver como instalarlo y configurarlo correctamente.

¿Qué es GenieACS?

GenieACS es un sistema de auto configuración open source ligero y rápido. Está programado en node.js y emplea MongoDB como base de datos. Utiliza el protocolo TR-069(también conocido como CWMP ).

¿Para que sirve el protocolo TR-069?

TR-069 es un protocolo empleado en telecomunicaciones para la administración remota de dispositivos finales como pueden ser los router domésticos.

Las operadoras utilizan este protocolo para temas de diagnóstico, motorización, mantenimiento y actualización de firmware.

Versiones empleadas en este tutorial

Para instalar y configurar GenieACS utilizaremos la siguientes versiones:

  • Sistema operativo: Debian 9.9
  • Mongodb: v3.2.11
  • Node: v8.16.0
  • Rails: 4.2.7.1
  • Ruby: 2.3.3p222
  • MySQL: 10.1.38

Instalación

Instalaciones previas

La instalación la hicimos sobre un Debian. Antes de instalar GenieACS debemos de instalar una serie de paquetes. Estos paquetes son los siguientes:

Build-essential (este paquete contiene una lista informativa de los paquetes considerados esenciales para la creación de paquetes Debian):

apt-get install build-essential

software-properties-common ( permite administrar fácilmente su distribución y las fuentes de software de proveedores de software independientes.)

apt-get install curl software-properties-common

Node

curl -sL https://deb.nodesource.com/setup_8.x | bash -
sudo apt-get install nodejs

MongoDB

apt install mongodb

La libreria libxmljs

npm install libxmljs

Ruby on Rails

apt install ruby rails

Node-gyp (es una herramienta que permite la compilación de módulos complementarios nativos para Node en múltiples plataformas.)

MySQL:

apt-get install mysql-server mysql-client
apt install default-libmysqlclient-dev

Instalación GenieACS

Ahora vamos a instalar tanto el frontend( geniacs-gui) como el backend de GenieACS. Esto es muy sencillo y solo tendremos que ejecutar dos comandos.

Con este comando instalamos el backend de GenieACS.

npm install genieacs

Para instalar el frontend lo primero que tendremos que hacer es movernos al directorio /opt/ . A continuacion vamos a clonar el repositorio de GitHub del desarrollador de GenieACS-gui. Para ello ejecutamos el siguiente comando:

  git clone https://github.com/zaidka/genieacs-gui.git

Configuración

Configurar el backend de GenieACS

En la parte del backend solo tendremos que borrar una linea, el resto de los ficheros de configuración los dejaremos tal y como vienen por defecto.

Editamos el fichero /node_modules/genieacs/config/config.json :
Eliminamos la línea: «FS_HOSTNAME» : «acs.example.com»,

Configurar el frontend de GenieACS

Para configurar el frontend tenemos que ejecutar los siguientes comandos:

cd genieacs-gui
cp config/graphs-sample.json.erb config/graphs.json.erb
cp config/index_parameters-sample.yml config/index_parameters.yml
cp config/summary_parameters-sample.yml config/summary_parameters.yml
cp config/parameters_edit-sample.yml config/parameters_edit.yml
cp config/parameter_renderers-sample.yml config/parameter_renderers.yml
cp config/roles-sample.yml config/roles.yml
cp config/users-sample.yml config/users.yml 

Ahora tenmos que editar los siguientes archivos:

/opt/genieacs-gui/config/index_parameters.yml :

Serial number: _deviceId._SerialNumber
    Product class: _deviceId._ProductClass
    Software version: Device.DeviceInfo.SoftwareVersion
    MAC: InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.MACAddress
    IP: InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress
    WLAN SSID: Device.WiFi.SSID.1.SSID

/opt/genieacs-gui/config/summary_parameters.yml :

  Serial number: _deviceId._SerialNumber
    Product class: _deviceId._ProductClass
    OUI: _deviceId._OUI
    Manufacturer: _deviceId._Manufacturer
    Hardware version: Device.DeviceInfo.HardwareVersion
    Software version: Device.DeviceInfo.SoftwareVersion
    MAC: InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.MACAddress
    IP: InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANIPConnection.1.ExternalIPAddress
    WLAN SSID: Device.WiFi.SSID.1.SSID
    WLAN passphrase: InternetGatewayDevice.LANDevice.1.WLANConfiguration.1.KeyPassphrase
    Hosts:
        _object: Device.Hosts.Host
        Host name: HostName
        IP: IPAddress
        MAC: MACAddress

Editamos/opt/genieacs-gui/Gemfile y realizamos la siguiente modificación para utilizar como base de datos Mysql en vez de sqlite:

  Cambiamos:
        gem 'sqlite3'
    Por: 
        gem 'mysql2'

/opt/genieacs-gui/Gemfile.lock : realizamos la siguiente modificación:

 Cambiamos:
        sqlite3 (1.3.13)
        DEPENDENCIES
              sqlite3
    Por:
        mysql2 (0.5.2)
        DEPENDENCES
            mysql2

/opt/genieacs-gui/config/database.yml :

  development:
          adapter: mysql2
          database: development
          pool: 5
          timeout: 5000
    test:
          adapter: mysql2
          database: test
          pool: 5
          timeout: 5000
    production:
          adapter: mysql2
          database: production
          pool: 5
          timeout: 5000

/opt/genieacs-gui/db/migrate/20160202145722_create_users.rb

class CreateUsers < ActiveRecord::Migration[5.1]

/opt/genieacsgui/db/migrate/20160211140635_create_permissions.rb

  class CreatePermissions < ActiveRecord::Migration[5.1]

/opt/genieacs-gui/db/migrate/20160211142120_create_roles.rb

 class CreateRoles < ActiveRecord::Migration[5.1]

/opt/genieacs-gui/db/migrate/20160212123229_create_user_roles.rb

 class CreateUserRoles < ActiveRecord::Migration[5.1]

/opt/genieacs-gui/db/migrate/20160218145427_add_role_id_to_permission.rb

class AddRoleIdToPermission < ActiveRecord::Migration[5.1]

/opt/genieacs-gui/db/migrate/20160219094206_rename_permissions_to_privileges.rb

class RenamePermissionsToPrivileges < ActiveRecord::Migration[5.1]

Ahora tenemos que ejecutar los siguientes comandos:

gem install bundler
gem install mysql2
bundle install
bundle 

Creamos y migramos la base de datos:

rake db:create
rake db:migrate

Funcionamiento

Ahora que ya tenemos instalado y configurado correctamente nuestro GenieACS podemos iniciarlo. Para ello primero tenemos que iniciar el backend y luego el frontend.

Para iniciar el backend ejecutamos los siguientes comandos:

cd /root/node_modules/genieacs
bin/genieacs-cwmp &
bin/genieacs-nbi &
bin/genieacs-fs &

Una vez iniciado el backend podemos iniciar el frontend ejecutando:

cd /opt/genieacsgui
rails s

Una vez hecho todo esto, si accedemos al puerto 3000 de la ip de la máquina donde hemos instalado GenieACS debería mostrarnos lo siguiente:

GenieACS
Interface web de GenieACS

El usuario y contraseña por defecto es admin

Una vez dentro nos saldrá la siguiente pantalla:

Panel administración GenieACS

La única diferencia es que a vosotros os saldrá vacía sin ningún equipo.

Como cambiar el usuario y contraseña por defecto de la interfaz Web

Una medida básica de seguridad es cambiar el usuario y contraseña por defecto. En el archivo /opt/genieacs-gui/config/users.yml tenemos el listado de usuarios. Por defecto vienen los siguientes:

admin:
    password: admin
    roles: [admin]

user:
    password: user
    roles: [view]

Si por ejemplo quiero crear el usuario Raul con rol administrador y que tenga la contraseña agfme32 tengo que dejar el contenido del fichero tal que así:

raul:
    password: agfme32
    roles: [admin]

Tutoriales y Manuales de referencia

Te voy a dejar una serie de vídeos y manuales que me sirvieron de gran ayuda:

Conclusión

Como viste instalar y configurar GenieACS es un trabajo bastante laborioso pero sencillo. En el próximo artículo te enseñare como añadir un router Mikrotik a GeniACS para poder administrarlo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Las siguientes reglas del RGPD deben leerse y aceptarse:
Este formulario recopila tu nombre, correo electrónico y e contenido para que podamos realizar un seguimiento de los comentarios dejados en la web. Para más información revisa nuestra política de privacidad, donde encontrarás más información sobre dónde, cómo y por qué almacenamos tus datos.