大家好,我是曉飛影!
一個數(shù)碼愛好者,也喜歡在眾多平行領域探究摸索,讓生活多一點樂趣。
之前在使用威聯(lián)通 TS-451D 的時候,我直接在 App Center 通過第三方軟件包安裝的形式,裝好了 Jellyfin、Emby、Plex 這三大媒體套件,確實很方便,而且能直接調(diào)用核顯,堪稱小白的第一選擇。不過有幾次我頻繁測試 Emby 的硬解轉碼播放,居然讓 NAS 假死了幾次,重啟 NAS 就能恢復。所以借著這次更換威聯(lián)通 TS-453Dmini,我打算能用 dokcer 安裝就不用程序包的方式,因為 docker 好管理,而且系統(tǒng)資源占用極低,我也從來沒遇到過 docker 把 NAS 弄假死的情況,這次我就分享一下如何安裝,其實網(wǎng)上已經(jīng)有一些 docker 安裝的教程,但是大部分是一次成功,這里面其實有許多坑的,尤其涉及到核顯調(diào)用部分,所以我也把踩坑經(jīng)歷分享出來,方便大家解惑。
第三方程序包安裝
不過我先分享一下怎么用程序包的方式安裝 Jellyfin、Emby、Plex,如果 docker 實在安裝不成功的話,就直接用程序包的方式吧,只要不瞎折騰也不會出什么問題。先打開 App Center 右上角的設置按鈕。
鏈接: 提取碼: bg6r
通用頁面勾選允許在沒有有效數(shù)字簽名的情況下安裝應用程序,點擊應用。
然后在 App Center 右上角的加號選擇手動安裝,在本地電腦選擇 qpkg 格式結尾的程序包,點擊安裝,之后在系統(tǒng)桌面就可以看到程序圖標了,可以直接點擊使用,注意 Jelly 和 Emby 最開始是同源的,所以默認端口都是 8096,兩個都安裝的話可能會起沖突,所以建議只裝其一,如果是 docker 安裝的話還可以自己修改下端口映射。
docker 安裝 Portainer
其實威聯(lián)通的 Container Station 也是 docker 的管理界面,已經(jīng)做的不錯了,但是唯獨安裝好容器后不好修改之前配置的文件夾等參數(shù),如果只用 ssh 敲命令的方式也可以解決,不過還是建議安裝上 Portainer 圖形界面來統(tǒng)一管理 dokcer,出現(xiàn)問題調(diào)試也比較方便,安裝命令如下。
docker run -d -p 9000:9000 \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
--name prtainer-test \
protainer 開始會有 admin 頁面,提示創(chuàng)建密碼,然后選擇 Local,如果有集成管理需求,就選擇 Remote。
主界面可以看到基本是全英文的,一開始可能都會覺得有點頭大,但是實際只要記得圖中幾個中文標注的菜單就夠了,用的最多的也是 Containers 界面。
點進去可以看到正在運行的容器,和威聯(lián)通系統(tǒng)內(nèi)的容器數(shù)量是一模一樣的,主要是之后要在這個頁面對容器進行編輯會很方便。
docker 安裝 Plex
首先在 QTS 系統(tǒng)內(nèi)打開 ContainerStation,在創(chuàng)建頁面搜索plex,可以看到最多標星的有 plexinc 和 linuxserver,這鏈各個版本其實都可以,因為有許多人會遇到奇怪的問題,換個其他人的版本安裝就好了,所以不必糾結哪個版本最好,能成功運行最好。而威聯(lián)通的 ContainerStation 還有一個好處是點擊鏡像的名稱,可以直接跳轉到 dockerhub 的頁面,這個步驟不是必要步驟,只是許多人都照抄各種大佬的命令安裝,出了問題也不知道怎么查,其實答案全部都在開發(fā)者的頁面,我也是慢慢摸索才弄清楚,這次就分享給大家,找到原理才好解決問題。
跳轉到 dockerhub 頁面后,頁面都是全英文的,英語不好的也別緊張,可以翻譯頁面大概了解意思就行,關鍵的信息其實還很簡單,鏡像名稱下可以看到更新頻率,右側是直接拉取鏡像的命令,Win10 系統(tǒng)可以通過 putty軟件,通過 ssh 連接到 NAS,輸入拉取鏡像命令到本地,Mac 比較簡單可以直接通過終端輸入 ssh
admin@192.168.199.10 這樣的命令直接連接 NAS,這步操作對應的就是威聯(lián)通 ContainerStation 鏡像頁面右側的創(chuàng)建按鈕,完成下載的過程。
然后往下拉,可以看到有幾種模式的安裝方法,我們平時用的最多的就是 Bridge Networking 這種方法,這個命令復制了直接運行是肯定會出問題的,這只是一個舉例。-p 指的就是端口映射,冒號后面的全部都是該容器的端口或者路徑,是不能修改的,冒號前面都是自己進行映射的,可以看情況修改,比如 -p 端口號可以寫一樣的 32400,或者 1234都可以。而 -v 是文件夾路徑,比如這個官方的 plex 容器需要三個文件夾,config(配置)、transcode(轉碼)、data(媒體)信息,所以至少要保證這三個文件夾信息。-e 就是環(huán)境變量,等一會再說。
所以在威聯(lián)通內(nèi),我建議在 Container 文件夾下按照容器建立文件夾,然后建立子文件夾,這樣就可以一一對應,未來還方便遷移。
如果是通過命令行的方式選擇路徑的話,以上的路徑應該是-v /share/Container/plex/config:/config
那有的人如果是不止一個 media 文件夾該怎么辦呢,我試了下其實你可以多映射幾個文件夾,在plex一樣可以選擇到,比如-v share/dapian:/dapian
剛才還有的命令沒有提到,比如 TZ、PLEX_CLAIM 該怎么填,其實答案都在頁面下方,比如 TZ 可以寫 Europe/London,但是和我們的時區(qū)不一樣,可以點進它的網(wǎng)址去查看本地的時區(qū),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
可能有的編輯器會不顯示后面的斜桿,所以我截圖展示一下,這里面不一定所有的命令都需要復制,比如有的端口不需要可以取消,包括文件夾路徑也只是參考,這樣根據(jù)自己的實際情況來填寫也就比較容易了。注意不同 NAS 系統(tǒng)的文件夾路徑可能有區(qū)別,比如威聯(lián)通的是 share。
另外,我自己設置的是靜態(tài)卷三個分區(qū),分別是 CACHEDEV1_DATA, CACHEDEV2_DATA, CACHEDEV3_DATA,實際我測試刪掉CACHEDEV3_DATA,直接 share 后面接我 NAS 里的文件夾也是看的到的,所以還是以上面的命令行的路徑為主。接下來,可以到 ssh 里輸入命令創(chuàng)建,或者是直接用威聯(lián)通的 ContainerStation 創(chuàng)建都可以,只要了解了文件夾,端口,環(huán)境變量,在任何 NAS 系統(tǒng)都可以很方便的部署。
那么最關鍵的問題來了,核顯怎么調(diào)用還沒有說,首先確定自己的 NAS 的 CPU是支持硬解的。
ls /dev/dri
輸入命令后看到 card0 renderD128 就是支持核顯。
chmod a+x /dev/dri
輸入命令后是讓 dri 文件夾下都有可執(zhí)行權限,這個命令有的人沒輸入也能成功,建議輸入,而且docker 一直遇到問題可以嘗試在 admin 賬號下進行操作,權限更大。
這個核顯驅(qū)動文件夾其實在 docker 創(chuàng)建時就可以輸入,只是我習慣一步步排除問題,先建好容器后再加入也是可以成功的,這個時候就靠 portainer 登場了,點擊 Containers 文件夾,點擊容器名稱,這里我換了 linuxserver 的鏡像又安裝了一次,應該說每個鏡像我都刪除更換了許多次來摸索,原理都是一樣的。
進入容器后,點擊右上角的 Duplicate/Edit,進行編輯,Portainer 有個好處是不用停止容器也可以直接編輯,再發(fā)布直接覆蓋就好了,節(jié)省步驟。
進入編輯頁面后往下拉,可以看到一排頁面標簽,比如 Volumes 就是文件夾映射,我有時候直接創(chuàng)建一個空的容器,在 Portainer 這里手動填寫路徑,感覺靈活度非常高,比如未來又有新的媒體文件夾里就在這里添加,注意右側要選擇 Bind 才能輸入自定義路徑。
此處是設置容器
點擊 Runtime & Resouces 標簽頁面,此處就是調(diào)用核顯的關鍵,在下方點擊 add device,手動填寫核顯文件夾的路徑/dev/dri,下方還可以對這個容器占用系統(tǒng)性能設置區(qū)間,一般默認即可,再點擊上方的 Deploy the container 按鈕就可以覆蓋啟動容器了。
接下來輸入 IP:32400 訪問 PLEX 媒體庫,按照步驟一直下一步。
成功到啟動頁面后點擊右上角的工具按鈕來到控制面板。
遠程訪問這里有一個感嘆號,需要勾選后點擊啟用。
同時我還在路由器的端口轉發(fā)規(guī)則轉發(fā)了 32400 的端口號,也沒有和 PLEX 頁面的設置沖突,目前都能正常外網(wǎng)訪問。
PLEX 不能調(diào)用本地刮削好的 NFO 文件,所以我也加上了補丁,分別是電影和電視節(jié)目的刮削器,注意文件命名后綴要改為 bundle 和圖中一致。docker 版補丁的路徑放在 Container/pelx/config/Library/Application Support/Plex Media Server/Plug-ins 文件夾下,然后重啟 PLEX。
回到 PLEX 界面點擊資料庫。
右上角添加資料庫。
選擇電影,語言改為中文。
選擇文件夾為電影媒體文件夾。
高級里面的代理實際就是刮削器,選擇 XBMCnfoMoviesImporter 就可以加載本地已經(jīng)整理好的 NFO 文件。
注意這個 Enable generating Collections from tags 的勾要去掉,不然會生成很多tag 標簽導致媒體庫很亂。
如果有系列電影比如「鋼鐵俠」想生成一個系列文件夾預覽的,可以選擇 Hide items which are in collections,然后添加資料庫。
等待一段時間,電影完全整理好了。
使用硬件轉碼的話要在轉碼器部分選擇下方的兩個調(diào)用硬件轉碼的選項,PLEX 的漢化版本一直做的一般,這里都是英文,有的是中文。而且 PLEX 的轉碼是需要會員的,我是 220 元買的一個終身版,目前還沒有被黑。不像 Emby 和 Jellyfin 那樣選擇硬件轉碼后能看到許多轉碼選項,到這一步都不確定是否真的裝好了 docker 的核顯調(diào)用。
必須打開一個電影,手動將播放質(zhì)量選到很低,來測試能否核顯硬解,如圖看到(hw)這個標識就是成功啟用硬解了。
再就是回到威聯(lián)通過的資源監(jiān)控頁面,看一下 CPU 的占比,如果一直比較低的話,那絕對沒有問題了,如圖 Container Station 的資源占比也很低,這也是我喜歡裝 docker 的原因。
如果有人到這一步發(fā)現(xiàn)核顯依然無效,媒體播放還是軟件解碼該怎么辦,最后的罪魁禍首可能就在此處了,依然回到 Portainer 對容器進行編輯,linuxsever 的鏡像的 Env 環(huán)境變量內(nèi)有 PUID 和 GUID 兩個變量,沒有的話手動添加,改為 0 即可。
為什么改成 0,可以ssh 命令下輸入 id admin 就發(fā)現(xiàn) uid 和 gid 都是 0,也就是 admin 賬戶的權限,如果自己建立了新的賬號,也可以用 id 用戶名的方式檢查自己的 uid 和 gid,填寫進去,不過可能還是沒用,所以其他的 docker 如果有填寫 uid、gid 的需求,省心的話就全部填 0 就可以了。注意這個uid 和 gid 在別的 docker 可能叫法不一樣,老辦法點進 dockerhub頁面查看文檔,或者先自動建立一個鏡像看環(huán)境變量里有沒有自動生成,再去手動修改值。
重啟 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
我根據(jù)自己的情況修改后的命令行,和官方的做個對比,大家也就知道該怎么根據(jù)自己的實際情況來修改了。
順便把我的 Portainer 設置截圖一下,可以參照對比,端口映射部分。
文件夾映射部分,上文也說了,CACHEDEV1_DATA是我建立了幾個靜態(tài)卷,我以為要分開路徑,實際都在 share 目錄下就可以看到了,可以刪掉。
Env 環(huán)境變量大部分都是自動生成的,我已經(jīng)裝好的是 embyserver 的官方鏡像,所以多了個 GIDLIST,注意此處也是 UID、GID、GIDLIST 都改為 0 了,并沒有按模板的 1000 來填寫,也確實開啟了核顯硬解。
設置自動啟動選項。
設置調(diào)用核顯的路徑,如果開始在命令行輸入 --device /dev/dri:/dev/dri 的話,此處就已經(jīng)有了,沒有寫的話,之后手動加入也是可以的。
最后點擊 Deploy the container 就可以發(fā)布容器,會提示覆蓋就直接覆蓋。
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 這幾樣,由于涉及核顯調(diào)用,很容易出現(xiàn)問題,我把幾個關鍵點在梳理一下:
- 盡量用 admin 賬號創(chuàng)建;
- chomd a+x /dev/dri,給核顯文件夾賦予可執(zhí)行權限;
- uid 和 gid 可以設置為 0,也是 admin 的賬號權限;
- 鏡像安裝失敗可以換一個嘗試;
寫 NAS 備忘錄的目的主要也是給我自己折騰的過程中,總結學習,下次再裝就輕車熟路了,我每次折騰都要查不少的資料,評論區(qū)也經(jīng)常遇到一堆的問題,最后經(jīng)常到 dockerhub 頁面看一下說明文檔,許多問題都能得到答案。授之以魚不如授之以漁,希望我的這些經(jīng)歷也能讓大家少走彎路,同時多分享多交流,大家都能節(jié)約不少折騰的時間。
廣告聲明:文中若存在對外跳轉的鏈接(涵蓋商品鏈接、超鏈接、二維碼等各類形式),其目的在于為您呈上更多與內(nèi)容相關的產(chǎn)品信息,助您迅速甄別。但我們不對其做任何明示或暗示的保證,煩請您謹慎參考,依據(jù)自身的需求與判斷來做出決策。