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
# pkg update
# pkg install -y python39 python3 py311-pip py311-virtualenv postgresql16-server postgresql16-client redis nginx git gcc gmake libxml2 libxslt jpeg-turbo graphviz
# sysrc postgresql_enable="YES" # service postgresql initdb # service postgresql start
# 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:
/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".
# 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
# sysrc redis_enable="YES" # service redis start
# 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 *:*
# 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.
# cp -R /usr/local/share/netbox/ /usr/local/netbox/
# 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
# 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'
--- 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
# cd /usr/local/netbox/ # python3 manage.py migrate
# python3 manage.py createsuperuser Username: Administrator # você pode usar o usuário que preferir Email address: Password: Password (again): Superuser created successfully.
# python3 manage.py collectstatic --no-input
# 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.
# 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"
# 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
# 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
# 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"
# service netbox start
— 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; } } }
# 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.