synology nas에서 gluetun docker를 이용하여 twitch 1080p 자동 녹화 서버 만들기
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를 녹화할 수 있게 되었다.
'ETC' 카테고리의 다른 글
2022년 마지막 날을 정리하며 (0) | 2022.12.31 |
---|---|
[android] - macos m2 android virtual device (emulator) 검은 화면 해결 방법 (0) | 2022.09.20 |
[수상] - 제 3회 KOSPO 웹서비스 정보보안 경진대회 최우수상 (0) | 2022.09.16 |
2021년을 정리하며.. (1) | 2021.12.31 |
댓글
이 글 공유하기
다른 글
-
2022년 마지막 날을 정리하며
2022년 마지막 날을 정리하며
2022.12.31 -
[android] - macos m2 android virtual device (emulator) 검은 화면 해결 방법
[android] - macos m2 android virtual device (emulator) 검은 화면 해결 방법
2022.09.20 -
[수상] - 제 3회 KOSPO 웹서비스 정보보안 경진대회 최우수상
[수상] - 제 3회 KOSPO 웹서비스 정보보안 경진대회 최우수상
2022.09.16 -
2021년을 정리하며..
2021년을 정리하며..
2021.12.31