NetBox es un software de aplicación web gratuito y de código abierto que se puede usar para administrar y documentar redes informáticas. Está especialmente diseñado para administrar la dirección IP y la infraestructura del centro de datos a través de un navegador web. NetBox está escrito en el marco Django Python y usa PostgreSQL para la base de datos. Con NetBox, puede administrar y documentar fácilmente máquinas virtuales y clústeres, circuitos de datos, red, consola y conexiones de alimentación 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.
- Se configura una contraseña raíz en su servidor.
Cómo empezar
Primero, actualice el paquete de su sistema a la última versión con el siguiente comando:
apt-get update -y
apt-get upgrade -y
Una vez que todos los paquetes estén actualizados, reinicie su sistema para aplicar todos los cambios de configuración.
A continuación, deberá instalar las dependencias necesarias para ejecutar NetBox. Puede instalarlos todos 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 que todas las dependencias estén instaladas, puede continuar con el siguiente paso.
Instalar y configurar PostgreSQL
A continuación, deberá instalar PostgreSQL en su servidor. De forma predeterminada, la última versión de PostgreSQL no está disponible en el repositorio predeterminado de Ubuntu 18.04. Por lo tanto, deberá agregar el repositorio de PostgreSQL a su sistema.
Primero, descargue y agregue la clave GPG con el siguiente comando:
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -
A continuación, agregue el repositorio con el siguiente comando:
nano /etc/apt/sources.list.d/postgres.list
Agregue la siguiente línea:
deb http://apt.postgresql.org/pub/repos/apt/ xanial-pgdg main
Guarde y cierre el archivo. Luego, actualice el repositorio e instale PostgreSQL con el siguiente comando:
apt-get update -y
apt-get install postgresql postgresql-contrib -y
Una vez instalado, verifique el estado de PostgreSQL con el siguiente comando:
systemctl status postgresql
Debería ver el siguiente resultado:
? 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, deberá crear una base de datos y un usuario para NetBox. Primero, inicie sesión 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, cree 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, otorgue todos los privilegios a NetBox con el siguiente comando:
postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
Finalmente, salga del shell de PostgreSQL con el siguiente comando:
postgres=#exit
Una vez que haya terminado, puede continuar con el siguiente paso.
Instalar y configurar NetBox
Puede 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
Luego, cambie el directorio a netbox y genere Django SECRET Key:
cd /opt/netbox/netbox/netbox/
./generate_secret_key.py
Debería ver la clave generada en el siguiente resultado:
+XHR3o&7K6isFk^DLc2%[email protected](jwN#tfGbV=O1hgMU$
A continuación, cambie el nombre del archivo de configuración predeterminado con el siguiente comando:
mv configuration.example.py configuration.py
A continuación, abra el archivo de configuración y defina los detalles de su base de datos y la clave secreta:
nano configuration.py
Realice 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$'
Guarde y cierre el archivo cuando haya terminado.
A continuación, instale todas las dependencias requeridas por NetBox con el siguiente comando:
pip3 install -r /opt/netbox/requirements.txt
Una vez instalada, migre la base de datos con el siguiente comando:
cd /opt/netbox/netbox/
python3 manage.py migrate
Una vez que migró con éxito, debería ver el siguiente resultado:
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, deberá crear una cuenta de administrador para NetBox. Puedes hacerlo con el siguiente comando:
python3 manage.py createsuperuser
Proporcione su nombre de usuario y contraseña de administrador y presione Entrar, debería ver el siguiente resultado:
Username (leave blank to use 'root'): netboxadmin Email address: [email protected] Password: Password (again): Superuser created successfully.
A continuación, mueva los archivos estáticos y cargue 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, deberá instalar Gunicorn para NetBox. Puede instalarlo con el comando pip como se muestra a continuación:
pip3 install gunicorn
A continuación, cree un archivo de configuración de Gunicorn para NetBox con el siguiente comando:
nano /opt/netbox/gunicorn_config.py
Agregue las siguientes líneas:
command = '/usr/local/bin/gunicorn' pythonpath = '/opt/netbox/netbox' bind = 'your-server-ip:8001' workers = 3 user = 'www-data'
Guarde y cierre el archivo cuando haya terminado.
Configurar supervisor para Netbox
A continuación, deberá configurar Supervisor para administrar el servicio NetBox. Puedes hacerlo con el siguiente comando:
nano /etc/supervisor/conf.d/netbox.conf
Agregue las siguientes líneas:
[program:netbox] command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi directory = /opt/netbox/netbox/ user = www-data
Guarde y cierre el archivo, luego reinicie el servicio de supervisor y permita que se inicie después de reiniciar el sistema con el siguiente comando:
systemctl restart supervisor
systemctl enable supervisor
También puede verificar el servicio de 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, deberá configurar Nginx para acceder a NetBox mediante el puerto 80. Para hacerlo, cree un archivo de configuración de host virtual con el siguiente comando:
nano /etc/nginx/sites-available/netbox
Agregue 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; } }
Guarde y cierre el archivo. Luego, habilite el host virtual con el siguiente comando:
ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/
Finalmente, reinicie el servicio Nginx para aplicar todos los cambios de configuración con el siguiente comando:
systemctl restart nginx
Acceder a la interfaz web de NetBox
NetBox ahora está instalado y configurado, es hora de acceder a la interfaz web de NetBox.
Abra su navegador web y escriba la URL http://su-dominio.com. Será redirigido a la siguiente página:
Ahora, haga clic en Iniciar sesión botón en la esquina superior derecha. Debería ver la siguiente página:
Ahora, proporcione su nombre de usuario y contraseña de administrador, luego haga clic en Iniciar sesión En botón. Debería ver el panel predeterminado de NetBox en la siguiente página:
¡Felicidades! Ha instalado y configurado con éxito NetBox en el servidor Ubuntu 18.04. Ahora puede administrar y documentar su red y dirección IP desde la ubicación central. Siéntase libre de preguntarme si tiene alguna pregunta.