본문으로 건너뛰기

네트워크 설정

PCS가 사용자에게 앱을 제공하려면 안정적인 인터넷 연결이 필요합니다. 이 가이드는 네트워크 작동 방식과 일반적인 네트워크 문제를 해결하는 방법을 설명합니다.

PCS의 연결 방식

PCS는 여러 네트워크 계층을 사용합니다:

  1. 인터넷 연결 — PCS가 ISP를 통해 연결됩니다.
  2. NSL.SH 라우팅 — Yundera의 메시 네트워크가 yourdomain.nsl.sh를 PCS의 공인 IP로 라우팅합니다.
  3. Caddy 리버스 프록시 — Caddy가 PCS에서 실행되어 서브도메인을 기반으로 수신 요청을 올바른 앱 컨테이너로 라우팅합니다.
  4. Docker 네트워킹 — 각 앱은 격리된 네트워킹을 가진 자체 Docker 컨테이너에서 실행됩니다.

포트 요구사항

PCS가 인터넷에서 접근 가능해야 하는 포트:

포트용도필수 여부
443HTTPS — 모든 웹 트래픽
80HTTP — HTTPS로 리다이렉트권장
22SSH — 원격 관리 접근선택 (원격 SSH가 필요한 경우만)

포트가 열려 있는지 확인하는 방법

관리자 패널 → 터미널에서:

# 포트 443이 수신 대기 중인지 확인
sudo ss -tlnp | grep 443

# 외부 접근 테스트 (다른 컴퓨터에서)
curl -I https://yourdomain.nsl.sh

포트 포워딩 (가정용 네트워크)

PCS가 가정용 라우터 뒤에 있다면 포트를 포워딩해야 합니다:

단계별 안내

  1. PCS의 로컬 IP 찾기 — 터미널에서: ip addr show | grep inet
  2. 라우터에 로그인 — 보통 192.168.1.1 또는 192.168.0.1
  3. 포트 포워딩 설정 찾기 — 주로 "고급", "NAT" 또는 "가상 서버"에 있음
  4. 규칙 추가:
    • 외부 포트 443 → 내부 IP <PCS 로컬 IP> 포트 443
    • 외부 포트 80 → 내부 IP <PCS 로컬 IP> 포트 80
  5. 저장 및 적용

고정 IP / DHCP 예약

라우터가 PCS에 다른 IP를 할당하지 않도록:

  1. 터미널에서 PCS의 MAC 주소를 찾습니다: ip link show
  2. 라우터의 DHCP 설정에서 해당 MAC 주소를 고정 로컬 IP에 바인딩하는 예약을 생성합니다.

ISP 제한

일부 ISP는 가정용 연결에서 호스팅을 제한하거나 차단합니다.

일반적인 ISP 문제

문제증상해결 방법
포트 443 차단외부에서 PCS에 접근 불가Cloudflare 프록시 사용 (실제 포트를 숨김)
포트 80 차단Let's Encrypt가 인증서 발급 불가HTTPS 종료를 위해 Cloudflare 사용
CGNAT (대규모 NAT)공인 IP 미할당ISP에 공인 IP 요청, 또는 Cloudflare 터널 사용
동적 IPIP 변경 후 PCS에 접근 불가PCS 자가 점검이 새 IP를 자동 감지. 매일 밤과 재부팅 시 실행.

CGNAT 감지 방법

터미널에서:

# 공인 IP 확인
curl -s ifconfig.me

# 라우터의 WAN IP 확인
# 이 두 IP가 다르면 CGNAT 뒤에 있는 것입니다

라우터의 WAN IP가 100.64.x.x 범위에 있다면 CGNAT 뒤에 있으므로 ISP에 연락하거나 터널을 사용해야 합니다.

네트워크 솔루션으로서의 Cloudflare

Cloudflare는 대부분의 ISP 관련 네트워크 문제를 해결할 수 있습니다:

Cloudflare 프록시 모드

Cloudflare 프록시 모드로 커스텀 도메인을 설정하면 (커스텀 도메인 참조):

  • 트래픽 흐름: 사용자 → Cloudflare → PCS
  • 실제 IP가 숨겨짐
  • Cloudflare가 DDoS 보호 처리
  • ISP가 포트 80을 차단해도 작동 (Cloudflare는 443으로 연결)

Cloudflare 터널 (고급)

CGNAT 뒤에 있거나 심각한 ISP 제한이 있는 경우, Cloudflare 터널은 PCS에서 Cloudflare로의 아웃바운드 연결을 생성하여 포트 포워딩이 전혀 필요 없습니다:

  1. Cloudflare Zero Trust에 가입 (무료 플랜 가능)
  2. PCS에 cloudflared 설치
  3. 도메인을 localhost:443에 매핑하는 터널 생성
  4. 포트 포워딩이나 공인 IP 불필요

동적 IP 처리

대부분의 가정용 인터넷 연결은 주기적으로 변경되는 동적 IP를 가집니다. PCS는 이를 자동으로 처리합니다:

  1. 야간 자가 점검이 현재 공인 IP를 감지합니다.
  2. IP가 변경된 경우 PCS가 NSL.SH 라우팅을 업데이트합니다.
  3. sslip.io 도메인도 IP 기반이므로 자동으로 업데이트됩니다.

더 빠른 감지가 필요하면:

  • 관리자 패널 → 상태에서 지금 실행을 클릭하여 즉시 자가 점검을 실행하세요.
  • 재부팅 후에는 @reboot 자가 점검이 자동으로 실행됩니다.

대역폭 고려사항

얼마나 많은 대역폭이 필요한가?

사용 방식에 따라 다릅니다:

사용 사례권장 대역폭
문서 사이트 / 블로그업로드 5 Mbps
개인 클라우드 (파일, 메모)업로드 10 Mbps
사진 갤러리 (Immich)업로드 20 Mbps
미디어 스트리밍 (Jellyfin)동시 스트림당 업로드 30+ Mbps

대역폭 확인

내장 속도 테스트를 사용하세요:

  1. 관리자 패널 → 리소스 → 네트워크 탭으로 이동합니다.
  2. 네트워크 속도 테스트 실행을 클릭합니다.
  3. 다운로드 및 업로드 속도를 확인합니다.

DNS 구성

NSL.SH 도메인

.nsl.sh 도메인의 경우 DNS가 Yundera에 의해 자동으로 관리됩니다. 별도의 구성이 필요 없습니다.

SSLIP.IO 도메인

<ip>.sslip.io 도메인은 IP 기반 와일드카드 DNS 서비스입니다. 도메인 이름의 IP를 기반으로 자동 해석됩니다. 구성이 필요 없습니다.

커스텀 도메인

커스텀 도메인에 대해서는 커스텀 도메인관리자 패널 → 도메인의 상세 설정을 참조하세요.

네트워크 문제 해결

터미널에서 빠른 확인

# 인터넷 연결 확인
ping -c 3 8.8.8.8

# DNS 해석 확인
nslookup yourdomain.nsl.sh

# Caddy 실행 여부 확인
docker ps | grep caddy

# Caddy 오류 로그 확인
docker logs caddy --tail 50

# 현재 공인 IP 확인
curl -s ifconfig.me

# 수신 대기 중인 포트 확인
sudo ss -tlnp | grep -E '(80|443)'

더 많은 네트워크 문제는 문제 해결을 참조하세요.