LiveKit 외부 IP 접속
작성일: 2026-07-19 · 한글 복구: 2026-09-07 서버 버전: 1.13.4. 아래 IP 및 상태는 기존 점검 기록이며 현재 접속 상태를 의미하지 않습니다.
| 질문 | 답변 |
|---|---|
| 외부에서 IP로 접속할 수 있나요? | 서버 바인딩, node-ip, 방화벽 및 포트 설정이 맞으면 가능합니다. |
| WebSocket 연결만 성공하면 통화도 되나요? | 미디어 연결은 별도입니다. node-ip가 127.0.0.1이면 외부 미디어 연결이 실패합니다. |
| 기록된 외부 URL | ws://125.131.238.28:7880 |
| 로컬 URL | ws://127.0.0.1:7880 또는 ws://localhost:7880 |
| 도메인 WSS | wss://meet.dev.tictechtoeai.com:7443 (Caddy 필요) |
2. 머신 네트워크 점검 기록
Section titled “2. 머신 네트워크 점검 기록”| 항목 | 값 | 비고 |
|---|---|---|
| 공인 IPv4 | 125.131.238.28 |
당시 인터페이스에서도 같은 IPv4 확인 |
| LiveKit HTTP/WS | TCP 7880 | --bind 0.0.0.0으로 모든 인터페이스에서 수신 |
| LiveKit RTC TCP | TCP 7881 | TCP 미디어 연결 |
| ICE UDP 범위 | UDP 50000-60000 | 기존 기본 설정 기준 |
| Windows 방화벽 | LiveKit 관련 인바운드 허용 규칙 존재 | livekit-server, LiveKit_UDP_50000 등 |
| Caddy | 80/443/7443 | 도메인 HTTPS/WSS에는 실행 필요 |
공인 IP는 회선에 따라 바뀔 수 있습니다. 실제 실행 전에 확인합니다.
Invoke-RestMethod -Uri 'https://api.ipify.org' -TimeoutSec 5Get-NetIPAddress -AddressFamily IPv4 | Where-Object { $_.IPAddress -notlike '127.*' }3. node-ip가 중요한 이유
Section titled “3. node-ip가 중요한 이유”LiveKit은 클라이언트에 미디어 연결에 사용할 주소를 알려 줍니다.
| 기동 옵션 | 결과 |
|---|---|
--node-ip 127.0.0.1 |
외부 클라이언트가 자기 자신의 루프백 주소로 미디어 연결을 시도하게 됨 |
--node-ip 125.131.238.28 |
해당 공인 IP를 미디어 연결 주소로 알림 |
| 자동 감지 | 네트워크 환경에 따라 선택된 주소가 달라지므로 로그 확인 필요 |
시그널링(WebSocket)과 미디어(WebRTC)는 별도 연결입니다. 방 입장 UI가 보여도 미디어 주소가 잘못되면 영상과 음성이 나오지 않을 수 있습니다.
4. 외부 IP로 기동하는 방법
Section titled “4. 외부 IP로 기동하는 방법”공인 IP 명시
Section titled “공인 IP 명시”아래 IP는 기존 기록의 예시입니다. 현재 공인 IP로 바꿔 실행합니다.
cd C:\Developments\LivekitDev\livekit.\bin\livekit-server.exe --config config.yaml --bind 0.0.0.0 --node-ip 125.131.238.28.\bin\livekit-server.exe --config config.yaml --bind 0.0.0.0 --node-ip 127.0.0.1이 옵션은 외부 미디어 접속용으로 사용하지 않습니다.
Get-NetTCPConnection -State Listen -LocalPort 7880,7881.\bin\livekit-server.exe --version기존 외부 접속 설정의 로그 예시:
nodeIP: "125.131.238.28"bindAddresses: ["0.0.0.0"]portHttp: 7880version: "1.13.4"개발용 config.yaml
Section titled “개발용 config.yaml”logging: level: infokeys: devkey: secret기존 점검에서는 짧은 secret에 대한 경고가 기록되었습니다. 외부 운영 시에는 개발 키를 교체하고, 토큰은 서버에서 발급합니다.
5. 클라이언트 접속 값
Section titled “5. 클라이언트 접속 값”| 필드 | 로컬 | 외부 IP 예시 |
|---|---|---|
| Server URL | ws://127.0.0.1:7880 |
ws://125.131.238.28:7880 |
| Room | my-room |
my-room |
| API Key / Secret | devkey / secret |
동일한 개발 설정 |
브라우저 외부 접속에는 HTTPS 페이지와 wss://meet.dev.tictechtoeai.com:7443을 사용합니다.
Avatar Bot이 서버와 같은 머신에서 실행된다면 로컬 주소를 사용할 수 있습니다. 의존성이 준비된 환경에서 실행합니다.
$env:LIVEKIT_URL = "ws://127.0.0.1:7880"$env:LIVEKIT_API_KEY = "devkey"$env:LIVEKIT_API_SECRET = "secret"$env:ROOM_NAME = "my-room"cd C:\Developments\LivekitDev\avatar_botuv run python avatar_bot.py외부 참가자도 봇과 같은 방 이름으로 접속합니다.
6. 열어야 하는 포트
Section titled “6. 열어야 하는 포트”| 포트 | 프로토콜 | 용도 |
|---|---|---|
| 7880 | TCP | HTTP API 및 WebSocket 시그널링 |
| 7881 | TCP | RTC over TCP |
| 50000-60000 | UDP | ICE 및 미디어 |
Windows 방화벽 규칙이 없을 때 관리자 PowerShell에서 추가하는 예시입니다.
New-NetFirewallRule -DisplayName "LiveKit-7880" -Direction Inbound -Protocol TCP -LocalPort 7880 -Action AllowNew-NetFirewallRule -DisplayName "LiveKit-7881" -Direction Inbound -Protocol TCP -LocalPort 7881 -Action AllowNew-NetFirewallRule -DisplayName "LiveKit-UDP-ICE" -Direction Inbound -Protocol UDP -LocalPort 50000-60000 -Action Allow공유기나 클라우드 보안 그룹이 있다면 같은 포트의 전달 및 인바운드 허용도 확인합니다. 기존 점검에서는 공인 IP가 NIC에 직접 설정되어 있어 호스트 방화벽이 주요 확인 대상이었습니다.
7. 브라우저와 HTTPS 제약
Section titled “7. 브라우저와 HTTPS 제약”| 환경 | 카메라와 마이크 |
|---|---|
http://localhost |
로컬 개발 예외로 사용 가능 |
| 공인 IP의 일반 HTTP | 보안 컨텍스트가 아니므로 getUserMedia 사용 불가 |
| 신뢰할 수 있는 인증서의 HTTPS 도메인 | 권한 허용 후 사용 가능 |
외부 PC나 모바일 브라우저에서는 HTTPS 페이지와 WSS 연결을 함께 사용합니다. 네이티브 클라이언트의 일반 WS 연결 가능 여부와 브라우저의 카메라 권한은 별개입니다.
8. 시나리오별 확인
Section titled “8. 시나리오별 확인”| 시나리오 | 조건 |
|---|---|
| 같은 PC에서 localhost 연결 | 서버 실행 |
| 같은 PC에서 공인 IP 연결 | node-ip, 방화벽 및 네트워크의 루프백 경로 확인 |
| 외부 PC의 WS 시그널링 | 서버 실행 및 TCP 7880 접근 허용 |
| 외부의 실제 영상·음성 | 외부에서 도달 가능한 node-ip 및 미디어 포트 |
| 외부 브라우저 카메라 | HTTPS 페이지, 유효한 인증서, 사용자 권한 |
| 도메인 WSS 7443 | Caddy 실행 및 LiveKit 프록시 설정 |
9. 보안 주의
Section titled “9. 보안 주의”- 공인 IP의 7880 포트 개방은 LiveKit 서버를 인터넷에 노출합니다.
devkey/secret은 개발 예시이며 외부 상시 서비스용으로 사용하지 않습니다.- 운영 환경에서는 클라이언트에 secret을 넣지 않고 서버에서 토큰을 발급합니다.
- 테스트 종료 후 필요 없는 외부 접근 규칙을 정리합니다.
10. 체크리스트
Section titled “10. 체크리스트”- LiveKit 실행 및
--bind 0.0.0.0확인 - node-ip가 실제 공인 IP 또는 외부에서 도달 가능한 주소인지 확인
- TCP 7880/7881 및 UDP 50000-60000 설정 확인
- 외부 장치에서 시그널링과 실제 미디어를 각각 테스트
- 브라우저는 Caddy를 통한 HTTPS/WSS 사용
- 외부 운영 전 개발 키 교체
11. 관련 경로
Section titled “11. 관련 경로”| 경로 | 설명 |
|---|---|
livekit/bin/livekit-server.exe |
서버 실행 파일 |
livekit/config.yaml |
서버 설정 |
livekit_video_call/ |
Flutter 클라이언트 |
avatar_bot/ |
상주 아바타 봇 |
Caddyfile |
HTTPS 및 WSS 프록시 |
start_all.bat |
기존 일괄 실행기. D 드라이브 경로 확인 필요 |
관련 문서: 시작 가이드, HTTPS 오류 해결, 서버 업데이트.