설치 가이드 · 6 min read · Nov 17, 2025

우분투 18.04 LTS에 NetBox 네트워크 문서화 및 관리 도구 설치하는 방법

NetBox는 컴퓨터 네트워크를 관리하고 문서화하는 데 사용할 수 있는 무료 오픈 소스 웹 애플리케이션 소프트웨어입니다. 웹 브라우저를 통해 IP 주소 및 데이터 센터 인프라를 관리하도록 특별히 설계되었습니다. NetBox는 Django Python 프레임워크로 작성되었으며 데이터베이스에는 PostgreSQL을 사용합니다. NetBox를 사용하면 중앙 위치에서 가상 머신 및 클러스터, 데이터 회로, 네트워크, 콘솔 및 전원 연결을 쉽게 관리하고 문서화할 수 있습니다.

이 튜토리얼에서는 우분투 18.04 서버에 NetBox를 설치하는 방법을 설명합니다.

요구 사항

  • 우분투 18.04가 실행되는 서버.
  • 서버에 루트 비밀번호가 설정되어 있어야 합니다.

시작하기

먼저, 다음 명령어로 시스템의 패키지를 최신 버전으로 업데이트합니다:

apt-get update -y  
apt-get upgrade -y

모든 패키지가 업데이트되면 시스템을 재시작하여 모든 구성 변경 사항을 적용합니다.

다음으로, NetBox를 실행하는 데 필요한 종속성을 설치해야 합니다. 다음 명령어로 모두 설치할 수 있습니다:

apt-get install wget ca-certificates nginx supervisor git gcc python3 python3-dev python3-pip python3-setuptools build-essential libxml2-dev libxslt1-dev libffi-dev graphviz libpq-dev libssl-dev zlib1g-dev unzip -y

모든 종속성이 설치되면 다음 단계로 진행할 수 있습니다.

PostgreSQL 설치 및 구성

다음으로, 서버에 PostgreSQL을 설치해야 합니다. 기본적으로 우분투 18.04 기본 저장소에는 최신 버전의 PostgreSQL이 없습니다. 따라서 PostgreSQL 저장소를 시스템에 추가해야 합니다.

먼저, 다음 명령어로 GPG 키를 다운로드하고 추가합니다:

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add -

다음으로, 다음 명령어로 저장소를 추가합니다:

nano /etc/apt/sources.list.d/postgres.list

다음 줄을 추가합니다:

deb http://apt.postgresql.org/pub/repos/apt/ xanial-pgdg main

파일을 저장하고 닫습니다. 그런 다음, 다음 명령어로 저장소를 업데이트하고 PostgreSQL을 설치합니다:

apt-get update -y  
apt-get install postgresql postgresql-contrib -y

설치가 완료되면 다음 명령어로 PostgreSQL의 상태를 확인합니다:

systemctl status postgresql

다음과 같은 출력을 볼 수 있어야 합니다:

? postgresql.service - PostgreSQL RDBMS
   Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
   Active: active (exited) since Wed 2019-08-07 07:00:51 UTC; 23s ago
 Main PID: 13552 (code=exited, status=0/SUCCESS)
    Tasks: 0 (limit: 1098)
   CGroup: /system.slice/postgresql.service

Aug 07 07:00:50 hitesh systemd[1]: Starting PostgreSQL RDBMS...
Aug 07 07:00:51 hitesh systemd[1]: Started PostgreSQL RDBMS.

다음으로, NetBox를 위한 데이터베이스와 사용자를 생성해야 합니다. 먼저, 다음 명령어로 PostgreSQL 셸에 로그인합니다:

su - postgres  
postgres@hitesh:~$ psql

출력:

psql (11.4 (Ubuntu 11.4-1.pgdg18.04+1))
Type "help" for help.

다음으로, 다음 명령어로 NetBox를 위한 데이터베이스와 사용자를 생성합니다:

postgres=# CREATE DATABASE netbox;  
postgres=# CREATE USER netbox WITH PASSWORD 'password';

다음으로, 다음 명령어로 NetBox에 모든 권한을 부여합니다:

postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;

마지막으로, 다음 명령어로 PostgreSQL 셸에서 나갑니다:

postgres=#exit

작업이 완료되면 다음 단계로 진행할 수 있습니다.

NetBox 설치 및 구성

다음 명령어로 /opt 디렉토리에 NetBox의 최신 버전을 다운로드할 수 있습니다:

cd /opt  
git clone -b master https://github.com/digitalocean/netbox.git

다음으로, netbox 디렉토리로 변경하고 Django SECRET Key를 생성합니다:

cd /opt/netbox/netbox/netbox/  
./generate_secret_key.py

다음과 같은 출력에서 생성된 키를 볼 수 있어야 합니다:

+XHR3o&7K6isFk^DLc2%rIqCanlE@zTB(jwN#tfGbV=O1hgMU$

다음으로, 다음 명령어로 기본 구성 파일의 이름을 변경합니다:

mv configuration.example.py configuration.py

다음으로, 구성 파일을 열고 데이터베이스 세부정보와 비밀 키를 정의합니다:

nano configuration.py

다음과 같은 변경을 합니다:

#서버 IP 주소로 your-server-ip를 교체하세요:
# 예: ALLOWED_HOSTS = ['netbox.example.com', 'netbox.internal.local']
ALLOWED_HOSTS = ['your-server-ip']

# PostgreSQL 데이터베이스 구성.
DATABASE = {
    'NAME': 'netbox',         # 데이터베이스 이름
    'USER': 'netbox',               # PostgreSQL 사용자 이름
    'PASSWORD': 'password',           # PostgreSQL 비밀번호
    'HOST': 'localhost',      # 데이터베이스 서버
    'PORT': '',               # 데이터베이스 포트 (기본값은 비워두세요)
}
SECRET_KEY = '+XHR3o&7K6isFk^DLc2%rIqCanlE@zTB(jwN#tfGbV=O1hgMU$'

작업이 완료되면 파일을 저장하고 닫습니다.

다음으로, 다음 명령어로 NetBox에 필요한 모든 종속성을 설치합니다:

pip3 install -r /opt/netbox/requirements.txt

설치가 완료되면 다음 명령어로 데이터베이스를 마이그레이션합니다:

cd /opt/netbox/netbox/  
python3 manage.py migrate

성공적으로 마이그레이션이 완료되면 다음과 같은 출력을 볼 수 있어야 합니다:

  Applying secrets.0004_tags... OK
  Applying secrets.0005_change_logging... OK
  Applying secrets.0006_custom_tag_models... OK
  Applying ipam.0021_vrf_ordering... OK
  Applying ipam.0022_tags... OK
  Applying ipam.0023_change_logging... OK
  Applying ipam.0024_vrf_allow_null_rd... OK
  Applying ipam.0025_custom_tag_models... OK
  Applying dcim.0067_device_type_remove_qualifiers... OK
  Applying dcim.0068_rack_new_fields... OK
  Applying dcim.0069_deprecate_nullablecharfield... OK
  Applying dcim.0070_custom_tag_models... OK
  Applying extras.0020_tag_data... OK
  Applying extras.0021_add_color_comments_changelog_to_tag... OK
  Applying dcim.0071_device_components_add_description... OK
  Applying dcim.0072_powerfeeds... OK
  Applying dcim.0073_interface_form_factor_to_type... OK
  Applying extras.0022_custom_links... OK
  Applying extras.0023_fix_tag_sequences... OK
  Applying ipam.0026_prefix_ordering_vrf_nulls_first... OK
  Applying ipam.0027_ipaddress_add_dns_name... OK
  Applying sessions.0001_initial... OK
  Applying taggit.0003_taggeditem_add_unique_index... OK
  Applying users.0001_api_tokens_squashed_0002_unicode_literals... OK
  Applying users.0003_token_permissions... OK

다음으로, NetBox를 위한 관리자 계정을 생성해야 합니다. 다음 명령어로 수행할 수 있습니다:

python3 manage.py createsuperuser

관리자 사용자 이름과 비밀번호를 제공하고 Enter를 누르면 다음과 같은 출력을 볼 수 있어야 합니다:

Username (leave blank to use 'root'): netboxadmin
Email address: [email protected]
Password: 
Password (again): 
Superuser created successfully.

다음으로, 다음 명령어로 정적 파일을 이동하고 초기 데이터를 로드합니다:

python3 manage.py collectstatic  
python3 manage.py loaddata initial_data

NetBox를 위한 Gunicorn 설치 및 구성

다음으로, NetBox를 위한 Gunicorn을 설치해야 합니다. 다음과 같이 pip 명령어로 설치할 수 있습니다:

pip3 install gunicorn

다음으로, 다음 명령어로 NetBox를 위한 Gunicorn 구성 파일을 생성합니다:

nano /opt/netbox/gunicorn_config.py

다음 줄을 추가합니다:

command = '/usr/local/bin/gunicorn'
pythonpath = '/opt/netbox/netbox'
bind = 'your-server-ip:8001'
workers = 3
user = 'www-data'

작업이 완료되면 파일을 저장하고 닫습니다.

NetBox를 위한 Supervisor 구성

다음으로, NetBox 서비스를 관리하기 위해 Supervisor를 구성해야 합니다. 다음 명령어로 수행할 수 있습니다:

nano /etc/supervisor/conf.d/netbox.conf

다음 줄을 추가합니다:

[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = www-data

파일을 저장하고 닫은 후, 다음 명령어로 supervisor 서비스를 재시작하고 시스템 재부팅 후 시작되도록 활성화합니다:

systemctl restart supervisor  
systemctl enable supervisor

다음 명령어로 Supervisor 서비스를 확인할 수도 있습니다:

systemctl status supervisor

출력:

? supervisor.service - Supervisor process control system for UNIX
   Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2019-08-07 07:13:26 UTC; 8s ago
     Docs: http://supervisord.org
  Process: 15013 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=0/SUCCESS)
 Main PID: 15015 (supervisord)
    Tasks: 5 (limit: 1098)
   CGroup: /system.slice/supervisor.service
           ??15015 /usr/bin/python /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
           ??15037 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ??15042 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ??15043 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
           ??15044 /usr/bin/python3 /usr/local/bin/gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi

Aug 07 07:13:26 hitesh systemd[1]: Started Supervisor process control system for UNIX.
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,087 CRIT Supervisor running as root (no user in config file)
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,089 INFO Included extra file "/etc/supervisor/conf.d/netbox.conf" during parsing
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,117 INFO RPC interface 'supervisor' initialized
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,117 CRIT Server 'unix_http_server' running without any HTTP authentication check
Aug 07 07:13:27 hitesh supervisord[15015]: 2019-08-07 07:13:27,118 INFO supervisord started with pid 15015
Aug 07 07:13:28 hitesh supervisord[15015]: 2019-08-07 07:13:28,123 INFO spawned: 'netbox' with pid 15037
Aug 07 07:13:29 hitesh supervisord[15015]: 2019-08-07 07:13:29,610 INFO success: netbox entered RUNNING state, process has st

NetBox를 위한 Nginx 구성

다음으로, 포트 80을 사용하여 NetBox에 접근하기 위해 Nginx를 구성해야 합니다. 이를 위해 다음 명령어로 가상 호스트 구성 파일을 생성합니다:

nano /etc/nginx/sites-available/netbox

다음 줄을 추가합니다:

server {
    listen 80;
    server_name your-domain-name;
    client_max_body_size 25m;

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

    location / {
        proxy_pass http://your-server-ip:8001;
    }
}

파일을 저장하고 닫습니다. 그런 다음, 다음 명령어로 가상 호스트를 활성화합니다:

ln -s /etc/nginx/sites-available/netbox.conf /etc/nginx/sites-enabled/

마지막으로, 다음 명령어로 Nginx 서비스를 재시작하여 모든 구성 변경 사항을 적용합니다:

systemctl restart nginx

NetBox 웹 인터페이스 접근

이제 NetBox가 설치되고 구성되었으므로 NetBox 웹 인터페이스에 접근할 시간입니다.

웹 브라우저를 열고 URL http://your-domain.com을 입력합니다. 다음 페이지로 리디렉션됩니다:

Netbox Interface

이제 오른쪽 상단 모서리에 있는 로그인 버튼을 클릭합니다. 다음 페이지가 표시됩니다:

Netbox Login

이제 관리자 사용자 이름과 비밀번호를 제공한 후 로그인 버튼을 클릭합니다. 다음 페이지에서 NetBox 기본 대시보드를 볼 수 있어야 합니다:

NetBox Dashboard

축하합니다! 우분투 18.04 서버에 NetBox를 성공적으로 설치하고 구성했습니다. 이제 중앙 위치에서 네트워크 및 IP 주소를 관리하고 문서화할 수 있습니다. 질문이 있으면 언제든지 문의하세요.

Share: X/Twitter LinkedIn

새 게시물을 받은 편지함에서 받기

스팸은 없습니다. 언제든지 구독 해지 가능합니다.