Part-DB로 전자부품 재고관리 웹사이트 구축하기 (Docker Compose + Nginx Proxy Manager + Let's Encrypt)
전자부품이 많아질수록 어디에 어떤 부품이 있는지 찾기 어려워집니다.
저는 저항, 커패시터, IC, 커넥터, 릴레이, MOSFET 등을 관리하기 위해 오픈소스 재고관리 시스템인 Part-DB를 구축했습니다.
이번 글에서는 Ubuntu 서버에서 Docker Compose를 이용하여 다음 서비스를 한 번에 구성하는 방법을 소개합니다.
구성 요소
- Part-DB
- MariaDB
- Nginx Proxy Manager
- Let's Encrypt SSL
- Docker
- Docker Compose
최종 구성도
인터넷
│
▼
parts.example.com
│
▼
Nginx Proxy Manager
│
▼
Part-DB
│
▼
MariaDB
1. 서버 준비
Ubuntu 업데이트
sudo apt update
sudo apt upgrade -y
필수 패키지 설치
sudo apt install -y curl wget git nano
2. Docker 설치
curl -fsSL https://get.docker.com | sudo sh
확인
docker --version
3. Docker Compose 확인
docker compose version
4. 작업 폴더 생성
mkdir -p ~/partdb
cd ~/partdb
5. docker-compose.yml 작성
아래 파일 하나로 모든 서비스를 구성합니다.
version: "3.9"
services:
npm:
image: jc21/nginx-proxy-manager:latest
container_name: npm
restart: unless-stopped
ports:
- "80:80"
- "81:81"
- "443:443"
volumes:
- ./npm/data:/data
- ./npm/letsencrypt:/etc/letsencrypt
mariadb:
image: mariadb:11
container_name: partdb-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: partdb
MYSQL_USER: partdb
MYSQL_PASSWORD: partdbpassword
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_unicode_ci
volumes:
- ./mariadb:/var/lib/mysql
partdb:
image: jbtronics/part-db1:latest
container_name: partdb
restart: unless-stopped
depends_on:
- mariadb
environment:
DATABASE_URL: mysql://partdb:partdbpassword@mariadb:3306/partdb
APP_ENV: prod
TRUSTED_PROXIES: 127.0.0.1,REMOTE_ADDR
ports:
- "8080:80"
volumes:
- ./partdb/uploads:/var/www/html/uploads
- ./partdb/public_media:/var/www/html/public/media
networks:
default:
name: partdb-network
6. 컨테이너 실행
docker compose up -d
상태 확인
docker ps
정상 실행되면 다음 컨테이너가 보입니다.
npm
partdb
partdb-db
7. 도메인 설정
예시
parts.example.com
DNS에서 A 레코드 생성
| 타입 | 이름 | 값 |
|---|---|---|
| A | parts | 서버 공인IP |
예시
parts.example.com → 123.123.123.123
확인
nslookup parts.example.com
8. Nginx Proxy Manager 접속
브라우저
http://서버IP:81
초기 계정
Email:
admin@example.com
Password:
changeme
첫 로그인 후 비밀번호 변경
9. Proxy Host 등록
메뉴
Hosts
→ Proxy Hosts
→ Add Proxy Host
설정
Domain Names:
parts.example.com
Scheme:
http
Forward Hostname:
partdb
Forward Port:
80
체크
Block Common Exploits
Websockets Support
저장
10. SSL 인증서 발급
SSL 탭 이동
Request a new SSL Certificate
체크
Force SSL
HTTP/2 Support
HSTS Enabled
이메일 입력 후 저장
몇 초 후 Let's Encrypt 인증서가 자동 발급됩니다.
11. Part-DB 최초 접속
브라우저 접속
https://parts.example.com
설치 마법사가 시작됩니다.
12. 관리자 계정 생성
최초 접속 시
관리자 계정
이메일
비밀번호
입력 후 완료
13. 한국어 설정
우측 상단
Settings
→ Language
→ 한국어
선택
14. 저장 위치 구조 만들기
Part-DB의 강력한 기능은 보관 위치 관리입니다.
예시
창고
├─ 서랍장1
│ ├─ A1
│ ├─ A2
│ └─ A3
│
├─ 서랍장2
│ ├─ B1
│ ├─ B2
│ └─ B3
│
└─ 부품함
부품 등록 시 위치를 지정하면 쉽게 찾을 수 있습니다.
15. 부품 등록
예시
품명:
STM32G431K8T6
제조사:
STMicroelectronics
수량:
100
보관위치:
서랍장1-A3
16. 바코드 및 QR 코드 활용
Part-DB는 바코드와 QR코드를 지원합니다.
라벨 프린터를 이용하면
부품명
부품번호
QR코드
보관위치
를 출력하여 관리할 수 있습니다.
스마트폰으로 QR을 스캔하면 바로 해당 부품 페이지가 열립니다.
17. 공급업체 연동
지원되는 공급업체 예시
Mouser
DigiKey
LCSC
TME
Farnell
API를 등록하면 부품 정보를 자동으로 가져올 수 있습니다.
18. 백업
MariaDB 백업
docker exec partdb-db mysqldump \
-u root \
-prootpassword \
partdb > partdb.sql
복원
docker exec -i partdb-db mysql \
-u root \
-prootpassword \
partdb < partdb.sql
전체 데이터 백업
tar czvf partdb_backup.tar.gz \
mariadb \
partdb \
npm
19. 업데이트
이미지 최신화
docker compose pull
재시작
docker compose up -d
20. 운영 팁
추천 카테고리
저항
커패시터
인덕터
다이오드
트랜지스터
MOSFET
IC
MCU
센서
릴레이
커넥터
케이블
전원모듈
PCB
기구부품
추천 저장 위치
R-저항
C-커패시터
D-다이오드
Q-트랜지스터
U-IC
J-커넥터
마무리
Part-DB는 단순한 재고관리 프로그램이 아니라 전자부품 데이터베이스에 가깝습니다.
부품 검색, 재고 관리, 위치 관리, 바코드 관리, 공급업체 연동까지 가능하기 때문에 개인 연구실부터 기업 개발팀까지 활용할 수 있습니다.
Docker Compose와 Nginx Proxy Manager를 이용하면 설치도 매우 간단하며, Let's Encrypt SSL 인증서까지 무료로 적용할 수 있습니다.
부품이 늘어나기 시작했다면 엑셀 대신 Part-DB를 사용해보시기 바랍니다.