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:

El usuario y contraseña por defecto es admin
Una vez dentro nos saldrá la siguiente pantalla:

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:
- https://genieacs.com/docs/
- https://mum.mikrotik.com/presentations/ES18/presentation_5773_1539938875.pdf
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.
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
Buenos días Andres,
Muchas gracias por tu comentario.
¿Qué dice el mensaje de error?
Un saludo.
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
Buenas,
Si vas a usar slite como base de datos no.
En mi caso uso mysql por eso he tenido que editarlo.
Un saludo
Que diferencia hay entre sqlite3 y mysql?
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
Buenas,
Genieacs coge la ip de la máquina donde lo estas instalando.
Asignale una ip a la máquina.
Un saludo.
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
Yo también tengo el mismo inconveniente.
apt-get install ruby-dev
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
Buenas,
Que sistema operativo usa ?
Segui este tutorial paso a paso esta montado en debian 9
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!!!
si corre sobre debian 10. Yo tengo instalada la ultima version de genie v1.2.8
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.
Buenos días,
¿Existe la forma de conocer que usuario y cuando se ha logeado en el genieacs-gui?
Un saludo
Buenas tardes Raul ,
Hemos implantado géniacs y necesitamos tu ayuda para acabar de configurará las plantillas para los routers
como saber que version tengo actual y si tengo una versión vieja como actualizarlo?
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.
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
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.
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
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