🗂️ INDEX

글 작성자: Universe7202

 

1. 개요

몇년 전 '그' 사건으로 인해 twitch 1080p 가 막히고 다시보기 또한 볼 수 없게 되었다.

필자는 `streamlink`를 이용하여 녹화를 잘 하고 있었지만, 어느순간 1080p가 막히게 되면서 방법을 찾다가 gluetun docker를 접하게 되었다.

 

2. 환경 세팅

다음과 같은 사전 세팅이 필요하다.

  • synology nas에 ssh 접속 설정
  • docker 및 docker-compose 설치
  • proton vpn 회원가입
    • 회원 가입 후 아래 링크에서 3번까지 진행하기 
    • https://young-cow.tistory.com/95
    • 위에서 다운로드 받은 openvpn config 파일, openvpn id 및 pw 확인
  • twitch API key 발급 (아래 4번에서 설명)

 

3. gluetun container 생성

gluetun 환경 구성을 위해 아래 docs에 잘 설명되어 있다. 

https://github.com/qdm12/gluetun-wiki/tree/main/setup#setup

 

필자는 openvpn 을 이용하여 vpn docker를 구성할 것이므로 다음과 같은 순서를 따라하면 된다.

(자세한 설명은 https://github.com/qdm12/gluetun-wiki/blob/main/setup/openvpn-configuration-file.md)

 

3.1 아까 위에서 다운로드 받은 openvpn config 파일을 synology nas의 작업 폴더에 저장한다. 예를 들어 /homes/my-name/gluetun/ 폴더에 openvpn config 파일을 저장한다. 파일 이름은 `openvpn-config.ovpn` 이라고 가정한다.

3.2 docker-compose.yaml 파일을 다음과 같이 작성한다.

version: "3"
services:
  gluetun:
    image: qmcgaw/gluetun:v3
    container_name: gluetun
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    volumes:
      - [openvpn 파일이 저장된 폴더 경로]:/gluetun ## 수정 필요
    environment:
      - VPN_SERVICE_PROVIDER=custom
      - OPENVPN_CUSTOM_CONFIG=/gluetun/openvpn-config.ovpn  ## 수정 필요, openvpn 파일 이름
      - OPENVPN_USER= ## 수정 필요 openvpn id
      - OPENVPN_PASSWORD= ## 수정 필요 openvpn password
    restart: unless-stopped

 

3.3 nas에 ssh 연결하여 작업 폴더로 이동하고, 다음과 같은 명령어를 입력하여 gluetun container를 생성한다.

docker-compose up -d

 

3.4 다음과 같은 명령어를 입력하여 gluetun container가 정상적으로 실행되었는지 확인한다.

gluetun container 가 보이지 않거나, STATUS 값이 계속 restarting 이거나 unhealthy 인 경우 `docker-compose logs` 명령어를 입력하여 에러 로그를 확인하여 구글링,,

$ sudo docker ps
CONTAINER ID   IMAGE                                 COMMAND                  CREATED             STATUS                       PORTS                                       NAMES
e9331ef25557   qmcgaw/gluetun:v3                     "/gluetun-entrypoint"    About an hour ago   Up About an hour (healthy)   8000/tcp, 8388/tcp, 8888/tcp, 8388/udp      gluetun

 

3.5 gluetun container가 openvpn 에 연결이 잘 되었는지 확인하기 위해 다음과 같은 명령어를 입력한다. 출력 값이 본인이 openvpn 설정 파일을 다운로드 받은 국가로 출력 된다면 제대로 연결된 것이다.

sudo docker run --rm --network=container:gluetun alpine:3.14 sh -c "apk add wget && wget -qO- https://ipinfo.io"

 

4. streamlink container 생성 및 gluetun container의 네트워크에 연결하기

3번은 gluetun container를 생성하기 위한 과정이었다면, 녹화 전용 container를 만들기 위해 하나의 docker-compose에서 네트워크 설정을 해줘야 한다.

 

따라서 기존의 docker-compose.yaml 파일에서 streamlink container를 추가한다.

image는 ubuntu로 했지만, 기존에 사용했던 streamlink container를 그대로 사용해도 무관하다.

version: "3"
services:
  gluetun:
    image: qmcgaw/gluetun:v3
    container_name: gluetun
    cap_add:
      - NET_ADMIN
    devices:
      - /dev/net/tun:/dev/net/tun
    volumes:
      - [openvpn 파일이 저장된 폴더 경로]:/gluetun ## 수정 필요
    environment:
      - VPN_SERVICE_PROVIDER=custom
      - OPENVPN_CUSTOM_CONFIG=/gluetun/openvpn-config.ovpn  ## 수정 필요, openvpn 파일 이름
      - OPENVPN_USER= ## 수정 필요 openvpn id
      - OPENVPN_PASSWORD= ## 수정 필요 openvpn password
    restart: unless-stopped
    
    
    ## 아래부터 추가됨
  streamlink:
    image: ubuntu         ## 혹은 기존에 사용하던 streamlink 이미지
    command: tail -F anything    ## ubuntu container 안꺼지게 ㅇㅇ
    container_name: streamlink
    volumes:
      - [저장할 녹화 파일 host 폴더 경로]:/app/data  ## host volume 와 container volumne 공유
    network_mode: "container:gluetun"  ## glue container 네트워크 사용
    depends_on: ["gluetun"]  ## glue container 가 정상적으로 실행되면 streamlink container 시작

 

기존에 녹화 관련 container가 있다면 아래부터는 읽지 않아도 되지만, ubuntu 이미지를 이용하여 streamlink를 처음 사용한다면, 아래 링크에 설명되어 있는대로 진행한다.

https://tgd.kr/s/funzinnu/34572047?category=2358396

 

위 설명 중 녹화 python 코드가 있는데(필자는 코드를 일부분 수정함), 녹화 영상 저장 경로를 /app/data 로 지정해야 host volume에서 이를 열람할 수 있다.

 

최종적으로 gluetun 을 이용하여 vpn 서버를 연결하고 이 container에 연결한 streamlink로 twitch 1080p를 녹화할 수 있게 되었다.