Cómo instalar la herramienta de documentación y gestión de redes NetBox en Ubuntu 20.04 LTS
Netbox es una potente y gratuita herramienta de gestión de direcciones IP (IPAM) y de infraestructuras de centros de datos (DCIM). Sirve para almacenar información sobre tus redes, máquinas virtuales, inventarios y mucho más. Fue desarrollada originalmente por el equipo de ingeniería de redes de DigitalOcean. Esta herramienta está escrita en el framework Django Python y se apoya en la base de datos PostgreSQL. Su objetivo es funcionar como una fuente de verdad específica del dominio para las operaciones de red.
En este tutorial, explicaremos cómo instalar Netbox con Nginx como proxy inverso en Ubuntu 20.04.
Requisitos previos
- Un servidor con Ubuntu 20.04.
- Una contraseña de root configurada en tu servidor.
Cómo empezar
Antes de empezar, necesitarás instalar algunas dependencias requeridas por Netbox. Puedes instalarlas todas ejecutando el siguiente comando:
apt-get install nginx git gcc supervisor python3 python3-dev python3-pip python3-setuptools build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev zlib1g-dev -y
Una vez instalados todos los paquetes, puedes pasar al siguiente paso.
Instalar y configurar la base de datos PostgreSQL
Netbox depende de la base de datos PostgreSQL para el almacenamiento de datos. Puedes instalarla con el siguiente comando:
apt-get install postgresql postgresql-contrib -y
Una vez instalado el PostgreSQL, accede al PostgreSQL con el siguiente comando:
su - postgres
postgres@ubuntu2004:~$ psql
Deberías obtener la siguiente salida:
psql (12.2 (Ubuntu 12.2-4)) 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 la base de datos de Netbox con el siguiente comando:
postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
A continuación, sal del shell PostgreSQL con el siguiente comando
postgres=# exit
postgres@ubuntu2004:~$ exit
Instalar y configurar NetBox
Primero, cambia el directorio a /opt y descarga la última versión de Netbox desde el repositorio Git Hub con el siguiente comando
cd /opt/
git clone -b master https://github.com/digitalocean/netbox.git
A continuación, crea un enlace simbólico del binario de Python con el siguiente comando
ln -s /usr/bin/python3 /usr/bin/python
A continuación, cambia el directorio a /opt/netbox/netbox/ y genera la clave secreta de Django ejecutando el siguiente comando:
cd /opt/netbox/netbox/
./generate_secret_key.py
Deberías obtener la siguiente salida:
wcq@L2)eTDpo(k^f4Sm9bariUnK0syCPMGEIjW6XV_8l5xhB7z
A continuación, cambia el directorio a netbox y cambia el nombre del archivo de configuración de ejemplo:
cd netbox
mv configuration.example.py configuration.py
A continuación, edita el archivo de configuración de Netbox y define tu base de datos, la clave secreta y los hosts permitidos:
nano configuration.py
Realiza los siguientes cambios:
ALLOWED_HOSTS = ['your-server-ip'] # PostgreSQL database configuration. See the Django documentation for a complete list of available parameters: # https://docs.djangoproject.com/en/stable/ref/settings/#databases DATABASE = { 'NAME': 'netbox', # Database name 'USER': 'netbox', # PostgreSQL username 'PASSWORD': 'password', # PostgreSQL password 'HOST': 'localhost', # Database server 'PORT': '', # Database port (leave blank for default) 'CONN_MAX_AGE': 300, # Max database connection age } SECRET_KEY = 'wcq@L2)eTDpo(k^f4Sm9bariUnK0syCPMGEIjW6XV_8l5xhB7z'
Guarda y cierra el archivo y luego instala todas las dependencias de Python con el siguiente comando:
pip3 install -r /opt/netbox/requirements.txt
A continuación, migra la base de datos con el siguiente comando:
cd /opt/netbox/netbox/
python3 manage.py migrate
A continuación, crea un usuario administrativo de Netbox con el siguiente comando:
python3 manage.py createsuperuser
Se te pedirá que proporciones el nombre de usuario y la contraseña como se muestra a continuación:
Username (leave blank to use 'root'): netboxadmin Email address: [email protected] Password: Password (again): Superuser created successfully.
A continuación, recoge el archivo estático con el siguiente comando:
python3 manage.py collectstatic
Deberías ver la siguiente salida:
976 static files copied to '/opt/netbox/netbox/static'.
Instalar y configurar Gunicorn
Netbox es una aplicación basada en Django. Así que necesitarás instalar Gunicorn en tu sistema. Puedes instalarlo ejecutando el siguiente comando:
pip3 install gunicorn
Después de instalar Gunicorn, crea un nuevo 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.
Instalar y configurar el Supervisor
El Supervisor es un sistema cliente/servidor que te permite supervisar y controlar el servicio NetBox. Puedes crear un nuevo archivo de configuración del Supervisor para Netbox 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 cuando hayas terminado. A continuación, reinicia el servicio de Supervisor con el siguiente comando:
systemctl restart supervisor
También puedes verificar el estado del servicio Supervisor con el siguiente comando:
systemctl status supervisor
Deberías obtener la siguiente salida:
? supervisor.service - Supervisor process control system for UNIX Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2020-05-30 05:49:08 UTC; 14s ago Docs: http://supervisord.org Main PID: 550606 (supervisord) Tasks: 5 (limit: 4691) Memory: 184.3M CGroup: /system.slice/supervisor.service ??550606 /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf ??550626 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi ??550628 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi ??550629 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi ??550630 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi May 30 05:49:08 ubuntu2004 systemd[1]: Started Supervisor process control system for UNIX. May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,664 CRIT Supervisor is running as root. Privileges were not dropped becau> May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,664 INFO Included extra file "/etc/supervisor/conf.d/netbox.conf" during p> May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,671 INFO RPC interface 'supervisor' initialized May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,671 CRIT Server 'unix_http_server' running without any HTTP authentication> May 30 05:49:08 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:08,672 INFO supervisord started with pid 550606 May 30 05:49:09 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:09,676 INFO spawned: 'netbox' with pid 550626 May 30 05:49:11 ubuntu2004 supervisord[550606]: 2020-05-30 05:49:11,060 INFO success: netbox entered RUNNING state, process has stayed up for
Configurar Nginx para NetBox
Es una buena idea configurar Nginx como proxy inverso para acceder a la Netbox en el puerto 80. Puedes crear una nueva configuración de host virtual Nginx con el siguiente comando:
nano /etc/nginx/sites-available/netbox.conf
Añade las siguientes líneas:
server { listen 80; server_name your-server-ip; 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, crea un enlace simbólico al directorio /etc/nginx/sites-enabled/:
ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/
A continuación, comprueba si Nginx tiene algún error de sintaxis con el siguiente comando:
nginx -t
Si todo está bien, deberías obtener la siguiente salida:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Por último, reinicia el servicio Nginx para aplicar los cambios.
systemctl restart nginx
También puedes verificar el Nginx con el siguiente comando:
systemctl status nginx
Deberías obtener la siguiente salida:
? nginx.service - The nginx HTTP and reverse proxy server Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2020-05-30 22:28:13 EST; 4min 14s ago Process: 984 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS) Process: 982 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS) Process: 980 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS) Main PID: 985 (nginx) Tasks: 3 (limit: 25028) Memory: 5.5M CGroup: /system.slice/nginx.service ??985 nginx: master process /usr/sbin/nginx ??986 nginx: worker process ??987 nginx: worker process May 30 21:28:12 ubuntu2004 systemd[1]: Starting The nginx HTTP and reverse proxy server... Mar 30 21:28:12 ubuntu2004 nginx[982]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok Mar 30 21:28:12 ubuntu2004 nginx[982]: nginx: configuration file /etc/nginx/nginx.conf test is successful Mar 30 21:28:13 ubuntu2004 systemd[1]: Started The nginx HTTP and reverse proxy server.
En este punto, el servidor web Nginx está configurado para servir a Netbox en el puerto 80. Ahora puedes proceder a acceder a la interfaz web de Netbox.
Acceder a la interfaz web de Netbox
Abre tu navegador web y visita la URL http://your-server-ip. Serás redirigido a la siguiente página:
Haz clic en el botón de inicio de sesión. Deberías ver la página de inicio de sesión de Netbox en la siguiente pantalla:
Proporciona tu nombre de usuario y contraseña de administrador de Netbox, y haz clic en el botón de inicio de sesión. Deberías ver el panel de control por defecto de Netbox en la siguiente página:
Conclusión
En esta guía, has aprendido a instalar Netbox en Ubuntu 20.04 con Nginx. Ahora puedes empezar a documentar tu infraestructura de red. Para más información, visita la documentación oficial de Netbox. No dudes en preguntarme si tienes alguna duda.