2017-10-11

Synology NAS에서 Plex Media Server를 Docker로 설치하기

Plex는 사실 Docker로 사용할 이유가 없기는 하지만, 시놀로지와 같은 이상한 리눅스 환경이면 Docker로 사용하는게 사실 더 마음편한 방법일 수도 있다. 관리면에서도 그렇고, 성능면에서도 그렇고. Plex 관련 커뮤니티에서 Plex를 도커로 설치하는 방법에 관해 묻는 방법을 몇번 보아서, 한번 제대로 설명글을 써야겠다는 생각이 들었다.

이 글은 시놀로지 중심으로 설명한 글이나, 비슷한 방법으로 일반 리눅스 환경에도 사용할 수 있다.

Plex 유저 만들기

제어판 → 사용자 → 생성에서 Plex 유저를 사용해준다. 이는 Docker 내 Plex 컨테이너와 공유폴더를 제대로 설정해주기 위함이다. 이 과정이 없으면 추후 파일/폴더권한 관리가 좀 귀찮아진다.

만약 기존에 Plex를 패키지 센터에서 설치해줬거나 SPK 파일의 형태로 직접 설치한 적이 있다면 이미 있을 것이다. 그럴 경우에 이 과정은 패스하면 된다.

SSH 접속

Docker가 구동중인 기기의 root 계정으로 접속한다. 시놀로지는 관리자 계정으로 접속 후 sudo -i 커맨드를 통해 root 계정으로 로그인하면 docker 커맨드를 사용할 수 있다. admin 계정이나 administrator 그룹의 계정으로는 docker 커맨드를 직접 사용할 수 없다. (다만 DSM 6.2 Beta에서는 된다.)

docker -v 커맨드를 쳐서 docker가 제대로 인식되고 있는지 확인하자. DSM 6.1 버전을 사용하고 있는 사람이라면 1.11.x 버전이 나올것이고, DSM 6.2 Beta를 사용중이라면 17.05.0-ce 버전이 나올것이다.

id plex 커맨드를 입력하면 uid값과 gid 값을 얻을 수 있을 것이다. 일반적인 경우라면 uid는 10XX번, gid는 100번이 나올것이다. 이 값을 잘 기억해 두자.

Docker 컨테이너 구동

Plex의 컨테이너로는 공식 이미지와 Linuxserver의 이미지가 있다. 둘다 사용해본 입장에서 말하자면, 공식 이미지는 좀…. 오류가 있고 사용하기가 껄끄럽다. Linuxserver의 이미지가 훨씬 사용하기 편하고 재시작 할때마다 자동으로 서버를 업데이트해 주기까지 하니 그쪽의 것을 사용하도록 하자.

SSH를 통해 다음의 커맨드를 입력한다.

docker create \
--name=plex \
--net=bridge \
-e VERSION=latest \
-e PUID=<Plex UID> -e PGID=<Plex GID> \
-e TZ=<타임존> \
-v <Plex Database가 저장될 경로>:/config \
-v <영상 및 음악 폴더 경로>:/data \
-v <트랜스코딩용 임시폴더 경로>:/transcode \
-p 32400:32400 \
-p 32400:32400/udp \
linuxserver/plex

<Plex UID>와 <Plex GID> 부분에는 위에서 id plex로 찾아낸 uid값과 gid값을 넣는다. <타임존>에는 구글에 timezone으로 검색해보면 찾을 수 있을 것이다. 한국의 시간대를 사용하려면 Asia/Seoul을 입력한다.

제대로 설정을 한 예시는 다음과 같다.

docker create \
--name=plex \
--net=bridge \
-e VERSION=latest \
-e PUID=1035 -e PGID=100 \
-e TZ=Asia/Seoul \
-v /volume1/plex/config:/config \
-v /volume1/plex/data:/data \
-v /volume1/plex/transcode:/transcode \
-p 32400:32400 \
-p 32400:32400/udp \
linuxserver/plex

아무 문제 없이 컨테이너가 생성된다면 다음의 커맨드를 쳐서 Plex를 구동하자

docker run plex

구동에 성공했을 경우, Synology NAS의 URL로 들어가되 포트번호를 32400으로 설정해주면 된다. (예를 들자면 http://192.168.0.2:32400/web으로 접속) 여기서 구동이 제대로 안된다면 공유폴더 문제일 가능성이 높다. 맨 위에서 생성한 plex 유저에게 폴더 읽기/쓰기 권한을 주도록 하자.

Plex 여러개 구동하기

위의 커맨드를 약간만 변형하면 굉장히 쉽다. 포트번호와 컨테이너 이름만 변경해주면 된다. 아래에서 예시로 두개의 Plex 컨테이너를 구동하는 명령어를 작성해보았다. 참고하도록 하자.

docker create \
--name=plex1 \
--net=bridge \
-e VERSION=latest \
-e PUID=1035 -e PGID=100 \
-e TZ=Asia/Seoul \
-v /volume1/plex1/config:/config \
-v /volume1/plex1/data:/data \
-v /volume1/plex1/transcode:/transcode \
-p 32400:32400 \
-p 32400:32400/udp \
linuxserver/plex

docker create \
--name=plex2 \
--net=bridge \
-e VERSION=latest \
-e PUID=1035 -e PGID=100 \
-e TZ=Asia/Seoul \
-v /volume1/plex2/config:/config \
-v /volume1/plex2/data:/data \
-v /volume1/plex2/transcode:/transcode \
-p 32401:32400 \
-p 32401:32400/udp \
linuxserver/plex

docker run plex1
docker run plex2

강조한 부분에 주의를 기울여서 꼭 제대로 수정해주도록 하자. -p 옵션은 포트포워딩인데, 콜론(:)의 왼쪽이 호스트 기기, 즉 Synology NAS에 해당하고 오른쪽이 컨테이너에 해당한다. 즉 -p 32401:32400으로 설정했다면 Synology NAS의 32401 포트로 들어오는 통신을 컨테이너의 32400으로 전송하겠다는 의미이다.

위 커맨드는 32400 포트는 plex1에, 32401 포트는 plex2에 물려서 두 컨테이너가 제대로 외부와 통신할 수 있도록 해준다. 다만, Docker 포트포워딩 설정 뿐만 아니라, 아래 사진과 같이 Plex 설정에서 공개 포트를 수동 설정으로 변경해줘야 추후 외부망에서도 Plex가 제대로 작동하게 된다.

공개 포트 수동 설정

댓글 15

님께 답글 취소
댓글 등록 요청
스팸 댓글을 줄이기 위해 Akismet을 사용하고 있습니다.