# 금도 내부 문서 ## 📝 개요 이 저장소는 금도에서 사용하는 **서버 인프라 환경(Docker, Nginx)**과 내부 **AI 교육 자료**를 관리하는 문서 저장소입니다. --- ## 🚀 서버 인프라 서버 운영에 필요한 Docker 및 Nginx 관련 설정과 가이드를 포함합니다. ### 🐳 Docker - **[Docker 환경 리포트](./docker/geumdo_docker_report_240611.md)**: 서버별 Docker 버전 현황과 주요 Docker Compose 프로젝트 정보를 정리한 문서입니다. - **[Docker 배포 가이드](./docker/deployment_guide.md)**: Docker를 이용한 서비스 배포 절차를 안내하는 가이드입니다. - **[Tomcat SSL/TLS 설정 가이드](./docker/docker_ssl_setup_guide.md)**: 리버스 프록시(Nginx/Apache)를 이용해 Tomcat 애플리케이션에 SSL/TLS를 적용하는 방법을 안내합니다. - **[Docker 프로젝트 모음](./docker/README.md)**: 30개 이상의 다양한 Docker 기반 애플리케이션 및 서비스 환경을 포함합니다. #### 🖥️ 고급 가상화: Docker + KVM + Windows VM - **[Docker Windows VM 가이드](./docker/docker-windows-vm/)**: **복합 가상화 환경 구축 가이드** **🏗️ 아키텍처 개요** ``` 외부 사용자 (RDP 클라이언트) ↓ (RDP 연결: 호스트IP:33890) Linux 서버 (호스트) ↓ (Docker 포트 포워딩: 33890→3389, 8081→8090) Docker 컨테이너 (Ubuntu 20.04) ├── libvirtd (KVM 관리 데몬) ├── Vagrant (VM 자동화 도구) └── iptables (내부 포트 포워딩) ↓ (3389→VM의 3389, 8090→VM의 8090) KVM 가상 머신 (Windows 10) ├── RDP 서비스 (포트 3389) └── Spring Boot 애플리케이션 (Embed Tomcat, 포트 8090) ``` **⚙️ 핵심 기술 스택** - **가상화**: Docker (컨테이너) + KVM (하드웨어 가상화) - **자동화**: Vagrant + vagrant-libvirt 플러그인 - **네트워킹**: 2단계 NAT + iptables FORWARD 체인 설정 - **원격 접속**: RDP (Remote Desktop Protocol) - **애플리케이션**: [Spring Boot](https://spring.io/guides/gs/spring-boot-docker) 기반 Java 웹 애플리케이션 **🔧 주요 해결 과제** - **방화벽 문제**: 호스트의 iptables FORWARD 체인 DROP 정책 우회 - **네트워크 라우팅**: 복잡한 다중 NAT 환경에서의 패킷 흐름 제어 - **포트 충돌**: 호스트-컨테이너-VM 간 포트 매핑 관리 **💡 사용 시나리오** - Windows 전용 소프트웨어를 Linux 서버에서 실행 - 격리된 개발 환경에서 Spring Boot 애플리케이션 테스트 - 원격 Windows 데스크톱 환경이 필요한 업무 - CI/CD 파이프라인에서 Windows 환경 테스트 **🚀 빠른 시작** ```bash # 1. 호스트 방화벽 설정 (필수) sudo iptables -I DOCKER-USER -d 172.29.0.2 -p tcp --dport 3389 -j ACCEPT sudo iptables -I DOCKER-USER -d 172.29.0.2 -p tcp --dport 8090 -j ACCEPT sudo netfilter-persistent save # 2. Docker 컨테이너 실행 cd docker/docker-windows-vm docker-compose up -d # 3. 접속 방법 # RDP 접속: 호스트IP:33890 # Spring Boot 애플리케이션: http://호스트IP:8081 ``` **📋 상세 설정 파일** - **[docker-compose.yml](./docker/docker-windows-vm/docker-compose.yml)**: 컨테이너 설정 (포트 매핑, 권한, 디바이스) - **[Dockerfile](./docker/docker-windows-vm/Dockerfile)**: Ubuntu 20.04 + KVM + Vagrant 환경 구축 - **[Vagrantfile](./docker/docker-windows-vm/Vagrantfile)**: Windows 10 VM 설정 (메모리 8GB, CPU 4코어) - **[startup.sh](./docker/docker-windows-vm/startup.sh)**: 자동화된 VM 부팅 및 네트워크 설정 #### 🏭 주요 Docker 프로젝트들 | 프로젝트 | 설명 | 주요 기술 | 실행 방법 | |---------|------|-----------|-----------| | **`docker_all`** | Java 웹 개발 및 협업에 필요한 모든 서비스(Tomcat, MariaDB, SVN)를 통합한 올인원 개발 서버 | `Tomcat`, `MariaDB`, `SVN`, `Java 8` | `./rebuild_docker.sh` | | **`docker_fastapi`** | 스마트스토어, 쿠팡 상품 정보 및 리뷰를 수집하고 AI 감성 분석을 수행하는 크롤링 시스템 | `FastAPI`, `Selenium`, `TensorFlow` | `docker-compose up -d` | | **`docker_jupyter`** | GPU를 지원하는 Jupyter Lab 실행 환경으로, PyTorch가 사전 설치되어 있음 | `Jupyter Lab`, `PyTorch`, `GPU` | `docker-compose up -d` | | **`docker_jenkins`** | Jenkins CI/CD 자동화 서버를 구축하며, 데이터는 호스트에 영속적으로 저장 | `Jenkins`, `OpenJDK 8`, `MariaDB` | `./rebuild.sh` | | **`docker_gitlab`** | 공식 이미지를 사용하여 GitLab CE(Community Edition) 서버를 배포 | `GitLab CE` | `docker-compose up -d` | | **`docker_registry`** | Docker 이미지를 저장하고 관리할 수 있는 사설 레지스트리(Web UI 포함) | `Docker Registry`, `Web UI` | `docker-compose up -d` | | **`geumdo-rag-chat-bot`** | 사내 GitLab 코드에 대해 자연어 질의를 할 수 있는 RAG 기반 챗봇 시스템 | `RAG`, `LangChain`, `FastAPI`, `Streamlit` | `docker-compose up --build -d` | | **`gpu_cooling_monitor`** | TIG 스택(InfluxDB, Grafana)을 활용하여 서버의 GPU 및 시스템 냉각 상태를 실시간으로 모니터링 | `InfluxDB`, `Grafana`, `Python`, `Slack` | `docker-compose up -d` | | **`jupyter_geumdo_lab`** | Kubernetes(K8s) 기반의 다중 사용자 JupyterHub 서비스로, Google OAuth 인증과 동적 GPU/CPU 서버 생성을 지원 | `Kubernetes`, `JupyterHub`, `NFS`, `OAuth` | `helm upgrade ...` | | **`docker_3dp`** | Nextcloud 파일 관리, 웹 기반 원격 슬라이싱(PrusaSlicer), 프린터 제어 기능을 통합한 3D 프린팅 솔루션 | `Nextcloud`, `PrusaSlicer`, `Flask`, `PHP` | `./rebuild_docker.sh` | ### 🌐 Nginx - **[Nginx 프록시 설정 분석](./nginx/proxy_analysis.md)**: Nginx 리버스 프록시 서버의 주요 설정 파일과 서비스별 프록시 규칙을 상세히 분석한 문서입니다. ### 🔄 서버 백업 시스템 - **[서버 백업 가이드](./server_backup/README.md)**: 서버 데이터 백업 시스템 구성 및 스크립트 활용 가이드입니다. - **[Docker 백업 가이드](./server_backup/docker_backup_guide.md)**: Docker 환경에서의 효율적인 백업 방법을 안내합니다. - **[lftp 설치 가이드](./server_backup/README.md#lftp-설치-방법)**: 다양한 리눅스 배포판에서 lftp를 설치하는 방법을 안내합니다. --- ## 🤖 AI 전문가 양성 과정 16주 완성! 파이썬부터 프로덕션 배포까지의 AI 전문가 양성 과정을 위한 체계적인 강의 자료입니다. ### 📚 과정 개요 - **[AI 전문가 과정 메인 페이지](./ai_lecture/README.md)**: 전체 과정 소개 및 기술 스택 정보 - **[강의 계획서](./ai_lecture/AI_Expert_Course_Schedule.md)**: 16주 과정의 상세한 주차별 학습 목표와 내용 - **[개발 환경 설정 가이드](./ai_lecture/SETUP.md)**: Poetry를 사용한 현대적인 개발 환경 설정 방법 - **[자주 묻는 질문 (FAQ)](./ai_lecture/FAQ.md)**: 과정에 대한 주요 질문과 답변 - **[기여 가이드](./ai_lecture/CONTRIBUTING.md)**: 프로젝트 기여 방법 및 개발 환경 설정 - **[문제 해결 가이드](./ai_lecture/TROUBLESHOOTING.md)**: 개발 중 발생할 수 있는 문제 해결 방법 ### 🎯 커리큘럼 구조 #### **Part 1: AI 개발을 위한 파이썬 마스터리 (1-5주차)** - **[Part 0: 과정 소개](./ai_lecture/courses/00_introduction/part_0_introduction.md)** - **[Part 0.1: AI의 역사](./ai_lecture/courses/00_introduction/part_0.1_history_of_ai.md)** - **[Part 1: AI 개발 환경 구축](./ai_lecture/courses/01_ai_development_environment/part_1_ai_development_environment.md)** - **[Part 2: 파이썬 핵심 문법](./ai_lecture/courses/02_python_core_syntax/part_2_python_core_syntax.md)** - **[Part 3: 파이썬 컬렉션](./ai_lecture/courses/03_python_collections/part_3_python_collections.md)** - **[Part 4: 객체 지향 프로그래밍](./ai_lecture/courses/04_object_oriented_programming/part_4_object_oriented_programming.md)** - **[Part 5: AI 핵심 라이브러리](./ai_lecture/courses/05_ai_core_libraries/part_5_ai_core_libraries.md)** #### **Part 2: 핵심 AI 모델 개발 및 서빙 (6-9주차)** - **[Part 5.5: NumPy를 활용한 선형대수학](./ai_lecture/courses/05.5_linear_algebra_with_numpy/part_5.5_linear_algebra_with_numpy.md)** - **[Part 6: 머신러닝](./ai_lecture/courses/06_machine_learning/part_6_machine_learning.md)** - **[Part 7: 딥러닝](./ai_lecture/courses/07_deep_learning/part_7_deep_learning.md)** - **[7.1: 순환 신경망 (RNN)](./ai_lecture/courses/07_deep_learning/part_7.1_recurrent_neural_networks.md)** - **[7.2: Transformer와 LLM의 원리](./ai_lecture/courses/07_deep_learning/part_7.2_transformer_and_llm_principles.md)** - **[7.3: LangChain을 활용한 LLM 애플리케이션 개발](./ai_lecture/courses/07_deep_learning/part_7.3_llm_application_development_with_langchain.md)** - **[7.4: 그래프 신경망 (GNN)](./ai_lecture/courses/07_deep_learning/part_7.4_graph_neural_networks.md)** - **[7.5: 강화학습 (RL)](./ai_lecture/courses/07_deep_learning/part_7.5_reinforcement_learning.md)** - **[Part 8: FastAPI를 이용한 모델 서빙](./ai_lecture/courses/08_model_serving_with_fastapi/part_8_model_serving_with_fastapi.md)** - **[Part 9: 프로덕션 레벨 API](./ai_lecture/courses/09_production_ready_api/part_9_production_ready_api.md)** #### **Part 3: 프로덕션 MLOps 및 AI 심화 (10-14주차)** - **[Part 10: AI 전문가 과정 로드맵](./ai_lecture/courses/10_expert_path/part_10_expert_path.md)** - **[추천 학습 자료](./ai_lecture/courses/10_expert_path/recommended_resources.md)** - **[Part 11: 프로덕션 레벨 MLOps 심화](./ai_lecture/courses/11_mlops/part_11_mlops.md)** - **[Part 12: 대규모 AI 모델 최적화 및 서빙](./ai_lecture/courses/12_model_optimization/part_12_model_optimization.md)** - **[Part 13: 생성형 AI 및 AI 에이전트 심화](./ai_lecture/courses/13_generative_ai/part_13_generative_ai.md)** - **[Part 14: AI 윤리](./ai_lecture/courses/14_ai_ethics/part_14_ai_ethics.md)** #### **Part 4: 최종 캡스톤 프로젝트 (15-16주차)** - **[Part 15: 최종 캡스톤 프로젝트 가이드](./ai_lecture/courses/15_capstone_project/part_15_capstone_project.md)** - **[캡스톤 프로젝트 템플릿](./ai_lecture/courses/15_capstone_project/capstone_template.md)** ### 🌟 심화 학습 및 협업 자료 - **[온라인 커뮤니티 가이드](./ai_lecture/ONLINE_COMMUNITY_GUIDE.md)**: 학습자 간 지식 공유 및 네트워킹을 위한 커뮤니티 활용 가이드 - **[짝 프로그래밍 가이드](./ai_lecture/PAIR_PROGRAMMING_GUIDE.md)**: 효과적인 협업 학습 방법론 - **[산업 사례 연결 가이드](./ai_lecture/INDUSTRY_CASE_STUDIES.md)**: 이론과 실무 사례를 연결한 심화 자료 - **[클라우드 AI 서비스 가이드](./ai_lecture/Cloud_AI_Services_Guide.md)**: AWS, Google Cloud, Azure AI 서비스 활용 안내 - **[도구 및 프레임워크 비교](./ai_lecture/Tooling_Frameworks_Comparison.md)**: PyTorch vs TensorFlow 등 주요 도구 비교 - **[진도 관리 시스템 상세](./ai_lecture/PROGRESS_TRACKING_SYSTEM.md)**: 학습 진도와 성취를 관리하는 고급 시스템 안내 - **[콘텐츠 업데이트 정책](./ai_lecture/AI_CONTENT_UPDATE_POLICY.md)**: 최신 기술 동향을 커리큘럼에 반영하는 방법론 ### 💻 실습 코드 및 자료 - **[실습 코드 메인](./ai_lecture/source_code/README.md)**: 전체 실습 코드 구조 및 사용법 - **[파이썬 핵심 문법 실습](./ai_lecture/source_code/02_python_core_syntax/)** - **[파이썬 컬렉션 실습](./ai_lecture/source_code/03_python_collections/)** - **[객체 지향 프로그래밍 실습](./ai_lecture/source_code/04_object_oriented_programming/)** - **[AI 핵심 라이브러리 실습](./ai_lecture/source_code/05_ai_core_libraries/)** - **[머신러닝 실습](./ai_lecture/source_code/06_machine_learning/)** - **[딥러닝 실습](./ai_lecture/source_code/07_deep_learning/)** - **[FastAPI 모델 서빙 실습](./ai_lecture/source_code/08_model_serving_with_fastapi/)** - **[Production API 실습](./ai_lecture/source_code/09_production_ready_api/)** - **[MLOps 심화 실습](./ai_lecture/source_code/11_mlops/)** - **[모델 최적화 실습](./ai_lecture/source_code/12_model_optimization/)** - **[생성형 AI 실습](./ai_lecture/source_code/13_generative_ai/)** - **[AI 윤리 실습](./ai_lecture/source_code/14_ai_ethics/)** ### 📚 추가 자료 - **[통합 용어집](./ai_lecture/glossary.md)**: 전체 과정에서 사용되는 핵심 용어 정리 - **[실습 데이터셋](./ai_lecture/assets/datasets/)**: 과정에서 사용되는 실습용 데이터 - **[Docker 설정 파일](./ai_lecture/docker-compose.dev.yml)**: 개발 환경용 Docker 설정 - **[GPU 지원 Docker 설정](./ai_lecture/docker-compose.gpu.yml)**: GPU 환경용 Docker 설정 - **[프로젝트 TODO](./ai_lecture/TODO.md)**: 프로젝트 개선 사항 및 향후 계획 ### 🎯 학습 진도 관리 본 과정에서는 학습 진도를 체계적으로 관리할 수 있는 도구를 제공합니다: ```bash # 전체 진도 확인 make progress # 특정 파트 진도 확인 make progress-show PART=part_2 # 학습 항목 완료 표시 make progress-complete PART=part_2 ITEM=0 # 진도 리포트 생성 make progress-export FILE=my_progress.md ``` --- ## 🛠️ 기술 스택 ### AI 강의 과정 - **언어**: 파이썬 3.10+ - **의존성 관리**: Poetry (권장) / pip - **핵심 라이브러리**: NumPy, Pandas, Scikit-learn, PyTorch, LangChain - **API 서버**: FastAPI - **배포 및 운영**: Docker, Git - **개발 환경**: JupyterLab, Visual Studio Code, Cursor, GitHub Copilot - **코드 품질**: Black, Ruff, MyPy, Pytest - **CI/CD**: GitLab CI/CD ### 서버 인프라 - **컨테이너화**: Docker, Docker Compose - **웹 서버**: Nginx (리버스 프록시) - **가상화 기술**: - **Type 1**: KVM (Kernel-based Virtual Machine) - 하드웨어 직접 제어 - **Type 2**: Docker 컨테이너 - OS 레벨 가상화 - **복합 구조**: Docker + KVM 중첩 가상화로 Windows 환경 구현 - **네트워킹**: iptables 방화벽, NAT 포트 포워딩, RDP 원격 접속 - **모니터링**: TIG 스택 (Telegraf, InfluxDB, Grafana), Prometheus - **CI/CD**: Jenkins, GitLab CI/CD - **데이터베이스**: MariaDB, MySQL, PostgreSQL - **AI/ML**: Jupyter Lab, TensorFlow, PyTorch, FastAPI --- ## 🚀 시작하기 ### AI 강의 과정 시작하기 1. **[개발 환경 설정](./ai_lecture/SETUP.md)**을 참고하여 환경을 구축합니다. 2. **[Part 0: 과정 소개](./ai_lecture/courses/00_introduction/part_0_introduction.md)**부터 시작합니다. 3. 각 파트별로 이론 학습과 실습을 병행합니다. ### 서버 인프라 설정 1. **[Docker 배포 가이드](./docker/deployment_guide.md)**를 참고하여 Docker 환경을 구축합니다. 2. **[Nginx 프록시 설정](./nginx/proxy_analysis.md)**을 확인하여 웹 서버를 설정합니다. 3. **[Docker 프로젝트 모음](./docker/README.md)**에서 필요한 서비스를 선택하여 배포합니다. --- ## 📊 프로젝트 통계 - **Docker 프로젝트**: 30+ 개 - **파이썬 코드**: 6,492줄 - **문서**: 10,224줄 (마크다운) - **Jupyter 노트북**: 10개 - **테스트 파일**: 8개 - **Docker 설정**: 2개 (개발/GPU 환경) --- ## 📞 문의 및 지원 - **기술 문의**: 각 파트별 README 파일 및 FAQ 참고 - **개발 환경 문제**: [TROUBLESHOOTING.md](./ai_lecture/TROUBLESHOOTING.md) 참고 - **프로젝트 기여**: [CONTRIBUTING.md](./ai_lecture/CONTRIBUTING.md) 참고 --- **💡 이 저장소는 금도의 내부 교육 및 인프라 관리를 위한 문서입니다. 지속적인 업데이트와 개선을 통해 더 나은 학습 경험을 제공하겠습니다.**