Spring boot(Signaling 서버)와 kurento(Media Server)로 로컬에서 음성 스트리밍 개발을 진행하였습니다.
배포 환경에서 음성 스트리밍을 진행하기 위해 Conturn 서버를 구축하게되었습니다.

클라이언트 → Spring Boot (Signaling 서버) → Kurento (Media Server) → Coturn (STUN/TURN) → 클라이언트
- 클라이언트 → Spring Boot (call 요청)
- Spring Boot → Kurento (SDP Offer 전달)
- Spring Boot → 클라이언트 (SDP Answer 전달)
- 클라이언트 → Coturn (ICE Candidate 요청)
- 클라이언트 → Spring Boot (ICE Candidate 전달)
- Kurento → Coturn (ICE 연결)
- 오디오 스트리밍 시작
- 클라이언트와 Kurento 간 패킷 전송 시작
- 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 : 설정한 비밀번호

정상적으로 작동하는지 확인합니다.
참고 블로그
'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 |