UDP·TCP 직접 받기 (공개 포트)

문서

앱 주소(내앱.onpod.ai)는 웹(HTTPS) 통신만 지나가요. 그래서 UDP를 쓰는 화상통화 서버나 게임 서버, 웹이 아닌 TCP(예: MQTT)를 쓰는 앱은 그동안 올릴 수 없었어요. 공개 포트를 켜면 onpod의 고정 주소(서버 2대)가 그 포트를 열어 내 앱으로 그대로 전달해요. 앱이 돌아가는 서버는 계속 비공개예요.

코딩 에이전트한테 이렇게 말하세요

“이 화상통화 서버(SFU)를 올리고 UDP 포트를 열어줘”

이럴 때 쓰세요

  • WebRTC 미디어 서버(SFU)·TURN 서버처럼 UDP로 영상·음성을 주고받을 때
  • 게임 서버, MQTT 브로커, VoIP처럼 웹이 아닌 통신을 받아야 할 때

이렇게 돼요

  • 배포할 때 --public-port udp 한 줄만 더하면 번호를 자동으로 받아요(번호를 정하려면 udp:30001). 같은 번호를 UDP와 TCP가 각각 쓸 수도 있어요.
  • 받은 번호는 앱 안에서 환경변수 ONPOD_PUBLIC_UDP_PORT(TCP는 ONPOD_PUBLIC_TCP_PORT)로 읽을 수 있고, 앱은 그 번호로 열어 두면 돼요. 밖에서 보이는 번호와 앱 안의 번호가 같아서, 앱이 자기 주소를 상대에게 알려 주는 방식(화상통화 등)도 그대로 동작해요.
  • 접속 주소(IP 2개)는 ONPOD_PUBLIC_IPS에 들어 있어요. 어느 쪽으로 접속해도 같은 앱에 닿아요.
  • 내가 연 포트와 사용량은 onpod public-ports로 볼 수 있어요.

요금

  • 포트가 열려 있는 동안 포트 1개당 월 $2(약 2,700원)이 일할로 청구돼요. 앱을 끄면 포트도 닫히고 요금도 멈춰요.
  • 앱에서 인터넷으로 나가는 데이터(송신)는 1GB당 약 198원이에요. 인터넷에서 앱으로 들어오는 데이터(수신)는 무료예요.
  • 허용만으로는 요금이 생기지 않아요. 앱을 포트와 함께 켠 시점부터 계산돼요. 사용량은 onpod public-ports에서 포트별로 볼 수 있어요.

알아 둘 점

  • 지금은 비공개 베타예요. 계정마다 운영팀이 허용해야 쓸 수 있어요 — 필요하면 지원팀에 요청해 주세요.
  • onpod.ai 클라우드에서만 돼요. 회사 안에 설치한 onpod(온프렘)에는 인터넷으로 중계해 주는 서버가 없어서 쓸 수 없어요.
  • 항상 켜져 있는 단일 앱·봇/워커 앱에서만 돼요. 무료(절전형)·자동 확장 앱은 쓸 수 없어요.
  • 기본으로는 앱에 접속한 사람의 실제 IP가 보이지 않고 onpod 주소로 보여요. TCP 포트는 만들 때 proxy=v1 또는 proxy=v2를 켜면 모든 연결 맨 앞에 접속자 IP:포트가 한 줄(PROXY protocol)로 앞서 와요. 켜면 앱이 그 줄을 반드시 읽어야 하고, 이 주소는 접속 기록·1차 거름용이에요(같은 서버망의 다른 앱이 헤더를 직접 써서 속일 수 있어 단독 인증으로는 쓰지 마세요). 지금은 API 요청의 proxy_protocol 값으로 켜고, CLI 옵션은 다음 CLI 버전부터 써요.
  • 앱을 다시 배포하면 몇 초 안에 새 위치로 이어지지만, 그 순간 연결은 끊겨요. 접속하는 쪽이 다시 연결하게 만들어 주세요.
  • 인터넷에 직접 열리는 포트라 앱이 스스로 인증·속도 제한을 챙겨야 해요. 회사 방화벽 안의 사용자는 UDP가 막혀 있을 수 있어요.