NetBox安装部署

系统:ubuntu 20.04

第一步:环境准备 (安装数据库和依赖)
首先,我们需要为 NetBox 准备好运行所需的基础环境,主要包括 PostgreSQL 数据库和 Redis 缓存。

更新系统并安装必要的软件包:
打开终端,连接到你的 Ubuntu 20.04 服务器,执行以下命令来更新软件源,并一次性安装所有必需的软件。

sudo apt update && sudo apt upgrade -y
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 git redis-server postgresql nginx

配置 PostgreSQL 数据库:
NetBox 需要一个空的数据库。我们启动 PostgreSQL 服务,并为其创建一个名为 netbox 的数据库和用户。

# 启动PostgreSQL并设置开机自启
sudo systemctl start postgresql
sudo systemctl enable postgresql
# 切换到postgres用户来操作数据库
sudo -u postgres psql
在进入的 psql 命令行界面中,依次输入以下三条命令。请务必将 '你的强密码' 替换成一个自己设置的复杂密码。

sql
CREATE DATABASE netbox;
CREATE USER netbox WITH PASSWORD '你的强密码';
GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
输入 \q 退出 PostgreSQL 命令行。

验证 Redis 服务:
Redis 应该已经在上一步中被安装。启动它并确保它正常运行。

sudo systemctl start redis-server
sudo systemctl enable redis-server
# 测试Redis是否工作,如果返回PONG,则表示正常
redis-cli ping

第二步:安装 NetBox 核心应用
环境准备好后,我们开始安装 NetBox 本身。

下载 NetBox 源码:
我们将 NetBox 安装在 /opt 目录下,并从其官方 GitHub 仓库克隆最新稳定版本的代码。

sudo mkdir -p /opt/netbox/
cd /opt/netbox/
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .

创建 NetBox 系统用户:
为了安全起见,创建一个专门的系统用户来运行 NetBox 服务。

sudo adduser --system --group netbox
# 赋予NetBox用户对media目录的写入权限,以便上传文件
sudo chown --recursive netbox /opt/netbox/netbox/media/

配置 NetBox:
这是最关键的一步,需要修改 NetBox 的配置文件。

# 进入配置目录并复制示例配置文件
cd /opt/netbox/netbox/netbox/
sudo cp configuration_example.py configuration.py

# 用nano编辑器打开配置文件
sudo nano configuration.py

在打开的 configuration.py 文件中,你需要找到并修改以下几个核心部分:

ALLOWED_HOSTS: 允许访问这台服务器的域名或IP。在测试阶段,可以先设置为 ['*'] 允许所有。

ALLOWED_HOSTS = ['*']

DATABASE: 填入刚才在 PostgreSQL 中创建的信息,PASSWORD 替换成你设置的强密码。

DATABASE = {
    'NAME': 'netbox',
    'USER': 'netbox',
    'PASSWORD': '你的强密码',
    'HOST': 'localhost',
    'PORT': '',
}
REDIS: 默认配置通常可以直接使用,无需修改。

SECRET_KEY: 这是一个用于加密的密钥,需要生成一个随机字符串。先保持默认内容,我们稍后会生成并填入。

# 先随便写一个,或者留空,下一步我们会生成并替换它
SECRET_KEY = ''
保存并退出文件(在 nano 中按 Ctrl+X,然后按 Y,最后按 Enter)。

生成 SECRET_KEY 并完成安装:
回到终端,运行 NetBox 提供的安装脚本,它会自动创建 Python 虚拟环境、安装依赖并初始化数据库。

# 运行安装脚本(这个过程可能需要几分钟)
sudo /opt/netbox/upgrade.sh

安装完成后,生成一个唯一的 SECRET_KEY。

# 生成密钥
python3 /opt/netbox/netbox/generate_secret_key.py

这个命令会输出一串随机的字符,例如 uyK5ajt-Vl$!gd2...。请复制这串字符,然后再次编辑 configuration.py 文件:

sudo nano /opt/netbox/netbox/netbox/configuration.py
找到 SECRET_KEY = '' 这一行,将刚才复制的随机字符串粘贴进去。

SECRET_KEY = '你刚才复制的随机字符串'
保存并退出文件。

第三步:后续配置与启动服务
至此,NetBox 的代码和数据库都已准备好。接下来,我们需要配置 Web 服务器和后台服务,让它能真正运行起来。

创建管理员账户:
你需要创建一个账户来登录 NetBox 的 Web 界面。

# 激活 NetBox 的 Python 虚拟环境
source /opt/netbox/venv/bin/activate
# 进入 NetBox 目录并创建超级用户
cd /opt/netbox/netbox
python3 manage.py createsuperuser
根据提示输入用户名、邮箱(可选)和密码。

配置 Gunicorn 和 systemd 服务:
我们需要将官方提供的服务配置文件复制到系统目录中,这样就能用 systemctl 命令来管理 NetBox 了。

# 复制Gunicorn配置文件
sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
# 复制systemd服务文件
sudo cp /opt/netbox/contrib/*.service /etc/systemd/system/
# 重新加载systemd配置
sudo systemctl daemon-reload
# 启动NetBox服务及其后台任务服务,并设置开机自启
sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq

配置 Nginx 作为反向代理:
为了能通过标准的 80 (HTTP) 端口访问,并且更好地处理静态文件,我们需要配置 Nginx。

# 创建Nginx配置文件
sudo nano /etc/nginx/sites-available/netbox
将以下内容粘贴到文件中。请务必将 server_name 后面的 netbox.example.com 替换为你的服务器 IP 地址或域名。

nginx
server {
    listen 80;

    # 将此处的域名或IP替换为你自己的
    server_name netbox.example.com;

    client_max_body_size 25m;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
保存并退出文件。然后,启用这个配置并重启 Nginx。
sudo ln -s /etc/nginx/sites-available/netbox /etc/nginx/sites-enabled/netbox

# 可选:删除默认的Nginx配置,避免冲突
sudo rm /etc/nginx/sites-enabled/default
sudo systemctl restart nginx

🎉 验证安装
现在,打开你的浏览器,在地址栏输入你的 Ubuntu 服务器的 IP 地址(如果你配置了域名,则输入域名)。你应该能看到 NetBox 的主页。

点击右上角的 “Log In” 按钮,使用你刚刚创建的超级用户名和密码登录。登录成功后,就可以开始探索和配置你的网络资产了。

如果需要配置 HTTPS 加密访问,可以使用 certbot 工具为 Nginx 自动申请和配置 Let's Encrypt 免费 SSL 证书,这部分可以等你熟悉 NetBox 的基本操作后再进行。

本回答由 AI 生成,内容仅供参考,请仔细甄别。


时间问题导致无法编辑条目

变更日志的时间比系统时间多8小时,因为这个时间差,导致出现“对象已被修改”的无法保存错误。
系统展示的时间是正常的,但是变更日志的时间比正常时间晚了8小时,也就是说如果我编辑保存的时候,点击保存时的这个时间其实比记录的日志变更时间更早。

原因是PostgreSQL 数据库本身也有时区设置,NetBox 配置为了UTC+8,PostgreSQL 的时区需要配置为UTC,否则如果配置为UTC+8就会在存储时会多加8小时。

# 切换到 postgres 用户
sudo -u postgres psql

# 在 PostgreSQL 命令行中执行
SHOW timezone;

# 默认是 'Asia/Shanghai' 或 'PRC',修改为UTC
ALTER SYSTEM SET timezone = 'UTC';
SELECT pg_reload_conf();

然后退出 PostgreSQL 命令行:
sql
\q
posted @ 2026-05-21 09:57  红妹妹  阅读(331)  评论(0)    收藏  举报