Cómo instalar NetBox IRM en Debian 12
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 fue creado 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.
En esta guía, te mostraremos cómo instalar paso a paso el software NetBox IRM en un servidor Debian 12. Te mostraremos la instalación de NetBox con PostgreSQL como servidor de base de datos y el servidor web Apache2 como proxy inverso. También asegurarás tu instalación de NetBox con certificados SSl/TLS.
Requisitos previos
Antes de continuar, asegúrate de que tienes lo siguiente:
- Un servidor Debian 12.
- Un usuario no root con privilegios de administrador.
- Un nombre de dominio público o local apuntando a la dirección IP del servidor.
Instalación de las dependencias
NetBox es una aplicación web basada en el framework web Django de Python. Se puede instalar con el servidor de base de datos PostgreSQL y el servidor Redis para la gestión de la caché.
En el siguiente paso, instalarás las dependencias que NetBox necesita, también instalarás el servidor web Apache2 que se utilizará como proxy inverso para tu instalación de NetBox.
Para empezar, ejecuta el siguiente comando apt para actualizar tu repositorio Debian.
sudo apt update
A continuación, instala las dependencias de los paquetes para tu instalación NetBox IRM.
sudo apt install apache2 postgresql postgresql-common libpq-dev redis-server git python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libssl-dev zlib1g-dev
Escribe y para proceder a la instalación de dependencias como el servidor web Apache2, el servidor de bases de datos PostgreSQL, Redis, Git, paquetes Python3 y algunas librerías adicionales del sistema.
Una vez instaladas las dependencias, verifica cada una de ellas ejecutando el siguiente comando.
Comprueba el servicio apache2 para asegurarte de que está habilitado y en ejecución.
sudo systemctl is-enabled apache2 sudo systemctl status apache2
Si apache2 se está ejecutando y está habilitado, deberías obtener una salida como la siguiente:
Comprueba el servicio PostgreSQL para asegurarte de que se está ejecutando y está habilitado.
sudo systemctl is-enabled postgresql sudo systemctl status postgresql
El servicio PostgreSQL debería estar ejecutándose y habilitado de esta forma:
Comprueba ahora el servicio Redis para asegurarte de que se está ejecutando y está habilitado.
sudo systemctl is-enabled redis sudo systemctl status redis
El servicio Redis debe estar en ejecución y habilitado de la siguiente manera
Por último, verifica la versión de Python utilizando el siguiente comando. La última versión de NetBox IRM es compatible con Python v3.9, 3.10 y 3.11.
python3 --version
Deberías ver que Python 3.11 está instalado en tu máquina Debian.
Configurar el servidor PostgreSQL
Después de instalar las dependencias, crearás una nueva base de datos PostgreSQL y el usuario que utilizará NetBox. Para ello, debes iniciar sesión en el servidor PostgreSQL a través de la línea de comandos psql.
Accede al servidor PostgreSQL ejecutando el siguiente comando.
sudo -u postgres psql
Ejecuta las siguientes consultas para crear un nuevo usuario netbox con la contraseña p4ssw0rd. A continuación, crea una nueva base de datos netboxdb con el propietario netbox.
CREATE USER netbox LOGIN CREATEDB PASSWORD 'p4ssw0rd'; CREATE DATABASE netboxdb OWNER netbox;
Después, comprueba la lista de usuarios y bases de datos en tu PostgreSQL ejecutando el comando siguiente.
\l \du
Deberías ver la base de datos netboxdb y el usuario netbox creados en tu servidor PostgreSQL.
Escribe quit para salir del servidor PostgreSQL.
A continuación, inicia sesión en PostgreSQL utilizando el nuevo usuario netbox en la base de datos netboxdb. Esto garantizará que el usuario netbox pueda conectarse a la base de datos netboxdb.
sudo -u postgres psql --username netbox --password --host localhost netboxdb
Una vez conectado, verifica tu conexión utilizando la siguiente consulta.
\conninfo
En la siguiente salida, deberías ver que te has conectado a la base de datos netboxdb a través del usuario netbox.
Vuelve a escribir quit para salir de tu servidor PostgreSQL.
Configurar el servidor Redis
Con la base de datos PostgreSQL y el usuario creados, el siguiente paso es configurar tu servidor Redis que se utilizará como gestor de caché para NetBox. Para ello, modificarás la configuración de Redis /etc/redis/redis.conf y verificarás tus cambios mediante redis-cli.
Abre la configuración por defecto de Redis /etc/redis/redis. conf utilizando el siguiente comando del editor nano.
sudo nano /etc/redis/redis.conf
Descomenta la opción requirepass e introduce la contraseña que utilizarás para proteger tu servidor Redis.
requirepass p4ssw0rdNetBox
Cuando termines, guarda y sal del archivo.
Ahora ejecuta el siguiente comando systemctl para reiniciar el servicio redis y aplicar los cambios que has realizado.
sudo systemctl restart redis
Para asegurarte de que todo funciona, puedes verificar Redis mediante redis-cli. Accede a tu servidor Redis utilizando el siguiente comando redis-cli.
redis-cli
Autentícate en el servidor Redis utilizando la siguiente consulta AUTH y asegúrate de cambiar la contraseña.
AUTH p4ssw0rdNetBox
Una vez autenticado, deberías obtener la salida OK.
Ahora ejecuta la siguiente consulta PING para asegurarte de que la conexión se ha realizado correctamente.
PING
Si es correcta, deberías obtener la salida PONG del servidor Redis.
Instalación de NetBox IRM
En la siguiente sección, descargarás e instalarás NetBox IRM en tu sistema. Descargarás el código fuente de NetBox a través de Git, luego lo configurarás modificando la configuración de NetBox, añadiendo la base de datos del servidor PostgreSQL y Redis, y también crearás un usuario administrador para NetBox.
En primer lugar, ejecuta el siguiente comando para crear un nuevo usuario netbox de systemd que se utilizará para ejecutar la instalación de NetBox.
sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox
Descarga el código fuente de NetBox IRM a través de git y cambia la propiedad del directorio /opt/netbox al usuario netbox.
cd /opt; sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git sudo chown -R netbox:netbox /opt/netbox
A continuación, mueve tu directorio de trabajo a /opt/netbox y genera la clave secreta de NetBox mediante el script generate_secret_key.py. Asegúrate de copiar la clave secreta generada que se utilizará para tu instalación de NetBox.
cd /opt/netbox/netbox/netbox sudo -u netbox python3 ../generate_secret_key.py
Copia la configuración por defecto configuration_example. py en configuration.py, luego abre el nuevo archivo configuration. py utilizando el siguiente comando del editor nano.
sudo -u netbox cp configuration_example.py configuration.py sudo -u netbox nano configuration.py
En la sección ALLOWED_HOSTS, añade el nombre de tu dominio o la dirección IP de tu servidor.
ALLOWED_HOSTS = ['netbox.hwdomain.io', '192.168.10.15']
Introduce los detalles de tu base de datos PostgreSQL en la sección DATABASE, incluyendo el nombre de la base de datos, el usuario, la contraseña, el host y el puerto.
# database configuration DATABASE = { 'NAME': 'netboxdb', # Database name 'USER': 'netbox', # PostgreSQL username 'PASSWORD': 'p4ssw0rd', # PostgreSQL password 'HOST': 'localhost', # Database server 'PORT': '', # Database port (leave blank for default) 'CONN_MAX_AGE': 300, # Max database connection age (seconds) }
En la sección REDIS, introduce los datos de tu servidor Redis, tanto para las tareas como para las opciones de caché.
# Redis cache configuration REDIS = { 'tasks': { 'HOST': 'localhost', # Redis server 'PORT': 6379, # Redis port 'PASSWORD': 'p4ssw0rdNetBox', # Redis password (optional) 'DATABASE': 0, # Database ID 'SSL': False, # Use SSL (optional) }, 'caching': { 'HOST': 'localhost', 'PORT': 6379, 'PASSWORD': 'p4ssw0rdNetBox', 'DATABASE': 1, # Unique ID for second database 'SSL': False, } }
Por último, introduce tu clave secreta en la sección SECRET_KEY.
# Secret key SECRET_KEY = 'ZjYbgz$)j!NnqJcZLR!NB2BCz4(Yyk=o^Xr(1sTIrM)ZyiE%nk'
Cuando hayas terminado, guarda y sal del archivo.
A continuación, ejecuta el script /opt/netbox/upgrade.sh para iniciar la instalación de NextBox. Esto creará un nuevo entorno virtual Python, instalará algunos paquetes y bibliotecas Python, ejecutará la migración de la base de datos a tu servidor PostgreSQL, y también generará archivos estáticos para NextBox.
sudo -u netbox /opt/netbox/upgrade.sh
A continuación se muestra la salida similar que obtendrás durante el proceso.
Proceso de migración de la base de datos.
El proceso de generación de archivos estáticos.
A continuación se muestra la salida una vez finalizada la instalación.
Una vez configurado NetBox, crearás un usuario administrador para NetBox. Para ello, entra en el entorno virtual Python que se crea con el siguiente comando.
source /opt/netbox/venv/bin/activate
Desplázate al directorio /opt/netbox/netbox y ejecuta el script manage.py para crear un usuario administrador de NetBox.
cd /opt/netbox/netbox python3 manage.py createsuperuser
Cuando te lo pida, introduce tu dirección de correo electrónico de administrador, tu nombre de usuario y tu contraseña.
A continuación, ejecuta de nuevo el script manage . py para verificar tu instalación de NetBox. Con esto, ejecutarás NetBox en tu dirección IP local con el puerto 8000.
python3 manage.py runserver 0.0.0.0:8000 --insecure
Abre tu navegador web y visita la dirección IP de tu servidor seguida del puerto 8000, por ejemplo http://192.168.10.15:8000/. Si la instalación se ha realizado correctamente, deberías obtener la página de índice del IRM de NetBox y, desde allí, haz clic en el botón Iniciar sesión situado en la parte superior derecha.
Introduce el usuario administrador y la contraseña que has creado, y haz clic en Iniciar sesión.
Si todo va bien, deberías obtener el panel de NetBox como el siguiente:
Vuelve a tu terminal y pulsa Ctrl+c para terminar el proceso.
Ejecutar NetBox como un servicio Systemd
Llegados a este punto, ya has instalado NetBox IRM en tu máquina Debian. Para facilitarte la gestión de NetBox, ejecutarás NetBox como un servicio systemd, que te permite controlar NetBox mediante la utilidad systemctl.
Copia el archivo /opt/netbox/contrib/gunicorn . py en /opt/netbox/gunicorn.py y, a continuación, abre el archivo gunicorn.py utilizando el comando del editor nano que aparece a continuación.
sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py sudo -u netbox nano /opt/netbox/gunicorn.py
Cambia la opción bind por la siguiente. Esto ejecutará tu instalación de NetBox en localhost puerto 8001 a través de gunicorn.
bind = '127.0.0.1:8001'
Guarda y cierra el archivo cuando hayas terminado.
A continuación, copia los archivos de servicio systemd para NetBox en el directorio /etc/systemd/system/. Esto copiará el archivo de servicio netbox, netbor-rq y netbook-housekeeping al directorio /etc/systemd/system/. A continuación, recarga el gestor systemd para aplicar los nuevos cambios en tu sistema.
sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/ sudo systemctl daemon-reload
Ahora puedes iniciar y habilitar tanto el servicio netbox como netbox-rq mediante el comando systemctl que se indica a continuación. Tras ejecutar el comando, tu instalación de NetBox se ejecutará en segundo plano como un servicio systemd.
sudo systemctl start netbox netbox-rq netbox-housekeeping sudo systemctl enable netbox netbox-rq netbox-housekeeping
Por último, verifica tanto el servicio netbox como el netbox-rq utilizando el siguiente comando.
sudo systemctl status netbox sudo systemctl status netbox-rq
La siguiente salida indica que el servicio netbox se está ejecutando y está habilitado.
La siguiente salida confirma que el servicio netbox-rq se está ejecutando y está habilitado.
Configurar Apache como Proxy Inverso
En el siguiente paso, configurarás Apache2 como proxy inverso. Antes de eso, asegúrate de que tienes un nombre de dominio apuntando a la dirección IP de tu servidor, también puedes utilizar un nombre de dominio local.
Si utilizas un dominio local, puedes ejecutar el siguiente comando openssl para generar certificados SSL. Si utilizas un dominio público, puedes utilizar Certbot para generar certificados SSL desde Letsencrypt.
openssl req -x509 -newkey rsa:4096 -sha256 -days 365 \ -nodes -keyout /etc/ssl/private/netbox.key -out /etc/ssl/certs/netbox.crt -subj "/CN=netbox.hwdomain.io" \ -addext "subjectAltName=DNS:netbox.hwdomain.io,IP:192.168.10.15"
Ahora copia el ejemplo de configuración del host virtual de Apache para NetBox en /etc/apache2/sites-available/netbox.conf. A continuación, modifica el archivo /etc/apache2/sites-available/netbox. conf utilizando el siguiente comando del editor nano.
sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf sudo nano /etc/apache2/sites-available/netbox.conf
Cambia el nombre de dominio por tu dominio y cambia la ruta de los certificados SSL/TLS por el archivo de ruta adecuado.
<VirtualHost *:80> # CHANGE THIS TO YOUR SERVER'S NAME ServerName netbox.hwdomain.io
…
</VirtualHost>
<VirtualHost *:443>
ProxyPreserveHost On
# CHANGE THIS TO YOUR SERVER’S NAME
ServerName netbox.hwdomain.io
SSLEngine on
SSLCertificateFile /etc/ssl/certs/netbox.crt
SSLCertificateKeyFile /etc/ssl/private/netbox.key
…
</VirtualHost>
Guarda y sal del archivo cuando hayas terminado.
Ahora ejecuta el siguiente comando para activar algunos módulos de Apache2 necesarios para NetBox.
sudo a2enmod ssl proxy proxy_http headers rewrite
Después, ejecuta el siguiente comando para activar el archivo de host virtual netbox.conf y verifica tus configuraciones de Apache2 para asegurarte de que tienes la sintaxis adecuada.
sudo a2ensite netbox.conf sudo apachectl configtest
Si la sintaxis de Apache2 es correcta, deberías obtener la salida Sintaxis OK.
Ahora ejecuta el siguiente comando para reiniciar el servicio Apache2 y aplicar los cambios que has realizado.
sudo systemctl restart apache2
Tu instalación de NetBox debería ser accesible a través del nombre de dominio.
Abre tu navegador web y visita el nombre de dominio de tu instalación NetBox, por ejemplo https://netbox.hwdomain.io/. Si todo va bien, deberías ver la página de índice de NetBox como la siguiente:
Después de iniciar sesión, deberías ver el panel de control IRM de NetBox ejecutándose con el nombre de dominio bajo el proxy inverso Apache2.
Conclusión
En conclusión, ya has instalado NetBox IRM en el servidor Debian 12 con el servidor de base de datos PostgreSQL y el servidor web Apache2 utilizado como proxy inverso. También has asegurado tu instalación de NetBox mediante certificados SSL/TLS.