WebRTC - EC2 Coturn 서버 구축

2025. 4. 3. 22:08·develop

Spring boot(Signaling 서버)와 kurento(Media Server)로 로컬에서 음성 스트리밍 개발을 진행하였습니다.

배포 환경에서 음성 스트리밍을 진행하기 위해 Conturn 서버를 구축하게되었습니다.

클라이언트 → Spring Boot (Signaling 서버) → Kurento (Media Server) → Coturn (STUN/TURN) → 클라이언트

  1. 클라이언트 → Spring Boot (call 요청)
  2. Spring Boot → Kurento (SDP Offer 전달)
  3. Spring Boot → 클라이언트 (SDP Answer 전달)
  4. 클라이언트 → Coturn (ICE Candidate 요청)
  5. 클라이언트 → Spring Boot (ICE Candidate 전달)
  6. Kurento → Coturn (ICE 연결)
  7. 오디오 스트리밍 시작
    1. 클라이언트와 Kurento 간 패킷 전송 시작
    2. Kurento는 미디어를 중계하여 오디오 스트리밍을 활성화.

 

 

📍EC2 인스턴스 생성

coturn 서버를 구축하기위해 EC2 인스턴스를 생성합니다.

 

보안 그룹에 들어가줍니다.

 

Coturn 서버에 인바운드 규칙은 다음과 같습니다.

  • UDP/TCP 3478, 5389
  • UDP/TCP 49152~65535

 

📍Coturn 설치

EC2에 접속해 봅시다.

 

 

sudo apt update

sudo apt-get install coturn

EC2에 coturn을 설치합니다.

 

 

sudo vim /etc/default/coturn

TURNSERVER_ENABLED=1 주석을 해제해줍니다.

 

 

sudo vi /etc/turnserver.conf

 

아래에 내용을 기입해줍니다.

users-file=/var/lib/turn/turndb       # 사용자 계정을 저장하는 DB 파일 경로  
userdb=/var/lib/turn/turndb           # (동일) 사용자 DB 파일 경로 지정 (중복 사용 가능)  

listening-ip=0.0.0.0                  # TURN 서버가 수신 대기할 IP (0.0.0.0이면 모든 인터페이스에서 수신)  
external-ip=[공인IP]                  # 외부에서 접근 가능한 퍼블릭 IP 주소 (NAT 뒤에 있는 경우 중요)  
relay-ip=0.0.0.0                      # 클라이언트에 릴레이될 미디어 IP (기본은 listening-ip와 동일)  

realm=도메인                           # 인증용 Realm (TURN 사용자 인증 시 사용됨)  
server-name=turnserver               # TURN 서버 이름 (로그 등에 표시용, 선택 항목)  

listening-port=3478                  # TURN 서버가 수신 대기할 포트 (기본 포트, TCP/UDP 모두 가능)  

min-port=49152                       # 미디어 릴레이에 사용할 최소 포트 (UDP) – EC2 보안 그룹에서 이 범위 열어야 함  
max-port=65535                       # 미디어 릴레이에 사용할 최대 포트  

lt-cred-mech                         # long-term credential mechanism 활성화 (TURN 사용자 인증을 위한 옵션)  
user=[아이디]:[비밀번호]              # TURN 사용자 계정 (username:password 형식)

 

 

sudo service coturn restart

 

재시작을 진행합니다.

 

 

📍테스트

테스트 사이트 접속

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

 

TURN URL : turn:<turn 서버 공인 ip>:3478

TURN username : 설정한 유저이름

TURN password : 설정한 비밀번호

 

 

정상적으로 작동하는지 확인합니다.

 

 

 

참고 블로그

https://realizetoday.tistory.com/57

'develop' 카테고리의 다른 글

ResponseDto 개선하기  (3) 2025.08.19
네이버 로그인 검수 승인받는 법  (0) 2025.04.03
Spring Security 권한 여러 개 (학생/강사 테이블 분리된 인증 서비스 구현)  (0) 2025.01.27
새로운 팀원들 / 코드 리뷰, 테스트 코드를 경험하다.  (1) 2024.12.24
Spring Batch 정리  (2) 2024.10.01
'develop' 카테고리의 다른 글
  • ResponseDto 개선하기
  • 네이버 로그인 검수 승인받는 법
  • Spring Security 권한 여러 개 (학생/강사 테이블 분리된 인증 서비스 구현)
  • 새로운 팀원들 / 코드 리뷰, 테스트 코드를 경험하다.
VANEL
VANEL
break;
  • VANEL
    VANEL의 블로그
    VANEL
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 오류
      • develop
      • 과거 기록
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 이전 블로그
  • 공지사항

  • 인기 글

  • 태그

    코드리뷰
    Spring boot
    테스트코드
    coturn
    JWT
    WebRTC
    spring security
    Spring
    restdocs
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
VANEL
WebRTC - EC2 Coturn 서버 구축
상단으로

티스토리툴바