Cómo instalar NetBox IRM (Herramienta de Modelado de Recursos de Infraestructura) en el servidor Ubuntu 24.04
NetBox es un Modelado de Recursos de Infraestructura (IRM) diseñado para la automatización de redes y la ingeniería de infraestructuras. Inicialmente, fue creado por el equipo de DigitalOcean, y ahora se ha convertido en un proyecto de código abierto publicado bajo la Licencia Apache 2.
NetBox se creó en el marco web Python Django con PostgreSQL como base de datos por defecto, y la instalación de NetBox es bastante similar a la de otras aplicaciones web Python Django.
Este tutorial te mostrará cómo instalar Netbox IRM en el servidor Ubuntu 24.04 con PostgreSQL como base de datos y Apache como proxy inverso. También asegurarás Netbox con HTTPS mediante Certbot y Letsencrypt.
Requisitos previos
Antes de continuar, asegúrate de que tienes lo siguiente
- Un servidor Ubuntu 24.04
- Un usuario no root con privilegios de administrador
- Un nombre de dominio apuntando a la dirección IP del servidor
Instalación de dependencias
Para instalar Netbox, debes asegurarte de que las dependencias están instaladas en tu servidor Ubuntu. Esto incluye Python3, el servidor PostgreSQL, el servidor web Apache, Redis y las bibliotecas del sistema. En esta sección, instalarás esos paquetes con el gestor de paquetes APT.
Primero, ejecuta el siguiente comando para actualizar el índice de paquetes de Ubuntu.
sudo apt update
Una vez actualizado, instala las dependencias para Netbox con el siguiente comando. En este ejemplo, instalarás PostgreSQL, Apache, Python, Redis, Certbot, dependencias de compilación y algunas bibliotecas.
sudo apt install apache2 postgresql postgresql-common libpq-dev redis-server git certbot python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libssl-dev zlib1g-dev
Introduce‘Y’ para confirmar la instalación.
Una vez finalizada la instalación, ejecuta el siguiente comando ‘systemctl’ para verificar el estado del servidor web Apache.
sudo systemctl is-enabled apache2 sudo systemctl status apache2
En la siguiente salida, puedes ver que Apache se está ejecutando y está habilitado.
Por último, comprueba el estado del servidor PostgreSQL con lo siguiente:
sudo systemctl is-enabled postgresql sudo systemctl status postgresql
En la salida siguiente, puedes ver que PostgreSQL está habilitado y en ejecución con el estado exited (el systemd no puede encontrar el servicio a monitorizar).
Configurar PostgreSQL
Una vez instaladas las dependencias, tienes que configurar el servidor PostgreSQL creando un nuevo usuario y la base de datos que utilizará Netbox.
Accede al servidor PostgreSQL utilizando el comando que se indica a continuación.
sudo -u postgres psql
Ahora ejecuta las siguientes consultas para crear un nuevo usuario‘netbox‘ con la contraseña‘netboxpassword‘ y la nueva base de datos‘netboxdb‘.
CREATE USER netbox LOGIN CREATEDB PASSWORD 'netboxpassword'; CREATE DATABASE netboxdb OWNER netbox;
Una vez creadas la base de datos y el usuario, comprueba la lista de bases de datos y usuarios en PostgreSQL con lo siguiente.
\l \du
Puedes ver a continuación que la base de datos‘netboxdb‘ y el usuario‘netbox‘ están creados.
Escribe‘quit‘ para salir del servidor PostgreSQL.
Descargar Configurar Netbox
Ahora que la base de datos PostgreSQL está lista, descargarás e instalarás Netbox en tu máquina Ubuntu. Configurarás el nombre de dominio, la clave secreta y la base de datos para Netbox.
Primero, ejecuta el siguiente comando para crear un nuevo usuario ‘netbox’ en tu máquina Ubuntu.
sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox
Ahora ejecuta el siguiente comando para descargar el código fuente de Netbox con el comando‘git‘, y cambia la propiedad al usuario‘netbox‘.
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git /opt/netbox sudo chown -R netbox:netbox /opt/netbox
Desplázate al directorio‘/opt/netbox/netbox/netbox‘ y ejecuta el archivo‘generate_secret_key.py‘. Copia la clave secreta en tu nota.
cd /opt/netbox/netbox/netbox sudo -u netbox python3 ../generate_secret_key.py
A continuación, copia el archivo«configuration.py» y modifícalo utilizando el editor«nano«.
sudo -u netbox cp configuration_example.py configuration.py sudo -u netbox nano configuration.py
Añade tu dirección IP local y tu nombre de dominio a los‘ALLOWED_HOSTS‘.
ALLOWED_HOSTS = ['netbox.howtoforge.local', '192.168.10.60']
Introduce el nombre, usuario y contraseña de tu base de datos PostgreSQL en la sección‘DATABASE‘.
# database configuration DATABASE = { 'NAME': 'netboxdb', # Database name 'USER': 'netbox', # PostgreSQL username 'PASSWORD': 'netboxpassword', # PostgreSQL password 'HOST': 'localhost', # Database server 'PORT': '', # Database port (leave blank for default) 'CONN_MAX_AGE': 300, # Max database connection age (seconds) }
Pega tu clave secreta en la sección‘CLAVE_SECRETA‘.
SECRET_KEY = '98%D9uh8S%)T0QhQ@Z3zYf%Hik^CqWJ)Uwz%0J7TZUztmNiitG'
Guarda el archivo y sal del editor cuando hayas terminado.
Migrar Netbox y configurar el administrador
Ahora que has configurado Netbox con el servidor PostgreSQL, estás listo para migrar la base de datos y crear un usuario administrador para la instalación de Netbox.
Ejecuta el script‘upgrade.sh‘ utilizando el comando que aparece a continuación. Esto creará un entorno Python, instalará las dependencias para Netbox, migrará la base de datos de Netbox, conectará con Redis y, a continuación, generará archivos estáticos.
sudo -u netbox /opt/netbox/upgrade.sh
Abajo puedes ver la migración de la base de datos para Netbox.
Y abajo cuando‘manage.py’ genera archivos estáticos.
Una vez finalizado el proceso, tienes que crear un nuevo usuario administrador para Netbox a través del script‘manage.py‘.
Ejecuta el siguiente comando para activar el entorno virtual de Netbox. Una vez activado, tu shell pasará a ser como ‘(venv) usuario@nombrehost‘.
source /opt/netbox/venv/bin/activate
Ve al directorio‘/opt/netbox/netbox‘ y ejecuta el script‘manage.py‘ como se indica a continuación:
cd /opt/netbox/netbox python3 manage.py createsuperuser
Introduce tu nombre de usuario, dirección de correo electrónico y contraseña de administrador de Netbox.
Una vez completado, ejecuta el comando‘desactivar‘ para salir del entorno virtual de Netbox.
Ejecutar Netbox como servicio
En esta sección, copiarás las configuraciones de Netbox que se utilizarán para ejecutar Netbox como un servicio systemd. Necesitas asegurarte de que Netbox se ejecuta bajo Gunicorn, y luego copiar los archivos del servicio Netbox al directorio‘/etc/systemd/system‘.
Primero, copia el script‘gunicorn.py‘ al directorio‘/opt/netbox‘. Este script contiene la configuración para que Netbox se ejecute bajo el servidor WSGI de Python.
sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
Ahora ejecuta el siguiente comando para copiar los archivos de servicio para Netbox en el directorio‘/etc/systemd/system‘ y recarga el gestor systemd.
sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/ sudo systemctl daemon-reload
Una vez recargado systemd, ejecuta el siguiente comando‘systemctl‘ para iniciar y habilitar los servicios de Netbox.
sudo systemctl enable --now netbox netbox-rq netbox-housekeeping
Por último, verifica los servicios de Netbox para asegurarte de que se están ejecutando con el siguiente comando.
sudo systemctl status netbox netbox-rq netbox-housekeeping
En la siguiente salida, puedes ver que el servicio‘netbox‘ se está ejecutando y está habilitado.
Para el servicio‘netbox-rq‘, deberías obtener una salida como ésta:
Por último, el servicio‘netbox-housekeeping‘ con el estado‘dead’ porque se ejecutará como un temporizador.
Configurar Apache como proxy inverso
En este punto, Netbox se está ejecutando en segundo plano como un servicio bajo el servidor WSGI de Python. Para que sea accesible desde el exterior, necesitas configurar Apache como proxy inverso. Antes de eso, también necesitas generar certificados SSL para asegurar la instalación de Netbox.
Primero, ejecuta el siguiente comando para detener el servicio‘apache2‘.
sudo systemctl stop apache2
Ahora genera certificados SSL desde Letsencrypt con el comando‘certbot‘ que aparece a continuación. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico con tu información.
sudo certbot certonly --standalone --preferred-challenges http -d netbox.howtoforge.local
Una vez finalizado el proceso, tus certificados SSL estarán disponibles en el directorio‘/etc/letsencrypt/live/domain.com‘.
A continuación, copia la configuración de Apache para Netbox en el archivo‘/etc/apache2/sites-available/netbox.conf‘ y modifícalo utilizando el editor‘nano‘.
sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf sudo nano /etc/apache2/sites-available/netbox.conf
Sustituye el nombre de dominio en la opción‘ServerName‘ y cambia la ruta de tus certificados SSL.
<VirtualHost *:80> # CHANGE THIS TO YOUR SERVER'S NAME ServerName netbox.howtoforge.local ... </VirtualHost> <VirtualHost *:443> ProxyPreserveHost On # CHANGE THIS TO YOUR SERVER'S NAME ServerName netbox.howtoforge.local SSLEngine on SSLCertificateFile /etc/letsencrypt/live/netbox.howtoforge.local/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/netbox.howtoforge.local/privkey.pem ... </VirtualHost>
Guarda el archivo y sal del editor cuando hayas terminado.
Ahora ejecuta el siguiente comando para activar los módulos de Apache y el archivo de host virtual‘netbox.conf‘.
sudo a2enmod ssl proxy proxy_http headers rewrite sudo a2ensite netbox.conf
Una vez activado el host virtual, ejecuta el siguiente comando para reiniciar Apache y aplicar tus cambios. Con esto, tu instalación de Netbox debería estar funcionando bajo el proxy inverso de Apache con HTTPS activado.
sudo systemctl restart apache2
Por último, visita https://netbox.howtoforge.local/ con tu navegador web y serás redirigido a la página de inicio de sesión de Netbox. Introduce tu nombre de usuario y contraseña de administrador, y haz clic en Iniciar sesión.
Verás el siguiente panel de Netbox si tienes las credenciales de administrador adecuadas.
Haz clic en el menú Admin > Sistema para ver información sobre tu instalación de Netbox. En el siguiente resultado, puedes ver que Netbox v4.1.7 está instalado con la base de datos PostgreSQL.
Conclusión
¡Enhorabuena! Has terminado la instalación de Netbox IRM en el servidor Ubuntu 24.04. Ya tienes Netbox instalado y funcionando con PostgreSQL como servidor de base de datos y Apache como proxy inverso. También has asegurado Netbox con HTTPS a través de Certbot.