집에 NAS를 들이는 가장 주된 이유가 미디어 관리와 토렌트 다운로드가 아닐까 합니다. 그래서 이번 포스팅은 NAS 에서 빼려도 뺄 수 없는 토렌트와 미디어 서버 만들기입니다.
NAS 는 보통 24시간 돌아갑니다. 그러니 자동화 할 수 있으면 편하겠죠. 그러니 되는 만큼 자동화 해보겠습니다. 자동으로 미디어를 다운로드 하고, 정리하고, 스티리밍 할 수 있는 올인원 미디어 서버를 만들겠습니다. 토렌트 클라이언트는 여기 포함됩니다.
미디어 서버를 구성하는 프로그램은 아래 5개입니다.
- Sonarr 와 Radarr 은 각각 시리즈 (드라마나 TV 쇼 등) 와 영화를 자동으로 검색하고, 다운로드 받고, 정리하고, 모니터링 하는 프로그램입니다.
- Jackett 은 토렌트 인덱서입니다. 여러 토렌트 사이트의 자료들을 인덱싱해 제공해 줍니다.
- GreenTunnel 은 nodejs 기반의 DPI 우회 프로그램입니다. 토렌트 사이트를 우회하여 검색할 수 있게 해 줍니다.
- Transmission 은 매우 유명하고 호환성 높고 가벼운 토렌트 클라이언트입니다.
- PLEX 는 트랜스코딩 기능이 있는 대표적인 미디어 서버 프로그램입니다. PLEX-PASS 라는 유료 플랜을 구독하시는 걸 추천합니다.
본 포스팅은 PLEX-PASS 를 기준으로 진행됩니다.
유저가 Sonarr 에 어떠한 시리즈를 추가하면 Sonarr 은 Jackett 을 통해 토렌트를 검색하고 Transmission 을 이용해 다운로드 받은 다음 자동으로 정리합니다. 그리고 PLEX 에서 보면 되는 거죠.
정리하면 대충 이런 형태입니다.
Jail 만들기
이름은 Media
자동 시작 체크해 주세요.
Dataset 만들기
임시 파일들이 저장될 dataset 을 만들겠습니다.
Temp/temp/transcoding_1
트랜스코딩 시 임시 파일을 저장할 dataset 입니다.
Temp/temp/transcoding_2
PLEX가 Sync 작업 등을 할 경우 트랜스코딩 디렉토리가 아닌 Cache 디렉토리를 임시 디렉토리로 사용합니다. 그곳에 마운트 할 dataset 입니다.
Temp/tmp_download/torrent
토렌트 다운로드시 미완료된 파일을 저장할 dataset 입니다.
마운트 포인트 설정
iocage console Media
감옥으로 로그인 해 주세요.
mkdir /mnt/Movie /mnt/Drama
미디어가 마운트 될 디렉토리를 만들었습니다. 다른 미디어를 마운트하려면 디렉토리를 더 만들어 주면 됩니다.
mkdir /mnt/Transcoding
트랜스코딩시 임시 파일이 저장될 디렉토리입니다.
mkdir -p /usr/local/plexdata-plexpass/Plex\ Media\ Server/Cache/
plex-pass 를 설치한다는 가정 하에, 캐시 파일이 저장되는 기본 위치입니다. 만약 plex-pass 를 구독하고 있는 것이 아니라면 /usr/local/plexdata/Plex\ Media\ Server/Cache/ 디렉토리를 만들어 주면 됩니다.
생성한 디렉토리에 마운트 포인트를 잡아 줘야 하는데, 자신의 시스템 환경에 따라 경로가 88자가 넘어가면 마운트가 불가능 할 수도 있습니다.
필자와 동일한 환경이라면 /mnt/System/iocage/jails/PLEX/root/usr/local/plexdata\ plexpass\ Plex-Media-Server/Cache 가 전체 경로이고, ‘\ ‘ 는 공백문자 하나로 처리되니 총 86자로 아슬아슬하게 마운트가 가능합니다.
mkdir /mnt/tmp_download
토렌트 다운로드 시 임시 저장 위치입니다.
mkdir /mnt/downloads
미디어 외의 다운로드 받은 파일을 저장할 디렉토리입니다.
exit
iocage stop Media
필요한 디렉토리를 모두 만들었다면 감옥에서 나와 감옥을 정지해 줍니다.
그 후 WebUI 에서 마운트 포인트를 잡아 줍니다.
- /mnt/Data/Media/Movie ↔ /mnt/Movie
- /mnt/Data/Media/Drama ↔ /mnt/Drama
- /mnt/Data/Downloads ↔ /mnt/Downloads
- /mnt/Temp/Transcoding_1 ↔ /mnt/Transcoding
- /mnt/Temp/Transcoding_2 ↔ /usr/local/plexdata-plexpass/Plex\ Media\ Server/Cache/
- /mnt/Temp/tmp_download/torrent ↔ /mnt/tmp_download
모두 연결해 줍니다.
그룹 만들기
권한 문제를 막기 위해 그룹을 미리 만들어 두겠습니다.
iocage console Media
감옥에 로그인 해 줍니다.
pw groupadd downloader -g 3000
pw groupadd media -g 8675309
downloader 와 media 그룹을 만들었습니다. GID 를 일치시켜 줌으로서 호스트와 권한이 일치하도록 하였습니다.
패키지 설치
mono 6.8 이 패키지로 추가되었습니다. 이제 mono를 패치 후 컴파일 하는 귀찮은 과정 없이 설치할 수 있습니다.
그런데 문제가, mono 6.8 은 mono6.8 이라는 이름의 패키지로 올라가 있고, sonarr, radarr 등의 mono 를 이용하는 패키지는 mono 패키지에 종속성이 있습니다.
결론적으로, sonarr 를 패키지로 설치하기 위해서는 mono6.8 대신 mono 5.10 을 설치해야 하는 상황이 되는 것인데, 이는 좋지 않습니다.
그러니 sonarr, radarr, jackett 이 3가지 mono 를 이용하는 프로그램은 수동 설치하도록 하겠습니다.
pkg install mono6.8 transmission plexmediaserver-plexpass bash curl npm
만약 plex-pass 를 구독하고 있지 않다면 plexmediaserver-plexpass 대신 plexmediaserver 패키지를 설치해 주면 됩니다.
PVR 3종세트 설치
자동 설치 스크립트를 만들었습니다.
어렵지 않은 코드입니다. jackett, radarr, sonarr 를 다운로드 받고 설치 위치에 압축을 푼 뒤, 유저를 만들고 권한을 준 후 시작 스크립트를 등록하는 것입니다.
curl -sSL "https://gist.githubusercontent.com/rlagmlah/299638f43ce3344e4d7ec64fa9be2a4f/raw/c93a4958396536dda92f7e3ef7ab4643cf6832f4/pvr_stack_install.sh" | bash
반드시 jail 내부에서 실행하세요.
위 스크립트는 실험적입니다. 설치 과정에서 문제가 있다면 알려 주세요.
반응이 좋다면 다른 포스팅 또한 자동화 스크립트를 제공하는 것을 고려해보겠습니다.
그룹에 유저 추가
프로그램에서 권한 문제가 발생하지 않도록 앞서 만든 그룹에 여러 프로그램의 유저를 추가해 주겠습니다.
pw user mod radarr -G downloader -G media pw user mod sonarr -G downloader -G media pw user mod transmission -G downloader -G media pw user mod plex -G media
radarr, sonarr, transmission 에는 downloader 와 media 그룹을 보조 그룹으로 설정했고
plex는 media 를 보조 그룹으로 설정하였습니다.
디렉토리 권한 설정
chown -R plex:plex "/usr/local/plexdata-plexpass/Plex Media Server/Cache" chown -R plex:plex /mnt/Transcoding
PLEX 서버가 트랜스코딩에 사용할 디렉토리의 소유자를 plex 로 바꿔 주었습니다.
마치면서
패키지가 바뀌니 종속성에 혼란이 좀 옵니다. 이렇게 수동으로 설치하면 귀찮긴 하지만 sonarr 와 radarr v3 의 더 편리한 기능과 예쁜 ui를 만나실 수 있습니다.
기존 사용자라면 pkg remove sonarr radarr jackett mono 후 설치 지침을 따라 하시면 됩니다.
다음 포스팅에서는 PLEX 에 대해 간단하게 다룰 것입니다.