Cómo instalar NetBox IRM en Debian 11

NetBox es un software de 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.

NetBox te ayuda a gestionar tu infraestructura, lo que incluye

  • DCIM (Gestión de la Infraestructura del Centro de Datos)
  • IPAM (Gestión de Direcciones IP)
  • Circuitos de datos
  • Conexiones (red, consola y alimentación)
  • Bastidores de equipos
  • Virtualización
  • Secretos

Este artículo te guiará por los pasos para instalar el Modelado de Recursos de Infraestructura NetBox en un servidor Debian 11. Este artículo incluye la instalación básica de la base de datos PostgreSQL, el servidor Redis y la configuración básica de Apache2 como proxy inverso. Al final, tendrás la NetBox instalada y funcionando en tu Debian 11 con HTTPS/SSL habilitado sobre ella.

Requisitos previos

Para completar este tutorial, necesitarás los siguientes requisitos:

  • Una instancia de servidor Debian 11.
  • Un usuario no root con privilegios de root/administrador.
  • Un nombre de dominio apuntando a tu servidor Debian.

Instalación del servidor PostgreSQL

La aplicación NetBox sólo admite PostgreSQL como base de datos por defecto. Por tanto, instalarás PostgreSQL en tu servidor Debian. A continuación, crea una nueva base de datos y un nuevo usuario para tu instalación de NetBox.

La versión actual de NetBox requiere al menos PostgreSQL v10 o posterior. En Debian 11, el repositorio proporciona por defecto el servidor PostgreSQL v13.

Para empezar, ejecuta el siguiente comando apt para actualizar tu repositorio Debian y refrescar el índice de paquetes.

sudo apt update

Ahora instala el servidor PostgreSQL utilizando el siguiente comando apt. Introduce Y para confirmar y pulsa INTRO, y comenzará la instalación de PostgreSQL.

sudo apt install postgresql postgresql-common

instalar postgresql

Ahora que has terminado con la instalación de PostgreSQL, ejecuta el siguiente comando systemctl para comprobar y verificar el servicio PostgreSQL. Deberías ver que PostgreSQL está habilitado y que se ejecutará automáticamente al arrancar el sistema. Y el estado actual del servicio PostgreSQL es en ejecución.

sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

comprobar servicio postgresql

A continuación, crearás una nueva base de datos PostgreSQL y un nuevo usuario para Nextbox. Para ello, debes iniciar sesión en la consola PostgreSQL.

Ejecuta el siguiente comando para acceder a la consola PostgreSQL utilizando el ro l»postgres«.

sudo -u postgres psql

Ahora ejecuta las siguientes consultas en la consola PostgreSQL para crear una nueva base de datos y un nuevo usuario. en este ejemplo, crearemos una nueva base de datos llamada «netboxdb», y el usuario PostgreSQL «netbox» con la contraseña «NetBoxRocks».

CREATE DATABASE netboxdb;
CREATE USER netbox WITH ENCRYPTED PASSWORD 'NetBoxRocks';
GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox;

Ahora pulsa «Ctrl+d» para salir de la consola PostgreSQL o escribe «\q» para salir.

crear base de datos popstgresql

Para verificar la base de datos y el usuario, ejecuta el siguiente comando. Esto se conectará al shell PostgreSQL utilizando el usuario «netbox» a la base de datos «netboxdb» de tu servidor PostgreSQL.

Cuando se te pida la contraseña de la base de datos, introduce la contraseña «NetBoxRocks».

sudo -u postgres psql --username netbox --password --host localhost netboxdb

Tras conectarte a la consola PostgreSQL y a la base de datos «netboxdb«, ejecuta la siguiente consulta para comprobar la conexión actual. Y deberías ver que estás conectado a la base de datos PostgreSQL «netboxdb» con el usuario «netbox».

\conninfo

verificar la base de datos de usuarios postgresql

Pulsa «Ctrl+d» para salir de la consola PostgreSQL o escribe «\q» para salir.

Instalación del servidor Redis

Redis es una base de datos clave-valor en memoria que NetBox utilizará para el almacenamiento en caché y en cola. Por tanto, ahora instalarás el servidor Redis en tu servidor Debian.

En el momento de escribir esto, la última versión de NetBox requería Redis v4.0 o superior. el último repositorio de Debian 11 proporciona Redis v5.6.

Para iniciar la instalación de Redis, ejecuta el siguiente comando apt. introduce Y para confirmar la instalación y pulsa ENTER, y comenzará la instalación de Redis.

sudo apt install redis-server

instalar redis

Cuando finalice la instalación, ejecuta los siguientes comandos systemctl para comprobar y verificar el servicio Redis. Deberías ver que el servicio Redis está activado y se ejecutará automáticamente al arrancar el sistema. Y el estado actual del servicio Redis es en ejecución.

sudo systemctl is-enabled redis-server
sudo systemctl status redis-server

comprueba el servicio redis

La instalación por defecto de Redis viene sin autenticación. Para el entorno de producción, se recomienda utilizar la autenticación en el servidor Redis. Para habilitar la autenticación de Redis, deberás modificar el archivo de configuración «/etc/redis/redis.conf«.

Ejecuta el siguiente comando para editar el archivo de configuración de Redis «/etc/redis/redis.conf».

sudo nano /etc/redis/redis.conf

Descomenta la opción «requirepass» e introduce la contraseña de autenticación para Redis. en este ejemplo, utilizaremos la contraseña «RedisPasswordNetBox».

requirepass RedisPasswordNetBox

Cuando hayas terminado, guarda y cierra el archivo.

Ahora ejecuta el siguiente comando para reiniciar el servicio Redis y aplicar los nuevos cambios.

sudo systemctl restart redis-server

Para verificar la autenticación Redi, ejecuta el siguiente comando «redis-cli» para conectarte a la consola Redis.

redis-cli

Ahora ejecuta el siguiente comando para verificar tu autenticación Redis. Si tu contraseña es correcta, verás un mensaje de salida como «OK».

AUTH RedisPasswordNetBox

configurar la autenticación de redis

Ahora pulsa«Ctrl+d» para salir de la consola Redis.

Instalación de NetBox IRM

NetBox es una aplicación web de código abierto escrita con el framework Python Django. Así que la instalación de NetBox es bastante similar a la de Python Django Web-Framework. La última versión de Netbox requiere al menos Python v3.8 o superior.

Antes de empezar a instalar NetBox, ejecuta el siguiente comando para crear un nuevo usuario de sistema «netbox» que se utilizará para ejecutar la aplicación web NetBox.

sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox

Instala Python3 y algunas dependencias de paquetes utilizando el comando apt que aparece a continuación.

sudo apt install -y git python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev

crear usuario descargar netbox instalar dependencias

Cuando termine la instalación, ejecuta el siguiente comando para crear un nuevo directorio de instalación de NetBox «/opt/netbox» y clona el código fuente de NetBox utilizando el comando Git.

mkdir -p /opt/netbox; cd /opt/netbox
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .

Ahora cambia la propiedad del directorio de instalación de NetBox al usuario correcto «netbox» utilizando el siguiente comando.

sudo chown -R netbox:netbox /opt/netbox

descargar netbox

A continuación, mueve el directorio de trabajo a «/opt/netbox/netbox/netbox» y copia la configuración de ejemplo de NetBox «configuration_example.py» a «configuration.py«.

cd /opt/netbox/netbox/netbox
sudo -u netbox cp configuration_example.py configuration.py

Antes de editar el archivo de configuración de netBox, ejecuta el siguiente comando para generar la«SECRET_KEY» para NetBox. Copia la«CLAVE_ SECRETA» generada en tu editor, la utilizarás más tarde cuando edites el archivo «configuration.py».

sudo -u netbox python3 ../generate_secret_key.py

Ejecuta el siguiente comando para empezar a editar el archivo «configuration.py».

sudo -u netbox nano configuration.py

Ahora tendrás que configurar la instalación de NetBox como se indica a continuación:

  • En la configuración «ALLOWED_HOSTS», introduce el nombre de dominio para la instalación de NetBox y la dirección IP del servidor. En este ejemplo, NetBox se instalará con el nombre de dominio «netbox.hwdomain.io» y la dirección IP del servidor «192.168.5.20».
  • Introduce los detalles de la base de datos PostgreSQL para tu NetBox en la configuración «BASE DE DATOS».
  • Introduce la contraseña de Redis en la configuración «REDIS«. Asegúrate de cambiar la contraseña en las secciones «tareas» y «caché».
  • Por último, pega la «SECRET_KEY» generada en el archivo.
# domain and IP address
ALLOWED_HOSTS = ['netbox.hwdomain.io', '192.168.5.20']
# database configuration
DATABASE = {
'NAME': 'netboxdb',               # Database name
'USER': 'netbox',               # PostgreSQL username
'PASSWORD': 'NetBoxRocks', # PostgreSQL password
'HOST': 'localhost',            # Database server
'PORT': '',                     # Database port (leave blank for default)
'CONN_MAX_AGE': 300,            # Max database connection age (seconds)
}

# Redis cache configuration
REDIS = {
'tasks': {
'HOST': 'localhost',      # Redis server
'PORT': 6379,             # Redis port
'PASSWORD': 'RedisPasswordNetBox',           # Redis password (optional)
'DATABASE': 0,            # Database ID
'SSL': False,             # Use SSL (optional)
},
'caching': {
'HOST': 'localhost',
'PORT': 6379,
'PASSWORD': 'RedisPasswordNetBox',
'DATABASE': 1,            # Unique ID for second database
'SSL': False,
}
}

# Secret key
SECRET_KEY = 'Slr-8H@1XMcW!22_UYNLcWw+_5=$$=8mtL#JImfOlD*-KiuI6h'

Cuando hayas terminado, guarda y cierra el archivo.

Ahora, para iniciar la instalación de NetBox, puedes ejecutar el script «upgrade.sh» como se indica a continuación.

sudo -u netbox /opt/netbox/upgrade.sh

Este script instalará y configurará la instalación de NetBox automáticamente. La versión detallada está más abajo:

  • Esto creará un nuevo entorno virtual Python para tu instalación de NetBox.
  • También instalará algunas dependencias y bibliotecas de Python para NetBox.
  • Ejecutar la migración de la base de datos para NetBox.
  • Generar el recurso de archivos estáticos para NetBox.

A continuación se muestra la salida cuando comienza la instalación.

instalación de netbox

Cuando finalice la instalación, verás la siguiente salida.

instalación de netbox finalizada

Creando usuario administrador de NetBox

Has finalizado la instalación básica de NetBox. Ahora, crearás un nuevo usuario administrador para NetBox. Y esto también es similar cuando necesites crear un usuario administrador de Django.

Ejecuta el siguiente comando para activar el entorno virtual Python.

source /opt/netbox/venv/bin/activate

Mueve el directorio de trabajo a«/opt/netbox/netbox«. A continuación, ejecuta el script«manage.py» para crear un nuevo usuario administrador para NetBox.

cd /opt/netbox/netbox
python3 manage.py createsuperuser

Introduce el nombre de usuario, el correo electrónico y la contraseña para NextBox.

Una vez finalizada la configuración del administrador, ejecuta el siguiente comando para configurar el script cron necesario para NetBox, que se ejecutará automáticamente a diario.

sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

crear usuario netbox admin

Por último, ejecuta el siguiente comando para probar y verificar tu instalación de NetBox. si tu instalación es correcta, verás que netBox se está ejecutando ahora en el puerto «8000».

python3 manage.py runserver 0.0.0.0:8000 --insecure

comprueba la instalación de netbox

Ahora pulsa «Ctrl+c» en el terminal para el proceso. A continuación, ejecuta el comando«desactivar» para salir del entorno virtual Python.

Configurar NetBox como servicio Systemd

Una vez finalizada la configuración administrativa de NetBox. Ahora, configurarás NetBox como un servicio systemd. El servicio NetBox se ejecutará bajo el proxy inverso Gunicorn y HTTP.

Toda la configuración necesaria Gunicorn de NetBox y el script del servicio systemd están disponibles por defecto en el directorio «/opt/netbox/contrib».

Ejecuta el siguiente comando para copiar la configuración de Gunicorn en «/opt/netbox/gunicorn.py». A continuación, edita el archivo utilizando el editor nano.

sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
sudo -u netbox nano /opt/netbox/gunicorn.py

En la configuración por defecto, la aplicación NetBox se ejecutará en localhost con el puerto «8001». Puedes dejar la configuración por defecto o hacer cambios en función de tu entorno.

bind = '127.0.0.1:8001'

Guarda y cierra el archivo de configuración cuando hayas terminado.

A continuación, copia los archivos de servicio systemd en el directorio«/etc/systemd/system» de la siguiente forma. Esto habilitará dos servicios el servicio «netbox» como servicio principal para tu aplicación NetBox y el servicio «netbox-rq» para el servicio de cola de peticiones de NetBox.

sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/

Ahora recarga el gestor del sistema para aplicar los nuevos archivos de servicio de NetBox.

sudo systemctl daemon-reload

Tras recargar el gestor systemd, puedes ejecutar los servicios «netbox» y«netbox-rq» utilizando el comando systemctl como se indica a continuación. ambos servicios se ejecutarán automáticamente al iniciar el sistema.

sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq

configurar netbox como servicio systemd

Por último, comprueba y verifica los servicios de NetBox utilizando el siguiente comando.

sudo systemctl status netbox
sudo systemctl status netbox-rq

En la siguiente salida, puedes ver que el servicio «netbox» está activado. Y el estado actual es en ejecución.

estado del servicio netbox

Para el servicio «netbox-rq«, también obtendrás la salida del servicio habilitado. Y está en ejecución.

estado del servicio netbox-rq

Configurar Apache2 como Proxy Inverso

Ejecuta el siguiente comando apt para instalar el servidor web Apache2. Introduce Y para confirmar la instalación y pulsa ENTER, y comenzará la instalación.

sudo apt install apache2

instalar apache2

Una vez finalizada la instalación de Apache2, ejecuta el siguiente comando para habilitar algunos módulos de Aapche2 que se utilizarán para el Proxy Inverso. Deberías ver que algunos módulos adicionales también están habilitados.

sudo a2enmod ssl proxy proxy_http headers

activar módulos apache2

A continuación, copia el ejemplo de configuración del host virtual Apache2 para NetBox en «/etc/apache2/sites-available/netbox.conf». A continuación, edita el archivo«/etc/apache2/sites-available/netbox.conf» 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

Cambia el nombre de dominio de tu instalación NetBox y la ruta de los certificados SSL. En este ejemplo, utilizaremos el dominio«netbox.hwdomain.io» con los certificados SSL de Letsencrypt que están disponibles en el directorio«/etc/letsencrypt/live/netbox.hwdomain.io/«.

<VirtualHost *:443>
    ProxyPreserveHost On
# CHANGE THIS TO YOUR SERVER'S NAME
ServerName netbox.hwdomain.io

SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/netbox.hwdomain.io/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/netbox.hwdomain.io/privkey.pem

Alias /static /opt/netbox/netbox/static

<Directory /opt/netbox/netbox/static>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>

<Location /static>
ProxyPass !
</Location>

RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
ProxyPass / http://127.0.0.1:8001/
ProxyPassReverse / http://127.0.0.1:8001/
</VirtualHost>

Cuando hayas terminado, guarda y cierra el archivo.

Ahora ejecuta el siguiente comando para activar la configuración del host virtual«netbox.conf«. A continuación, prueba y verifica la configuración de Apache. Deberías obtener un mensaje de salida como «Sintaxis OK», lo que significa que la configuración de Apache2 es correcta.

sudo a2ensite netbox.conf
sudo apachectl configtest

Ahora reinicia el servicio Apache2 para aplicar los nuevos cambios al archivo del host virtual. El servidor web Apache2 se ejecuta ahora con HTTPS/SSL activado como reverso de la aplicación web NetBox que se ejecuta en«localhost:8001«.

sudo systemctl restart apache2

configurar proxy inverso apache2

Para verificar la instalación, abre tu navegador web y visita el nombre de dominio de la instalación de NetBox (es decir: https://netbox.hwdomain.io/). Y deberías obtener el panel de administración de NetBox con un estado bloqueado.

Haz clic en el botón«Iniciar sesión» de la parte superior derecha.

página siguiente

Ahora introduce el usuario administrador y la contraseña de tu instalación de NetBox y haz clic en «Iniciar sesión».

acceder a netbox

Deberías obtener el panel de administración de NetBox.

panel de administración de netbox

Conclusión

A través de este tutorial, has configurado NetBox Infrastructure Resource Modelling (IRM) con la base de datos PostgreSQL, el sistema de caché Redis, Gunicorn y el proxy inverso Apache2 en un servidor Debian 11. También has configurado NetBox como un servicio systemd que te facilita iniciar y detener la aplicación web NetBox. Al final, tienes totalmente configurado NetBox IRM ejecutándose en tu servidor Debian con HTTPS/SSL seguro habilitado sobre él.

También te podría gustar...