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.

24 comentarios

  1. Buenos días , muy buen tutorial , lo que pasa es que he tenido problemas para la instalación del genieacs pues al momento de usar el comando gem install mysql2 me salta un error y no he podido pasar de ahí , me gustaría que me ayudarán o me dieron un respuesta

      1. Estamos instalando GenieACS para autoprovisionamiento de router TpLink que viene con el protocolo TR-069, no se si sea necesario editar el sqlite3 por mysql2

          1. Muchas gracias por el tutorial, la verdad me ayudo muchisimo ya me esta corriendo el Genie.
            Me gustaria saber como asignar una IP al servidor ACS ya que este por defecto me da la 0.0.0.0 con el puerto 3000

          2. Buenas,

            Genieacs coge la ip de la máquina donde lo estas instalando.
            Asignale una ip a la máquina.
            Un saludo.

    1. Hola Andres,
      Como solucionaste el problema de instalacion del mysql2? Es que a mi tambien me salta ese error y no puedo avanzar, y no veo donde esta el probelema.
      Gracias

  2. Buenas tardes , será posible de que me diga en qué parte se encuentra el archivo o que comando eres para cambiar la IP de la máquina ,. Ya que me toma la 0.0.0.0:3000 , he buscado tutoriales para cambiar la IP , pero no he encontrado nada , de antemano gracias

        1. Buen día, sabes si el GenieACS puede correr en Debian 10, dado que hoy es la versión estable? Muchas gracias y felicitaciones por tu excelente tutorial. Saludos!!!

  3. Muy buenas, para empezar muchas gracias por el tutorial, todo bien explicado y detallado.

    He comprobado que desde ‘node_modules/genieacs/config/config.json’ se configuran los puertos para cada proceso necesario de Genie.

    ¿Habría algún problema si se cambian dichos puertos ?

    Gracias y un saludo.

  4. podrías ayudarme? tengo un genieacs en vultr, intento hacer que salga a la red, ya configuré los puertos para firewall y continúa sin salir a la red, lo instalé en con una máquina virtual local, en ese ambiente funciona a la perfección pero ya en producción a la red, no funciona. por favor apoyame para que funcione. gracias.

  5. Acostumbro cada dia buscar articulos para pasar un buen momento leyendo y de esta forma he encontrado vuestra web. La verdad me ha gustado la web y pienso volver para seguir pasando buenos ratos.
    Saludos

  6. buenas tardes amigos, necesito poder configurarlo para que me pueda sacar un reporte de los clientes que tengo y los dispositivos a los que ingresa cada cliente.

  7. Buenos días, me podría ayudar a configurar username del PPPoE en genie acs pruebo con esto:
    User Name: InternetGatewayDevice.WANDevice.1.WANConnectionDevice.1.WANPPPConnection.1.Username
    y no me funciona

  8. Hola exelente tutorial pero por algun motivo no he podido poner en funcionamiento alguien podria compartir un .ova de una maquina virtual y poder probarlo en mi red mil gracias

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.