Organize e Documente sua Infraestrutura com NetBox

Hoje, quando se fala em cuidar de uma infraestrutura, não falamos apenas em conhecer configurações, dominar comandos ou viver dentro da CLI de um roteador ou terminal. Precisamos falar — e muito — sobre documentação.

"Qual é o IP da filial do Rio?"
"Quantos IPs ainda tenho disponíveis no meu bloco público?"
"Minha rede comporta mais um projeto ou preciso expandir?"

Essas perguntas surgem o tempo todo no dia a dia do NOC ou da equipe técnica — e é aí que entra o NetBox, uma ferramenta fantástica de IPAM (IP Address Management) e DCIM (Data Center Infrastructure Management).

Com o NetBox, você consegue criar uma base de dados sólida da sua rede: documentar VLANs, racks, dispositivos, endereçamentos IP, conexões, links físicos, circuitos de operadoras, e até integrações com automações via API. Ele te dá visibilidade, controle e segurança para crescer com organização e confiança.

🔧 Requisitos de Instalação

Geralmente, quando estou em um sistema operacional recém-instalado, o primeiro comando que executo é:

apt-get update -y && apt-get upgrade -y

Neste artigo, estou utilizando o Ubuntu 22.04 LTS, que é uma excelente base para instalar o NetBox de forma estável e segura.

Abaixo estão os principais componentes necessários para uma instalação completa do NetBox:

📦 Componentes que vamos configurar:

  • PostgreSQL – banco de dados relacional que armazenará toda a estrutura da documentação.

  • Redis – banco de dados em memória usado para cache e gerenciamento de filas de tarefas assíncronas.

  • Componentes do NetBox – download do código-fonte, criação do ambiente virtual Python e instalação de dependências.

  • Gunicorn – servidor de aplicação WSGI que executará o NetBox em produção.

  • Servidor HTTP (Nginx) – atuará como proxy reverso para servir o NetBox para os usuários.

Nos próximos passos, vamos configurar cada um desses itens em sequência, do zero até o acesso via navegador.

🐘 Instalação do PostgreSQL

Instale o PostgreSQL com:

apt install -y postgresql

ℹ️ O NetBox exige PostgreSQL na versão 14 ou superior.
Para verificar a versão instalada:

psql -V

No meu caso, usando o repositório padrão do Ubuntu 22.04, foi instalada a versão 16.9.

🧱 Criando o banco de dados e usuário

Acesse o shell do PostgreSQL:

sudo -u postgres psql

No prompt do PostgreSQL, execute os comandos abaixo (substitua a senha por uma forte e segura!):

CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'J5brHrAXFLQSif0K'; (NAO ESQUEÇA DE TROCAR!!!!)
ALTER DATABASE netbox OWNER TO netbox;
\connect netbox;
GRANT CREATE ON SCHEMA public TO netbox;

⚠️ Atenção: nunca use senhas fracas nesse passo. Guarde a senha do usuário netbox, pois será usada no arquivo de configuração.

🔌 Testando a conexão com o banco

Execute o comando abaixo para verificar se o usuário netbox consegue se conectar ao banco criado:

psql --username netbox --password --host localhost netbox

$ psql --username netbox --password --host localhost netbox
Password for user netbox:  ( SENHA QUE VOCE UTILIZOU QUANDO CRIOU A DATABASE E USUARIO NETBOX )
psql (12.5 (Ubuntu 12.5-0ubuntu0.20.04.1))
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help.

netbox=> \conninfo
You are connected to database "netbox" as user "netbox" on host "localhost" (address "127.0.0.1") at port "5432".
SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
netbox=> \q

🔴 Instalação do Redis

Instale o Redis com:

apt install -y redis-server

Verifique se a versão é superior a 4.0:

redis-server -v

Teste se o Redis está funcionando corretamente:

redis-cli ping

Se tudo estiver certo, a resposta será:

Instalação dos pacotes necessários

Vamos instalar os pacotes que o NetBox precisa para funcionar corretamente:

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

Verifique se o Python está na versão 3.10 ou superior:

python3 -V

Clonando o repositório do NetBox

Crie a pasta onde o NetBox será instalado:

mkdir -p /opt/netbox/
cd /opt/netbox/

Instale o Git (caso ainda não tenha):

apt install -y git

Clone o repositório do NetBox:

git clone https://github.com/netbox-community/netbox.git .

Obs: faça o git clone dentro da pasta /opt/netbox/ ok ?

Você verá uma saída semelhante à listagem dos arquivos clonados.

Criando o usuário do sistema

Crie uma conta de sistema chamada netbox. Usaremos essa conta para executar os serviços WSGI e HTTP, além de garantir que ela tenha permissão sobre os diretórios apropriados:

sudo adduser --system --group netbox
sudo chown --recursive netbox /opt/netbox/netbox/media/
sudo chown --recursive netbox /opt/netbox/netbox/reports/
sudo chown --recursive netbox /opt/netbox/netbox/scripts/

Configuração do NetBox

Acesse o diretório de configuração e copie o arquivo de exemplo:

cd /opt/netbox/netbox/netbox/
cp configuration_example.py configuration.py

Abra o arquivo configuration.py em seu editor e ajuste os seguintes parâmetros:

ALLOWED_HOSTS

Defina os hosts permitidos para acessar o NetBox. Caso não tenha uma regra específica de segurança, você pode definir assim:

ALLOWED_HOSTS = ['*']

DATABASE

Insira os dados de acesso ao banco de dados que você configurou anteriormente. Um exemplo:

DATABASE = {
    'NAME': 'netbox',
    'USER': 'netbox_user',
    'PASSWORD': 'senha',
    'HOST': 'localhost',
    'PORT': '',
}

SECRET_KEY

Gere uma chave secreta aleatória com pelo menos 50 caracteres:

python3 ../generate_secret_key.py

Copie o valor gerado e insira no campo SECRET_KEY do arquivo de configuração.

✅ Executando o Script de Upgrade

Após a configuração inicial, execute o script de instalação para preparar o ambiente:

/opt/netbox/upgrade.sh

👤 Criando o Superusuário

  1. Ative o ambiente virtual:
source /opt/netbox/venv/bin/activate
  1. Antes de criar o superusuário, execute as migrações manualmente (em alguns casos, o upgrade.sh não cria as tabelas corretamente):
cd /opt/netbox/netbox/
python3 manage.py migrate
  1. Crie o superusuário:
python3 manage.py createsuperuser

Será solicitado um e-mail, mas você pode apenas pressionar Enter para pular.


🧪 Validação do NetBox via Runserver

Dentro do ambiente virtual, você pode rodar o NetBox para validação:

python3 manage.py runserver 0.0.0.0:8000 --insecure

Se tudo estiver funcionando corretamente, o NetBox já estará acessível — mas essa execução é apenas para fins de teste.

Para sair do ambiente virtual:

deactivate

⚙️ Gunicorn

O Gunicorn é um servidor WSGI utilizado para executar aplicações Python em ambientes de produção, como o NetBox. Ele atua como intermediário entre a aplicação e o servidor web (como o Nginx).

Vamos configurá-lo:

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

Agora inicie os serviços:

sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq
systemctl status netbox.service

🌐 Instalando o Apache com SSL

Vamos instalar o Apache e gerar um certificado SSL autoassinado:

  1. Gere o certificado:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/netbox.key \
-out /etc/ssl/certs/netbox.crt

Será necessário preencher informações como país, estado, etc. Use dados reais ou genéricos para testes.

  1. Instale o Apache:
apt install -y apache2
  1. Copie a configuração do NetBox para o Apache:
cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf
  1. Habilite os módulos e o site:
sudo a2enmod ssl proxy proxy_http headers rewrite
sudo a2ensite netbox
sudo systemctl restart apache2

❗ Corrigindo erro de "Falha de Mídia Estática"

Se ao acessar o NetBox você ver o erro "Falha de mídia estática" (como o setmode.js não carregando), siga os passos abaixo:

✅ 1. Reexecutar o collectstatic

Ative o ambiente virtual:

source /opt/netbox/venv/bin/activate

Execute:

cd /opt/netbox/netbox
python3 manage.py collectstatic --no-input

Esse comando copia todos os arquivos estáticos (como setmode.js) para o diretório definido em STATIC_ROOT.


Se tudo tiver sido feito corretamente... Ufa! O NetBox deve carregar normalmente agora! 🎉

Esse deu trabalho pessoal ! faça com calma que vai dar certo !!!

Obrigado é até a proxima !

1
Subscribe to my newsletter

Read articles from Hudson Alves Amaral directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Hudson Alves Amaral
Hudson Alves Amaral