如何在 Debian 11 上安装 NetBox IRM
在此页
- 先决条件
- 安装 PostgreSQL 服务器
- 安装 Redis 服务器
- 安装 NetBox IRM
- 创建 NetBox 管理员用户
- 将 NetBox 设置为 Systemd 服务
- 将 Apache2 设置为反向代理
- 结论
NetBox 是一种基础设施资源建模 (IRM) 软件,专为网络自动化和基础设施工程而设计。最初,它由 DigitalOcean 团队创建,现在成为一个在 Apache 2 许可下发布的开源项目。 NetBox 是在 Python Django Web 框架中创建的,默认数据库是 PostgreSQL,NetBox 的安装与其他 Python Django Web 应用程序非常相似。
NetBox 帮助您管理您的基础设施,其中包括:
- DCIM(数据中心基础设施管理)
- IPAM(IP 地址管理)
- 数据电路
- 连接(网络、控制台和电源)
- 设备架
- 虚拟化
- 秘密
本文将引导您完成有关如何在 Debian 11 服务器上安装 NetBox Infrastructure Resource Modeling 的步骤。本文包括PostgreSQL数据库、Redis服务器的基本安装,以及Apache2作为反向代理的基本配置。最后,您将在您的 Debian 11 上启动并运行 NetBox,并在其上启用 HTTPS/SSL。
先决条件
要完成本教程,您需要满足以下要求:
- 一个 Debian 11 服务器实例。
- 具有根/管理员权限的非根用户。
- 指向您的 Debian 服务器的域名。
安装 PostgreSQL 服务器
NetBox 应用程序仅支持将 PostgreSQL 作为默认数据库。因此,您将在 Debian 服务器上安装 PostgreSQL。然后,为您的 NetBox 安装创建一个新的数据库和用户。
当前版本的 NetBox 至少需要 PostgreSQL v10 或更高版本。在 Debian 11 上,存储库提供默认的 PostgreSQL 服务器 v13。
首先,运行下面的 apt 命令来更新您的 Debian 存储库并刷新包索引。
sudo apt update
现在使用以下 apt 命令安装 PostgreSQL 服务器。输入 Y 确认,回车,PostgreSQL 开始安装。
sudo apt install postgresql postgresql-common

现在您已完成 PostgreSQL 安装,请运行以下 systemctl 命令来检查和验证 PostgreSQL 服务。您应该看到 PostgreSQL 已启用并将在系统启动时自动运行。并且 PostgreSQL 服务的当前状态是运行。
sudo systemctl is-enabled postgresql
sudo systemctl status postgresql

接下来,您将为 Nextbox 创建一个新的 PostgreSQL 数据库和用户。为此,您必须登录到 PostgreSQL 控制台。
执行以下命令,使用“postgres”角色登录PostgreSQL控制台。
sudo -u postgres psql
现在在 PostgreSQL 控制台上运行以下查询以创建新的数据库和用户。在此示例中,我们将创建一个名为“netboxdb”的新数据库,以及密码为“NetBoxRocks”的 PostgreSQL 用户“netbox”。
CREATE DATABASE netboxdb;
CREATE USER netbox WITH ENCRYPTED PASSWORD 'NetBoxRocks';
GRANT ALL PRIVILEGES ON DATABASE netboxdb TO netbox;
现在按 \Ctrl+d\ 退出 PostgreSQL 控制台或键入 \\q\ 退出。

要验证数据库和用户,请运行以下命令。这将使用用户 \netbox\ 连接到 PostgreSQL shell 到 PostgreSQL 服务器上的数据库 \netboxdb\。
当提示输入数据库密码时,输入密码 NetBoxRocks\。
sudo -u postgres psql --username netbox --password --host localhost netboxdb
登录到 PostgreSQL 控制台和数据库“netboxdb”后,运行以下查询来检查当前连接。您应该看到您已使用用户“netbox”连接到 PostgreSQL 数据库“netboxdb”。
\conninfo

按 \Ctrl+d\ 退出 PostgreSQL 控制台或键入 \\q\ 退出。
安装 Redis 服务器
Redis 是一个内存中的键值数据库,NetBox 将使用它进行缓存和排队。所以,现在您将在 Debian 服务器上安装 Redis 服务器。
在撰写本文时,最新版本的 NetBox 需要 Redis v4.0 或更高版本。最新的 Debian 11 存储库提供了 Redis v5.6。
要开始安装 Redis,请运行下面的 apt 命令。输入Y确认安装,回车,Redis安装开始。
sudo apt install redis-server

安装完成后,运行以下systemctl命令来检查和验证Redis服务。您应该会看到 Redis 服务已启用并将在系统启动时自动运行。而Redis服务的当前状态是running。
sudo systemctl is-enabled redis-server
sudo systemctl status redis-server

默认的 Redis 安装没有身份验证。对于生产环境,推荐在Redis服务器上使用鉴权。要启用 Redis 身份验证,您将修改配置文件 \/etc/redis/redis.conf\
运行以下命令编辑 Redis 配置文件 \/etc/redis/redis.conf\。
sudo nano /etc/redis/redis.conf
取消注释“requirepass”选项并输入Redis 的密码验证。在此示例中,我们将使用密码“RedisPasswordNetBox”。
requirepass RedisPasswordNetBox
完成后,保存并关闭文件。
现在运行以下命令重新启动 Redis 服务并应用新的更改。
sudo systemctl restart redis-server
要验证 Redi 身份验证,请运行下面的“redis-cli”命令连接到 Redis 控制台。
redis-cli
现在运行以下命令来验证您的 Redis 身份验证。如果您的密码正确,您将看到诸如“OK”之类的输出消息。
AUTH RedisPasswordNetBox

现在按 \Ctrl+d\ 退出 Redis 控制台。
安装 NetBox IRM
NetBox 是一个使用 Python Django 框架编写的开源 Web 应用程序。所以 NetBox 的安装与 Python Django Web-Framework 非常相似。最新版本的 Netbox 至少需要 Python v3.8 或更高版本。
在开始安装 NetBox 之前,运行以下命令创建一个新的系统用户“netbox”,该用户将用于运行 NetBox Web 应用程序。
sudo useradd -r -d /opt/netbox -s /usr/sbin/nologin netbox
使用下面的 apt 命令安装 Python3 和一些包依赖项。
sudo apt install -y git python3 python3-pip python3-venv python3-dev build-essential libxml2-dev libxslt1-dev libffi-dev libpq-dev libssl-dev zlib1g-dev

安装完成后,运行以下命令新建NetBox安装目录\/opt/netbox\,并使用Git命令克隆NetBox源代码。
mkdir -p /opt/netbox; cd /opt/netbox
sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .
现在使用以下命令将 NetBox 安装目录的所有权更改为正确的用户“netbox”。
sudo chown -R netbox:netbox /opt/netbox

接下来,将工作目录移动到“/opt/netbox/netbox/netbox\”并将 NetBox 的示例配置“configuration_example.py\”复制到“\” configuration.py\”。
cd /opt/netbox/netbox/netbox
sudo -u netbox cp configuration_example.py configuration.py
在编辑 netBox 配置文件之前,运行以下命令为 NetBox 生成“SECRET_KEY”。将生成的 \SECRET_KEY\ 复制到您的编辑器,这将在稍后编辑文件 \configuration.py\ 时使用。
sudo -u netbox python3 ../generate_secret_key.py
运行以下命令开始编辑文件 \configuration.py\。
sudo -u netbox nano configuration.py
现在您需要按如下方式设置 NetBox 安装:
- 在“ALLOWED_HOSTS”配置中,输入NetBox 安装的域名和服务器IP 地址。本例中NetBox将安装在域名\netbox.hwdomain.io\和服务器IP地址\192.168.5.20\下。
- 将您的 NetBox 的 PostgreSQL 数据库的详细信息输入到“数据库”设置中。
- 在“REDIS”配置中输入 Redis 密码。请务必更改“任务”和“缓存”部分的密码。
- 最后,将生成的“SECRET_KEY”粘贴到文件中。
# domain and IP address
ALLOWED_HOSTS = ['netbox.hwdomain.io', '192.168.5.20']
# database configuration
DATABASE = {
'NAME': 'netboxdb', # Database name
'USER': 'netbox', # PostgreSQL username
'PASSWORD': 'NetBoxRocks', # PostgreSQL password
'HOST': 'localhost', # Database server
'PORT': '', # Database port (leave blank for default)
'CONN_MAX_AGE': 300, # Max database connection age (seconds)
}
# Redis cache configuration
REDIS = {
'tasks': {
'HOST': 'localhost', # Redis server
'PORT': 6379, # Redis port
'PASSWORD': 'RedisPasswordNetBox', # Redis password (optional)
'DATABASE': 0, # Database ID
'SSL': False, # Use SSL (optional)
},
'caching': {
'HOST': 'localhost',
'PORT': 6379,
'PASSWORD': 'RedisPasswordNetBox',
'DATABASE': 1, # Unique ID for second database
'SSL': False,
}
}
# Secret key
SECRET_KEY = '!22_UYNLcWw+_5=$$=8mtL#JImfOlD*-KiuI6h'
完成后,保存并关闭文件。
现在要开始安装 NetBox,您可以运行脚本 \upgrade.sh\,如下所示。
sudo -u netbox /opt/netbox/upgrade.sh
此脚本将自动安装和配置 NetBox 安装。详细版本如下:
- 这将为您的 NetBox 安装创建一个新的 Python 虚拟环境。
- 这还将为 NetBox 安装一些 Python 依赖项和库。
- 为 NetBox 运行数据库迁移。
- 为 NetBox 生成静态文件资源。
下面是安装开始时的输出。

安装完成后,您将看到以下输出。

创建 NetBox 管理员用户
您已经完成了 NetBox 的基本安装。现在,您将为 NetBox 创建一个新的管理员用户。当您需要创建 Django 管理员用户时,这也是类似的方式。
运行以下命令激活 Python 虚拟环境。
source /opt/netbox/venv/bin/activate
将工作目录移动到 \/opt/netbox/netbox\。然后,运行脚本 \manage.py\ 为 NetBox 创建一个新的管理员用户。
cd /opt/netbox/netbox
python3 manage.py createsuperuser
输入 NextBox 的用户名、电子邮件和密码。
管理配置完成后,运行以下命令为 NetBox 设置必要的 cron 脚本。这将每天自动运行。
sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

最后,运行以下命令来测试和验证您的 NetBox 安装。如果您的安装正确,您将看到 netBox 现在正在端口 \8000\ 上运行。
python3 manage.py runserver 0.0.0.0:8000 --insecure

现在按 \Ctrl+c\ 到该过程的终端。然后,运行“deactivate”命令退出 Python 虚拟环境。
将 NetBox 设置为 Systemd 服务
完成 NetBox 的管理配置后。现在,您将把 NetBox 设置为系统服务。 NetBox 服务将在 Gunicorn 和 HTTP 反向代理下运行。
默认情况下,所有必要的配置 NetBox Gunicorn 和 systemd 服务脚本都位于 \/opt/netbox/contrib\ 目录中。
运行以下命令将 Gunicorn 配置复制到 \/opt/netbox/gunicorn.py\。然后,使用 nano 编辑器编辑文件。
sudo -u netbox cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py
sudo -u netbox nano /opt/netbox/gunicorn.py
在默认配置下,NetBox 应用程序将在端口为“8001”的本地主机上运行。您可以将配置保留为默认配置或根据您的环境进行更改。
bind = '127.0.0.1:8001'
完成后保存并关闭配置文件。
接下来,使用以下命令将 systemd 服务文件复制到 \/etc/systemd/system\ 目录。这将启用两个服务,“netbox”服务作为您的 NetBox 应用程序的主要服务,以及“netbox-rq”服务作为 NetBox 请求队列服务。
sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/
现在重新加载系统管理器以应用新的 NetBox 服务文件。
sudo systemctl daemon-reload
重新加载 systemd 管理器后,您可以使用 systemctl 命令运行 \netbox\ 和 \netbox-rq\ 服务,如下所示。这两项服务将在系统启动时自动运行。
sudo systemctl start netbox netbox-rq
sudo systemctl enable netbox netbox-rq

最后,使用以下命令检查和验证 NetBox 服务。
sudo systemctl status netbox
sudo systemctl status netbox-rq
在以下输出中,您可以看到 \netbox\ 服务已启用。并且当前状态是running。

对于 netbox-rq\ 服务,您还将获得启用服务的输出。及其运行。

将 Apache2 设置为反向代理
运行下面的 apt 命令来安装 Apache2 Web 服务器。输入Y确认安装,回车,开始安装。
sudo apt install apache2

完成 Apache2 安装后,运行以下命令启用一些将用于反向代理的 Aapche2 模块。您应该会看到一些附加模块也已启用。
sudo a2enmod ssl proxy proxy_http headers

接下来,将 NetBox 的 Apache2 虚拟主机配置示例复制到 \/etc/apache2/sites-available/netbox.conf\。然后,使用 nano 编辑器编辑文件 \/etc/apache2/sites-available/netbox.conf\
sudo cp /opt/netbox/contrib/apache.conf /etc/apache2/sites-available/netbox.conf
sudo nano /etc/apache2/sites-available/netbox.conf
更改 NetBox 安装的域名和 SSL 证书的路径。在此示例中,我们将使用域 \netbox.hwdomain.io\ 以及目录 \/etc/letsencrypt/live/netbox 上可用的来自 Letsencrypt 的 SSL 证书.hwdomain.io/\”。
<VirtualHost *:443>
ProxyPreserveHost On
# CHANGE THIS TO YOUR SERVER'S NAME
ServerName netbox.hwdomain.io
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/netbox.hwdomain.io/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/netbox.hwdomain.io/privkey.pem
Alias /static /opt/netbox/netbox/static
<Directory /opt/netbox/netbox/static>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Require all granted
</Directory>
<Location /static>
ProxyPass !
</Location>
RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
ProxyPass / http://127.0.0.1:8001/
ProxyPassReverse / http://127.0.0.1:8001/
</VirtualHost>
完成后,保存并关闭文件。
现在运行以下命令激活虚拟主机配置\netbox.conf\。然后,测试并验证 Apache 配置。您应该得到诸如“Syntax OK”之类的输出消息,这意味着 Apache2 配置是正确的。
sudo a2ensite netbox.conf
sudo apachectl configtest
现在重新启动 Apache2 服务以将新更改应用于虚拟主机文件。 Apache2 网络服务器现在在启用 HTTPS/SSL 的情况下运行,作为在 \localhost:8001\ 上运行的 NetBox 网络应用程序的反向运行。
sudo systemctl restart apache2

要验证安装,请打开 Web 浏览器并访问 NetBox 安装的域名(即:https://netbox.hwdomain.io/)。并且您应该获得处于锁定状态的 NetBox 的仪表板管理。
单击右上角的“登录”按钮。

现在输入 netBox 安装的管理员用户和密码,然后单击“登录”。

您应该获得 NetBox 的仪表板管理。

结论
通过本教程,您已经在 Debian 11 服务器上使用 PostgreSQL 数据库、Redis 缓存系统、Gunicorn 和 Apache2 反向代理设置了 NetBox 基础设施资源建模 (IRM)。您还将 NetBox 配置为 systemd 服务,使您更容易启动和停止 NetBox Web 应用程序。最后,您已经完全配置了在您的 Debian 服务器上运行的 NetBox IRM,并在其之上启用了安全的 HTTPS/SSL。