威聯通 docker 安裝PLEX、EMBY、JELLYFIN
2021年03月04日08:44

  大家好,我是曉飛影!

  一個數碼愛好者,也喜歡在眾多平行領域探究摸索,讓生活多一點樂趣。

  之前在使用威聯通 TS-451D 的時候,我直接在 App Center 通過第三方軟件包安裝的形式,裝好了 Jellyfin、Emby、Plex 這三大媒體套件,確實很方便,而且能直接調用核顯,堪稱小白的第一選擇。不過有幾次我頻繁測試 Emby 的硬解轉碼播放,居然讓 NAS 假死了幾次,重啟 NAS 就能恢復。所以藉著這次更換威聯通 TS-453Dmini,我打算能用 dokcer 安裝就不用程式包的方式,因為 docker 好管理,而且系統資源佔用極低,我也從來沒遇到過 docker 把 NAS 弄假死的情況,這次我就分享一下如何安裝,其實網上已經有一些 docker 安裝的教程,但是大部分是一次成功,這裡面其實有許多坑的,尤其涉及到核顯調用部分,所以我也把踩坑經曆分享出來,方便大家解惑。

  第三方程式包安裝

  不過我先分享一下怎麼用程式包的方式安裝 Jellyfin、Emby、Plex,如果 docker 實在安裝不成功的話,就直接用程式包的方式吧,只要不瞎折騰也不會出什麼問題。先打開 App Center 右上角的設置按鈕。

  通用頁面勾選允許在沒有有效數字簽名的情況下安裝應用程式,點擊應用。

  然後在 App Center 右上角的加號選擇手動安裝,在本地電腦選擇 qpkg 格式結尾的程式包,點擊安裝,之後在系統桌面就可以看到程式圖標了,可以直接點擊使用,注意 Jelly 和 Emby 最開始是同源的,所以預設端口都是 8096,兩個都安裝的話可能會起衝突,所以建議只裝其一,如果是 docker 安裝的話還可以自己修改下端口映射。

  docker 安裝 Portainer

  其實威聯通的 Container Station 也是 docker 的管理界面,已經做的不錯了,但是唯獨安裝好容器後不好修改之前配置的文件夾等參數,如果只用 ssh 敲命令的方式也可以解決,不過還是建議安裝上 Portainer 圖形界面來統一管理 dokcer,出現問題調試也比較方便,安裝命令如下。

docker run -d -p 9000:9000 \

--restart=always \

-v /var/run/docker.sock:/var/run/docker.sock \

--name prtainer-test \

docker.io/portainer/portainer

  protainer 開始會有 admin 頁面,提示創建密碼,然後選擇 Local,如果有集成管理需求,就選擇 Remote。

  主界面可以看到基本是全英文的,一開始可能都會覺得有點頭大,但是實際只要記得圖中幾個中文標註的菜單就夠了,用的最多的也是 Containers 界面。

  點進去可以看到正在運行的容器,和威聯通系統內的容器數量是一模一樣的,主要是之後要在這個頁面對容器進行編輯會很方便。

  docker 安裝 Plex

  首先在 QTS 系統內打開 Container Station,在創建頁面搜索plex,可以看到最多標星的有 plexinc 和 linuxserver,這鏈各個版本其實都可以,因為有許多人會遇到奇怪的問題,換個其他人的版本安裝就好了,所以不必糾結哪個版本最好,能成功運行最好。而威聯通的 Container Station 還有一個好處是點擊鏡像的名稱,可以直接跳轉到 dockerhub 的頁面,這個步驟不是必要步驟,只是許多人都照抄各種大佬的命令安裝,出了問題也不知道怎麼查,其實答案全部都在開發者的頁面,我也是慢慢摸索才弄清楚,這次就分享給大家,找到原理才好解決問題。

  跳轉到 dockerhub 頁面後,頁面都是全英文的,英語不好的也別緊張,可以翻譯頁面大概瞭解意思就行,關鍵的信息其實還很簡單,鏡像名稱下可以看到更新頻率,右側是直接拉取鏡像的命令,Win10 系統可以通過 putty軟件,通過 ssh 連接到 NAS,輸入拉取鏡像命令到本地,Mac 比較簡單可以直接通過終端輸入 ssh admin@192.168.199.10 這樣的命令直接連接 NAS,這步操作對應的就是威聯通 Container Station 鏡像頁面右側的創建按鈕,完成下載的過程。

  然後往下拉,可以看到有幾種模式的安裝方法,我們平時用的最多的就是 Bridge Networking 這種方法,這個命令複製了直接運行是肯定會出問題的,這隻是一個舉例。-p 指的就是端口映射,冒號後面的全部都是該容器的端口或者路徑,是不能修改的,冒號前面都是自己進行映射的,可以看情況修改,比如 -p 端口號可以寫一樣的 32400,或者 1234都可以。而 -v 是文件夾路徑,比如這個官方的 plex 容器需要三個文件夾,config(配置)、transcode(轉碼)、data(媒體)信息,所以至少要保證這三個文件夾信息。-e 就是環境變量,等一會再說。

  所以在威聯通內,我建議在 Container 文件夾下按照容器建立文件夾,然後建立子文件夾,這樣就可以一一對應,未來還方便遷移。如果是通過命令行的方式選擇路徑的話,以上的路徑應該是-v /share/Container/plex/config:/config那有的人如果是不止一個 media 文件夾該怎麼辦呢,我試了下其實你可以多映射幾個文件夾,在plex一樣可以選擇到,比如-v share/dapian:/dapian

  剛才還有的命令沒有提到,比如 TZ、PLEX_CLAIM 該怎麼填,其實答案都在頁面下方,比如 TZ 可以寫 Europe/London,但是和我們的時區不一樣,可以點進它的網址去查看本地的時區,Asia/Shanghai

  PLEX_CLAIM 按照它的鏈接跳轉到頁面,登錄自己註冊的賬號密碼就可以獲得 CLAIM 的值了,複製剛才的命令,填寫到剛才的命令行裡面。那麼最終我的命令如下:

docker run \

-d \

--name plex \

-p 32400:32400/tcp \

-p 3005:3005/tcp \

-p 8324:8324/tcp \

-p 32469:32469/tcp \

-p 1900:1900/udp \

-p 32410:32410/udp \

-p 32412:32412/udp \

-p 32413:32413/udp \

-p 32414:32414/udp \

-e TZ=“Aisa/Shanghai” \

-e PLEX_CLAIM=“claim-sG8sYnUastzs3LUd9oAH” \

-e ADVERTISE_IP=“http://192.168.199.34:32400/” \

-h MY PLEX \

-v /share/Container/plex/config:/config \

-v /share/Container/plex/transcode:/transcode \

-v /share/media:/data \

-v /share/dapian:/dapian \

plexinc/pms-docker

  可能有的編輯器會不顯示後面的斜杆,所以我截圖展示一下,這裡面不一定所有的命令都需要複製,比如有的端口不需要可以取消,包括文件夾路徑也只是參考,這樣根據自己的實際情況來填寫也就比較容易了。注意不同 NAS 系統的文件夾路徑可能有區別,比如威聯通的是 share。

  另外,我自己設置的是靜態卷三個分區,分別是 CACHEDEV1_DATA, CACHEDEV2_DATA, CACHEDEV3_DATA,實際我測試刪掉CACHEDEV3_DATA,直接 share 後面接我 NAS 里的文件夾也是看的到的,所以還是以上面的命令行的路徑為主。接下來,可以到 ssh 里輸入命令創建,或者是直接用威聯通的 Container Station 創建都可以,只要瞭解了文件夾,端口,環境變量,在任何 NAS 系統都可以很方便的部署。

  那麼最關鍵的問題來了,核顯怎麼調用還沒有說,首先確定自己的 NAS 的 CPU是支援硬解的。ls /dev/dri輸入命令後看到 card0 renderD128 就是支援核顯。chmod a+x /dev/dri輸入命令後是讓 dri 文件夾下都有可執行權限,這個命令有的人沒輸入也能成功,建議輸入,而且docker 一直遇到問題可以嚐試在 admin 賬號下進行操作,權限更大。

  這個核顯驅動文件夾其實在 docker 創建時就可以輸入,只是我習慣一步步排除問題,先建好容器後再加入也是可以成功的,這個時候就靠 portainer 登場了,點擊 Containers 文件夾,點擊容器名稱,這裏我換了 linuxserver 的鏡像又安裝了一次,應該說每個鏡像我都刪除更換了許多次來摸索,原理都是一樣的。

  進入容器後,點擊右上角的 Duplicate/Edit,進行編輯,Portainer 有個好處是不用停止容器也可以直接編輯,再發佈直接覆蓋就好了,節省步驟。

  進入編輯頁面後往下拉,可以看到一排頁面標籤,比如 Volumes 就是文件夾映射,我有時候直接創建一個空的容器,在 Portainer 這裏手動填寫路徑,感覺靈活度非常高,比如未來又有新的媒體文件夾里就在這裏添加,注意右側要選擇 Bind 才能輸入自定義路徑。

  此處是設置容器

  點擊 Runtime & Resouces 標籤頁面,此處就是調用核顯的關鍵,在下方點擊 add device,手動填寫核顯文件夾的路徑/dev/dri,下方還可以對這個容器佔用系統性能設置區間,一般預設即可,再點擊上方的 Deploy the container 按鈕就可以覆蓋啟動容器了。

  接下來輸入 IP:32400 訪問 PLEX 媒體庫,按照步驟一直下一步。

  成功到啟動頁面後點擊右上角的工具按鈕來到控製麵板。

  遠程訪問這裏有一個感歎號,需要勾選後點擊啟用。

  同時我還在路由器的端口轉發規則轉發了 32400 的端口號,也沒有和 PLEX 頁面的設置衝突,目前都能正常外網訪問。

  PLEX 不能調用本地刮削好的 NFO 文件,所以我也加上了補丁,分別是電影和電視節目的刮削器,注意文件命名後綴要改為 bundle 和圖中一致。docker 版補丁的路徑放在 Container/pelx/config/Library/Application Support/Plex Media Server/Plug-ins 文件夾下,然後重啟 PLEX。

  回到 PLEX 界麵點擊資料庫。

  右上角添加資料庫。

  選擇電影,語言改為中文。

  選擇文件夾為電影媒體文件夾。

  高級裡面的代理實際就是刮削器,選擇 XBMCnfoMoviesImporter 就可以加載本地已經整理好的 NFO 文件。

  注意這個 Enable generating Collections from tags 的勾要去掉,不然會生成很多tag 標籤導致媒體庫很亂。

  如果有系列電影比如‘鐵甲奇俠’想生成一個系列文件夾預覽的,可以選擇 Hide items which are in collections,然後添加資料庫。

  等待一段時間,電影完全整理好了。

  使用硬件轉碼的話要在轉碼器部分選擇下方的兩個調用硬件轉碼的選項,PLEX 的漢化版本一直做的一般,這裏都是英文,有的是中文。而且 PLEX 的轉碼是需要會員的,我是 220 元買的一個終身版,目前還沒有被黑。不像 Emby 和 Jellyfin 那樣選擇硬件轉碼後能看到許多轉碼選項,到這一步都不確定是否真的裝好了 docker 的核顯調用。

  必須打開一個電影,手動將播放質量選到很低,來測試能否核顯硬解,如圖看到(hw)這個標識就是成功啟用硬解了。

  再就是回到威聯通過的資源監控頁面,看一下 CPU 的佔比,如果一直比較低的話,那絕對沒有問題了,如圖 Container Station 的資源佔比也很低,這也是我喜歡裝 docker 的原因。

  如果有人到這一步發現核顯依然無效,媒體播放還是軟件解碼該怎麼辦,最後的罪魁禍首可能就在此處了,依然回到 Portainer 對容器進行編輯,linuxsever 的鏡像的 Env 環境變量內有 PUID 和 GUID 兩個變量,沒有的話手動添加,改為 0 即可。

  為什麼改成 0,可以ssh 命令下輸入 id admin 就發現 uid 和 gid 都是 0,也就是 admin 賬戶的權限,如果自己建立了新的賬號,也可以用 id 用戶名的方式檢查自己的 uid 和 gid,填寫進去,不過可能還是沒用,所以其他的 docker 如果有填寫 uid、gid 的需求,省心的話就全部填 0 就可以了。注意這個uid 和 gid 在別的 docker 可能叫法不一樣,老辦法點進 dockerhub頁面查看文檔,或者先自動建立一個鏡像看環境變量里有沒有自動生成,再去手動修改值。

  重啟 PLEX,大概率核顯硬解問題就全部解決了。

  docker 安裝 Emby

  plex 是最麻煩的部分,弄清楚了 docker 每個命令的原理,和 portainer修改的方法,一切就變簡單了,Emby 就分享下 linuxserver 的鏡像安裝方式,大家參考後修改即可。

docker run -d \

--name=emby \

-e PUID=0 \

-e PGID=0 \

-e TZ=Aisa/Shanghai \

-p 8096:8096 \

-p 8920:8920 \

-v /share/Container/plex/config:/config \

-v /share/media:/data/media \

-v /share/dapian:/data/dapian \

--device /dev/dri:/dev/dri \

--restart unless-stopped \

ghcr.io/linuxserver/emby

  我根據自己的情況修改後的命令行,和官方的做個對比,大家也就知道該怎麼根據自己的實際情況來修改了。

  順便把我的 Portainer 設置截圖一下,可以參照對比,端口映射部分。

  文件夾映射部分,上文也說了,CACHEDEV1_DATA是我建立了幾個靜態卷,我以為要分開路徑,實際都在 share 目錄下就可以看到了,可以刪掉。

  Env 環境變量大部分都是自動生成的,我已經裝好的是 embyserver 的官方鏡像,所以多了個 GIDLIST,注意此處也是 UID、GID、GIDLIST 都改為 0 了,並沒有按模板的 1000 來填寫,也確實開啟了核顯硬解。

  設置自動啟動選項。

  設置調用核顯的路徑,如果開始在命令行輸入 --device /dev/dri:/dev/dri 的話,此處就已經有了,沒有寫的話,之後手動加入也是可以的。

  最後點擊 Deploy the container 就可以發佈容器,會提示覆蓋就直接覆蓋。

  docker 安裝 Jellyfin

docker run -d \

--name=jellyfin \

-e PUID=0 \

-e PGID=0 \

-e TZ=Aisa/Shanghai \

-p 8096:8096 \

-p 8920:8920 \

-p 7359:7359/udp \

-p 1900:1900/udp \

-v /share/Container/plex/config:/config \

-v /share/media:/data/media \

-v /share/dapian:/data/dapian \

--device /dev/dri:/dev/dri \

--restart unless-stopped \

ghcr.io/linuxserver/jellyfin

  Jellyfin 和 Emby 都是同源的,安裝也最簡單,硬解核顯還不需要會員,應該是受眾面最廣的,命令也差不多是一樣的,不過因為我裝了 Emby,端口都是 8096 衝突,我也懶得修改端口號就沒裝 Jellyfin 了,Portainer 就沒有截圖了。

  總結

  docker 的安裝教程許多地方都有,玩 NAS 折騰最多的應該就是 Jellyfin、Emby、Plex 這幾樣,由於涉及核顯調用,很容易出現問題,我把幾個關鍵點在梳理一下:儘量用 admin 賬號創建;chomd a+x /dev/dri,給核顯文件夾賦予可執行權限;uid 和 gid 可以設置為 0,也是 admin 的賬號權限;鏡像安裝失敗可以換一個嚐試;寫 NAS 備忘錄的目的主要也是給我自己折騰的過程中,總結學習,下次再裝就輕車熟路了,我每次折騰都要查不少的資料,評論區也經常遇到一堆的問題,最後經常到 dockerhub 頁面看一下說明文檔,許多問題都能得到答案。授之以魚不如授之以漁,希望我的這些經曆也能讓大家少走彎路,同時多分享多交流,大家都能節約不少折騰的時間。

關注我們Facebook專頁
    相關新聞
      更多瀏覽