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.
sudo apt update
Em seguida, instale as dependências necessárias para a instalação do NetBox IRM.
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.
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.
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.
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.
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.
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.
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.
sudo -u postgres psql --username netbox --password --host localhost netboxdb
Após a conexão, verifique a sua conexão utilizando a seguinte consulta.
\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.
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.
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.
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.
redis-cli
Autentique-se no servidor Redis utilizando a seguinte consulta AUTH e certifique-se de alterar a senha.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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:
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"
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:
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:
sudo nano /etc/nginx/sites-available/netbox.conf
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:
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:
sudo nginx -t
Se o teste de configuração for bem-sucedido, vamos reiniciar o Nginx:
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: