Como instalar o NetBox

O NetBox é uma aplicação web de código aberto baseada em Django, projetada para ajudar na gestão e documentação de infraestrutura de redes, incluindo equipamentos, endereços IP, conexões e muito mais. Ela oferece uma interface intuitiva para rastrear informações cruciais sobre uma rede, facilitando a organização e o gerenciamento eficientes.

Pré-requisitos

Antes de começar, assegure-se de ter o seguinte:

  • Um servidor Debian 12.
  • Um utilizador não-root com privilégios de administrador.
  • Um nome de domínio público ou local apontado para o endereço IP do servidor.

Nota

Para esta instalação foi utilizado um container Proxmox.

Instalação de Dependências

O NetBox é uma aplicação web baseada no framework web Python Django. Pode ser instalado com o servidor de base de dados PostgreSQL e o servidor Redis para gestão de cache.

No próximo passo, serão instaladas as dependências necessárias para o NetBox, incluindo o servidor web Apache2 que será utilizado como proxy reverso para a instalação do NetBox.

Para começar, por favor execute o seguinte comando apt para atualizar o repositório Debian.

Bash
sudo apt update

Em seguida, instale as dependências necessárias para a instalação do NetBox IRM.

Bash
sudo apt install nginx 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

Digite y para continuar com a instalação das dependências, incluindo o servidor web Nginx, servidor de base de dados PostgreSQL, Redis, Git, pacotes Python3 e algumas bibliotecas adicionais do sistema.

Após a instalação das dependências, verifique cada uma delas executando o comando abaixo.

Verifique o serviço Apache2 para garantir que o serviço esteja ativado e em execução.

Bash
sudo systemctl enable nginx
sudo systemctl status nginx

Verifique o serviço PostgreSQL para garantir que o serviço esteja em execução e ativado.

Bash
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

Agora, verifique o serviço Redis para garantir que o serviço esteja em execução e ativado.

Bash
sudo systemctl is-enabled redis
sudo systemctl status redis

Por último, verifique a versão do Python usando o comando abaixo. A versão mais recente do NetBox IRM suporta Python v3.9, 3.10 e 3.11.

Bash
python3 --version

Deve ver que o Python 3.11 está instalado na sua máquina Debian.

Configuração do Servidor PostgreSQL

Após a instalação das dependências, vais criar uma nova base de dados e utilizador PostgreSQL que o NetBox irá utilizar. Para fazer isso, deves fazer login no servidor PostgreSQL via linha de comando psql.

Faz login no servidor PostgreSQL executando o comando abaixo.

Bash
sudo -u postgres psql

Execute as seguintes consultas para criar um novo utilizador netbox com a senha p4lavr4p4553. Em seguida, crie uma nova base de dados netboxdb com o proprietário netbox.

Bash
CREATE USER netbox LOGIN CREATEDB PASSWORD 'p4lavr4p4553';
CREATE DATABASE netboxdb OWNER netbox;
\l
\du

Digite quit para sair do servidor PostgreSQL.

Em seguida, faça login no PostgreSQL utilizando o novo utilizador netbox na base de dados netboxdb. Isso garantirá que o utilizador netbox consiga conectar-se à base de dados netboxdb.

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

Após a conexão, verifique a sua conexão utilizando a seguinte consulta.

Bash
\conninfo

Digite quit novamente para sair do servidor PostgreSQL.

Configuração do Servidor Redis

Com a base de dados e utilizador PostgreSQL criados, o próximo passo é configurar o servidor Redis que será utilizado como gestão de cache para o NetBox. Para fazer isso, vais modificar a configuração do Redis /etc/redis/redis.conf e verificar as suas alterações via redis-cli.

Abre a configuração padrão do Redis /etc/redis/redis.conf utilizando o seguinte comando do editor nano.

Bash
sudo nano /etc/redis/redis.conf

Descomente a opção requirepass e insira a sua senha que será utilizada para proteger o seu servidor Redis.

Bash
requirepass p4lavr4p4553

Quando terminar, salve e saia do ficheiro.

Agora execute o seguinte comando systemctl para reiniciar o serviço redis e aplicar as alterações que fez.

Bash
sudo systemctl restart redis

Para garantir que tudo está a funcionar corretamente, pode verificar o Redis via redis-cli. Acesse o seu servidor Redis utilizando o comando redis-cli abaixo.

Bash
redis-cli

Autentique-se no servidor Redis utilizando a seguinte consulta AUTH e certifique-se de alterar a senha.

Bash
AUTH p4lavr4p4553

Depois de autenticado, deverá receber a saída OK.

Agora execute a consulta PING abaixo para garantir que a sua conexão seja bem-sucedida.

Bash
PING

Se bem-sucedido, deverá receber a saída PONG do servidor Redis.

Instalação do NetBox IRM

Na próxima secção, proceder-se-á à obtenção e instalação do NetBox IRM no sistema. Será obtido o código-fonte do NetBox via Git, seguido da sua configuração através da modificação das definições do NetBox. Isto incluirá a adição dos servidores de base de dados PostgreSQL e Redis. Adicionalmente, será criado um utilizador administrador para o NetBox.

Em primeiro lugar, execute o seguinte comando para criar um novo utilizador systemd netbox, o qual será utilizado para executar a instalação do NetBox.

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

Descarregue o código-fonte do NetBox IRM através do git e altere a propriedade do diretório /opt/netbox para o utilizador netbox.

Bash
cd /opt; sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git
sudo chown -R netbox:netbox /opt/netbox

Em seguida, mude o seu diretório de trabalho para /opt/netbox e gere a chave secreta do NetBox através do script generate_secret_key.py. Assegure-se de copiar a chave secreta gerada, pois será utilizada durante a instalação do NetBox.

Bash
cd /opt/netbox/netbox/netbox
sudo -u netbox python3 ../generate_secret_key.py

Copie a configuração padrão configuration_example.py para configuration.py, em seguida, abra o novo ficheiro configuration.py utilizando o seguinte comando do editor nano.

Bash
sudo -u netbox cp configuration_example.py configuration.py
sudo -u netbox nano configuration.py

Dentro da secção ALLOWED_HOSTS, adicione o seu nome de domínio ou o endereço IP do seu servidor.

Bash
ALLOWED_HOSTS = ['netbox.homeserver.pt', '192.168.1.59']

Informe os detalhes do seu servidor de base de dados PostgreSQL para a secção DATABASE, incluindo o nome da base de dados, utilizador, senha, host e porta.

Dentro da secção REDIS, informe os detalhes do seu servidor Redis para as opções tasks e caching.

Por último, insira a sua chave secreta para a secção SECRET_KEY.

Quando terminar, salve e saia do ficheiro.

Em seguida, execute o script /opt/netbox/upgrade.sh para iniciar a sua instalação do NextBox. Isto criará um novo ambiente virtual Python, instalará alguns pacotes e bibliotecas Python, executará a migração da base de dados para o seu servidor PostgreSQL, também gerará arquivos estáticos para o NextBox.

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

Após o NetBox ser configurado, irá criar um utilizador administrador para o NetBox. Para fazer isso, faça login no ambiente virtual Python que foi criado utilizando o seguinte comando.

Bash
source /opt/netbox/venv/bin/activate

Mova para o diretório /opt/netbox/netbox e execute o script manage.py para criar um utilizador administrador do NetBox.

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

Quando solicitado, informe o seu endereço de e-mail do administrador, nome de utilizador e detalhes da senha.

Em seguida, execute o manage.py novamente para verificar a sua instalação do NetBox. Com isso, irá executar o NetBox no seu endereço IP local com a porta 8000.

Bash
python3 manage.py runserver 0.0.0.0:8000 --insecure

Abra o seu navegador da web e visite o endereço IP do seu servidor seguido pela porta 8000, como http://192.168.1.59:8000/. Se a sua instalação for bem-sucedida, deverá ver a página inicial do NetBox IRM e, a partir daí, clique no botão Login no canto superior direito, utilize as credenciais criadas anteriormente.

Se tudo correr bem, deverá ver o painel do NetBox como o seguinte:

Volte ao seu terminal e pressione Ctrl+c para terminar o processo.

Execução do NetBox como um Serviço Systemd

Neste ponto, instalou o NetBox IRM na sua máquina Debian. Para facilitar a gestão do NetBox, irá executar o NetBox como um serviço systemd, o que permite controlar o NetBox através do utilitário systemctl.

Copie o ficheiro /opt/netbox/contrib/gunicorn.py para /opt/netbox/gunicorn.py e, em seguida, abra o ficheiro gunicorn.py utilizando o seguinte comando do editor nano.

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

Altere a opção bind para o seguinte. Isto irá executar a sua instalação do NetBox no localhost porta 8001 via gunicorn.

Bash
bind = '127.0.0.1:8001'

Quando terminar, salve e feche o ficheiro.

Em seguida, copie os ficheiros de serviço systemd para o NetBox para o diretório /etc/systemd/system/. Isso irá copiar o ficheiro de serviço netbox, netbor-rq e netbook-housekeeping para o diretório /etc/systemd/system/. Em seguida, recarregue o gestor systemd para aplicar as novas alterações no seu sistema.

Bash
sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
sudo systemctl daemon-reload

Agora pode iniciar e ativar tanto o serviço netbox quanto o netbox-rq usando o comando systemctl abaixo. Após executar o comando, a sua instalação do NetBox estará em execução em segundo plano como um serviço systemd.

Bash
sudo systemctl start netbox netbox-rq netbox-housekeeping
sudo systemctl enable netbox netbox-rq netbox-housekeeping

Por último, verifique tanto o serviço netbox quanto o netbox-rq usando o seguinte comando.

Bash
sudo systemctl status netbox
sudo systemctl status netbox-rq

Configurando o Nginx como um Proxy Reverso

No próximo passo, irá configurar o Nginx como um proxy reverso. Antes disso, certifique-se de ter um nome de domínio apontado para o endereço IP do seu servidor, também pode utilizar um nome de domínio local.

Se estiver a utilizar um nome de domínio local, pode executar o seguinte comando openssl para gerar certificados SSL. Se estiver a utilizar o domínio público, pode utilizar o Certbot para gerar certificados SSL a partir do Letsencrypt.

No container do NetBox, execute o seguinte comando:

Bash
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.homeserver.pt" \
  -addext "subjectAltName=DNS:netbox.homeserver.pt,IP:192.168.1.59"
Bash
sudo rm /etc/nginx/sites-enabled/default

Este comando remove o ficheiro de configuração padrão do diretório sites-enabled.

Copie o exemplo de configuração de host virtual do Nginx para o NetBox para /etc/nginx/sites-available/netbox.conf:

Bash
sudo cp /opt/netbox/contrib/nginx.conf /etc/nginx/sites-available/netbox.conf

Modifique o ficheiro /etc/nginx/sites-available/netbox.conf utilizando um editor de texto:

Bash
sudo nano /etc/nginx/sites-available/netbox.conf
Nginx
server {
    listen 80;
    server_name netbox.homeserver.pt;

    location / {
        proxy_pass http://localhost:8001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }
}

server {
    listen 443 ssl;
    server_name netbox.homeserver.pt;

    ssl_certificate /etc/ssl/certs/netbox.crt;
    ssl_certificate_key /etc/ssl/private/netbox.key;

    location / {
        proxy_pass http://localhost:8001;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr

;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }
}

Em seguida, vamos garantir que o nosso ficheiro de configuração do NetBox esteja corretamente vinculado no diretório sites-enabled:

Bash
sudo ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/

Este comando cria um link simbólico (netbox.conf) no diretório sites-enabled que aponta para o nosso ficheiro de configuração real no diretório sites-available.

Agora, vamos verificar novamente a configuração do Nginx para garantir que não haja erros de sintaxe:

Bash
sudo nginx -t

Se o teste de configuração for bem-sucedido, vamos reiniciar o Nginx:

Bash
sudo systemctl restart nginx

Isso deve reiniciar o Nginx sem erros. Se ainda houver problemas, forneça a saída do comando nginx -t e quaisquer mensagens de erro relevantes para mais solução de problemas.

A sua instalação do NetBox deve ser acessível através do domínio.

Abra o seu navegador e visite o nome de domínio da sua instalação do NetBox, como https://netbox.homeserver.pt/. Se tudo correr bem, deverá ver a página inicial do NetBox como a seguinte:

Deixe um comentário