Como instalar Netbox, ferramenta grátis para documentar sua rede
Netbox é um aplicativo web de código aberto projetado para ajudar a gerenciar e documentar redes de computadores. Concebido inicialmente pela equipe de engenharia de rede da DigitalOcean , o NetBox foi desenvolvido especificamente para atender às necessidades dos engenheiros de rede e infraestrutura. Abrange os seguintes aspectos de gerenciamento de rede:
Gerenciamento de endereço IP (IPAM) – redes e endereços IP, VRFs e VLANs
- Racks de equipamentos – organizados por grupo e local
- Dispositivos – Tipos de dispositivos e onde estão instalados
- Conexões – Rede, console e conexões de energia entre dispositivos
- Virtualização – máquinas virtuais e clusters
- Circuitos de dados – circuitos e provedores de comunicações de longa distância
- Segredos – armazenamento criptografado de credenciais confidenciais
Requisitos:
Como de costume vou realizar a instalação no Debian 10 limpo (sem pacotes extras)
Vire root da forma correta, colocando após os su o “-“.
su -
Instale os pacotes que serão requisitos.
# apt install vim net-tools wget redis-server supervisor\ postgresql-contrib postgresql libpq-dev gcc\ python-minimal python3 python3-pip python3-venv\ python3-dev build-essential libxml2-dev libxslt1-dev\ libffi-dev libssl-dev zlib1g-dev graphviz\ nginx redis python3-setuptools
Vire o usuário postgres, para poder criar nosso banco de dados.
# su - postgres
Entre no terminal de comandos do postgres
$ psql
Não esqueça de alterar a senha.
postgres=# CREATE DATABASE netboxdb; postgres=# CREATE USER netboxuser WITH PASSWORD 'senha'; postgres=# GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netboxuser; postgres=# exit
Verifique ser o serviço redis esta respondendo.
$ redis-cli ping
Deve retornar : PONG
Retorne ao usuario root
exit
Atualize o pip
# pip3 install --upgrade pip
Agora vamos baixar o projeto NetBox. Verifique em https://github.com/netbox-community/netbox/releases não existe uma nova versão.
Entre em tmp (diretório temporário do linux que após um reboot é apagado) em seguida fizemos o download, extraímos, movemos para o diretório correto bem como ajustamos permissões do diretório que faremos upload de arquivos.
# cd /tmp # wget https://github.com/netbox-community/netbox/archive/refs/tags/v2.10.8.tar.gz # tar vxf v2.10.8.tar.gz # mv netbox*/ /opt/netbox # cd /opt/netbox/ # chown www-data. /opt/netbox/netbox/media/ -R
Execute o comando abaixo para gerar nossa SECRET KEY que iremos usar em seguida.
# /opt/netbox/netbox/generate_secret_key.py
Ex.:
T7TE07O$j^Jqf9(*20q8M5kG4%NBIci#gEEn0$wuw*qodT7Lfo
Copie o arquivo de configuração exemplo para ajustar com suas infomações
# cp /opt/netbox/netbox/netbox/configuration.example.py /opt/netbox/netbox/netbox/configuration.py # vim /opt/netbox/netbox/netbox/configuration.py
Localize as linhas como exemplo abaixo e altere os valores.
ALLOWED_HOSTS = ['localhost','netbox.remontti.com.br'] DATABASE = { 'NAME': 'netboxdb', # Database name 'USER': 'netboxuser', # PostgreSQL username 'PASSWORD': 'senha', # PostgreSQL password 'HOST': 'localhost', # Database server 'PORT': '', # Database port (leave blank for default) 'CONN_MAX_AGE': 300, # Max database connection age } # Gerado com o comando /opt/netbox/netbox/generate_secret_key.py SECRET_KEY = 'T7TE07O$j^Jqf9(*20q8M5kG4%NBIci#gEEn0$wuw*qodT7Lfo' LOGIN_REQUIRED = True
Instalaremos os pacotes do py requeiridos.
# pip3 install -r /opt/netbox/requirements.txt
Vamos a instalção do bichão!
# cd /opt/netbox/netbox/ # python3 manage.py migrate
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 auth.0012_alter_user_first_name_max_length... OK Applying tenancy.0001_initial... OK Applying tenancy.0002_tenant_group_optional... OK Applying tenancy.0003_unicode_literals... OK Applying taggit.0001_initial... OK Applying taggit.0002_auto_20150616_2121... OK Applying tenancy.0004_tags... OK Applying tenancy.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... OK Applying extras.0002_custom_fields... OK Applying extras.0003_exporttemplate_add_description... OK Applying extras.0004_topologymap_change_comma_to_semicolon... OK Applying extras.0005_useraction_add_bulk_create... OK Applying extras.0006_add_imageattachments... OK Applying extras.0007_unicode_literals... OK Applying extras.0008_reports... OK Applying extras.0009_topologymap_type... OK Applying extras.0010_customfield_filter_logic... OK Applying extras.0011_django2... OK Applying extras.0012_webhooks... OK Applying extras.0013_objectchange... OK Applying ipam.0002_vrf_add_enforce_unique... OK Applying dcim.0003_auto_20160628_1721... OK Applying dcim.0004_auto_20160701_2049... OK Applying dcim.0005_auto_20160706_1722... OK Applying dcim.0006_add_device_primary_ip4_ip6... OK Applying dcim.0007_device_copy_primary_ip... OK Applying dcim.0008_device_remove_primary_ip... OK Applying dcim.0009_site_32bit_asn_support... OK Applying dcim.0010_devicebay_installed_device_set_null... OK Applying ipam.0003_ipam_add_vlangroups... OK Applying ipam.0004_ipam_vlangroup_uniqueness... OK Applying ipam.0005_auto_20160725_1842... OK Applying ipam.0006_vrf_vlan_add_tenant... OK Applying ipam.0007_prefix_ipaddress_add_tenant... OK Applying ipam.0008_prefix_change_order... OK Applying ipam.0009_ipaddress_add_status... OK Applying ipam.0010_ipaddress_help_texts... OK Applying ipam.0011_rir_add_is_private... OK Applying dcim.0011_devicetype_part_number... OK Applying dcim.0012_site_rack_device_add_tenant... OK Applying dcim.0013_add_interface_form_factors... OK Applying dcim.0014_rack_add_type_width... OK Applying dcim.0015_rack_add_u_height_validator... OK Applying dcim.0016_module_add_manufacturer... OK Applying dcim.0017_rack_add_role... OK Applying dcim.0018_device_add_asset_tag... OK Applying dcim.0019_new_iface_form_factors... OK Applying dcim.0020_rack_desc_units... OK Applying dcim.0021_add_ff_flexstack... OK Applying dcim.0022_color_names_to_rgb... OK Applying ipam.0012_services... OK Applying ipam.0013_prefix_add_is_pool... OK Applying ipam.0014_ipaddress_status_add_deprecated... OK Applying ipam.0015_global_vlans... OK Applying ipam.0016_unicode_literals... OK Applying ipam.0017_ipaddress_roles... OK Applying ipam.0018_remove_service_uniqueness_constraint... OK Applying dcim.0023_devicetype_comments... OK Applying dcim.0024_site_add_contact_fields... OK Applying dcim.0025_devicetype_add_interface_ordering... OK Applying dcim.0026_add_rack_reservations... OK Applying dcim.0027_device_add_site... OK Applying dcim.0028_device_copy_rack_to_site... OK Applying dcim.0029_allow_rackless_devices... OK Applying dcim.0030_interface_add_lag... OK Applying dcim.0031_regions... OK Applying dcim.0032_device_increase_name_length... OK Applying dcim.0033_rackreservation_rack_editable... OK Applying dcim.0034_rename_module_to_inventoryitem... OK Applying dcim.0035_device_expand_status_choices... OK Applying dcim.0036_add_ff_juniper_vcp... OK Applying dcim.0037_unicode_literals... OK Applying dcim.0038_wireless_interfaces... OK Applying dcim.0039_interface_add_enabled_mtu... OK Applying dcim.0040_inventoryitem_add_asset_tag_description... OK Applying dcim.0041_napalm_integration... OK Applying dcim.0042_interface_ff_10ge_cx4... OK Applying dcim.0043_device_component_name_lengths... OK Applying virtualization.0001_virtualization... OK Applying ipam.0019_virtualization... OK Applying ipam.0020_ipaddress_add_role_carp... OK Applying dcim.0044_virtualization... OK Applying dcim.0045_devicerole_vm_role... OK Applying dcim.0046_rack_lengthen_facility_id... OK Applying dcim.0047_more_100ge_form_factors... OK Applying dcim.0048_rack_serial... OK Applying dcim.0049_rackreservation_change_user... OK Applying dcim.0050_interface_vlan_tagging... OK Applying dcim.0051_rackreservation_tenant... OK Applying dcim.0052_virtual_chassis... OK Applying dcim.0053_platform_manufacturer... OK Applying dcim.0054_site_status_timezone_description... OK Applying dcim.0055_virtualchassis_ordering... OK Applying dcim.0056_django2... OK Applying dcim.0057_tags... OK Applying dcim.0058_relax_rack_naming_constraints... OK Applying dcim.0059_site_latitude_longitude... OK Applying dcim.0060_change_logging... OK Applying dcim.0061_platform_napalm_args... OK Applying extras.0014_configcontexts... OK Applying extras.0015_remove_useraction... OK Applying extras.0016_exporttemplate_add_cable... OK Applying extras.0017_exporttemplate_mime_type_length... OK Applying extras.0018_exporttemplate_add_jinja2... OK Applying extras.0019_tag_taggeditem... OK Applying dcim.0062_interface_mtu... OK Applying dcim.0063_device_local_context_data... OK Applying dcim.0064_remove_platform_rpc_client... OK Applying dcim.0065_front_rear_ports... OK Applying circuits.0001_initial... OK Applying circuits.0002_auto_20160622_1821... OK Applying circuits.0003_provider_32bit_asn_support... OK Applying circuits.0004_circuit_add_tenant... OK Applying circuits.0005_circuit_add_upstream_speed... OK Applying circuits.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... OK Applying circuits.0008_circuittermination_interface_protect_on_delete... OK Applying circuits.0009_unicode_literals... OK Applying circuits.0010_circuit_status... OK Applying circuits.0011_tags... OK Applying circuits.0012_change_logging... OK Applying circuits.0013_cables... Adding circuit terminations... 0 cables created OK Applying circuits.0014_circuittermination_description... OK Applying circuits.0015_custom_tag_models... OK Applying circuits.0016_3569_circuit_fields... OK Applying circuits.0017_circuittype_description... OK Applying circuits.0018_standardize_description... OK Applying circuits.0019_nullbooleanfield_to_booleanfield... OK Applying virtualization.0002_virtualmachine_add_status... OK Applying virtualization.0003_cluster_add_site... OK Applying virtualization.0004_virtualmachine_add_role... OK Applying virtualization.0005_django2... OK Applying virtualization.0006_tags... OK Applying virtualization.0007_change_logging... OK Applying virtualization.0008_virtualmachine_local_context_data... OK Applying virtualization.0009_custom_tag_models... OK Applying virtualization.0010_cluster_add_tenant... OK Applying virtualization.0011_3569_virtualmachine_fields... OK Applying tenancy.0006_custom_tag_models... OK Applying virtualization.0012_vm_name_nonunique... OK Applying virtualization.0013_deterministic_ordering... OK Applying virtualization.0014_standardize_description... OK Applying ipam.0021_vrf_ordering... OK Applying ipam.0022_tags... OK Applying ipam.0023_change_logging... OK Applying ipam.0024_vrf_allow_null_rd... OK Applying ipam.0025_custom_tag_models... OK Applying ipam.0026_prefix_ordering_vrf_nulls_first... OK Applying ipam.0027_ipaddress_add_dns_name... OK Applying ipam.0028_3569_prefix_fields... OK Applying ipam.0029_3569_ipaddress_fields... OK Applying ipam.0030_3569_vlan_fields... OK Applying ipam.0031_3569_service_fields... OK Applying ipam.0032_role_description... OK Applying ipam.0033_deterministic_ordering... OK Applying ipam.0034_fix_ipaddress_status_dhcp... OK Applying ipam.0035_drop_ip_family... OK Applying ipam.0036_standardize_description... OK Applying secrets.0001_initial... OK Applying secrets.0002_userkey_add_session_key... OK Applying secrets.0003_unicode_literals... OK Applying secrets.0004_tags... OK Applying secrets.0005_change_logging... OK Applying secrets.0006_custom_tag_models... OK Applying dcim.0067_device_type_remove_qualifiers... OK Applying dcim.0068_rack_new_fields... OK Applying dcim.0069_deprecate_nullablecharfield... OK Applying dcim.0070_custom_tag_models... OK Applying extras.0020_tag_data... OK Applying extras.0021_add_color_comments_changelog_to_tag... OK Applying extras.0022_custom_links... OK Applying extras.0023_fix_tag_sequences... OK Applying extras.0024_scripts... OK Applying extras.0025_objectchange_time_index... OK Applying extras.0026_webhook_ca_file_path... OK Applying extras.0027_webhook_additional_headers... OK Applying extras.0028_remove_topology_maps... OK Applying extras.0029_3569_customfield_fields... OK Applying extras.0030_3569_objectchange_fields... OK Applying extras.0031_3569_exporttemplate_fields... OK Applying extras.0032_3569_webhook_fields... OK Applying extras.0033_graph_type_template_language... OK Applying extras.0034_configcontext_tags... OK Applying extras.0035_deterministic_ordering... OK Applying extras.0036_contenttype_filters_to_q_objects... OK Applying extras.0037_configcontexts_clusters... OK Applying extras.0038_webhook_template_support... OK Applying extras.0039_update_features_content_types... OK Applying extras.0040_standardize_description... OK Applying extras.0041_tag_description... OK Applying extras.0042_customfield_manager... OK Applying virtualization.0015_vminterface... OK Applying ipam.0037_ipaddress_assignment... OK Applying dcim.0071_device_components_add_description... OK Applying dcim.0072_powerfeeds... OK Applying dcim.0073_interface_form_factor_to_type... OK Applying dcim.0074_increase_field_length_platform_name_slug... OK Applying dcim.0075_cable_devices... Updating cable device terminations... OK Applying dcim.0076_console_port_types... OK Applying dcim.0077_power_types... OK Applying dcim.0078_3569_site_fields... OK Applying dcim.0079_3569_rack_fields... OK Applying dcim.0080_3569_devicetype_fields... OK Applying dcim.0081_3569_device_fields... OK Applying dcim.0082_3569_interface_fields... OK Applying virtualization.0016_replicate_interfaces... Replicating 0 VM interfaces... Replicating assigned objects... OK Applying dcim.0082_3569_port_fields... OK Applying dcim.0083_3569_cable_fields... OK Applying dcim.0084_3569_powerfeed_fields... OK Applying dcim.0085_3569_poweroutlet_fields... OK Applying dcim.0086_device_name_nonunique... OK Applying dcim.0087_role_descriptions... OK Applying dcim.0088_powerfeed_available_power... OK Applying dcim.0089_deterministic_ordering... OK Applying dcim.0090_cable_termination_models... OK Applying dcim.0091_interface_type_other... OK Applying dcim.0092_fix_rack_outer_unit... OK Applying dcim.0093_device_component_ordering... OK Applying dcim.0094_device_component_template_ordering... OK Applying dcim.0095_primary_model_ordering... OK Applying dcim.0096_interface_ordering... OK Applying dcim.0097_interfacetemplate_type_other... OK Applying dcim.0098_devicetype_images... OK Applying dcim.0099_powerfeed_negative_voltage... OK Applying dcim.0100_mptt_remove_indexes... OK Applying dcim.0101_nested_rackgroups... OK Applying dcim.0102_nested_rackgroups_rebuild... OK Applying dcim.0103_standardize_description... OK Applying dcim.0104_correct_infiniband_types... OK Applying dcim.0105_interface_name_collation... OK Applying dcim.0106_role_default_color... OK Applying dcim.0107_component_labels... OK Applying dcim.0108_add_tags... OK Applying dcim.0109_interface_remove_vm... OK Applying dcim.0110_virtualchassis_name... OK Applying dcim.0111_component_template_description... OK Applying dcim.0112_standardize_components... OK Applying dcim.0113_nullbooleanfield_to_booleanfield... OK Applying dcim.0114_update_jsonfield... OK Applying dcim.0115_rackreservation_order... OK Applying dcim.0116_rearport_max_positions... OK Applying extras.0043_report... OK Applying extras.0044_jobresult... OK Applying extras.0045_configcontext_changelog... OK Applying extras.0046_update_jsonfield... OK Applying extras.0047_tag_ordering... OK Applying users.0001_api_tokens... OK Applying users.0002_unicode_literals... OK Applying users.0003_token_permissions... OK Applying users.0004_standardize_description... OK Applying users.0005_userconfig... OK Applying users.0006_create_userconfigs... OK Applying users.0007_proxy_group_user... OK Applying users.0008_objectpermission... OK Applying users.0009_replicate_permissions... OK Applying secrets.0007_secretrole_description... OK Applying secrets.0008_standardize_description... OK Applying secrets.0009_secretrole_drop_users_groups... OK Applying sessions.0001_initial... OK Applying taggit.0003_taggeditem_add_unique_index... OK Applying tenancy.0007_nested_tenantgroups... OK Applying tenancy.0008_nested_tenantgroups_rebuild... OK Applying tenancy.0009_standardize_description... OK Applying users.0010_update_jsonfield... OK Applying virtualization.0017_update_jsonfield... OK
Crie seu usuário para o acesso web:
# python3 manage.py createsuperuser
Username (leave blank to use 'root'): remontti Email address: noc@remontti.com.br Password: sua_senha Password (again): sua_senha Superuser created successfully
# python3 manage.py collectstatic
979 static files copied to '/opt/netbox/netbox/static'.
Vamos preparar nosso serviço web
# pip3 install gunicorn # cat <<EOF | tee /opt/netbox/gunicorn_config.py command = '/usr/local/bin/gunicorn' pythonpath = '/opt/netbox/netbox' bind = '127.0.0.1:8001' workers = 3 user = 'www-data' EOF # cat <<EOF | 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 # systemctl restart supervisor
Caso você não queira ter certificado e nem vai usar um domínio pode pular esta parte...
Vou instalar o letsencrypt para gerar nosso certificado (pode preencher como quiser as perguntas). Caso queira instalar com um certificado "privado/invalido" veja aqui.
# apt install letsencrypt python-certbot-nginx # systemctl stop nginx # letsencrypt --authenticator standalone --installer nginx -d netbox.remontti.com.br
Crie um script para renomar o certificado automaticamente
# vim /etc/renovassl.sh
Adicione:
#!/bin/bash # Para o nginx /usr/bin/systemctl stop nginx # Aguarda 10 seg (tempo do nginx parar) sleep 10 # Renova o certificado /usr/bin/certbot -q renew # Aguarda o certificado renovar sleep 30 # Restarta o nginx /usr/bin/systemctl restart nginx
Altere as permissões para executa-lo e adicione o scrip ao cron para ser rodado todo dia 1º do mês.
# chmod +x /etc/renovassl.sh # echo '00 00 1 * * root /etc/renovassl.sh' >> /etc/crontab # systemctl restart cron
Removemos o arquivo defautl do nosso servidor web (nginx), e iremos criar um novo, estou usando um domínio, caso esteja utilizando com IP privado apenas coloque um underline ou sei próprio IP.
# rm /etc/nginx/sites-enabled/default # vim /etc/nginx/sites-available/netbox.conf
Ajuste o diretório do seu certificado.
server { listen 443 ssl; # Quiser limitar o acesso apenas a seus IPs #allow 192.168.1.0/24; #allow 2001:0db8::/32; #deny all; #error_page 403 http://www.remontti.com.br; server_name netbox.remontti.com.br; ssl_certificate /etc/letsencrypt/live/netbox.remontti.com.br/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/netbox.remontti.com.br/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; client_max_body_size 25m; location /static/ { alias /opt/netbox/netbox/static/; } location / { proxy_pass http://localhost:8001; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; } } server { listen 80; server_name netbox.remontti.com.br; return 301 https://$host$request_uri; }
Ou a versão simplificada sem certificado, usando o seu endereço IP, se ainda assim deseja só usar o domínios basta colocar no lugar no IP.
server { listen 80; server_name 192.168.0.2; client_max_body_size 25m; location /static/ { alias /opt/netbox/netbox/static/; } location / { proxy_pass http://localhost:8001; } }
Remova assinatura do nginx (ninguém precisa saber a versão!)
# sed -i 's/# server_tokens/server_tokens/' /etc/nginx/nginx.conf
Verifique se seu arquivo de configuração do nginx está correto:
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Crie o atalho do arquivo de configuração dentro do diretório enabled para que o mesmo seja carregado ao restart o nginx.
# ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/ # systemctl restart nginx
Agora acesse seu domínios "https://netbox.remontti.com.br/" ou "https://ip/" e entre com sua senha criada anteriormente.
🙂
PLUGINs
Netbox Topology Views
https://github.com/mattieserver/netbox-topology-views
Netbox QR Code
https://github.com/k01ek/netbox-qrcode
# pip install netbox-topology-views # pip install netbox-qrcode # echo netbox-topology-views >> /opt/netbox/local_requirements.txt # echo netbox-qrcode >> /opt/netbox/local_requirements.txt # vim /opt/netbox/netbox/netbox/configuration.py
Adicione:
PLUGINS = ['netbox_topology_views','netbox_qrcode'] PLUGINS_CONFIG = { 'netbox_topology_views': { 'device_img': 'router,switch,firewall', 'preselected_device_roles': 'Router, Firewall', 'allow_coordinates_saving': False, 'ignore_cable_type': '', }, 'netbox_qrcode': { 'with_text': True, 'text_fields': ['name', 'serial'], 'font': 'ArialMT', 'custom_text': 'Remontti\ntel.00-000-000-000', 'qr_version': 1, 'qr_error_correction': 0, 'qr_box_size': 4, 'qr_border': 4, 'cable': None, 'rack': { 'text_fields': [ 'site', 'name', 'tenant' ] }, 'device': { 'text_fields': [ 'name', 'serial', 'tenant', 'primary_ip' ] } } }
Copiamos os arquivos empacotados estáticos e reiniciamos o supervisor (netbox).
# python3 /opt/netbox/netbox/manage.py collectstatic --no-input # systemctl restart supervisor
COMO ATUALIZAR PARA FUTURAS VERSÕES
Procure pela ultima atualização: https://github.com/netbox-community/netbox/releases, e copie a url da versão tar.gz, no exemplo estou atualizando para versão 2.10.8, então preste atenção no nome dos diretórios.
Vou baixar e extrair:
# cd /tmp/ # wget https://github.com/netbox-community/netbox/archive/refs/tags/v2.10.8.tar.gz # tar -xzf v2.10.8.tar.gz
Copie os arquivos de configuração para a versão mais nova, preste atenção nos nomes de diretórios que contém a versãi no ex. "2.10.8" para a versão que esteja atualizando.
# cp /opt/netbox/netbox/netbox/configuration.py /tmp/netbox-2.10.8/netbox/netbox/ # cp /opt/netbox/local_requirements.txt /tmp/netbox-2.10.8/ # cp /opt/netbox/gunicorn_config.py /tmp/netbox-2.10.8/
Copie os arquivos que você enviou, exemplo fotos etc.
# cp -pr /opt/netbox/netbox/media/ /tmp/netbox-2.10.8/netbox/
Além disso, certifique-se de copiar ou vincular quaisquer scripts e relatórios personalizados que você fez.
# cp -r /opt/netbox/netbox/scripts /opt/netbox/netbox/ # cp -r /opt/netbox/netbox/reports /opt/netbox/netbox/
Renomeia o antigo diretório (Não vamos remover, pois se der ruim basta volta-lo)
# mv /opt/netbox /opt/netbox_`date +%Y%m%d`
Movemos nosso diretório atualizado para /opt/netbox.
# mv /tmp/netbox-2.10.8/ /opt/netbox
Finalizamos copiando os arquivos empacotados estáticos e reiniciamos o supervisor (netbox).
# python3 /opt/netbox/netbox/manage.py collectstatic --no-input # systemctl restart supervisor
Espero que tenha gostado!
Se quiser fazer uma doação para o café ficarei muito feliz pelo seu reconhecimento!
Participe do canal no telegram para ficar atualizado sempre que publicar um novo tutorial.
Se não puder doar pode deixar seu agradecimento nos comentário também ficarei feliz em saber que ajudei. Se tiver qualquer pergunta deixe-a também. Se preferir entrar em Contato clique aqui.
Instalei em uma VM só pra testar a ferramenta, sem certificado, sem erros durante o processo, inclusive os plugins. Mas após o primeiro login ele dá um erro 403 e quer um certificado…
Mesmo problema aqui, vou tentar seguir a documentação la no site, mas é praticamente igual
Não estou conseguindo instalar os pacotes está dando os seguintes erros:
apt install vim net-tools wget redis-server supervisor\
> postgresql-contrib postgresql libpq-dev gcc\
> python-minimal python3 python3-pip python3-venv\
> python3-dev build-essential libxml2-dev libxslt1-dev\
> libffi-dev libssl-dev zlib1g-dev graphviz\
> nginx redis python3-setuptools
Lendo listas de pacotes… Pronto
Construindo árvore de dependências
Lendo informação de estado… Pronto
E: Impossível encontrar o pacote supervisorpostgresql-contrib
E: Impossível encontrar o pacote gccpython-minimal
E: Impossível encontrar o pacote python3-venvpython3-dev
E: Impossível encontrar o pacote libxslt1-devlibffi-dev
E: Impossível encontrar o pacote graphviznginx
No comando para gerar a SECRET_KEY gera esse erro:
Traceback (most recent call last):
File “/opt/netbox/netbox/generate_secret_key.py”, line 3, in
import secrets
ImportError: No module named secrets
Bom dia,
Coloque o python3 na frente do comando: ” python3 /opt/netbox/netbox/generate_secret_key.py “
Parabens Pelo Tutorial….. Tudo 100%…. Muito Obrigado mesmo, agora com a chegada do IPv6… vai ser de grande valia.
Boa noite!
Parabéns pelo excelente material para estudos e aplicação desta ferramenta.
Minha dúvida mesmo seguindo tutorial arrisca apresentou o seguinte erro. Alguém poderia me ajudar . Abaixo os erros.
root@srv-netbox:/opt/netbox/netbox# python3 manage.py migrate
Traceback (most recent call last):
File “manage.py”, line 10, in
execute_from_command_line(sys.argv)
File “/usr/local/lib/python3.7/dist-packages/django/core/management/__init__.py”, line 401, in execute_from_command_line
utility.execute()
File “/usr/local/lib/python3.7/dist-packages/django/core/management/__init__.py”, line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File “/usr/local/lib/python3.7/dist-packages/django/core/management/base.py”, line 330, in run_from_argv
self.execute(*args, **cmd_options)
File “/usr/local/lib/python3.7/dist-packages/django/core/management/base.py”, line 371, in execute
output = self.handle(*args, **options)
File “/usr/local/lib/python3.7/dist-packages/django/core/management/base.py”, line 82, in wrapped
saved_locale = translation.get_language()
File “/usr/local/lib/python3.7/dist-packages/django/utils/translation/__init__.py”, line 254, in get_language
return _trans.get_language()
File “/usr/local/lib/python3.7/dist-packages/django/utils/translation/__init__.py”, line 57, in __getattr__
if settings.USE_I18N:
File “/usr/local/lib/python3.7/dist-packages/django/conf/__init__.py”, line 82, in __getattr__
self._setup(name)
File “/usr/local/lib/python3.7/dist-packages/django/conf/__init__.py”, line 69, in _setup
self._wrapped = Settings(settings_module)
File “/usr/local/lib/python3.7/dist-packages/django/conf/__init__.py”, line 189, in __init__
raise ImproperlyConfigured(“The SECRET_KEY setting must not be empty.”)
django.core.exceptions.ImproperlyConfigured: The SECRET_KEY setting must not be empty.
Mesmo problema aqui
Mano vc ouviu eu falando alto aqui em casa kkkk!
Essa semana tava seguindo uns artigos defasados e comentei “pô no Remontti poderia ter um artigo resumindo a instalação… ” tive que refazer a instalação e seguir a doc oficial pois tinha mudanças nas releases mais recente… qdo terminei e coloquei no ar, no dia seguinte vc me publica o artigo! kkkk
Parabéns pelo conteúdo, vou usar pra documentar a rede na empresa.
Uma dúvida…
Qual seria a melhor opção? phpIPAM ou Netbox?
Muito bom Rudimar!
Já utilizo a algum tempo, realmente salva quando não se tem nada.
Uma pergunta, tentei por algumas vezes adicionar os Plugins Netbox-QRcode e Netbox-Topology-Viewer e sempre dão erro. Existe algum segredo para tal?