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我並沒有用到,因為我不常在手機上看電影。
![](https://bbken.org/wp-content/uploads/2024/05/img_5044-1-473x1024.png)
除了docker本身帶來的管理統一性,plex並未獲得明顯的好處,所以我將他切換回vm中去運行。
當然,最重要的原因還是因為debian 中的plex版本完全可以跟隨官方的升級進度。