개인 서버 아키텍처 계획
기타1분 읽기
처음에는 데스크탑 한 대로 서버를 구축하려고 했는데, 클로드가 보안상 위험하다고 서버를 네트워크에 직접 노출시키지 않는 방안을 제안했다. 이를 위해 클라우드 서비스의 VPS(Virtual Private Server)를 사용하는 것을 추천해줬는데, 남는 데스크탑이 하나 더 있어서 그걸 리버스 프록시로 사용하기로 했다.
네트워크 흐름
사용자가 요청을 보내면 내 공유기로 요청이 들어와서 서브 컴퓨터로 전달된다. 서브 컴퓨터에서는 Caddy를 사용해서 리버스 프록시 역할을 하고, 요청은 다시 메인 컴퓨터로 전달된다.
서브 컴퓨터는 외부 네트워크에 노출되어 있기에 요청을 받을 수 있고, 메인 컴퓨터는 외부 네트워크에 전혀 노출되지 않아 안전하다. 그리고 메인 컴퓨터와 서브 컴퓨터는 같은 LAN에 있기 때문에 통신이 가능하다.
아키텍처
┌──────────────────┐
│ Internet Users │
└────────┬─────────┘
│
│ HTTP/HTTPS
▼
┌──────────────────┐
│ Router │
│ (Port Forward) │
│ 80, 443 → 50 │
└────────┬─────────┘
│
┌────────────────┼──────────────────┐
▼ │ ▼
┌────────────────────────┐ │ ┌─────────────────────────────────┐
│ Sub Desktop #1 │ │ │ Main Desktop #2 │
│ (i5-4690K, 16GB RAM) │ │ │ (Debian 13 + K3s) │
├────────────────────────┤ │ ├─────────────────────────────────┤
│ │ │ │ │
│ ┌────────────────────┐ │ │ │ ┌─────────────────────────────┐ │
│ │ DuckDNS Client │ │ │ │ │ K3s (Kubernetes) │ │
│ │ (Dynamic IP Mgmt) │ │ │ │ │ Debian 13 Trixie │ │
│ └────────────────────┘ │ │ │ └─────────────────────────────┘ │
│ │ │ │ │
│ ┌────────────────────┐ │ │ │ ┌─────────────────────────────┐ │
│ │ Caddy │ │ │ │ │ Traefik Ingress │ │
│ │ (Reverse Proxy) │ │ │ │ │ (Domain Routing) │ │
│ │ (Auto HTTPS) │ │ │ │ └─────────────────────────────┘ │
│ └──────────┬─────────┘ │ │ │ │
│ │ │ │ │ ┌─────────┬─────────┬─────────┐ │
│ IP: 192.168.1.50 │ │ │ │service-a│service-b│service-c│ │
│ (public) │ │ │ └─────────┴─────────┴─────────┘ │
└────────────┼───────────┘ │ │ │
│ │ │ IP: 192.168.1.100 (private) │
│ Local Network │ └─────────────────────────────────┘
│ (192.168.1.x) │
└───────────────┘