KPSC DLPC는 KPSC(Kookmin Problem Solved Club) 소속원을 위한 웹 기반 VM 관리 시스템입니다.
사용자는 도커 컨테이너 기반의 개인 전용 VM을 신청하고 사용할 수 있으며, 관리자는 이를 승인 및 제어할 수 있습니다.
이 프로젝트는 Spring Boot, MySQL, Docker, JWT 인증, GPU 지원 기반으로 개발되었습니다.
- Docker 및 Docker Compose 설치
- NVIDIA Docker Runtime (GPU 사용 시)
- NVIDIA CUDA Toolkit 설치 (GPU 사용 시)
- 최소 2GB RAM, 5GB 여유 저장공간
- 워게임 스터디원들의 모의해킹 실습을 위한 안전하고 독립적인 VM 환경 제공
- 인공지능을 공부하는 학우들을 위한 GPU 자원 분배 및 사용 관리
- 사용자 인증, 컨테이너 상태 관리, 리소스 할당을 효율적으로 처리할 수 있는 시스템 구현
-
사용자 등록 및 승인 요청
사용자가 이름, 학번, 학과, 전화번호를 입력하여 계정 요청을 할 수 있습니다. 관리자는 요청을 승인 또는 거절할 수 있습니다.
→/register,/admin/requests -
API Key 발급
승인된 사용자에게는 고유한 API Key가 발급되며, 이를 통해 개인 VM에 접속할 수 있습니다.
→/vm -
도커 기반 VM 관리
관리자는 각 사용자에 대해 도커 컨테이너를 생성, 실행, 중지, 로그 확인 및 삭제할 수 있습니다.
→/admin/vmlogs -
관리자 페이지
계정 요청, 사용자 목록, VM 상태를 직관적으로 관리할 수 있는 웹 인터페이스를 제공합니다.
→/admin,/admin/users -
JWT 기반 인증
사용자 인증 및 API 보호를 위해 JWT(JSON Web Token)를 사용합니다.
kpsc_wargame/
└─ kpsc_war_game_study_vm/
└─ kpsc_wargame/
├─ src/
│ ├─ main/
│ │ ├─ java/com/shaorn77770/kpsc_wargame/ # 백엔드 Java 소스
│ │ └─ resources/
│ │ ├─ templates/ # Thymeleaf 템플릿
│ │ └─ application.yml # 설정 파일
├─ build/
└─ ...
.env 파일에서 다음 환경 변수를 설정합니다:
# 데이터베이스 설정
DB_NAME=kpsc_db
DB_USER=kpsc_user
DB_PASSWORD=super_secure_pw
DB_ROOT_PASSWORD=root_pw
DB_HOST=mysql
DB_PORT=3306
# 관리자 계정
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin_pw
# JWT 설정
JWT_KEY=super_secret_jwt_key
# 도메인
DOMAIN_NAME=example.com🔒 보안 권장 사항
.env파일에는 실제 보안 정보를 입력하고.gitignore에 추가하여 버전 관리에서 제외하세요.- 프로덕션 환경에서는 보다 강력한 비밀번호를 사용하세요.
JWT_KEY는 최소 32자 이상의 안전한 키로 설정하세요.
-
.env파일 설정# 프로젝트 루트 디렉토리에 .env 파일이 있는지 확인 cat .env필요시
.env파일을 수정하여 환경 변수를 조정합니다. -
Docker 컴포즈로 빌드 및 실행
docker-compose up --build
-
웹 접속
http://localhost:8000 -
컨테이너 중지
docker-compose down
GPU를 사용하려면 다음 설정이 필요합니다:
-
Linux 사용자:
# NVIDIA Container Runtime 설치 확인 docker run --rm --gpus all nvidia/cuda:12.0-runtime-ubuntu22.04 nvidia-smi -
Windows 사용자:
- WSL2에서 NVIDIA CUDA Toolkit 설치
- Docker Desktop의 GPU 지원 활성화
docker-compose.yml의 app 서비스에 이미 GPU 할당이 설정되어 있습니다:
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]Docker 없이 로컬에서 실행하려면:
# MySQL 별도 실행 필요
mysql -u root -p < init.sql
# Spring Boot 애플리케이션 실행
./gradlew bootRun| 경로 | 설명 |
|---|---|
/register |
사용자 계정 등록 페이지 |
/admin |
관리자 대시보드 |
/admin/requests |
사용자 승인 요청 관리 |
/admin/users |
사용자 목록 및 관리 |
/admin/vmlogs |
사용자 VM 상태 관리 |
/vm |
API Key 기반 VM 접속 |
본 프로젝트는 KPSC 내부 소속원 전용으로 제작되었습니다.
기능 제안, 버그 리포트 등은 GitHub Issue를 통해 남겨주세요.