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

actualizar repo

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.

instalar dependencias

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:

comprobar apache2

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:

comprobar postgresql

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

comprobar redis

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.

comprobar python

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;

crear usuario de base de datos

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.

comprobar usuario de la base de datos

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.

verificar conexión

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.

configurar 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

crear usuario descargar 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

generar secreto

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.

instalación de netbox

Proceso de migración de la base de datos.

migración de bases de datos

El proceso de generación de archivos estáticos.

generar archivos estáticos

A continuación se muestra la salida una vez finalizada la instalación.

instalación finalizada

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.

crear superusuario

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

ejecutando netbox

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.

NETBOX INICIO

Introduce el usuario administrador y la contraseña que has creado, y haz clic en Iniciar sesión.

LOGIN NETBOX

Si todo va bien, deberías obtener el panel de NetBox como el siguiente:

netbox daSHBOARD

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.

comprobar netbox

La siguiente salida confirma que el servicio netbox-rq se está ejecutando y está habilitado.

netbox rq

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.

apache2 netbox

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:

netbox inicio

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.

cuadro de mandos de netbox

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.

También te podría gustar...