Cómo instalar NetBox IPAM en Debian 11/Debian 10 |
NetBox es una aplicación web IPAM/DCIM de código abierto que se utiliza para administrar y documentar redes informáticas y administrar direcciones IP. Fue concebido inicialmente por el equipo de ingeniería de redes de DigitalOcean. La herramienta está escrita en el marco Django Python y se basa en la base de datos PostgreSQL para el almacenamiento de datos.
Bloques de construcción de NetBox:
- Gestión de direcciones IP (IPAM): redes y direcciones IP, VRF y VLAN
- Bastidores de equipos: organizados por grupo y sitio
- Dispositivos: tipos de dispositivos y dónde están instalados
- Conexiones: conexiones de red, consola y alimentación entre dispositivos
- Virtualización: máquinas virtuales y clústeres
- Circuitos de datos: circuitos y proveedores de comunicaciones de larga distancia
- Secretos: almacenamiento cifrado de credenciales confidenciales
Si está interesado en implementar Netbox en otros sistemas, consulte:
- Cómo instalar NetBox en CentOS 7 con Apache y Supervisord
Estos son los pasos para instalar Install NetBox en Debian Linux.
Paso 1: instalar las dependencias requeridas
Comience instalando todas las aplicaciones de dependencia necesarias para ejecutar NetBox:
sudo apt update
sudo apt -y install -y git gcc nginx redis supervisor python3 python3-dev python3-pip python3-setuptools build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev zlib1g-dev vim
Paso 2: instalar y configurar PostgreSQL
NetBox utiliza el servidor de base de datos PostgreSQL para almacenar sus datos. Instale el servidor PostgreSQL en Debian 10:
sudo apt update
sudo apt -y install postgresql-contrib postgresql-*-ip4r
Crear una base de datos y un usuario para NetBox.
$ sudo -u postgres psql
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'StrongPassword';
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
\q
Confirme que puede iniciar sesión en la base de datos como usuario netbox
.
$ psql -U netbox -h localhost -W
Password:
psql (13.10 (Debian 13.10-0+deb11u1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.
netbox=> \q
Paso 3: instalar y configurar Netbox
Cambie al directorio /opt/
y clone el código del proyecto.
cd /opt/
sudo git clone -b master https://github.com/digitalocean/netbox.git
Cree un archivo de configuración a partir del archivo de ejemplo proporcionado.
cd netbox/netbox/netbox/
sudo cp configuration_example.py configuration.py
Edite el archivo de configuración y establezca los detalles de inicio de sesión permitidos del host y de la base de datos:
$ sudo vim configuration.py
....
ALLOWED_HOSTS = ['localhost']
....
DATABASE = {
'NAME': 'netbox', # Database name
'USER': 'netbox', # PostgreSQL username
'PASSWORD': 'StrongPassword', # PostgreSQL password
'HOST': 'localhost', # Database server
'PORT': '', # Database port (leave blank for default)
'CONN_MAX_AGE': 300, # Max database connection age
}
Generar clave SECRETA de Django:
cd ../
sudo ./generate_secret_key.py
Luego configure la clave en el archivo /opt/netbox/netbox/netbox/configuration.py
Ejemplo :
$ sudo vim /opt/netbox/netbox/netbox/configuration.py
SECRET_KEY = 'L2lyoE^*DN)6w3PK_d$-pe5ZS@XmMQ4J9g!cvF1V=n0juWiATR'
Instalar dependencias de Netbox:
sudo pip3 install -r /opt/netbox/requirements.txt
Migrar datos de la base de datos:
cd /opt/netbox/netbox/
sudo python3 manage.py migrate
Salida de muestra para la migración de bases de datos.
Operations to perform:
Apply all migrations: admin, auth, circuits, contenttypes, dcim, extras, ipam, secrets, sessions, taggit, tenancy, users, virtualization
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying taggit.0001_initial... OK
Applying taggit.0002_auto_20150616_2121... OK
Applying tenancy.0001_initial_squashed_0005_change_logging... OK
Applying dcim.0001_initial... OK
Applying ipam.0001_initial... OK
Applying dcim.0002_auto_20160622_1821... OK
Applying extras.0001_initial_squashed_0013_objectchange... OK
Applying ipam.0002_vrf_add_enforce_unique... OK
Applying dcim.0003_auto_20160628_1721_squashed_0010_devicebay_installed_device_set_null... OK
Applying ipam.0003_ipam_add_vlangroups_squashed_0011_rir_add_is_private... OK
Applying dcim.0011_devicetype_part_number_squashed_0022_color_names_to_rgb... OK
Applying ipam.0012_services_squashed_0018_remove_service_uniqueness_constraint... OK
Applying dcim.0023_devicetype_comments_squashed_0043_device_component_name_lengths... OK
Applying virtualization.0001_virtualization... OK
Applying ipam.0019_virtualization_squashed_0020_ipaddress_add_role_carp... OK
Applying dcim.0044_virtualization_squashed_0061_platform_napalm_args... OK
Applying extras.0014_configcontexts_squashed_0019_tag_taggeditem... OK
Applying dcim.0062_interface_mtu_squashed_0065_front_rear_ports... OK
Applying circuits.0001_initial_squashed_0006_terminations... OK
Applying dcim.0066_cables...
Adding console connections... 0 cables created
Adding power connections... 0 cables created
Adding interface connections... 0 cables created
OK
Applying circuits.0007_circuit_add_description_squashed_0017_circuittype_description...
Adding circuit terminations... 0 cables created
OK
Applying tenancy.0006_custom_tag_models... OK
Applying virtualization.0002_virtualmachine_add_status_squashed_0009_custom_tag_models... OK
Applying secrets.0001_initial_squashed_0006_custom_tag_models... OK
Applying ipam.0021_vrf_ordering_squashed_0025_custom_tag_models... OK
Applying dcim.0067_device_type_remove_qualifiers_squashed_0070_custom_tag_models... OK
Applying extras.0020_tag_data_squashed_0021_add_color_comments_changelog_to_tag... OK
Applying dcim.0071_device_components_add_description_squashed_0088_powerfeed_available_power...
Updating cable device terminations...
OK
Applying dcim.0089_deterministic_ordering... OK
Applying dcim.0090_cable_termination_models... OK
Applying extras.0022_custom_links_squashed_0034_configcontext_tags... OK
Applying extras.0035_deterministic_ordering... OK
Applying extras.0036_contenttype_filters_to_q_objects... OK
Applying ipam.0026_prefix_ordering_vrf_nulls_first_squashed_0032_role_description... OK
Applying ipam.0033_deterministic_ordering... OK
Applying secrets.0007_secretrole_description... OK
Applying sessions.0001_initial... OK
Applying taggit.0003_taggeditem_add_unique_index... OK
Applying users.0001_api_tokens_squashed_0003_token_permissions... OK
Applying virtualization.0010_cluster_add_tenant_squashed_0012_vm_name_nonunique... OK
Applying virtualization.0013_deterministic_ordering... OK
Crear usuario administrador:
$ sudo python3 manage.py createsuperuser
Username (leave blank to use 'root'): admin
Email address: [email
Password: <Enter Password>
Password (again): <Re-enter Password>
Superuser created successfully.
Mover archivos estáticos
$ cd /opt/netbox/netbox
$ sudo python3 manage.py collectstatic
280 static files copied to '/opt/netbox/netbox/static'.
Paso 4: Instalar y configurar gunicorn
Instale gunicorn usando pip3:
$ sudo pip3 install gunicorn
Requirement already satisfied: gunicorn in /usr/local/lib/python3.9/dist-packages (20.1.0)
Requirement already satisfied: setuptools>=3.0 in /usr/lib/python3/dist-packages (from gunicorn) (52.0.0)
Configurar gunicorn para Netbox:
cat <<EOF | sudo tee /opt/netbox/gunicorn_config.py
command = '/usr/local/bin/gunicorn'
pythonpath = '/opt/netbox/netbox'
bind = 'localhost:8085'
workers = 3
user = 'www-data'
EOF
Paso 5: Configurar supervisor
Cree un archivo de configuración de supervisor:
cat <<EOF | sudo tee /etc/supervisor/conf.d/netbox.conf
[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = www-data
EOF
Reinicie y habilite el servicio de supervisión para que se inicie al arrancar.
sudo systemctl restart supervisor.service
sudo systemctl enable supervisor.service
El estado debería mostrar ejecutándose con salida de netbox:
$ systemctl status supervisor
● supervisor.service - Supervisor process control system for UNIX
Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2023-05-02 23:17:36 UTC; 6s ago
Docs: http://supervisord.org
Main PID: 15436 (supervisord)
Tasks: 5 (limit: 4553)
Memory: 272.2M
CPU: 4.089s
CGroup: /system.slice/supervisor.service
├─15436 /usr/bin/python3 /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
├─15521 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
├─15522 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
├─15523 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
└─15524 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
May 02 23:17:36 debian11 systemd[1]: Started Supervisor process control system for UNIX.
May 02 23:17:36 debian11 supervisord[15436]: 2023-05-02 23:17:36,805 CRIT Supervisor is running as root. Privileges were not dropped because no user is specified in the config file. If you intend t>
May 02 23:17:36 debian11 supervisord[15436]: 2023-05-02 23:17:36,805 INFO Included extra file "/etc/supervisor/conf.d/netbox.conf" during parsing
May 02 23:17:36 debian11 supervisord[15436]: 2023-05-02 23:17:36,808 INFO RPC interface 'supervisor' initialized
May 02 23:17:36 debian11 supervisord[15436]: 2023-05-02 23:17:36,808 CRIT Server 'unix_http_server' running without any HTTP authentication checking
May 02 23:17:36 debian11 supervisord[15436]: 2023-05-02 23:17:36,808 INFO supervisord started with pid 15436
May 02 23:17:37 debian11 supervisord[15436]: 2023-05-02 23:17:37,813 INFO spawned: 'netbox' with pid 15521
May 02 23:17:39 debian11 supervisord[15436]: 2023-05-02 23:17:39,140 INFO success: netbox entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
Paso 6: configurar el servidor web Nginx
Configuremos el servidor web Nginx para ayudarnos a acceder a Netbox a través del nombre de dominio en lugar de especificar una dirección IP y un puerto.
Cree un nuevo archivo de configuración de Nginx para Netbox.
sudo vim /etc/nginx/conf.d/netbox.conf
Con los datos siguientes.
server {
listen 80;
server_name netbox.example.com;
client_max_body_size 25m;
location /static/ {
alias /opt/netbox/netbox/static/;
}
location / {
proxy_pass http://localhost:8085;
}
}
Verifique la sintaxis de configuración de Nginx y reinicie su servicio
$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Si está bien, reinicie el servicio Nginx
sudo systemctl restart nginx
Paso 7: acceda a la interfaz de usuario web de Netbox
Abra su navegador web predeterminado y abra el nombre de host del servidor Netbox. Para realizar cambios, inicie sesión con el usuario administrador creado anteriormente.
¡Ahí lo tienes!... Tienes el panel de NetBox.
Disfrute usando Netbox para documentar su infraestructura de red. Acceda a la documentación de NetBox para obtener más información sobre este increíble producto.
También puedes consultar:
- Instalar y configurar phpIPAM en Debian
- Cómo instalar RackTables en Ubuntu