From 4286bdb237ca826cfccc062c58d39471687b0959 Mon Sep 17 00:00:00 2001 From: gm Date: Thu, 21 May 2026 02:18:08 +0900 Subject: [PATCH] docs: add network topology and IP allocation map --- docs/network.md | 82 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 docs/network.md diff --git a/docs/network.md b/docs/network.md new file mode 100644 index 0000000..6ddcca4 --- /dev/null +++ b/docs/network.md @@ -0,0 +1,82 @@ +# 네트워크 구성 + +## 물리 / 호스트 인터페이스 + +| 인터페이스 | IP | 용도 | +|---|---|---| +| LAN | `172.30.1.41` | 외부 접근 (공유기 내부망) | +| Podman bridge (proxy) | `10.89.0.1` | 컨테이너 → 호스트 게이트웨이 | + +## Podman 네트워크 + +| 네트워크명 | 서브넷 | 용도 | +|---|---|---| +| `proxy` | `10.89.0.0/24` | 주요 서비스 간 통신 | +| `asr` | 별도 브리지 | ASR 서비스 격리 | +| `podman` (기본) | — | 미사용 | + +## proxy.network IP 할당 + +| IP | 서비스 | 역할 | +|---|---|---| +| `10.89.0.1` | 호스트 (브리지 게이트웨이) | 호스트 네이티브 서비스 접근점 | +| `10.89.0.2` | `asr` | ASR Whisper | +| `10.89.0.3` | `jellyfin` | Jellyfin 미디어 서버 | +| `10.89.0.5` | `filebrowser` | FileBrowser | +| `10.89.0.6` | `npm-app` | Nginx Proxy Manager | +| `10.89.0.7` | `sftpgo` | SFTPGo | +| `10.89.0.8` | `gitea` | Gitea | +| `10.89.0.20` | `authentik-server` | Authentik Server + Embedded Outpost | +| `10.89.0.21` | `authentik-worker` | Authentik Worker | +| `10.89.0.22` | `reservation` | Reservation App | +| `10.89.0.30` | `prometheus` | Prometheus | +| `10.89.0.31` | `cadvisor` | cAdvisor | +| `10.89.0.40` | `postgres-main` | PostgreSQL | +| `10.89.0.41` | `authentik-redis` | Redis (Authentik) | +| `10.89.0.42` | `nextcloud-app` | Nextcloud | +| `10.89.0.43` | `onlyoffice-docs` | OnlyOffice | +| `10.89.0.44` | `redis-nextcloud` | Redis (Nextcloud) | + +## 외부 포트 노출 현황 + +| 포트 | 프로토콜 | 서비스 | 비고 | +|---|---|---|---| +| `80` | TCP | NPM | HTTP → HTTPS 리다이렉트 | +| `443` | TCP | NPM | HTTPS 진입점 (모든 서브도메인) | +| `228` | TCP | SSHd | SSH (비표준 포트) | +| `2222` | TCP | Gitea SSH | Git SSH 클론 (`172.30.1.41` 바인드) | +| `3306` | TCP | MariaDB | ⚠️ 방화벽/네트워크 레벨 차단 필요 | +| `8080` | TCP | SFTPGo Web | `172.30.1.41` 바인드 | +| `8188` | TCP | ComfyUI | `0.0.0.0` — Authentik Proxy 필수 | +| `10080` | TCP | SFTPGo WebDAV | `172.30.1.41` 바인드 | +| `11434` | TCP | Ollama API | `0.0.0.0` — 접근 제어 필요 | +| `18100` | TCP | ASR Gateway | `172.30.1.41` 바인드 | +| `19000` | TCP | Authentik | `0.0.0.0` — NPM 경유 | +| `19090` | TCP | Prometheus | `0.0.0.0` — ⚠️ Authentik 보호 후 제거 권장 | + +## 트래픽 흐름 + +``` +Internet + │ + ▼ +[NPM :443] ─── TLS 종료, 도메인 기반 라우팅 + │ + ├── auth.du5t.xyz → 10.89.0.20:9000 (Authentik) + ├── git.du5t.xyz → 10.89.0.8:3000 (Gitea) + ├── cloud.du5t.xyz → 10.89.0.42:80 (Nextcloud) + ├── grafana.du5t.xyz → 172.30.1.41:3000 (Grafana) + ├── ai.du5t.xyz → 172.30.1.41:8079 (Open WebUI) + ├── media.du5t.xyz → 10.89.0.3:8096 (Jellyfin) + ├── jupyter.du5t.xyz → 172.30.1.41:8000 (JupyterHub) + ├── asr.du5t.xyz → 172.30.1.41:18100 (ASR) + ├── reservation.du5t.xyz → 10.89.0.10:3000 (Reservation) + ├── sftp.du5t.xyz → 172.30.1.41:8080 (SFTPGo Web) + ├── webdav.du5t.xyz → 172.30.1.41:10080 (SFTPGo WebDAV) + ├── ollama.du5t.xyz → 172.30.1.41:11434 (Ollama) + │ + │ ── Authentik Proxy (인증 후 포워딩) ── + ├── prometheus.du5t.xyz → 10.89.0.20:9000 → 10.89.0.30:9090 + ├── file.du5t.xyz → 10.89.0.20:9000 → 10.89.0.5:8080 + └── comfy.du5t.xyz → 10.89.0.20:9000 → 10.89.0.1:8188 +```