🚀 HAXK.SHOP 시스템 아키텍처 로드맵

마지막 업데이트: 2026-01-27

시스템 상태: ✅ 정상 운영 중 | 컨테이너: 13/13 실행

🏗️ 시스템 개요

╔════════════════════════════════════════════════════════════════════════════╗ ║ HAXK.SHOP 시스템 아키텍처 ║ ╚════════════════════════════════════════════════════════════════════════════╝ ┌─────────────────────────────────────────────────────────────────────────┐ │ 🌐 NGINX 리버스 프록시 │ │ (nginx-server: 0.0.0.0:80/443) │ │ HTTP/HTTPS → SSL 정리 → WAF(SQL인젝션,XSS,Path traversal) → 라우팅 │ └─────────────────────────────────────────────────────────────────────────┘ ↓ ┌────────┴───────────┬──────────────┬──────────────┬───────────┐ ↓ ↓ ↓ ↓ ↓ ┌─────────────┐ ┌───────────────┐ ┌──────────┐ ┌──────────┐ ┌────────┐ │ haxk.shop │ │ monitor.* │ │ api.* │ │search.* │ │backup.*│ │ www.* │ │ │ │ │ │ │ │ │ │ │ │ Netdata 19999 │ │ API 5000 │ │ SearXNG │ │ (HTTP) │ │ HTML Files │ │ (모니터링) │ │ (Python) │ │ (엔진) │ │ │ └─────────────┘ └───────────────┘ └──────────┘ └──────────┘ └────────┘ ┌─────────────────────────────────────────────────────────────────────────┐ │ 관리 및 대시보드 서브도메인 │ ├─────────────────────────────────────────────────────────────────────────┤ │ portainer.haxk.shop → Portainer UI (9000) - Docker 관리 │ │ pgadmin.haxk.shop → pgAdmin (80) - PostgreSQL 관리 │ │ traefik.haxk.shop → Traefik (8080) - Reverse Proxy 대시보드 │ │ plane.haxk.shop → Plane (8000) - 프로젝트 관리 │ │ roadmap.haxk.shop → Roadmap (80) - 시스템 로드맵 │ └─────────────────────────────────────────────────────────────────────────┘ ┌─────────────────────────────────────────────────────────────────────────┐ │ 📊 백엔드 서비스 │ ├─────────────────────────────────────────────────────────────────────────┤ │ │ 데이터베이스: │ ┌─────────────────────────────────────────────────────────────────┐ │ │ MySQL 8.0 (mysql-db) MySQL Backup Service │ │ │ - API, Backup 데이터 - 자동 백업 │ │ │ - 포트: 3306 - 포트: 3306 │ │ └─────────────────────────────────────────────────────────────────┘ │ │ 캐시 & 메시지 큐: │ ┌─────────────────────────────────────────────────────────────────┐ │ │ Redis/Valkey (redis-cache) Plane-Redis (plane-cache) │ │ │ - 주요 캐시 레이어 - Plane 전용 캐시 │ │ │ - 포트: 6379 - 포트: 6379 │ │ └─────────────────────────────────────────────────────────────────┘ │ │ Plane 스택: │ ┌─────────────────────────────────────────────────────────────────┐ │ │ Plane (plane-project-manager) PostgreSQL (plane-database) │ │ │ - 프로젝트 관리 앱 - Plane 데이터베이스 │ │ │ - 포트: 8000 - 포트: 5432 │ │ └─────────────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────────────────┘

📋 서브도메인 현황

Domain Service 포트 상태 설명
haxk.shop Static HTML 80→443 ✅ Up 메인 사이트
www.haxk.shop Static HTML 80→443 ✅ Up 메인 사이트 (www)
monitor.haxk.shop Netdata 19999 ✅ Up 시스템 모니터링 대시보드
api.haxk.shop Python API 5000 ✅ Up REST API 서버
search.haxk.shop SearXNG 8080 ✅ Up 프라이빗 검색 엔진
backup.haxk.shop HTTP 리다이렉트 80→443 ✅ Up 백업 정보 페이지
plane.haxk.shop Plane 8000 ✅ Up 프로젝트 관리 도구
portainer.haxk.shop Portainer 9000 ✅ Up Docker 관리 UI
pgadmin.haxk.shop pgAdmin 80 ✅ Up PostgreSQL 관리 UI
traefik.haxk.shop Traefik 8080 ✅ Up Reverse Proxy 대시보드
roadmap.haxk.shop Roadmap 80 ✅ Up 시스템 아키텍처 로드맵

🐳 컨테이너 목록 (13개)

🌐 외부 접근 가능 (포트 바인딩)

🔒 내부 네트워크만 (포트 바인딩 없음)

🔐 보안 기능

NGINX WAF (Web Application Firewall)

├─ SQL Injection 방지
│  ├─ "union.*select" 차단
│  ├─ "insert.*into" 차단
│  ├─ "drop.*table" 차단
│  └─ 기타 SQL 명령어 차단
│
├─ XSS (Cross-Site Scripting) 방지
│  ├─ <script> 태그 차단
│  ├─ javascript: 프로토콜 차단
│  ├─ onerror= 속성 차단
│  └─ 기타 XSS 벡터 차단
│
└─ Path Traversal 방지
   ├─ ".." 시퀀스 차단
   ├─ "%2e%2e" 인코딩 차단
   └─ 디렉토리 이동 공격 차단

SSL/TLS

Fail2Ban

5+ 보안 감시 규칙 활성화:

📊 데이터베이스 구조

MySQL 8.0

├─ API 데이터
│  ├─ 사용자 정보
│  ├─ 로그 데이터
│  └─ 기타 애플리케이션 데이터
│
└─ 자동 백업 (mysql-backup-service)
   ├─ 매일 자동 백업
   ├─ 버전 관리
   └─ 복구 지점 유지

PostgreSQL (Plane 전용)

├─ Plane 프로젝트 데이터
│  ├─ 프로젝트 정보
│  ├─ 이슈 및 작업
│  └─ 팀 및 사용자
│
└─ 캐시: plane-redis (6379)

🔄 트래픽 흐름

1. 클라이언트 요청
   ↓
2. DNS → 127.0.0.1 (/etc/hosts)
   ↓
3. NGINX 수신 (포트 80/443)
   ↓
4. WAF 검사 (SQL, XSS, Path Traversal)
   ↓
5. SSL/TLS 처리 (HTTPS)
   ↓
6. 도메인별 라우팅
   ├─→ haxk.shop → Static HTML
   ├─→ monitor.* → Netdata (19999)
   ├─→ api.* → Python API (5000)
   ├─→ search.* → SearXNG (8080)
   ├─→ portainer.* → Portainer (9000)
   ├─→ pgadmin.* → pgAdmin (80)
   ├─→ traefik.* → Traefik (8080)
   ├─→ plane.* → Plane (8000)
   ├─→ roadmap.* → Roadmap (80)
   └─→ 기타 → 메인 사이트 (HTML)
   ↓
7. 응답 반환
   ↓
8. 클라이언트 수신

🗂️ 네트워크 구조

네트워크 1: web (외부 통신)

네트워크 2: internal (내부만)

└─ 모든 백엔드 서비스
   ├─ MySQL / PostgreSQL
   ├─ Redis
   ├─ API 서버
   ├─ Plane
   └─ 기타 내부 서비스

🚀 배포 현황

항목 상태 세부 정보
컨테이너 수 13/13 모두 실행 중 ✅
SSL 인증서 유효 Let's Encrypt 자동 갱신
보안 필터 활성 WAF + Fail2Ban
데이터베이스 정상 MySQL 8.0 + PostgreSQL 16
모니터링 활성 Netdata 실시간 모니터링
캐싱 활성 Redis + Valkey

🗑️ 제거된 서비스 (2026-01-27)

다음 5개 서비스는 최적화를 위해 제거되었습니다:

📈 성능 최적화

GZIP 압축

캐싱 전략

연결 관리

🔧 설정 파일

/home/dori/stack/
├── docker-compose.yml          # Docker 서비스 정의
├── nginx.conf                  # NGINX 메인 설정
├── conf.d/
│   └── haxk.shop.conf         # 가상 호스트 설정
├── html/
│   ├── index.html             # 메인 사이트
│   ├── ROADMAP.md             # Markdown 로드맵
│   ├── ROADMAP.html           # HTML 로드맵 (이 파일)
│   └── [정적 파일들]
├── certbot/                    # SSL 인증서
│   ├── conf/                  # Let's Encrypt 설정
│   └── www/                   # 인증 확인 파일
└── [기타 설정 파일]

📞 연락처 및 지원