Links de auxílio:
https://www.howtoforge.com/how-to-install-netbox-irm-on-debian-12/\\
https://wiki.freebsd.org/Ports/net-mgmt/netbox\\
https://netboxlabs.com/docs/netbox/en/stable/installation/5-http-server/\\
https://netboxlabs.com/docs/netbox/en/stable/installation/3-netbox/\\
https://github.com/netbox-community/netbox/releases\\
===== Procedimento para instalação do NetBox no FreeBSD =====
=== 1 - Vamos atualizar o pkg: ===
# pkg update
=== 2 - Precisaremos instalar os arquivos iniciais necessários do NetBox: ===
# pkg install -y python39 python3 py311-pip py311-virtualenv postgresql16-server postgresql16-client redis nginx git gcc gmake libxml2 libxslt jpeg-turbo graphviz
=== 3 - Vamos configurar o banco de dados instalado. Vamos inicializar e iniciar o PostgreSQL: ===
# sysrc postgresql_enable="YES"
# service postgresql initdb
# service postgresql start
=== 4 - Para configurar as permissões de acesso remoto ao banco, você pode configurar o arquivo /var/db/postgres/data16/pg_hba.conf: ===
# ee /var/db/postgres/data16/pg_hba.conf
-- procure as linhas abaixo:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
OBS: Nas linhas acima você irá configurar os IPs que podem acessar seu banco e o método de autenticação. No meu caso, vou dar um exemplo liberando o acesso vindo de qualquer rede com autenticação por senha:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
#host all all 127.0.0.1/32 trust
host all all 0.0.0.0/0 md5 # Modificada
# IPv6 local connections:
host all all ::1/128 trust
OBS: As linhas modificadas em questão especificam uma regra de acesso para clientes que se conectam ao servidor usando o protocolo "host", permitindo que todos os usuários (representados por "all") se conectem a todos os bancos de dados (também "all") a partir de qualquer endereço IP (representado por "0.0.0.0/0"). A autenticação será realizada usando o método "md5", que é uma forma segura de autenticação baseada em senha que armazena as senhas como um hash criptográfico em vez de texto simples.
: ===
-- Verificar se as configurações do vhost estão corretas e se ele está ativo:
=== 5 - Após as alterações, reinicie o serviço do banco de dados e pode efetuar os testes com seu cliente: ===
/usr/local/etc/rc.d/postgresql restart
2023-03-31 17:24:19.626 -03 [97839] LOG: ending log output to stderr
2023-03-31 17:24:19.626 -03 [97839] HINT: Future log output will go to log destination "syslog".
=== 6 - Agora vamos criar o banco de dados, usuário e permissões ao BD: ===
# su - postgres
$
$ psql
psql (16.6)
Type "help" for help.
postgres=#
postgres=# CREATE DATABASE netbox;
CREATE DATABASE
postgres=# CREATE USER netbox WITH ENCRYPTED PASSWORD 'senha_segura';
CREATE ROLE
postgres=# ALTER ROLE netbox SET client_encoding TO 'utf8';
ALTER ROLE
postgres=# ALTER ROLE netbox SET default_transaction_isolation TO 'read committed';
ALTER ROLE
postgres=# ALTER ROLE netbox SET timezone TO 'UTC';
ALTER ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
GRANT
postgres=# \q
=== 7 - Vamos configurar o Redis: ===
# sysrc redis_enable="YES"
# service redis start
=== 8 - Vamos ver se os serviços estão ativos: ===
# sockstat -4l
USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
redis redis-serv 8929 6 tcp4 127.0.0.1:6379 *:*
postgres postgres 8782 7 tcp4 127.0.0.1:5432 *:*
=== 9 - Vamos instalar o NetBox pelo PKG: ===
# pkg install netbox-4.1.11
OBS: No meu caso essa era a versão mais recente, instale a que estiver disponível para você.
A instalação irá demorar um pouco dependendo das configurações do seu computador.
=== 10 - Após o termino da instalação você deverá copiar a pasta do NetBox para o /usr/local/: ===
# cp -R /usr/local/share/netbox/ /usr/local/netbox/
=== 10 - Entre no diretório que foi copiado e edite o seguinte arquivo /usr/local/netbox/netbox/, confome as instruções abaixo: ===
# cd /usr/local/netbox/netbox/
# cp configuration_example.py configuration.py
# ee configuration.py
-- Edite as seguintes informações:
ALLOWED_HOSTS = ['*']
.
.
.
## Informações do seu banco conforme criado
DATABASE = {
'ENGINE': 'django.db.backends.postgresql', # Database engine
'NAME': 'netbox', # Database name
'USER': 'netbox', # PostgreSQL username
'PASSWORD': 'sua_senha_aqui', # PostgreSQL password
'HOST': 'localhost', # Database server
'PORT': '5432', # Database port (leave blank for default)
'CONN_MAX_AGE': 300, # Max database connection age
}
--- Feche e salve o arquivo
=== 11 - Vamos precisar gerar uma chave secreta: ===
# python3 -c 'import secrets; print(secrets.token_urlsafe(50))'
7lIv96OGPVwQkPSMr-j_EvYtuTt9G6-Jkt-GS-PX2mo1M_ZGjnamEbRRvMsuvNEekOQ
-- Essa chave você irá colocar na opção SECRET_KEY = do configuration.py, siga os passos abaixo:
# ee configuration.py
.
.
.
SECRET_KEY = '7lIv96OGPVwQkPSMr-j_EvYtuTt9G6-Jkt-GS-PX2mo1M_ZGjnamEbRRvMsuvNEekOQ'
=== 11 - Antes de iniciar o NetBox vamos fazer uma configuração novamente no banco de dados. Estou fazendo essas modificações novamente, pois ao tentar iniciar a migração recebi um erro de permissão e só consegui resolver com os passos abaixo. Você pode tentar ir direto para o passo 12, caso receba uma mensagem de erro de permissão no BD, execute os passos abaixo: ===
--- Logar no BD postgres
# su - postgres
$ psql
--- Alterar o dono do banco de dados para netbox
postgres=# ALTER DATABASE netbox OWNER TO netbox;
ALTER DATABASE
--- Garantir que o usuário netbox possa conectar ao banco
postgres=# GRANT CONNECT ON DATABASE netbox TO netbox;
GRANT
--- Corrigir permissões no schema public
postgres=# REVOKE ALL ON SCHEMA public FROM PUBLIC;
REVOKE
postgres=# REVOKE ALL ON SCHEMA public FROM netbox;
REVOKE
postgres=# GRANT USAGE, CREATE ON SCHEMA public TO netbox;
GRANT
postgres=# GRANT ALL PRIVILEGES ON SCHEMA public TO netbox;
GRANT
postgres=# ALTER SCHEMA public OWNER TO netbox;
ALTER SCHEMA
--- Conceder permissões para todas as tabelas e sequências no schema public
postgres=# GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO netbox;
GRANT
postgres=# GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO netbox;
GRANT
--- Configurar privilégios padrão para futuras tabelas e sequências
postgres=# ALTER DEFAULT PRIVILEGES FOR ROLE netbox IN SCHEMA public GRANT ALL ON TABLES TO netbox;
ALTER DEFAULT PRIVILEGES
postgres=# ALTER DEFAULT PRIVILEGES FOR ROLE netbox IN SCHEMA public GRANT ALL ON SEQUENCES TO netbox;
ALTER DEFAULT PRIVILEGES
---Garantir que o usuário netbox tenha controle total sobre o banco
postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
GRANT
--- Sair do PostgreSQL
postgres=# \q
$ exit
=== 12 - Agora vamos inicializar o processo de migração do NetBox: ===
# cd /usr/local/netbox/
# python3 manage.py migrate
=== 13 - Criação do usuário: ===
# python3 manage.py createsuperuser
Username: Administrator # você pode usar o usuário que preferir
Email address:
Password:
Password (again):
Superuser created successfully.
=== 14 - Agora vamos coletar arquivos estáticos: ===
# python3 manage.py collectstatic --no-input
=== 15 - Testar o NetBox: ===
# python3 manage.py runserver 0.0.0.0:8000 --insecure
---OBS: Tudo deverá executar corretamente, acesse http://IP_DO_SERVIDOR:8000 e faça login com o usuário criado.
=== 16 - Execute o NetBox como serviço. O NetBox pode ser executado como um serviço usando os scripts rc fornecidos que são instalados por padrão através da opção dos exemplos que vem junto da instalação com o PKG. Copie o script e execute os comandos abaixo: ===
# cp /usr/local/share/examples/netbox/netboxrc.sample /usr/local/etc/rc.d/netbox
# chmod 555 /usr/local/etc/rc.d/netbox
# sysrc netbox_enable="YES"
=== 17 - Antes de executar o NetBox, vamos precisar editar duas linhas do script copiado: ===
# ee /usr/local/etc/rc.d/netbox
.
.
.
#netbox_path=/usr/local/share/netbox # Acrescente o "#"
netbox_path=/usr/local/netbox # Coloque o endereço do diretório de onde o seu netbox está rodando
.
.
.
#netbox_bind=${netbox_bind:-localhost:8001} # Acrescente o "#"
netbox_bind=${netbox_bind:-0.0.0.0:8001} # Coloque o endereço 0.0.0.0 ou o endereço do seu servidor Netbox
=== 18 - Ainda, antes de executar o NetBox, vamos precisar ativar um outro serviço dele, o netbox_rq. O NetBox RQ worker é um serviço que processa tarefas assíncronas no NetBox, como atualizações de cache e tarefas em segundo plano. Se ele não estiver ativado corretamente, algumas funcionalidades do NetBox podem não funcionar como esperado: ===: ===
# cp /usr/local/share/examples/netbox/netbox_rq.sample /usr/local/etc/rc.d/netbox_rq
# chmod 555 /usr/local/etc/rc.d/netbox_rq
# sysrc netbox_rq_enable="YES"
# service netbox_rq start
=== 19 - Antes de executar o NetBox, vamos precisar editar uma linha do script copiado: ===
# ee /usr/local/etc/rc.d/netbox_rq
.
.
.
#command_args="/usr/local/share/netbox/manage.py rqworker"
command_args="/usr/local/netbox/manage.py rqworker"
=== 20 - Agora podemos inicializar o serviço: ===
# service netbox start
=== 21 - O serviço após inicializado irá funcionar, porém pode acontecer alguns erros, pois ele é configurado para ficar atrás de um proxy. Na instalação padrão dele, ele já instala o NGINX. Siga os passos abaixo para ativá-lo: ===
--- Vamos primeiro entrar no diretório /usr/local/etc/nginx/ e depois editar o arquivo nginx.conf:
# cd /usr/local/etc/nginx/nginx.conf
# ee nginx.conf
--- No final do arquivo você irá por as seguintes linhas e substituir as informações de acordo com seu servidor:
server {
listen 8000 # porta que receberá as requisições
# server_name nome_do_seu_servidor;
client_max_body_size 25m;
location /static/ {
alias /usr/local/netbox/static/; # diretório static dentro da pasta do netbox
}
location / {
proxy_pass http://127.0.0.1:8001; # porta que está rodando de fato o netbox
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;
}
}
}
=== 22 - Após isto basta reiniciar o serviço do NGINX e testar no browser se está conseguindo acessar seu servidor NETBOX: ===
# service nginx restart
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Stopping nginx.
Waiting for PIDS: 1889.
Performing sanity check on nginx configuration:
nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
Starting nginx.
=== 23 - Se você seguiu todos os passos o serviço deve estar funcionando, basta testá-lo no navegador, lembrando que a porta que você deve usar para tentar acessar é que foi configurada no NGINX, ele que irá redirecionar as requisições para o netbox: ===
-----------------
~~DISCUSSION|Deixe sua contribuição~~