설치 가이드 · 12 min read · Oct 22, 2025

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

NetBox는 컴퓨터 네트워크 및 IP 주소를 관리하고 문서화하는 데 사용되는 오픈 소스 IP 주소(IPAM) 및 데이터 센터 인프라 관리(DCIM) 웹 애플리케이션입니다. DigitalOcean의 네트워크 엔지니어링 팀이 처음 구상했습니다. Django Python 프레임워크를 사용하여 작성되었으며 데이터 저장을 위해 PostgreSQL 데이터베이스를 사용합니다. 또한 쿼리 캐싱을 위해 Redis 데이터베이스를 사용합니다.

이 튜토리얼에서는 우분투 22.04 서버에 NetBox 도구를 설치하고 Nginx를 리버스 프록시 서버로 설정하는 방법을 배웁니다.

전제 조건

  • 우분투 22.04를 실행하는 서버.
  • sudo 권한이 있는 비루트 사용자.
  • netbox.example.com과 같은 완전한 도메인 이름(FQDN).
  • 모든 것이 업데이트되었는지 확인하십시오. $ sudo apt update $ sudo apt upgrade
  • 시스템에 필요한 몇 가지 패키지. $ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y 이러한 패키지 중 일부는 이미 시스템에 설치되어 있을 수 있습니다.

1단계 - 방화벽 구성

첫 번째 단계는 방화벽을 구성하는 것입니다. 우분투는 기본적으로 ufw(간단한 방화벽)를 제공합니다.

방화벽이 실행 중인지 확인하십시오.

$ sudo ufw status

다음과 같은 출력이 표시되어야 합니다.

상태: 비활성

SSH 포트를 허용하여 방화벽을 활성화할 때 현재 연결이 끊어지지 않도록 합니다.

$ sudo ufw allow OpenSSH

HTTP 및 HTTPS 포트도 허용합니다.

$ sudo ufw allow http
$ sudo ufw allow https

방화벽을 활성화합니다.

$ sudo ufw enable
명령이 기존 ssh 연결을 방해할 수 있습니다. 작업을 진행하시겠습니까(y|n)? y
방화벽이 활성화되었으며 시스템 시작 시 활성화됩니다.

방화벽의 상태를 다시 확인하십시오.

$ sudo ufw status

유사한 출력을 볼 수 있어야 합니다.

상태: 활성

목적지                      작업       출처
--                         ------      ----
OpenSSH                    허용       어디서나
80/tcp                     허용       어디서나
443                        허용       어디서나
OpenSSH (v6)               허용       어디서나 (v6)
80/tcp (v6)                허용       어디서나 (v6)
443 (v6)                   허용       어디서나 (v6)

2단계 - PostgreSQL 설치 및 구성

NetBox는 PostgreSQL 11 이상에서 작동합니다. 우분투 22.04는 기본적으로 PostgreSQL 14를 제공합니다. 이 튜토리얼에서는 PostgreSQL 15를 사용할 것입니다.

PostgreSQL GPG 키를 추가하려면 다음 명령을 실행하십시오.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

APT 저장소를 소스 목록에 추가합니다.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

시스템 저장소를 업데이트합니다.

$ sudo apt update

이제 아래 명령을 사용하여 PostgreSQL을 설치할 수 있습니다.

$ sudo apt install postgresql postgresql-contrib

postgresql-contrib 패키지에는 몇 가지 추가 유틸리티가 포함되어 있습니다.

PostgreSQL 서비스의 상태를 확인합니다.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Tue 2022-11-27 9:10:35 UTC; 5s ago
    Process: 30544 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 30544 (code=exited, status=0/SUCCESS)
        CPU: 2ms

Dec 27 9:10:35 netbox systemd[1]: Starting PostgreSQL RDBMS...
Dec 27 9:10:35 netbox systemd[1]: Finished PostgreSQL RDBMS.

서비스가 기본적으로 활성화되고 실행 중임을 확인할 수 있습니다.

PostgreSQL 셸을 실행합니다.

$ sudo -i -u postgres psql

NetBox 데이터베이스를 생성합니다.

postgres=# CREATE DATABASE netbox;

NetBox 사용자를 생성하고 강력한 비밀번호를 선택합니다.

postgres-# CREATE USER netbox WITH PASSWORD 'Your_Password';

데이터베이스 소유자를 NetBox 사용자로 변경합니다.

postgres-# ALTER DATABASE netbox OWNER TO netbox;

셸을 종료합니다.

postgres-# \q

자격 증명이 작동하는지 확인합니다.

$ psql --username netbox --password --host localhost netbox
비밀번호 입력: 
psql (15.1 (Ubuntu 15.1-1.pgdg22.04+1))
SSL 연결 (프로토콜: TLSv1.3, 암호: TLS_AES_256_GCM_SHA384, 비트: 256, 압축: 꺼짐)
도움말을 보려면 "help"를 입력하십시오.

netbox=>

\q를 입력하여 셸을 종료합니다.

3단계 - Redis 설치 및 구성

우분투는 Redis 6.0.16을 제공합니다. 이 튜토리얼에서는 공식 저장소에서 최신 버전을 설치합니다.

공식 Redis GPG 키를 가져옵니다.

$ curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg

APT 저장소를 소스 목록에 추가합니다.

echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list

시스템 저장소 목록을 업데이트합니다.

$ sudo apt update

Redis 서버를 설치하려면 다음 명령을 실행합니다.

$ sudo apt install redis

Redis 버전을 확인합니다.

$ redis-server -v
Redis server v=7.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=2260280010e18db8

다음 명령을 사용하여 서비스 연결을 확인합니다.

$ redis-cli

Redis 셸로 전환됩니다.

첫 번째 단계는 Redis 기본 사용자에 대한 비밀번호를 설정하는 것입니다. Your_Redis_Password를 선택한 강력한 비밀번호로 바꾸십시오.

127.0.0.1:6379> acl setuser default >Your_Redis_Password

Redis 인증을 테스트합니다.

127.0.0.1:6379> AUTH Your_Redis_Password
OK

서비스에 핑을 보냅니다.

127.0.0.1:6379> ping
PONG

exit를 입력하여 서비스를 종료합니다.

4단계 - NetBox 다운로드

NetBox는 작동하기 위해 Python Django가 필요합니다. NetBox를 설치하는 첫 번째 단계는 필요한 Python 패키지를 설치하는 것입니다. 필요한 Python 패키지를 설치하려면 다음 명령을 실행하십시오.

$ 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

Python 버전을 확인합니다.

$ python3 -V
Python 3.10.6

NetBox 설치를 위한 기본 디렉토리를 생성합니다.

$ sudo mkdir -p /opt/netbox/

디렉토리로 전환합니다.

$ cd /opt/netbox

현재 디렉토리에 NetBox의 GitHub 저장소의 마스터 브랜치를 클론합니다.

$ sudo git clone -b master --depth 1 https://github.com/netbox-community/netbox.git .

--depth 1 플래그는 저장소의 가장 최근 커밋만 가져옵니다. 전체 커밋 기록을 다운로드하려면 플래그를 생략할 수 있습니다.

릴리스 페이지에서 NetBox의 최신 버전을 확인하고 Git을 사용하여 체크아웃합니다. 이 튜토리얼을 작성할 당시 3.4.1이 사용 가능한 최신 버전입니다.

$ git config --global --add safe.directory /opt/netbox
$ sudo git checkout v3.4.1

체크아웃하기 전에 디렉토리를 Git의 안전한 디렉토리 목록에 추가해야 합니다. 이는 최근 Git 버전에서 제공되는 새로운 보안 기능입니다.

다음 단계는 NetBox를 위한 시스템 사용자 및 그룹을 생성하는 것입니다.

$ sudo adduser --system --group netbox

NetBox의 미디어 디렉토리에 대한 사용자 권한을 부여합니다.

$ sudo chown --recursive netbox /opt/netbox/netbox/media/

5단계 - NetBox 구성

NetBox 구성 디렉토리로 전환합니다.

$ cd /opt/netbox/netbox/netbox/

예제 구성 파일을 복사하여 실제 파일을 생성합니다.

$ sudo cp configuration_example.py configuration.py

구성을 진행하기 전에 NetBox의 비밀 키를 생성해야 합니다. 키를 적어 두십시오. 구성에 필요합니다.

$ python3 ../generate_secret_key.py
dSSWi$Ar2cVvu1)V!B82sY1tJAQK9r)vzM8ReQRF7@C^+$=1+(

구성 파일을 편집하기 위해 엽니다.

$ sudo nano configuration.py

ALLOWED_HOSTS 변수를 찾아 다음과 같이 값을 설정합니다. 이 변수는 이 서버에 도달할 수 있는 유효한 호스트 이름 및 IP 주소 목록을 보유합니다.

ALLOWED_HOSTS = ['netbox.example.com', '']

다음 단계는 데이터베이스 세부정보를 편집하는 것입니다. 데이터베이스 세부정보를 다음과 같이 구성합니다.

DATABASE = {
    'NAME': 'netbox',              # 데이터베이스 이름
    'USER': 'netbox',              # PostgreSQL 사용자 이름
    'PASSWORD': 'Your_Password',   # PostgreSQL 비밀번호
    'HOST': 'localhost',           # 데이터베이스 서버
    'PORT': '',                    # 데이터베이스 포트 (기본값은 비워두기)
    'CONN_MAX_AGE': 300,           # 최대 데이터베이스 연결 연령
}

Redis 구성을 다음과 같이 설정합니다. 3단계에서 설정한 Redis 비밀번호를 입력합니다.

REDIS = {
    'tasks': {
        'HOST': 'localhost',
        'PORT': 6379,
        # Redis Sentinel을 사용하는 경우 `HOST` 및 `PORT` 줄의 주석을 제거하고 다음을 주석 해제하십시오.
        # 'SENTINELS': [('mysentinel.redis.example.com', 6379)],
        # 'SENTINEL_SERVICE': 'netbox',
        'PASSWORD': 'Your_Redis_Password',
        'DATABASE': 0,
        'SSL': False,
        # TLS 인증서 검증을 건너뛰려면 True로 설정하십시오.
        # 이는 공격에 노출될 수 있으므로 주의하십시오.
        # 'INSECURE_SKIP_TLS_VERIFY': False,
    },
    'caching': {
        'HOST': 'localhost',
        'PORT': 6379,
        # Redis Sentinel을 사용하는 경우 `HOST` 및 `PORT` 줄의 주석을 제거하고 다음을 주석 해제하십시오.
        # 'SENTINELS': [('mysentinel.redis.example.com', 6379)],
        # 'SENTINEL_SERVICE': 'netbox',
        'PASSWORD': 'Your_Redis_Password',
        'DATABASE': 1,
        'SSL': False,
        # TLS 인증서 검증을 건너뛰려면 True로 설정하십시오.
        # 이는 공격에 노출될 수 있으므로 주의하십시오.
        # 'INSECURE_SKIP_TLS_VERIFY': False,
    }
}

비밀 키의 값을 변수에 추가합니다.

SECRET_KEY = 'dSSWi$Ar2cVvu1)V!B82sY1tJAQK9r)vzM8ReQRF7@C^+$=1+('

기본적으로 NetBox는 업로드된 파일을 로컬 파일 시스템에 저장합니다. django-storages 라이브러리를 설치하여 원격 파일 시스템에 파일을 저장할 수 있습니다. 다음 명령을 실행하여 django-storages 패키지를 NetBox의 requirements.txt에 추가합니다. 이후 단계에서 설치됩니다. 또한 저장소 매개변수를 구성해야 합니다. 구성 파일의 저장소 섹션의 주석을 제거하고 다음과 같이 진행합니다.

STORAGE_BACKEND = 'storages.backends.s3boto3.S3Boto3Storage'
STORAGE_CONFIG = {
    'AWS_ACCESS_KEY_ID': 'Key ID',
    'AWS_SECRET_ACCESS_KEY': 'Secret',
    'AWS_STORAGE_BUCKET_NAME': 'netbox',
    'AWS_S3_REGION_NAME': 'eu-west-1',
}

FTP, SFTP, Dropbox 및 기타 S3 공급자를 포함한 다른 저장소 유형도 지원됩니다. 이를 구성하는 방법에 대한 자세한 내용은 django-storages 도움말 페이지를 참조하십시오.

파일을 저장하려면 Ctrl + X를 누르고 프롬프트가 표시되면 Y를 입력합니다.

6단계 - NetBox 설치

NetBox 업그레이드 스크립트를 실행합니다.

$ sudo /opt/netbox/upgrade.sh

업그레이드 스크립트는 다음 작업을 수행합니다.

  • Python 가상 환경 생성
  • 필요한 모든 Python 패키지 설치
  • 데이터베이스 스키마 마이그레이션 실행
  • 문서를 로컬에서 빌드(오프라인 사용을 위해)
  • 디스크에 정적 리소스 파일 집계

업그레이드 스크립트에서 생성된 가상 환경을 활성화합니다.

$ source /opt/netbox/venv/bin/activate

다음 단계는 NetBox에 액세스할 수 있는 슈퍼유저를 생성하는 것입니다. 그러나 먼저 필요한 디렉토리로 전환합니다.

(venv) $ cd /opt/netbox/netbox

슈퍼유저를 생성합니다.

(venv) $ python3 manage.py createsuperuser

다음과 같은 출력이 표시됩니다.

사용자 이름(빈 칸으로 두면 'navjot' 사용):
이메일 주소: [email protected]
비밀번호:
비밀번호(다시):
슈퍼유저가 성공적으로 생성되었습니다.

NetBox에는 오래된 세션 및 만료된 변경 기록을 정리하는 등의 반복적인 정리 작업을 처리하는 housekeeping 관리 명령이 포함되어 있습니다. 명령을 수동으로 실행하거나 cron을 사용하여 정기적으로 실행할 수 있습니다. NetBox는 정리 작업을 실행하기 위한 셸 스크립트를 제공합니다. 다음 명령을 실행하여 Cron 일일 디렉토리에 스크립트에 대한 심볼릭 링크를 생성합니다. 이렇게 하면 명령이 매일 실행됩니다.

(venv) $ sudo ln -s /opt/netbox/contrib/netbox-housekeeping.sh /etc/cron.daily/netbox-housekeeping

마지막 단계는 NetBox 애플리케이션이 작동하는지 테스트하는 것입니다. 그러나 먼저 테스트를 위해 포트 8000을 열어야 합니다. 다른 포트를 사용할 수 있습니다.

(venv) $ sudo ufw allow 8000

NetBox의 개발 인스턴스를 시작합니다.

(venv) $ python3 manage.py runserver 0.0.0.0:8000 --insecure

성공하면 다음과 같은 출력이 표시됩니다.

시스템 검사를 수행하는 중...

시스템 검사가 문제를 식별하지 않았습니다(0 무시됨).
2022년 12월 27일 - 09:27:37
Django 버전 4.1.4, 'netbox.settings' 설정 사용
개발 서버를 http://0.0.0.0:8000/에서 시작합니다.
서버를 CONTROL-C로 종료하십시오.

http://:8000/ URL을 통해 NetBox에 액세스할 수 있어야 합니다. 다음 화면이 표시됩니다.

NetBox 홈페이지

로그인 버튼을 클릭하여 로그인 페이지를 열고 이전에 생성한 슈퍼유저 자격 증명을 입력합니다.

NetBox 로그인 페이지

NetBox 대시보드로 돌아갑니다.

서버를 중지하려면 Ctrl + C 키를 누릅니다. Python 가상 환경을 비활성화합니다.

(venv) $ deactivate

7단계 - Gunicorn 구성 및 서비스 파일 생성

NetBox는 HTTP 서버 뒤에서 WSGI 애플리케이션으로 실행됩니다. NetBox는 Gunicorn 서버를 자동으로 설치합니다. 이 단계에서는 Gunicorn을 구성하고 NetBox를 백그라운드에서 실행하고 시스템 재부팅 시에도 실행될 수 있도록 서비스 파일을 생성합니다.

NetBox는 기본 Gunicorn 구성 파일을 제공합니다. 복사본을 생성합니다.

$ sudo cp /opt/netbox/contrib/gunicorn.py /opt/netbox/gunicorn.py

기본 구성은 우리의 목적에 충분해야 합니다. 필요에 따라 호스트 이름, 포트 번호를 변경하거나 스레드, 작업자 및 요청 수를 변경하여 성능을 개선할 수 있습니다.

다음 단계는 NetBox 및 Gunicorn 서비스 파일을 /etc/systemd/system 디렉토리에 복사하는 것입니다.

$ sudo cp -v /opt/netbox/contrib/*.service /etc/systemd/system/

서비스 데몬을 다시 로드합니다.

$ sudo systemctl daemon-reload

netboxnetbox-rq 서비스를 시작하고 활성화합니다.

$ sudo systemctl start netbox netbox-rq
$ sudo systemctl enable netbox netbox-rq

WSGI 서비스의 상태를 확인합니다.

$ sudo systemctl status netbox

유사한 출력을 얻을 수 있습니다.

? netbox.service - NetBox WSGI 서비스
     Loaded: loaded (/etc/systemd/system/netbox.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-12-27 09:28:23 UTC; 17s ago
       Docs: https://docs.netbox.dev/
   Main PID: 4180 (gunicorn)
      Tasks: 6 (limit: 1030)
     Memory: 357.9M
        CPU: 7.747s
     CGroup: /system.slice/netbox.service
             ??4180 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi
             ??4181 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi
             ??4182 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi
             ??4183 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi
             ??4184 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi
             ??4185 /opt/netbox/venv/bin/python3 /opt/netbox/venv/bin/gunicorn --pid /var/tmp/netbox.pid --pythonpath /opt/netbox/netbox --config /opt/netbox/gunicorn.py netbox.wsgi

Dec 27 09:28:23 netbox systemd[1]: Started NetBox WSGI 서비스.
Dec 27 09:28:24 netbox gunicorn[4180]: [2022-12-27 09:28:24 +0000] [4180] [INFO] gunicorn 20.1.0 시작
Dec 27 09:28:24 netbox gunicorn[4180]: [2022-12-27 09:28:24 +0000] [4180] [INFO] http://127.0.0.1:8001에서 수신 대기 중입니다.(4180)
Dec 27 09:28:24 netbox gunicorn[4180]: [2022-12-27 09:28:24 +0000] [4180] [INFO] 작업자 사용: gthread
Dec 27 09:28:24 netbox gunicorn[4181]: [2022-12-27 09:28:24 +0000] [4181] [INFO] PID: 4181로 작업자 부팅 중
Dec 27 09:28:24 netbox gunicorn[4182]: [2022-12-27 09:28:24 +0000] [4182] [INFO] PID: 4182로 작업자 부팅 중
Dec 27 09:28:24 netbox gunicorn[4183]: [2022-12-27 09:28:24 +0000] [4183] [INFO] PID: 4183로 작업자 부팅 중
Dec 27 09:28:24 netbox gunicorn[4184]: [2022-12-27 09:28:24 +0000] [4184] [INFO] PID: 4184로 작업자 부팅 중
Dec 27 09:28:24 netbox gunicorn[4185]: [2022-12-27 09:28:24 +0000] [4185] [INFO] PID: 4185로 작업자 부팅 중

기본적으로 Gunicorn은 포트 8001에서 수신 대기합니다. 이 정보는 Nginx를 리버스 프록시 서버로 구성할 때 유용할 것입니다.

8단계 - Nginx 설치

우분투 22.04는 이전 버전의 Nginx를 제공합니다. 최신 버전을 설치하려면 공식 Nginx 저장소를 다운로드해야 합니다.

Nginx의 서명 키를 가져옵니다.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
    | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Nginx의 안정적인 버전 저장소를 추가합니다.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
    | sudo tee /etc/apt/sources.list.d/nginx.list

시스템 저장소를 업데이트합니다.

$ sudo apt update

Nginx를 설치합니다.

$ sudo apt install nginx

설치를 확인합니다.

$ nginx -v
nginx version: nginx/1.22.1

Nginx 서버를 시작합니다.

$ sudo systemctl start nginx

9단계 - SSL 설치

SSL 인증서를 생성하기 위해 Certbot을 설치해야 합니다. Ubuntu의 저장소를 사용하여 Certbot을 설치하거나 Snapd 도구를 사용하여 최신 버전을 가져올 수 있습니다. 우리는 Snapd 버전을 사용할 것입니다.

우분투 22.04는 기본적으로 Snapd가 설치되어 있습니다. 다음 명령을 실행하여 Snapd 버전이 최신인지 확인하십시오.

$ sudo snap install core
$ sudo snap refresh core

Certbot을 설치합니다.

$ sudo snap install --classic certbot

다음 명령을 사용하여 Certbot 명령이 /usr/bin 디렉토리에서 실행되도록 심볼릭 링크를 생성합니다.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

다음 명령을 실행하여 SSL 인증서를 생성합니다.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d netbox.example.com

위 명령은 서버의 /etc/letsencrypt/live/netbox.example.com 디렉토리에 인증서를 다운로드합니다.

Diffie-Hellman 그룹 인증서를 생성합니다.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

SSL 갱신이 잘 작동하는지 확인하려면 프로세스를 드라이런합니다.

$ sudo certbot renew --dry-run

오류가 없으면 모든 설정이 완료된 것입니다. 인증서는 자동으로 갱신됩니다.

10단계 - Nginx 구성

/etc/nginx/nginx.conf 파일을 편집하기 위해 엽니다.

$ sudo nano /etc/nginx/nginx.conf

include /etc/nginx/conf.d/*.conf; 줄 앞에 다음 줄을 추가합니다.

server_names_hash_bucket_size  64;

파일을 저장하려면 Ctrl + X를 누르고 프롬프트가 표시되면 Y를 입력합니다.

/etc/nginx/conf.d/netbox.conf 파일을 생성하고 열어 편집합니다.

$ sudo nano /etc/nginx/conf.d/netbox.conf

다음 코드를 붙여넣습니다.

server {
  # 모든 http 요청을 https로 리디렉션
  listen         80;
  listen         [::]:80;
  server_name    netbox.example.com;
  return 301     https://$host$request_uri;
}

server {
  listen                    443 ssl http2;
  listen                    [::]:443 ssl http2;
  server_name               netbox.example.com;

  access_log                /var/log/nginx/netbox.access.log;
  error_log                 /var/log/nginx/netbox.error.log;

  # TLS 구성
  ssl_certificate           /etc/letsencrypt/live/netbox.example.com/fullchain.pem;
  ssl_certificate_key       /etc/letsencrypt/live/netbox.example.com/privkey.pem;
  ssl_trusted_certificate   /etc/letsencrypt/live/netbox.example.com/chain.pem;
  ssl_protocols             TLSv1.2 TLSv1.3;

  ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
  ssl_prefer_server_ciphers on;
  ssl_session_cache         shared:SSL:50m;
  ssl_session_timeout       1d;

  # OCSP 스테이플링 ---
  # ssl_certificate의 URL에서 OCSP 레코드를 가져와 캐시합니다.
  ssl_stapling on;
  ssl_stapling_verify on;
  ssl_dhparam /etc/ssl/certs/dhparam.pem;

  client_max_body_size 25m;

  # 모든 것을 netbox 서버로 프록시
  location /static/ {
    alias /opt/netbox/netbox/static/;
  }

  location / {
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-Proto $scheme;
    proxy_set_header        X-Forwarded-Host $http_host;
    proxy_pass              http://127.0.0.1:8001;
  }
}

파일을 저장하려면 Ctrl + X를 누르고 프롬프트가 표시되면 Y를 입력합니다.

Nginx 구성 파일 구문을 확인합니다.

$ sudo nginx -t
nginx: /etc/nginx/nginx.conf 구문이 올바릅니다.
ginx: /etc/nginx/nginx.conf 테스트가 성공했습니다.

Nginx 서비스를 재시작합니다.

$ sudo systemctl restart nginx

이제 https://netbox.example.com URL을 통해 NetBox 대시보드에 액세스할 수 있습니다.

11단계 - NetBox 업그레이드

NetBox 업그레이드는 매우 쉽습니다. 단계는 Git 저장소의 마스터 브랜치를 체크아웃하고 최신 커밋을 가져온 다음 새로운 안정적인 버전을 체크아웃하는 것입니다.

NetBox 디렉토리로 전환합니다.

$ cd /opt/netbox

마스터 브랜치를 체크아웃합니다.

$ sudo git checkout master

저장소에서 최신 커밋을 가져옵니다.

$ sudo git pull origin master

새로운 버전을 체크아웃합니다. 3.4.2가 최신 버전이라면 체크아웃할 수 있습니다.

$ sudo git checkout v3.4.2

업그레이드 스크립트를 실행합니다.

$ sudo ./upgrade.sh

업그레이드 프로세스에서는 스크립트가 다음 기능을 수행합니다.

  • Python 가상 환경을 파괴하고 재구성합니다.
  • 필요한 모든 Python 패키지를 설치합니다(requirements.txt에 나열됨).
  • 릴리스에 포함된 데이터베이스 마이그레이션을 적용합니다.
  • 문서를 로컬에서 빌드합니다(오프라인 사용을 위해).
  • HTTP 서비스에서 제공할 정적 파일을 수집합니다.
  • 데이터베이스에서 오래된 콘텐츠 유형을 삭제합니다.
  • 데이터베이스에서 모든 만료된 사용자 세션을 삭제합니다.

Gunicorn 및 NetBox 서비스를 재시작합니다.

$ sudo systemctl restart netbox netbox-rq

결론

이로써 우분투 22.04 서버에 NetBox 네트워크 문서화 및 관리 도구를 설치하는 방법과 Nginx를 리버스 프록시 서버로 설정하는 방법에 대한 튜토리얼이 마무리되었습니다. 질문이 있으면 아래 댓글로 남겨주세요.

Share: X/Twitter LinkedIn

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

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