Docker와 OBS를 이용해 자체 서버 스트리밍 하기

 

서론

어느날 친구가 자체 서버를 사용한 스트리밍을 하고싶은데 어떻게 하면 좋을지 물어왔다. 코로나 시대에 나갈수도 없으니, 친구들과 온라인으로 화면 공유를 하고싶다는 이유에서였다. 유튜브나 다른 스트리밍 서비스를 이용하긴 싫다나?
하여튼 친구를 위해서 OBS와 도커를 이용하여 NginX rtmp 서버를 쉽게 구축하여 스트리밍 하는 방법을 서술하고자 한다.


도커를 이용한 서버 구축하기

일단, 화면공유를 위해 사용할 프로그램은 OBS이다. 워낙에 유명한 프로그램이라서 다들 아시리라 생각한다. OBS를 사용하기위해선 rtmp 서버가 필요한데, 이를 직접 구축하는건 여러모로 귀찮으니 남이 만들어놓은 도커를 사용하기로 한다. 도커허브를 보면 여러 서버가 있지만, 그중에서도 최근에 업데이트가 되었고, 웹을 통한 스트리밍도 지원하는게 있어서 그걸 사용하기로 했다. 기본적인 사용방법은 아래 도커허브 헤이지에 가면 기술되어있다. https://hub.docker.com/r/alqutami/rtmp-hls

usage 란을 보면 어떻게 사용하면 될지 다 써져있다. 도커가 뭔지 몰라도 일단 따라하면 서버를 킬 수 있다.

> docker run -d -p 1935:1935 -p 8080:8080 alqutami/rtmp-hls

터미널에서 이 명령어를 실행하면 해당 도커 컨테이너가 실행되는데, 이 명령어에서 중요한 부분은 ‘-p’ 부분이다. 이 명령어는 컴퓨터의 포트와 해당 컨테이너의 포트를 연결시켜주는 명령어로, : 의 앞부분이 컴퓨터의 포트, : 뒷부분이 컨테이너의 포트이다. 뒷부분의 포트는 건드리지말고, 앞부분의 포트를 해당컴퓨터의 포트환경에 맞게 설정해주자. 나의 경우 1935포트가 사용불가능해서 1936으로 변경하였고, 8080 포트도 변경하였다.

> docker run -d -p <포트번호1>:1935 -p <포트번호2>:8080 alqutami/rtmp-hls:latest-alpine
583bd8bd58f23bb2887b35fbccd37c5e757eb1826c08bf349b5b44b66df1b5e9

도커가 잘 실행되었다면 위와같이 알수없는 해시 값이 뜰것이다. 축하한다 벌써 80퍼센트는 다했다.

OBS를 이용해 서버로 방송 송출하기

이제 OBS를 실행하고 제어 - 설정을 누른다. 다음과 같은 화면이 뜰텐데, 방송을 누르고 서비스란을 사용자 지정으로 변경한다.

그뒤 서버란에는 rtmp://localhost:<포트번호1>/live 를 입력하고 스트림 키는 아무거나 입력해도 되지만 test를 입력해주자 rtmp의 포트번호는 앞서 도커를 실행할때 사용한 포트를 사용하여주면 된다. 이제 OBS에서 방송 시작을 누른뒤 http://localhost:<포트번호2>/players/hls.html 에 들어가면 다음과 같이 라이브 하는것이 보인다.

이렇게 docker와 obs를 이용한 자체 서버 스트리밍에 성공하였다.