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
안녕하세요. 포스팅 해주신 내용 참고해서 작업중에 문의 드려요. 컨테이너는 생성되었는데, plex 도커 구동이 안됩니다. doker run plex 엔터 후에 아래 메시지가 나오는데 조언 부탁드려도 될까요? Unable to find image ‘plex:latest’ locally docker: Error response from daemon: pull access denied for plex, repository does not exist or may require ‘docker login’. See ‘docker run –help’.
추가정보. 터미널에서 docker run plex 했을때는 위에 말씀드린 것처럼 구동이 안되었는데, 시놀로지 관리자 웹페이지로 들어가서 Package Center > Docker > Container > Plex 에서 Start 버튼을 클릭하니 구동되고 있는 것 같습니다.
최근 바빠서 블로그를 못보고 있었습니다. 늦게나마 답변드립니다. Access Denied가 났다는 것은 권한이 없다는 것이므로 docker 명령어 앞에 sudo를 붙여주시면 아마 해결이 될 것입니다. Docker에서 실행하시는 것과 패키지 센터에서 실행하시는 것과는 차이가 있음을 알아주시기 바랍니다.
기존에 설치된 plex를 삭제해야 될까요?
docker에 plex 설치하고 web상으로 접속하려고 하면
기존에 설치된 plex 서버로 들어가지네요
Plex 웹에서 왼쪽 위에 서버 이름 부분의 화살표를 누르시면 서버 목록이 뜰것이고, 여기서 바꾸시면 됩니다. Plex는 여러개의 서버를 사용하는 것이 전제되어 있기 때문에 그렇습니다.
혹시 이방법에서 파일위치 깊이설정이 따로 있나요?
동영상 위치를 지정하면 폴더에있는건 인식을 못하고 폴더에서 꺼내놔야만 인식을합니다..
깊이 설정은 따로 없고, Plex 서버가 인식할 수 있도록 폴더 권한을 설정하되 하위 폴더 및 파일까지 전부 동일하게 적용되도록 하셔야합니다. 이는 Plex나 Docker가 아니라 DSM에서 설정하셔야 하는 부분입니다.
도커에 plex 설치하려고 하니 쉽게 따라 할 수 있는 자료가 없어서 검색하다 보니 이렇게 방문하게 되었습니다. 저맨위에 도커크래디트 하며ㄴ, docker: ‘create–name=plex’ is not a docker command. 도커 명령어가 아니라고 뜨는데요. 뭐가 문제일까요? 저는 헤놀을 쓰는데요.~ tvh만 설치해서 현재는 쓰고 있습니다.
행 끝의 역슬래시를 빼먹지 말고 꼭 같이 입력하여 주시기 바랍니다.
안녕하세요^^ 까페에 올려주신 강좌가 제게 정말 큰도움이 됐습니다 감사합니다! 설치하면서 궁금한점 몇가지가 있어서 문의드립니다.
올려주신 도커로 다중 plex서버 설치의 명령어를 그대로 복붙해서 설치하였습니다. 몇가지 문제있었지만 어찌어찌 해결하고 plex 서버에 접속해서 라이브러리 추가하려고보니 볼륨1 볼륨2 식으로 기존 경로가 안뜨고 처음보는 경로던데 아마 도커내부폴더같던데 혹시 도커에설치한 plex는 기본 경로가 어디인지. 기존에 다른볼륨들을 매칭시킬순 없는지 문의드립니다..
위에서 사용한 컨테이너 이미지의 기본 미디어 파일 폴더는 /data 폴더입니다. 기존 볼륨을 매칭시키시려면 위의 명령어에서
-v /volume1/movie:/data/movie
이런식으로 추가해주시면 됩니다.아 ..말씀하신대로 data폴더안에 미디어넣으니까 뜨네요 ㅎㅎ
그럼 알려주신
-v /volume1/movie:/data/movie
이 명령어를 넣으려면 위에docker create \
명령어부터 새로 다 쳐야되나요 아니면 폴더추가 명령어만 따로 치는곳이 있나요??시놀로지 NAS에 Docker를 설치하셨다면, DSM에서 Docker 앱을 실행하시고 plex 컨테이너를 중지하신 후, 편집 버튼을 눌러 볼륨탭에서 폴더 및 파일을 변경하실 수 있습니다. 원래대로 docker 명령어를 사용하려면 좀 귀찮은 과정이 많습니다. 아예 Docker를 공부하셔야 할 정도로요.
DSM 접속 -> 관리자계정으로 로그인 -> 메뉴에서 Docker 실행 -> 비디오 형식 클릭 -> plex 선택하고 오른쪽 클릭-작업-중지 -> 중지되면 다시 오른쪽 클릭-편집 -> 볼륨 탭 -> 폴더추가
강좌와 댓글이 정말 큰힘이 되었습니다 감사합니다^^ 다만 전 폴더추가문제는 해결이 되지않네요…
말씀하신대로 시놀로지에서 도커실행시켜서 폴더추가를 하면 plex에서는 폴더가 보이는데, 추가하면 라이브러리 추가가 안되네요. 반대로 초기에 설치된 config파일이나 data폴더등에는 파일이나 폴더를 넣어두면 plex에서도 잘보이고 추가도 잘되고요. 결국 해결방법을 못찾아서 기본폴더에 영상을 옮기니 인식이되네요.
작성해주신 글과 도움 정말 감사드립니다^^
폴더 권한 문제일 가능성이 높아보이네요. /data 폴더쪽으로 Synology 내의 볼륨을 추가하실 때, 제어판의 공유폴더 설정에서 plex 사용자 id에 폴더 읽기 권한을 주셨나요? 저도 해당 문제 몇번 겪어봤는데 권한문제일 가능성이 높습니다. 권한 주면 제대로 인식될거예요.
만약 이래도 제대로 안된다면 plex id값이 컨테이너의 PUID 환경변수에 넣어졌는지 확인해보세요. 아까 복붙하셨다고 하셔서 혹시 이 id값까지 그대로 넣으신게 아닌가 하는 생각도 드네요.