基于 Ubuntu 20.04 系统 部署 NetBox

article/2025/10/10 13:42:39

提示:请注意 信息的时效性、环境的匹配度。侵删!

文章目录

  • 前言
  • NetBox 安装
  • 一、环境
  • 二、安装
    • 1.安装 PostgreSQL
    • 2.安装 Redis
    • 3.安装 Python
    • 3.安装 Netbox
    • 4.修改 NetBox 配置文件
    • 5.安装其他可选的插件或组件
    • 6.运行升级脚本
    • 6.Python试运行Netbox
    • 7.使用 Gunicorn 运行 Django 服务,并配置Nginx服务
    • 9.测试,使用 80 端口来访问:
    • 在这里插入图片描述 至此,NetBox 搭建完成!
  • 引用


前言

  NetBox 是一个集 IP地址管理工具和网络设施基础结构管理的工具。适合数据中心、园区网、中小企业等使用。


Netbox 官网:
  https://github.com/netbox-community/netbox




`提示:以下是本篇文章正文内容,下面案例可供参考。建议初次安装参考文中的路径配置。`

NetBox 安装


一、环境

  • Ubuntu20.04 LTS
  • 2核 4G
  • PostgreSQL
  • > v10
  • Redis
  • > 4.0
  • NetBox
  • > v3
  • Python
  • > 3.8
  • Git



二、安装


1.安装 PostgreSQL

# 安装 
sudo apt install -y postgresql# 验证
user@ubuntu:~$ psql -V
psql (PostgreSQL) 12.12 (Ubuntu 12.12-0ubuntu0.20.04.1)# 配置数据库并设置开机自启
user@ubuntu:~$ sudo systemctl start postgresql  && sudo systemctl enable postgresql# 创建数据库
user@ubuntu:~$ sudo -u postgres psql    # 进入数据库
# 建库授权
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD 'passwork';
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
# 退出
\q# 验证数据库状态
user@ubuntu:~$  psql --username netbox --password --host localhost netbox
Password:    # 密码输入上面的 password
psql (12.12 (Ubuntu 12.12-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
user@ubuntu:~$ 

Netbox数据库的 备份导出 和 导入恢复 方法:

# 导入数据,postgres需要密码
user@ubuntu:~$ su postgres
postgres@ubuntu:/home/user$ psql netbox < netbox.sql# 导出数据可以使用 pg_dump
postgres@ubuntu:/home/user$ pg_dump --username netbox --password --host localhost netbox > netbox.sql# 记得切换用户 否则会报错:
user@ubuntu:~$ pg_dump
pg_dump: error: connection to database "user" failed: FATAL:  role "user" does not exist

2.安装 Redis

# 安装就行
user@ubuntu:~$  sudo apt install -y redis-server# 查看版本信息
user@ubuntu:~$ redis-server -v
Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=66bd629f924ac924# 验证。返回 PONG 表示正常。
user@ubuntu:~$ redis-cli ping
PONG

3.安装 Python

# NetBox v3.0 开始最低支持 Python3.7,从 NetBox v3.2 开始将最低支持 Python3.8。# 截止20220824 Ubuntu20.04 默认的 Python 版本为 3.8.10,有可能会仍缺少一些相关的依赖包。按需安装。user@ubuntu:~$ sudo apt install -y python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev

3.安装 Netbox

# 可以通过 wget 或者 git 来下载。
user@ubuntu:~$ sudo mkdir -p /opt/netbox/ && cd /opt/netbox/user@ubuntu:~$ sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .
Cloning into '.'...
remote: Enumerating objects: 1173, done.
remote: Counting objects: 100% (1173/1173), done.
remote: Compressing objects: 100% (1097/1097), done.
remote: Total 1173 (delta 210), reused 427 (delta 49), pack-reused 0
Receiving objects: 100% (1173/1173), 4.31 MiB | 1.90 MiB/s, done.
Resolving deltas: 100% (210/210), done.
user@ubuntu:~$# 创建系统用户 netbox.WSGI 和 HTTP 服务配置的运行需要它。
user@ubuntu:~$ sudo adduser --system --group netbox# 将 /opt/netbox/netbox/media/ 目录设置成 netbox 用户权限,这个文件夹下是前端页面
user@ubuntu:~$ sudo chown --recursive netbox /opt/netbox/netbox/media/

4.修改 NetBox 配置文件

# 复制一份默认的配置文件:
user@ubuntu:~$ cd /opt/netbox/netbox/netbox/ && sudo cp configuration_example.py configuration.py# 生成一个密钥,用来维护 HTTP 用户会话状态,配置文件里面要用到:
user@ubuntu:/opt/netbox/netbox/netbox$  python3 ../generate_secret_key.py 
TWRBswpBFZfDW9Xj3QmOowxU3-uMMD)xx9A0cZsz(uKw500YOx# 最小化配置运行如下:
user@ubuntu:/opt/netbox/netbox/netbox$ sudo vim  configuration.py
# :set number显示行号, 修改:
ALLOWED_HOSTS = ['*']  # 11行;允许所有客户端都可以访问前端页面#  15~22 行。数据库,修改用户名和密码。
DATABASE = { 'NAME': 'netbox','USER': 'netbox', # 修改用户名'PASSWORD': 'VIP@xdai.vip',  # 修改密码'HOST': 'localhost','PORT': '','CONN_MAX_AGE': 300,
}# 60 行
SECRET_KEY = 'lKCyYG-q5qW0&3zK=*U9%Ga@yOzZOwEIz9JhrlIIdd*CXE0b#z'# 203 行。 修改时区为 Asia/Shanghai
TIME_ZONE = 'Asia/Shanghai'# 不同时期的配置文件不太相同,请根据最新的配置文件进行修改,以上仅供参考

5.安装其他可选的插件或组件

NetBox 支持插件和可选软件包。

组件可以写在 NetBox 根目录的 local_requirements.txt 文件中, 第一次初始化安装时 NetBox 会自动进行安装;后期也可以手动安装。

插件:
    官方文档

官方组件:

  • napalm 用于从网络设备获取实时数据, namplm教程 或 Netmiko 教程
user@ubuntu:/opt/netbox/netbox/netbox$ sudo sh -c "echo 'napalm' >> /opt/netbox/local_requirements.txt"
user@ubuntu:/opt/netbox/netbox/netbox$ sudo sh -c "echo 'napalm-h3c-comware' >> /opt/netbox/local_requirements.txt"
  • django-storages 用于连接远程文件存储(默认是使用本地存储)

6.运行升级脚本

以上基础环境所依赖的软件已经部署完成,运行 upgrade.sh 初始化 Netbox,它会完成以下操作:

  • 创建 Python 的虚拟环境,后面许多配置都在虚拟环境中进行。
  • 安装 Netbox所需的 Python 包(根目录下的requirements.txt 和 local_requirements.txt)。
  • 初始化 Django 数据,进行数据库的迁移。
  • 本地生成离线文档
  • 生成静态资源文件

默认的 PIP国外源 可能会很慢,参考 pip 国内加速

# 升级
user@ubuntu:~$ sudo /opt/netbox/upgrade.sh
Upgrade complete! Don't forget to restart the NetBox services:# 重启NetBox,第一次安装可以跳过。
user@ubuntu:~$ sudo systemctl restart netbox netbox-rq

进入虚拟环境配置Netbox

# 进入虚拟环境,退出直接 deactivate
user@ubuntu:~$ source /opt/netbox/venv/bin/activate# 创建 django 管理员用户, 邮箱可以为空。
# 若是前面已经恢复过数据库这里可以跳过。
(venv)user@ubuntu:/opt/netbox/netbox$ python3 manage.py createsuperuser
Username (leave blank to use 'user'): admin
Email address:       
Password: 
Password (again): 
Superuser created successfully.# 设置自动清理任务
# 注意脚本的路径,如果 NetBox 安装在其他路径,需要使用正确的绝对路径。
# housekeeping 管理命令用来处理一些定期清理任务,例如清除旧会话和过期的更改记录。
(venv)user@ubuntu:/opt/netbox/netbox$ sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

6.Python试运行Netbox

# 运行Netbox 
(venv)user@ubuntu:/opt/netbox/netbox$ python3 manage.py runserver 0.0.0.0:8000 --insecure# 若是无法访问,则检查 防火墙 或者 iptables 设置中是否放行了 8000端口
# 或者暂时关闭 防火墙,直到再次重启启动linux
(venv)user@ubuntu:/opt/netbox/netbox$ sudo systemctl stop firewalld

Netbox 试运行正常状态,验证完毕后 Ctrl + C 停止服务:
在这里插入图片描述

7.使用 Gunicorn 运行 Django 服务,并配置Nginx服务

运行 Django 服务

# 将Gunicorn配置复制到 /opt/netbox 中,这里使用默认配置。若自定义配置,则 Nginx配置也需要修改。
(venv)user@ubuntu:/opt/netbox/netbox$ sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py# 将Netbox 默认的systemd服务文件,复制到系统目录下
(venv)user@ubuntu:/opt/netbox/netbox$ sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
# 加载服务
(venv)user@ubuntu:/opt/netbox/netbox$ sudo systemctl daemon-reload
# 启动并设置为开机自启动
(venv)user@ubuntu:/opt/netbox/netbox$ sudo systemctl start netbox netbox-rq && sudo systemctl enable netbox netbox-rq
# 查看服务状态
(venv)user@ubuntu:/opt/netbox/netbox$ systemctl status netbox.service(venv)user@ubuntu:/opt/netbox/netbox$ 
# 此时服务应该运行完成,但访问时可能会出现 静态文件 无法加载的问题

运行 Nginx 服务

# 安装 Nginx
(venv)user@ubuntu:/opt/netbox/netbox$ sudo apt install -y nginx
# 复制配置文件到 nginx 目录并覆盖 nginx.conf 。
(venv)user@ubuntu:/opt/netbox/netbox$ sudo cp /opt/netbox/contrib/nginx.conf /etc/nginx/nginx.conf # Netbox 的 nginx.conf 配置默认使用 https模式, 更改为http模式。
(venv)user@ubuntu:/opt/netbox/netbox$ sudo vim /etc/nginx/nginx.conf
[sudo] password for user: worker_processes auto;
pid /run/nginx.pid;events {worker_connections 65535;multi_accept on;
}http {include mime.types;access_log /var/log/nginx/access.log;error_log /var/log/nginx/error.log;server {listen 80;server_name  localhost;client_max_body_size 25m;location /static/ {alias /opt/netbox/netbox/static/;}location / {proxy_pass http://localhost:8001;proxy_set_header X-Forwarded-Host $http_host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-Proto $scheme;}}
}
# 若发生跨域错误,则可以将下列注释取消,复制到 location 下#add_header 'Access-Control-Allow-Origin' '*';#add_header 'Access-Control-Allow-Credentials' 'true';#add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';#add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';# 重启 Nginx 服务
(venv)user@ubuntu:/opt/netbox/netbox$ sudo systemctl restart nginx
(venv)user@ubuntu:/opt/netbox/netbox$ 
(venv)user@ubuntu:/opt/netbox/netbox$ 
(venv)user@ubuntu:/opt/netbox/netbox$ 
(venv)user@ubuntu:/opt/netbox/netbox$ 

9.测试,使用 80 端口来访问:

在这里插入图片描述
至此,NetBox 搭建完成!



引用

  • 基于centos7 部署 NetBox3_世界–的博客-CSDN博客_netbox部署
    • https://blog.csdn.net/sedbz/article/details/122988725
  • NetBox 文档
    • https://docs.netbox.dev/en/stable/introduction/
  • 插件 - NetBox 文档
    • https://docs.netbox.dev/en/stable/plugins/
  • netbox 导出 csv 中文乱码、时区修改_某呆啊的博客-CSDN博客
    • https://blog.csdn.net/q965844841qq/article/details/122570724
  • 修改已经导出的文件编码
    • https://blog.csdn.net/q965844841qq/article/details/119065251
  • NetBox 时区修改
    • https://blog.csdn.net/q965844841qq/article/details/122570724

http://chatgpt.dhexx.cn/article/fZob32Xe.shtml

相关文章

从某一点出发沿任意一方向旋转矩阵计算思考与实现

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 上期讲到 绕任一向量旋转矩阵计算思考与实现 点击前往 点击前往 问题提出 之前讲到绕任一向量旋转矩阵实现&#xff0c;原来的向量都是从原点出发&#xff0c;现在把…

绕任一向量旋转矩阵计算思考与实现

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 问题提出 如图所示&#xff0c;在空间中有一向量A&#xff0c;问点O绕A方向逆时针旋转角度α的矩阵如何表示。 问题分析 问题化规 直接去构造一个矩阵是比较困难的。…

echarts 象形柱状图+标注图形

代码&#xff1a; let myChart echarts.init(this.$refs.myChart);let option {graphic: [ // echarts整体的背景图{type: image, // 图形元素类型id: logo, // 更新或删除图形元素时指定更新哪个图形元素&#xff0c;如果不需要用可以忽略。right: center, // 根据父元素进…

【JEECG技术文档】JEECG平台对外接口JWT应用文档V3.7.2

一、 接口方式 接口调用采用http协议&#xff0c;rest请求方式&#xff1b; 二、 接口安全 接口安全采用Json web token (JWT)机制&#xff0c;基于token的鉴权机制. 1. 机制说明 基于token的鉴权机制类似于http协议也是无状态的&#xff0c;它不需要在服务端去保留用户的认证…

轻量级前端MVVM框架avalon - 整体架构

官网提供架构图 单看这个图呢,还木有说明,感觉有点蛋疼,作者的抽象度太高了,还好在前面已经大概分析过了执行流程 如图 左边是View视图,我们就理解html结构,换句话就是说用户能看到的界面,渲染页面&#xff0c;绑定事件&#xff0c;切换类名&#xff0c;什么脏活都揽右边是View…

下载kaggle数据集出现的一系列问题

下载kaggle数据集出现了如下情况 按照下面的帖子安装kaggle库 https://www.cnblogs.com/shuaishuaidefeizhu/p/15170305.html 1.windowsR 打开命令提示符cmd&#xff0c;输入pip install kaggle --user 2.在C:\Users\&#xff08;用户名&#xff09;文件下会生成一个.kaggle文…

CT图像重建算法------射线驱动投影模型

在模拟CT扫描过程中被测物体保持静止不动&#xff0c;射线源与探测器绕Z轴做逆时针旋转&#xff0c;每隔一定角度进行一次投影数据的计算&#xff0c;而计算方法则取决于采用什么样的投影算法。本文主要介绍了投影算法的分类&#xff0c;并详细描述了射线驱动算法中的joseph算法…

尤雨溪告诉你为什么Vue比yox优秀

2019年6月8日来自全球各地的开发者齐聚上海交通大学文治堂&#xff0c;VueConf 2019 在上海成功举办。 VUE 3.0 最新进展 更快 使用 Object.defineProperty -> Proxy 速度 提升了1倍 VUE3.0 将 Virtual DOM 重构 速度 提升 6 倍 牛逼吧 &#xff01;&#xff01;&…

kubernetes的初认识

1.先谈容器。 一个“容器”&#xff0c;实践上是一个由Linux Namespace、Linux Cgroups 和 rootfs 三种技术构建出来的进程的隔离环境。 一个正在运行的linux容器&#xff0c;其实可以被“一分为二”地看待&#xff1a; 一组联合挂载在/var/lib/docker/overlay2下的rootfs&a…

KubeSphere简介,功能介绍,优势,架构说明及应用场景

目录 一、KuberSphere简介 1.1 功能介绍 1.2 Kubernetes 资源管理 1.3 微服务治理 1.4 多租户管理 1.5 DevOps 工程 1.6 Source to Image 1.7 多维度监控 1.8 自研多租户告警系统 1.9 日志查询与收集 1.10 应用管理与编排 1.11 基础设施管理 1.12 多存储类型支持…

云原生钻石课程 | 第4课:Kubernetes存储架构原理深度剖析(上)

点击上方“程序猿技术大咖”&#xff0c;关注并选择“设为星标” 回复“加群”获取入群讨论资格&#xff01; 本篇文章来自《华为云云原生王者之路训练营》钻石系列课程第4课&#xff0c;由云原生存储解决方案Everest2.0的架构设计专家Jabin主讲&#xff0c;详细介绍云原生存储…

1.k8s基本使用(测试加分)

测试为什么要学习容器技术及k8s k8s不是运维的专属技术 随着互联网技术的发展&#xff0c;架构也已经从单体架构发展到容器云( “微服务 k8s” 完美结合) 很多人认为&#xff0c;k8s只是运维需要掌握的技术&#xff0c;讲真&#xff0c;测试和运维、开发都有技术交集 所以&…

Kubernetes 持久化存储(Pod Volumes,PV和PVC)

一、Volumes 介绍 Pod Volumes 首先来看一下 Pod Volumes 的使用场景&#xff1a; 场景一&#xff1a;如果 pod 中的某一个容器在运行时异常退出&#xff0c;被 kubelet 重新拉起之后&#xff0c;如何保证之前容器产生的重要数据没有丢失&#xff1f;场景二&#xff1a;如果…

面试题引出的知识点整理

1、自旋锁&可重复锁&公平锁&共享锁&分段锁你都知道吗? 2、无锁&偏向锁&轻量级锁&重量级锁如何膨胀升级? 3、Lock底层AQS实现与Synchronized底层实现异同&#xff1f; 4、LongAdder的分段CAS优化机制如何设计的&#xff1f; 5、Java多线程内存模型…

云集成,给超大规模K8s运维带来的丝滑体验

根据IDC统计&#xff0c;未来五年容器基础架构软件市场将以超过40%的复合增长率爆发式增长&#xff0c;行业也从互联网向更多的传统行业渗透&#xff0c;比如金融、政府、电信&#xff0c;制造和能源等行业。 近年来&#xff0c;随着云技术的日益普及&#xff0c;越来越多的企…

Spring

目录 1.spring介绍 spring中的两个核心概念 1.1 IoC 1.2 AoP 1.3 Spring的优点 1.4 Spring工程构建 1.4.1 Maven Spring 依赖 1.4.2 Spring核心配置文件编写 1.4.2.1 完成控制反转以及依赖注入 1.4.2.2 测试 1.4.2.3 Spring中的IOC 产生的对象是否是单例模式 1.5 B…

动静分离 与 热点缓存

动静分离 让系统“快”起来&#xff1a;1、提高单次请求的效率2、减少没必要的请求 “动静分离”就是瞄着这个大方向去的。所谓“动静分离”&#xff0c;其实就是把用户请求的数据&#xff08;如HTML页面&#xff09;划分为“动态数据”和“静态数据”。简单来说&#xff0c;“…

天猫浏览型应用的CDN静态化架构演变

转载自&#xff1a;http://zhu-zhiguo.iteye.com/blog/2145496 在天猫双11活动中&#xff0c;商品详情、店铺等浏览型系统&#xff0c;通常会承受超出日常数倍甚至数十倍的流量冲击。随着历年来双11流量的大幅增加&#xff0c; 每年这些浏览型系统都要面临容量评估、硬件扩容、…

java 确保线程安全_确保不安全感

java 确保线程安全 33岁的克雷格斯宾塞&#xff08;Craig Spencer&#xff09;在治疗埃博拉病毒患者后于10月17日从非洲返回美国。 几天后&#xff0c;他的埃博拉病毒呈阳性React。 每个人&#xff08;尤其是周围的人&#xff09;和纽约人都感到关切。 纽约市市长走到媒体前&am…

经验:一个秒杀系统的设计思考

前言 秒杀大家都不陌生。自2011年首次出现以来&#xff0c;无论是双十一购物还是 12306 抢票&#xff0c;秒杀场景已随处可见。简单来说&#xff0c;秒杀就是在同一时刻大量请求争抢购买同一商品并完成交易的过程。 从架构视角来看&#xff0c;秒杀系统本质是一个高性能、高一…