Running Plex in Docker

容器是很流行,以至於我現在的工作十個case裡面會有一個是容器相關的。

所以我嘗試將Homelab的部分環境遷移到Docker,目前為止得到以下的好處:

1)n8n獲得較多好處,可以相對穩定的運行,之前在FreeBSD的jail中總會有升級後白屏的問題。

2)zabbix遷移到docker後的升級維護也變得更為容易,特別是zabbix-web,在每個發行版的OS中他的版本都不太一致。

3)grafana的遷移獲得好處與zabbix類似。

4)redis-server有沒有獲得好處我不是很確定,因為他運行在bare-metal或是vm中,和容器化似乎區別不太大,他配置很少,最重要的原因是我的使用場景並沒有太大的數據量。

5)cloudflared獲得的好處相對較多,因為他在不同發行版的OS中,不,他只支持很少的OS,單獨用一個vm來運行他似乎很浪費。

但Plex並未獲得好處,

我有一個單獨的vm在運行plex,速度很快,穩定,debian的OS升級Plex並沒有任何的痛點,我並不偏好Linux,實際上Linux在跨版本升級的問題上有非常糟糕的歷史,我更偏好FreeBSD,他可以從十年前的OS一路升級上來而不會有太多問題。

但debian解決了跨版本升級的問題,不像redhat一如既往的糟糕,即使是從7升級到8。

實際上我從未遇到過plex本身的任何問題,只不過之前因為開啟了video preview thumbnails,導致Library文件夾急遽增加,一度到達200G,清理log關閉各種設置均不見好轉,直到關閉video preview thumbnails並刪除cache才使得Library文件夾變為20G左右。

OK,這個問題並不會因為容器化消失,如果這個問題復現,docker中的plex也會遇到。

因為我的videos全都放在一個raid1的NAS上,透過NFS的方式export給plex所在的debian OS來使用。而dockerd所在的vm磁盤空間並不足以存放20G的plex資料庫。

所以我想當然的將官方指引中的config目錄也丟到了NFS上。

-v <path/to/plex/database>:/config

https://hub.docker.com/r/plexinc/pms-docker/

結果就是,每個影片的頁面點開大約需要20秒,播放倒是很快,只有影片介紹的頁面感覺卡卡的。

reddit上已經早就有人實踐過了這一模式,而且得出了結論。

所以呢,要在docker中運行plex,只有videos可以放在NFS上,database是不可以的,必須放在本地磁盤,否則就會,卡。

——

docker stop plex

docker rm plex

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=”Asia/Taipei” \

-e PLEX_CLAIM=”claim-UG1NH2ZPhSrL7m879f2s” \

-e ADVERTISE_IP=”http://10.2.2.7:32400/” \

-h docker.plex.bbken.org \

-v /home/plex/database:/config \

-v /home/plex/transcode/temp:/transcode \

-v /videos:/videos \

plexinc/pms-docker

——

但是plex 在docker中的啟動似乎很慢,docker命令啟動後大約需要30秒,32400 port才會有反應,其他的運行起來和vm上的plex並無任何區別,至於hardware decode我並沒有用到,因為我不常在手機上看電影。

除了docker本身帶來的管理統一性,plex並未獲得明顯的好處,所以我將他切換回vm中去運行。

當然,最重要的原因還是因為debian 中的plex版本完全可以跟隨官方的升級進度。