## 금도 서버 구성도

서버실 랙 사진과 현재 컨테이너/포트 운용 현황을 바탕으로 물리 배치와 논리 토폴로지를 정리했습니다. 운영 시 참조용으로 사용하며, 변경 시 본 문서도 함께 갱신합니다.

### 물리 랙 배치(위 → 아래)

아래는 랙 상의 장비 배치도입니다.

---
```mermaid
%%{init: {"theme": "base", "themeVariables": { "fontSize": "18px", "lineHeight": "22px" }}}%%
graph TB
  subgraph "Rack Cabinet"
    direction TB
    R235["192.168.0.235\ngeumdo rack1 (R820)"]
    R236["192.168.0.236\ngeumdo rack2 (R820-2)"]
    MON["KVM/Monitor"]
    R102["192.168.0.102\nA100 서버 (R760xa)"]
    R166["192.168.0.166\nSub AI (PT620)"]
    R029["192.168.0.29\nDesktop 서버"]
    R017["192.168.0.17\nSynology NAS"]
    R066["192.168.0.66\nGitLab & Nginx Proxy (gds)"]
  end

  style R102 fill:#e5f5ff,stroke:#1890ff,stroke-width:1.5px
  style R066 fill:#fff7e6,stroke:#fa8c16,stroke-width:1.5px
  style R017 fill:#f6ffed,stroke:#52c41a,stroke-width:1.5px
```

참고: 실제 장비 높이(U)와 정확한 선반 위치는 현장 라벨 기준으로 보정 가능합니다.

### 논리 네트워크/서비스 토폴로지

내부망 192.168.0.0/24 환경에서 리버스 프록시를 중심으로 주요 서비스가 분기됩니다.

---
```mermaid
%%{init: {"theme": "base", "themeVariables": { "fontSize": "18px", "lineHeight": "22px" }}}%%
graph TB
  INET[인터넷]
  FW[게이트웨이/방화벽]
  PROXY["192.168.0.66\nNginx Proxy / GitLab"]

  INET --> FW --> PROXY

  subgraph "Application Servers"
    A100["192.168.0.102 R760xa\n- rvtouch3d-api (3002,3003,8001,9092,5434,6381)\n- vnexa-abb-api (8000)\n- jupyter-gpu (8888)"]
    RACK1["192.168.0.235 R820\n- 3DP (80,3000,3306,8080,8090,2212)\n- vnexa-api (3001,2213)\n- metaverse nodam (52530,52532-33,53306,2236)"]
    RACK2["192.168.0.236 R820-2\n- java WAS (8092,4446,33064,2233)"]
    DESK["192.168.0.29 Desktop\n- docker_centos (8091,4445,33063,2230)"]
    SUBAI["192.168.0.166 PT620\n- posivibes (8084,2240)\n- db (9011,9013,33062,2228)\n- gitlab_web (8081,4430,2224)\n- 기타(docker_all)"]
    GDS["192.168.0.66 gds\n- fastapi(8000), fastapi_new(8001)\n- jupyter(8888), open-webui(9000), ollama(11434)\n- poste-io 메일(25,465,587,993,995,4190)\n- was(8080,4333), securedb(8090,9908)"]
  end

  PROXY -->|HTTP/HTTPS 라우팅| A100
  PROXY --> RACK1
  PROXY --> RACK2
  PROXY --> DESK
  PROXY --> SUBAI
  PROXY --> GDS

  NAS["192.168.0.17\nSynology NAS"]
  NAS -. 백업/스냅샷 .- A100
  NAS -. 백업/스냅샷 .- RACK1
  NAS -. 백업/스냅샷 .- RACK2
  NAS -. 백업/스냅샷 .- GDS
```

### 장비 인벤토리

| IP | 호스트/별칭 | 하드웨어/호스트명 | 주요 컨테이너 및 포트(Host→Container) |
| :-- | :-- | :-- | :-- |
| 192.168.0.102 | A100 서버 | `gds-PowerEdge-R760xa` | vnexa-abb-api 8000→8000, rvtouch3d-api(frontend 3002→3000, grafana 3003→3000, app 8001→8000, prometheus 9092→9090, postgres 5434→5432, redis 6381→6379), jupyter-gpu 8888→8888 |
| 192.168.0.235 | geumdo rack1 | `gds-PowerEdge-R820` | 3DP 80/3000/3306/8080/8090/2212, vnexa-api 3001/2213, metaverse nodam 52530/52532-33/53306/2236 |
| 192.168.0.236 | geumdo rack2 | `gds-PowerEdge-R820-2` | java WAS 8092→8080, 4446→443, 33064→3306, 2233→22 |
| 192.168.0.29 | geumdo Desktop | `desktopserver` | docker_centos 8091→80, 4445→443, 33063→3306, 2230→22 |
| 192.168.0.166 | Sub AI 서버 | `gds-PT620` | posivibes 8084→8080, 2240→22; db 9011/9013/33062/2228; gitlab_web 8081→80, 4430→443, 2224→22; 기타(docker_all) |
| 192.168.0.66 | GitLab/Nginx/유틸 | `gds` | fastapi 8000→8000, fastapi_new 8001→8001, jupyter 8888→8888, open-webui 9000→8080, ollama 11434→11434, poste-io 메일 포트군, was/securedb 등 |
| 192.168.0.17 | Synology NAS | Synology | 파일공유/백업(스냅샷/rsync/HyperBackup) |

### Docker 공통 운용 메모

- 스토리지 드라이버: `overlay2`
- 기본 네트워크: `bridge`(172.17.0.0/16), `host`, `none`
- A100 서버는 프로젝트 분리를 위해 추가 브리지(`vnexa-abb-api_default`, 172.22.0.0/16) 사용
- 정기 점검: 외부 노출 포트 최소화, 불필요 컨테이너 정리, 이미지 업데이트

### 운영 체크리스트

- GitLab 접근 경로: 192.168.0.66(프록시) 및 192.168.0.166(컨테이너) 동시 운용 여부 확인
- NAS 백업: 각 서버의 애플리케이션 데이터/DB 스냅샷 주기 검토 및 복구 테스트
- 관리 인터페이스(iDRAC/IPMI) 주소 기록 및 비상접속 절차 정리
