본문 바로가기
IT&Jobs/Study

[배워봅시다] Proxmox 환경 Ubuntu 24.04 기반 NetBox 완벽 구축 가이드 #1

by jaeilpark 2026. 1. 20.
728x90
반응형

안녕하세요 일이입니다

 

벌써 2026년 새해가 시작한 지 20일이나 되었네요..

국내 유일 국산 NAS 엔진을 제조한 회사 "글루시스"에서 근무하고 이직 한 지도 벌써

9개월이 다되었네요..

 

그간 이직 후 바쁘다는 핑계로 블로그를 소홀히 했더니 너무 나태해진 게 아닌가 생각이 들어

이직 후 사내 인프라 구축을 하면서 겪은 시행착오들을 하나씩 정리하기로 다짐하고 다시 타이핑을 하게 되었습니다

 

이번 주제는 "전산실 자원 관리, 아직도 엑셀로 하시나요? 오픈소스 DCIM의 표준, NetBox를 가상화 환경에 구축하는 A to Z를 공개합니다. 단순 설치법뿐만 아니라 설치 과정에서 발생하는 **실제 오류와 해결책(Troubleshooting)**까지 담았습니다."

라는 내용으로 5편으로 작성해 보도록 하겠습니다

당연히.. 혼자만의 힘으론 구축하기 힘들었겠죠.. 든든한 동반자인 제미나이(Google Gemini)  Pro 도움을 많이 받았답니다

 

[Part 1] 인프라 준비: Proxmox VM 구성 및 OS 기본 설정

1. 개요

  • 목표: NetBox 구동을 위한 최적의 가상머신(VM) 생성 및 필수 패키지 설치.
  • 환경: Proxmox VE, Ubuntu 24.04 LTS (Noble Numbat).

2. VM 사이징 및 구성 팁

  • CPU: host 타입 설정 (퍼포먼스 최적화), 2 Cores 이상 권장.
  • Disk: SCSI + VirtIO, Discard 활성화 (SSD Trim 지원).
  • Network: VirtIO 모델 사용.

3. 필수 의존성 패키지 설치 (Ubuntu 24.04 기준)

  • 기본 업데이트 및 빌드 도구 설치.
  • DB/Cache: PostgreSQL, Redis-server 설치.
  • Python: Ubuntu 24.04의 Python 3.12 환경 고려 (python3-venv, python3-dev 등 필수).
Bash
 
# 필수 패키지 설치 명령어
sudo apt install -y postgresql redis-server python3-pip python3-venv libpq-dev ...

[Part 2] NetBox 설치와 핵심 설정 (DB 및 소스 배포)

1. PostgreSQL 데이터베이스 구성

  • DB 생성 (netbox), 유저 생성 및 권한 부여.
  • IT 마스터 Tip: 비밀번호는 반드시 복잡하게 설정할 것.

2. 소스 코드 다운로드 (Github)

  • [Troubleshooting Case #1] fatal: Remote branch master not found
    • 원인: GitHub 기본 브랜치 명칭이 master에서 main으로 변경됨.
    • 해결: -b main 옵션 사용 또는 태그(Tag) 버전 체크아웃 권장.
    • 명령어: sudo git clone -b main https://github.com/netbox-community/netbox.git /opt/netbox

3. 설정 파일(configuration.py) 구성

  • [Troubleshooting Case #2] SECRET_KEY 설정 실수
    • 상황: 키 값에 파일 경로(/opt/.../generate_secret_key.py)를 넣는 실수.
    • 해결: 스크립트 실행 **결과값(Random String)**을 복사해서 붙여 넣어야 함.
    • 주의: 따옴표(') 누락 및 문법 오류 주의.

4. 설치 스크립트 실행

  • upgrade.sh 실행을 통한 가상 환경(venv) 구성 및 마이그레이션.

[Part 3] 웹 서버 연동: Gunicorn & Nginx & SSL

1. Gunicorn(WSGI) 서비스 등록

  • Systemd 서비스 파일 복사 및 데몬 리로드.
  • [Troubleshooting Case #3] netbox.service 무한 재시작 (Exit Code 1)
    • 원인: /opt/netbox/gunicorn.py 설정 파일 누락.
    • 해결: contrib 폴더에서 설정 파일 복사 (cp /opt/netbox/contrib/gunicorn.py /opt/netbox/).

2. Nginx 리버스 프록시 설정

  • sites-available 및 sites-enabled 설정.
  • [Troubleshooting Case #4] Nginx 구동 실패 (No such file or directory)
    • 원인: sites-enabled/default 심볼릭 링크가 깨져 있음.
    • 해결: rm /etc/nginx/sites-enabled/default 로 깨진 링크 삭제.

3. SSL 인증서 적용 (필수)

  • [Troubleshooting Case #5] cannot load certificate 에러
    • 원인: 설정엔 SSL이 켜져 있으나, 실제 인증서 파일(netbox.crt)이 없음.
    • 해결: OpenSSL을 이용한 자가 서명 인증서(Self-signed Cert) 생성.
    • 명령어: openssl req -x509 ... (10년짜리 내부용 인증서 생성 팁).

[Part 4] 관리자 계정 생성 및 외부 접속 구성

1. Superuser 생성 (로그인 불가 해결)

  • [Troubleshooting Case #6] 로그인 실패
    • 현상: 설치 직후 초기 계정이 없어 로그인 불가.
    • 해결: CLI에서 python3 manage.py createsuperuser 실행하여 ezenuri 등 관리자 계정 생성.

2. 외부 접속 설정 (DDNS & Port Forwarding)

  • 시나리오: Synology DDNS + ipTime 공유기 환경에서 접속.
  • 설정 변경 (configuration.py):
    • ALLOWED_HOSTS: 도메인 추가 (ezenuri.synology.me).
    • CSRF_TRUSTED_ORIGINS: [중요] 포트 번호까지 포함된 전체 URL 추가 (예: https://도메인:24443).
    • 이 설정이 없으면 로그인 시 403 Forbidden CSRF 에러 발생.

[Part 5] 데이터 마이그레이션: 엑셀에서 NetBox로

1. 데이터 입력의 논리적 순서 (Dependency)

  • 무작정 서버부터 넣으면 에러 발생.
  • 올바른 순서:
    1. Site (위치) & Manufacturer (제조사)
    2. Device Role (역할) & Device Type (모델명 정의)
    3. Rack (랙 생성)
    4. Device (실제 장비 등록)

2. CSV Import 활용법

  • 엑셀 데이터를 CSV 텍스트로 변환하여 대량 등록하는 방법 가이드.
  • 실장도 시각화(Rack Elevation) 확인.

"이 가이드는 실제 구축 과정에서 발생한 수많은 시행착오(삽질)를 기반으로 작성되었습니다. 특히 SECRET_KEY 설정이나 SSL 인증서 누락으로 인한 서비스 구동 실패는 초심자가 가장 많이 겪는 문제입니다. 이 포스팅이 여러분의 퇴근 시간을 앞당겨 주기를 바랍니다."

 

위 목차로 블로그 진행 해 보도록 하겠습니다

 

오늘은 대한이라고 합니다

날이 많이 추우니 건강관리 잘 하시기 바랍니다

그럼 이만!

728x90
반응형

댓글