群晖NAS安装netbox管理软件

项目地址:
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查看数据是否正常。