Openvidu로 SFU서버 구축하기

Muji1412·2025년 7월 7일
post-thumbnail

무조건 HTTPS 환경에서 돌릴것

webRTC는 무조건 https 환경에서만 작동한다. http 환경에서 작업할 생각하지 말고 SSL 인증서 발급받자. selfsign으로 시작하면 본인만 피를 본다.

remote-ssh 로 리눅스 서버를 접속하는걸 추천한다.

https://velog.io/@dkdldhels10/putty-안쓰고-Vscode로-리눅스-접속이-가능하다

GCP 기준으로 작성하겠다.
사실 4vCPU + 16기가가 적합하지만, 최소사양으로 굴려야하므로 2vCPU + 8기가로 구성하였다.
본인이 서버용량에 여유가 있다면, 4vCPU 16gb 램 이상의 스펙을 추천한다.

실행환경 = 우분투 24.04 LTS 버전, 2vCPU + 8gb ram + 10GB ssd

기본 패키지 설치

bashsudo apt update && sudo apt upgrade -y
sudo apt install curl wget nano -y

도커 설치

오픈비두는 도커 컴포즈를 기반으로 돌아가는 시스템이다. 무조건 도커가 필요하다.

bash# Docker 공식 GPG 키 추가
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# Docker 저장소 추가
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Docker 설치
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y

# Docker 서비스 시작 및 자동 시작 설정
sudo systemctl start docker
sudo systemctl enable docker

# 현재 사용자를 docker 그룹에 추가 (재로그인 필요)
sudo usermod -aG docker $USER

방화벽 세팅

시그널링, 오픈비두, 쿠렌토 등 여러가지 포트가 필요하므로 열어줘야 한다.

sudo ufw allow 22/tcp      # SSH
sudo ufw allow 80/tcp      # HTTP
sudo ufw allow 443/tcp     # HTTPS
sudo ufw allow 3478/tcp    # STUN/TURN
sudo ufw allow 3478/udp    # STUN/TURN
sudo ufw allow 5442/tcp    # OpenVidu Server
sudo ufw allow 5443/tcp    # OpenVidu Server
sudo ufw allow 40000:57000/tcp  # Kurento Media Server
sudo ufw allow 40000:57000/udp  # Kurento Media Server
sudo ufw allow 57001:65535/tcp  # TURN relay
sudo ufw allow 57001:65535/udp  # TURN relay# 방화벽 활성화
sudo ufw --force enable

또한, GCP나 AWS의 방화벽 설정도 열어줘야한다.

(http, https 포트는 이미 열려있다는 가정 하에 작성, 없다면 80, 443번 포트도 열어줄것)
(GCP라면 간단히 서버 수정에서 http, https 허용을 눌러 방화벽을 추가해주자)

# GCP 콘솔에서 입력하거나, 본인이 직접 방화벽에서 설정해줘도 된다.

gcloud compute firewall-rules create openvidu-turn \
  --allow tcp:3478,udp:3478 \
  --source-ranges 0.0.0.0/0 \
  --description "OpenVidu TURN Server"

gcloud compute firewall-rules create openvidu-api \
  --allow tcp:4443 \
  --source-ranges 0.0.0.0/0 \
  --description "OpenVidu API Dashboard"

gcloud compute firewall-rules create openvidu-webrtc \
  --allow tcp:40000-65535,udp:40000-65535 \
  --source-ranges 0.0.0.0/0 \
  --description "OpenVidu WebRTC Media Ports"

Openvidu 설치

여기서 가끔 도커 관련 오류가 터진다. 권한/그룹 문제다.

sudo usermod -aG docker $USER

# 입력 후 재접속해주거나, 그냥 sudo reboot을 해서 확실하게 적용시키자.

groups

# 명령어를 입력해 여러가지 프로그램 중 docker 가 있는지 확인해보자. 있으면 성공이다.
curl -k https://s3-eu-west-1.amazonaws.com/aws.openvidu.io/install_openvidu_latest.sh | bash

하고 기다리다 보면.. 짜잔! 오픈비두 파일들이 생긴다.


원래는 root로 들어가서, /opt 에 설치하는걸 권장하고 있다.
하지만 서비스 환경이 아니라, 포폴용으로 이 계정 하나만 사용하므로 내 디렉토리에 설치하도록 했다.
편하니까

오픈비두 세팅

오픈비두는 간단한 세팅이 필요하다.
도메인만 있다면 굳이 selfsign으로 들어갈 필요도 없이,
자기가 알아서 let's encrypt로 SSL 인증서까지 발급해준다.

# openvidu 폴더에서 .env파일 열기 -
# vscode 사용중이라면 nano, vi 사용하지말고 익스플로러에서 열자. 저장만 ctrl+s로 해주면 끝!
nano .env

# 서버의 공인 IP 주소 또는 도메인명, 도메인을 하나 발급받자.
DOMAIN_OR_PUBLIC_IP=your_server_public_ip

# OpenVidu 접근을 위한 비밀키, 매우 긴 번호를 추천한다. 아래 주소에서 하나 만들자.
# https://www.avast.com/random-password-generator#pc

OPENVIDU_SECRET=your_strong_secret_password

# 인증서 타입 - selfsigned 으로 해도 되지만, webrtc는 사실상 HTTPS 환경이 필수다. 그냥 만드는게 낫다.
CERTIFICATE_TYPE=letsencrypt

오픈비두 실행

cd openvidu

./openvidu start

이후 오픈비두가 주는 링크를 들어가보면 된다. call은 따로 설정해줘야 하므로,
위에 설정한 아이피 or 도메인/dashboard 로 접속한 후,

ID = OPENVIDUAPP
PW = your_strong_secret_password (아까 위에서 입력한 OPENVIDU_SECRET값)
을 입력해서 테스트 해볼수 있다.

끝! 정말 쉽다.

profile
박치기공룡의 개발일지

0개의 댓글