项目地址:
https://github.com/netbox-community/netbox
https://github.com/netbox-community/netbox-docker
容器下载
由于网络环境限制,需要提前下载容器镜像:
docker pull docker.io/netboxcommunity/netbox:v4.4.7-3.4.2
docker pull docker.io/postgres:17-alpine
docker pull docker.io/valkey/valkey:8.1-apline
可导入镜像:
通过网盘分享的文件:netboxcommunity-netbox(v4-4-7-3-4-2).syno.tar
链接: https://pan.baidu.com/s/1gJE3WLmMeVjLS3wjqNMAgw?pwd=r9it 提取码: r9it 复制这段内容后打开百度网盘手机App,操作更方便哦
通过网盘分享的文件:valkey-valkey(8-1-alpine).syno.tar
链接: https://pan.baidu.com/s/1TcHqNEcnGz3JpNGtKwDodw?pwd=57a7 提取码: 57a7 复制这段内容后打开百度网盘手机App,操作更方便哦
通过网盘分享的文件:postgres(17-alpine).syno.tar
链接: https://pan.baidu.com/s/126SLod2g3IS3azzTgdEhoQ?pwd=q98m 提取码: q98m 复制这段内容后打开百度网盘手机App,操作更方便哦
在映像的操作中进行导入:

导入后:

配置文件
将以下网页中的项目下载并解压缩到NAS:
https://github.com/netbox-community/netbox-docker
通过网盘分享的文件:netbox-docker-release.zip
链接: https://pan.baidu.com/s/1ib0qUcih5XZpUxMTYZzavg?pwd=akvj 提取码: akvj 复制这段内容后打开百度网盘手机App,操作更方便哦
这边放到了docker共享文件夹中的netbox子文件夹内:

修改docker-compose.yml
如果要使用导入的本地镜像则需要修改docker-compose.yml
修改前:
netbox: &netbox
image: docker.io/netboxcommunity/netbox:${VERSION-v4.4-3.4.1}
...........................
postgres:
image: docker.io/postgres:17-alpine
...........................
redis:
image: docker.io/valkey/valkey:8.1-alpine
...........................
redis-cache:
image: docker.io/valkey/valkey:8.1-alpine
修改后:
netbox: &netbox
image: netboxcommunity/netbox:v4.4.7-3.4.2
pull_policy: never
...........................
postgres:
image: postgres:17-alpine
pull_policy: never
...........................
redis:
image: valkey/valkey:8.1-alpine
pull_policy: never
...........................
redis-cache:
image: valkey/valkey:8.1-alpine
pull_policy: never
修改docker-compose.override.yml
将netbox服务端口映射到外网的28000,这边需要修改登录页面所以也需要将登录页面映射到外部:
services:
netbox:
ports:
- "28000:8080"
安装容器
设置路径/volume1/docker/netbox/,选择使用现有项目脚本:

预览配置档是否正确:

确认构建:

首次构建会报错,可能NAS性能比较差netbos-netbox服务构建太慢超时了。

在容器中查看netbos-netbox构建进度日志:

等待netbos-netbox构建完成:

选择之前的项目再次点击构建:

查看是否可以正常完成构建:

打开对应端口查看是否可以正常显示页面:

初始化账户
通过以下命令找到netbox-netbox的容器ID,这边可以看到ID为bac520896740:
docker ps
然后使用ID bac520896740登录容器:
docker exec -it bac520896740 /bin/bash

使用以下命令创建netbox管理员用户:
/opt/netbox/netbox/manage.py createsuperuser

查看是否可以使用新建的管理员用户登录:

note
修改登录页面,在登录页面加账号密码提示
docker-compose.override.yml增加映射配置:
services:
netbox:
ports:
- "28000:8080"
volumes:
- /volume1/docker/netbox/templates/login.html:/opt/netbox/netbox/templates/login.html:ro
login.html内容修改:
...........................
<div class="card card-md">
{% if not login_form_hidden %}
<div class="card-body">
<h2 class="text-center mb-4">{% trans "Log In" %}</h2>
<div class="alert alert-warning text-center">
<p class="mb-1">登录账户: synology</p>
</div>
<div class="alert alert-warning text-center">
<p class="mb-0">密码: ********</p>
</div>
{# Login form #}
<form action="{% url 'login' %}" method="post">
{% csrf_token %}
...........................
修改后效果如下:

创建弱密码用户
使用ID登录容器:
docker exec -it bac520896740 /bin/bash
切换工作目录:
cd /opt/netbox/netbox
进入交互式Python脚本模式:
python3 manage.py shell
输入以下创建用户及密码的命令:
from django.contrib.auth import get_user_model
User = get_user_model()
u = User.objects.create_user(
username="synology",
password="*******",
is_staff=False,
is_superuser=False
)
u.save()
print("user created:", u.username)
运行状态如下:

备份数据库
前往compose所在路径:
cd /volume1/docker/netbox
运行以下命令进行备份:
docker-compose exec -T postgres pg_dump \
-U netbox \
-d netbox \
-F c \
-f /tmp/netbox.dump
使用以下命令导出备份数据:
docker cp netbox-postgres-1:/tmp/netbox.dump ./netbox.dump

恢复数据库
先停止netbox compose。
前往compose所在路径:
cd /volume1/docker/netbox
单独启用netbox compose中的postgres
docker-compose up -d postgres
将postgres中数据删除:
docker-compose exec postgres psql -U netbox -d postgres -c "DROP DATABASE netbox;"
重建数据库:
docker-compose exec postgres psql -U netbox -d postgres -c "CREATE DATABASE netbox OWNER netbox;"
复制数据库备份文件到容器内:
cp netbox.dump netbox-postgres-1:/tmp/netbox.dump
导入数据库:
docker-compose exec -T postgres pg_restore \
-U netbox \
-d netbox \
--no-owner \
--role=netbox \
/tmp/netbox.dump
启用netbox compose查看数据是否正常。
