Cómo instalar la herramienta de documentación y gestión de redes NetBox en Ubuntu 18.04 LTS

NetBox es un software de aplicación web gratuito y de código abierto que puede utilizarse para gestionar y documentar redes informáticas. Está especialmente diseñado para gestionar la dirección IP y la infraestructura del centro de datos a través de un navegador web. NetBox está escrito en el framework Django Python y utiliza PostgreSQL para la base de datos. Con NetBox, puedes gestionar y documentar fácilmente las máquinas virtuales y los clusters, los circuitos de datos, la red, la consola y las conexiones de energía desde la ubicación central.

En este tutorial, explicaremos cómo instalar NetBox en el servidor Ubuntu 18.04.

Requisitos

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

Cómo empezar

Primero, actualiza los paquetes de tu sistema a la última versión con el siguiente comando:

apt-get update -y
apt-get upgrade -y

Una vez actualizados todos los paquetes, reinicia tu sistema para aplicar todos los cambios de configuración.

A continuación, tendrás que instalar las dependencias necesarias para ejecutar NetBox. Puedes instalarlas todas con el siguiente comando:

apt-get install wget ca-certificates nginx supervisor git gcc python3 python3-dev python3-pip python3-setuptools build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev zlib1g-dev unzip -y

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

Instalar y configurar PostgreSQL

A continuación, tendrás que instalar PostgreSQL en tu servidor. Por defecto, la última versión de PostgreSQL no está disponible en el repositorio por defecto de Ubuntu 18.04. Así que tendrás que añadir el repositorio de PostgreSQL a tu sistema.

Primero, descarga y añade la clave GPG con el siguiente comando:

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

A continuación, añade el repositorio con el siguiente comando:

nano /etc/apt/sources.list.d/postgres.list

Añade la siguiente línea:

deb http://apt.postgresql.org/pub/repos/apt/ xanial-pgdg main

Guarda y cierra el archivo. A continuación, actualiza el repositorio e instala PostgreSQL con el siguiente comando

apt-get update -y
apt-get install postgresql postgresql-contrib -y

Una vez instalado, comprueba el estado de PostgreSQL con el siguiente comando:

systemctl status postgresql

Deberías ver la siguiente salida:

? postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2019-08-07 07:00:51 UTC; 23s ago
 Main PID: 13552 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 1098)
   CGroup: /system.slice/postgresql.service

Aug 07 07:00:50 hitesh systemd[1]: Starting PostgreSQL RDBMS...
Aug 07 07:00:51 hitesh systemd[1]: Started PostgreSQL RDBMS.

A continuación, tendrás que crear una base de datos y un usuario para NetBox. En primer lugar, entra en el shell de PostgreSQL con el siguiente comando:

su - postgres
[email protected]:~$ psql

Salida:

psql (11.4 (Ubuntu 11.4-1.pgdg18.04+1))
Type "help" for help.

A continuación, crea una base de datos y un usuario para NetBox con el siguiente comando:

postgres=# CREATE DATABASE netbox;
postgres=# CREATE USER netbox WITH PASSWORD 'password';

A continuación, concede todos los privilegios a NetBox con el siguiente comando:

postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;

Por último, sal del shell PostgreSQL con el siguiente comando:

postgres=#exit

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

Instalar y configurar NetBox

Puedes descargar la última versión de NetBox en el directorio /opt con el siguiente comando:

cd /opt
git clone -b master https://github.com/digitalocean/netbox.git

A continuación, cambia el directorio a netbox y genera la clave secreta de Django:

cd /opt/netbox/netbox/netbox/
./generate_secret_key.py

Deberías ver la clave generada en la siguiente salida:

+XHR3o&7K6isFk^DLc2%[email protected](jwN#tfGbV=O1hgMU$

A continuación, cambia el nombre del archivo de configuración por defecto con el siguiente comando

mv configuration.example.py configuration.py

A continuación, abre el archivo de configuración y define los detalles de tu base de datos y la clave secreta:

nano configuration.py

Realiza los siguientes cambios:

#Replace your-server-ip with your server IP address:
# Example: ALLOWED_HOSTS = ['netbox.example.com', 'netbox.internal.local']
ALLOWED_HOSTS = ['your-server-ip']

# PostgreSQL database configuration.
DATABASE = {
    'NAME': 'netbox',         # Database name
    'USER': 'netbox',               # PostgreSQL username
    'PASSWORD': 'password',           # PostgreSQL password
    'HOST': 'localhost',      # Database server
    'PORT': '',               # Database port (leave blank for default)
}
SECRET_KEY = '+XHR3o&7K6isFk^DLc2%[email protected](jwN#tfGbV=O1hgMU$'

Guarda y cierra el archivo cuando hayas terminado.

A continuación, instala todas las dependencias requeridas por NetBox con el siguiente comando:

pip3 install -r /opt/netbox/requirements.txt

Una vez instaladas, migra la base de datos con el siguiente comando:

cd /opt/netbox/netbox/
python3 manage.py migrate

Una vez migrada con éxito, deberías ver la siguiente salida:

  Applying secrets.0004_tags... OK
  Applying secrets.0005_change_logging... OK
  Applying secrets.0006_custom_tag_models... OK
  Applying ipam.0021_vrf_ordering... OK
  Applying ipam.0022_tags... OK
  Applying ipam.0023_change_logging... OK
  Applying ipam.0024_vrf_allow_null_rd... OK
  Applying ipam.0025_custom_tag_models... OK
  Applying dcim.0067_device_type_remove_qualifiers... OK
  Applying dcim.0068_rack_new_fields... OK
  Applying dcim.0069_deprecate_nullablecharfield... OK
  Applying dcim.0070_custom_tag_models... OK
  Applying extras.0020_tag_data... OK
  Applying extras.0021_add_color_comments_changelog_to_tag... OK
  Applying dcim.0071_device_components_add_description... OK
  Applying dcim.0072_powerfeeds... OK
  Applying dcim.0073_interface_form_factor_to_type... OK
  Applying extras.0022_custom_links... OK
  Applying extras.0023_fix_tag_sequences... OK
  Applying ipam.0026_prefix_ordering_vrf_nulls_first... OK
  Applying ipam.0027_ipaddress_add_dns_name... OK
  Applying sessions.0001_initial... OK
  Applying taggit.0003_taggeditem_add_unique_index... OK
  Applying users.0001_api_tokens_squashed_0002_unicode_literals... OK
  Applying users.0003_token_permissions... OK

A continuación, tendrás que crear una cuenta de administrador para NetBox. Puedes hacerlo con el siguiente comando:

python3 manage.py createsuperuser

Proporciona tu nombre de usuario y contraseña de administrador y pulsa Intro, deberías ver la siguiente salida:

Username (leave blank to use 'root'): netboxadmin
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.

A continuación, mueve los archivos estáticos y carga los datos iniciales con el siguiente comando:

python3 manage.py collectstatic
python3 manage.py loaddata initial_data

Instalar y configurar Gunicorn para NetBox

A continuación, tendrás que instalar Gunicorn para NetBox. Puedes instalarlo con el comando pip como se muestra a continuación:

pip3 install gunicorn

A continuación, crea un archivo de configuración de Gunicorn para NetBox con el siguiente comando:

nano /opt/netbox/gunicorn_config.py

Añade las siguientes líneas:

command = '/usr/local/bin/gunicorn'
pythonpath = '/opt/netbox/netbox'
bind = 'your-server-ip:8001'
workers = 3
user = 'www-data'

Guarda y cierra el archivo cuando hayas terminado.

Configurar el Supervisor para Netbox

A continuación, tendrás que configurar el Supervisor para que gestione el servicio de NetBox. Puedes hacerlo con el siguiente comando:

nano /etc/supervisor/conf.d/netbox.conf

Añade las siguientes líneas:

[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = www-data

Guarda y cierra el archivo y luego reinicia el servicio de Supervisor y permite que se inicie tras el reinicio del sistema con el siguiente comando:

systemctl restart supervisor
systemctl enable supervisor

También puedes verificar el servicio Supervisor con el siguiente comando:

systemctl status supervisor

Salida:

? supervisor.service - Supervisor process control system for UNIX
   Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-08-07 07:13:26 UTC; 8s ago
     Docs: http://supervisord.org
  Process: 15013 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=0/SUCCESS)
 Main PID: 15015 (supervisord)
    Tasks: 5 (limit: 1098)
   CGroup: /system.slice/supervisor.service
           ??15015 /usr/bin/python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
           ??15037 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ??15042 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ??15043 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ??15044 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi

Aug 07 07:13:26 hitesh systemd[1]: Started Supervisor process control system for UNIX.
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,087 CRIT Supervisor running as root (no user in config file)
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,089 INFO Included extra file "/etc/supervisor/conf.d/netbox.conf" during parsing
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,117 INFO RPC interface 'supervisor' initialized
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,117 CRIT Server 'unix_http_server' running without any HTTP authentication check
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,118 INFO supervisord started with pid 15015
Aug 07 07:13:28 hitesh supervisord[15015]: 2019-08-07 07:13:28,123 INFO spawned: 'netbox' with pid 15037
Aug 07 07:13:29 hitesh supervisord[15015]: 2019-08-07 07:13:29,610 INFO success: netbox entered RUNNING state, process has st

Configurar Nginx para NetBox

A continuación, tendrás que configurar Nginx para que acceda a NetBox utilizando el puerto 80. Para ello, crea un archivo de configuración del host virtual con el siguiente comando

nano /etc/nginx/sites-available/netbox

Añade las siguientes líneas:

server {
    listen 80;
    server_name your-domain-name;
    client_max_body_size 25m;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://your-server-ip:8001;
    }
}

Guarda y cierra el archivo. A continuación, habilita el host virtual con el siguiente comando

ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/

Por último, reinicia el servicio Nginx para aplicar todos los cambios de configuración con el siguiente comando:

systemctl restart nginx

Accede a la interfaz web de NetBox

Ahora que NetBox está instalado y configurado, es el momento de acceder a la interfaz web de NetBox.

Abre tu navegador web y escribe la URL http://your-domain.com. Serás redirigido a la siguiente página:

Interfaz Netbox

Ahora, haz clic en el botón de inicio de sesión en la esquina superior derecha. Deberías ver la siguiente página:

Inicio de sesión en Netbox

Ahora, proporciona tu nombre de usuario y contraseña de administrador, y haz clic en el botón Iniciar sesión. Deberías ver el panel de control por defecto de NetBox en la siguiente página:

Panel de control de NetBox

Enhorabuena! has instalado y configurado correctamente NetBox en el servidor Ubuntu 18.04. Ahora puedes gestionar y documentar tu Red y tu dirección IP desde la ubicación central. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...