自己 DIY 一個 Media Server 吧!- 安裝 Plex 到 odroid HC4

上篇我們已經在 odroid HC4 裡面安裝好 debian 和 OpenMediaVault,也啟用了 SMB,但如果要串流影片到 android TV 上,SMB 的方式雖然夠用,但介面比較不友善。因此我們試試 Plex 這套解決方案吧!

Plex 是什麼?

他是自建影音串流伺服器 + app 的整套解決方案。我們在自己的 NAS 上起 Plex server 端,讓他去吃 NAS 上的影片等檔案,並自動分析配上影片標題和封面圖片。再透過 Plex app,如 web、mobile、或是 android TV 等 client 端串流播放。

整體架設過程非常簡單,也能實現從外部網路播放。雖然他是商業化解決方案,大部分功能功能都免費,只有 mobile app 和一些進階權限功能需要付費。

不過就算要在 mobile 上使用,直接用瀏覽器開 web app 也行。我大部分在 android TV 上跑,因此免費方案十分足夠!就讓我們開始吧!

架設 Plex server 端

使用以下 docker-compose yaml 。其中:

  1. network_mode:
    依照 docker hub 上的 readme 建議設定為 host。
    這部分如果要設定為 bridge 也行,只是依照文件來看,如果要完善的功能會需要 expose 蠻多 port,外加他會把內網 ip 誤判為外網 ip(因為 bridge 所以網段不同)因此建議使用 host。
  1. volumes:
    config 是用來儲存設定檔, 依照個人需求給定,我這邊是掛在與 docker-compose file 同一層目錄。
    剩下的 movies 等等目錄是掛入 NAS 的影音檔資料夾,名稱可以完全自訂,只要自己能夠區分即可。
  1. PUID 與 PGID:
    避免掛入影音檔所在的 host folder 有權限問題,這邊記得給定與對應料夾相同的擁有者 id(可在 shell 下使用 id 指令來得知帳號群組所對應的 id)。
  1. PLEX_CLAIM:
    Plex 整套解決方案包含雲端帳號系統,如果要讓你的 Plex server 加入某一個 Plex account,必須先登入 Plex 網站,取得帳號的 claim(可以想成 token)並填入此,啟動一次後就能把你的 Plex server 註冊到 Plex account 下,如此才能使用 app 串流播放。後面會提供詳細步驟,一開始驗證階段可以先略過。
version: "2.1"
services:
  plex:
    image: ghcr.io/linuxserver/plex
    container_name: plex
    network_mode: host
    restart: always
    mem_limit: 1.5G
    logging:
      driver: "json-file"
      options:
        max-size: "1k"
        max-file: "3"
    volumes:
      - ./config:/config
      - ./Movie:/movies  <舉例,依照你的情況而定>
      - <掛入其他影音資料夾>...
    environment:
      - PUID=1000
      - PGID=100
      - VERSION=docker
      - PLEX_CLAIM=claim-84dxqpKtCpCBMMEtDBJ9 <可略>

緊接著使用以下指令啟動 container

docker-compose up -d

立刻到瀏覽器連線看看

http://<your_nas_ip>:32400

如果能看到畫面表示成功!(用 docker 實在也很難失敗XD)

註冊 Plex Server 端

下一步要註冊我們的 Plex Server,首先到 Plex 官網申請一個帳號

登入後透過 https://www.plex.tv/claim/ 可以取得一個 4 分鐘內有效的 claim

自己 DIY 一個 Media Server 吧!- 安裝 Plex 到 odroid HC4

立刻複製貼到剛剛的 yaml file

...
environment:
      ...
      - PLEX_CLAIM=<貼到這裡>

重啟 container

docker-compose restart

回到瀏覽器 reload local 的 Plex server 頁面,就會看到確認登入訊息,登入後一路給他按確定下去!

自己 DIY 一個 Media Server 吧!- 安裝 Plex 到 odroid HC4

完成!

加入檔案到 Plex 媒體庫

點按右上方的「設定」icon,再依序點「媒體庫」、「新增媒體庫」

自己 DIY 一個 Media Server 吧!- 安裝 Plex 到 odroid HC4

依照 UI 提示設定影音類型,這邊 UI 都做得很直覺簡單。主要是新增資料夾這一步,要選擇剛剛我們從 host 掛入的 folder。

自己 DIY 一個 Media Server 吧!- 安裝 Plex 到 odroid HC4
點擊「瀏覽媒體資料夾」
自己 DIY 一個 Media Server 吧!- 安裝 Plex 到 odroid HC4
找到剛剛掛入的 folder

新增後 Plex 會啟動掃描,自動到網路搜尋影片對應的封面與資料,這樣就能無痛完成自己的影音媒體庫!

自己 DIY 一個 Media Server 吧!- 安裝 Plex 到 odroid HC4

實測後發現 Plex 會透過檔名去抓資料,所以會有找不到的情況,此時只能手動一一修改了。

遠端存取

到 設定 -> 遠端存取 開啟後,路由器不需要設 port forwarding,Plex 直接使用打穿的方法(我猜的)讓使用者連回 NAS 串流影片,我覺得這蠻方便大家可以試試看!

Plex web app 傳送門:https://app.plex.tv/desktop

自己 DIY 一個 Media Server 吧!- 安裝 Plex 到 odroid HC4

串流品質

Plex 預設只要在不同網段,就會自動對影片做即時壓縮,可是 HC4 的 SoC 沒有強悍到可以即時壓縮高品質的影片,好在現在光纖網路普及,上傳頻寬錯錯有餘,直接把畫質開到最大吧!

到 設定 -> 品質 取消勾選「自動調整品質」,並將「影片品質」下拉選單改成「最大」

自己 DIY 一個 Media Server 吧!- 安裝 Plex 到 odroid HC4

前面提到 docker 網路使用 host 不用 bridge 其實和這裡也有關係。假如今天開啟即時壓縮功能,Plex 判定的標準是看 client 和 server 是否在同一個網段,不同則壓縮,相同則原檔串流。假如使用 bridge 模式,雖然 client 和 server 看似在同一個住家 wifi 環境中,但 Plex container 用的網段和 host 不同(因為 bridge mode),導致 Plex 誤判而壓縮影片。當然如果關閉壓縮功能就沒有差異,這部分因人而異。

到這裡全部架設完成,趕快到 android tv 或是電腦上串流看看吧!

範例原始碼在此下載:github

延伸閱讀:
自己 DIY 一個 NAS 吧! – 安裝 OpenMediaVault 到 odroid HC4
自己 DIY 超省電 BT 下載機吧!- 安裝 ruTorrent 到 odroid HC4
如何讓 Odroid HC4 連接 Wifi?

參考資料:
Docker Hub: linuxserver/plex

Written by J
雖然大學唸的是生物,但持著興趣與熱情自學,畢業後轉戰硬體工程師,與宅宅工程師們一起過著沒日沒夜的生活,做著台灣最薄的 intel 筆電,要與 macbook air 比拼。 離開後,憑著一股傻勁與朋友創業,再度轉戰軟體工程師,一手扛起前後端、雙平台 app 開發,過程中雖跌跌撞撞,卻也累計不少經驗。 可惜不是那 1% 的成功人士,於是加入其他成功人士的新創公司,專職開發後端。沒想到卻在採前人坑的過程中,拓寬了眼界,得到了深層的領悟。