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.
Deixe sua contribuição