Emby的一個比較繞的玩兒法
最近折騰了一下emby,實現了一個比較繞的玩法。
這么折騰,是基於以下原因
- 家庭媒體中心,只試了Emby。
- 已存在的媒體文件基本都在windows系統上。
- 提供服務的機器,還是用linux比較好。
- 容器能夠提供很好的隔離性,以及方便安裝、卸載、恢復。卸載后清爽。
- k3s很好玩。
於是,設計了如下家庭媒體中心架構:
- 媒體資源文件放在windows機器上,通過windows文件共享(smb)共享給局域網。
- 找一台機器,裝linux。事實上,我是用的hyper-v的虛機,vm也一樣。linux我用的debian,buster版本。linux上安裝smbclient,將windows的共享目錄映射到某個本地文件夾下。例如/mnt/media。多個win機器的多個共享文件夾可以映射到不同子目錄。例如/mnt/media/movie1,/mnt/media/audio2。
- linux上裝k3s,k3s跑emby的deployment。指定存儲卷,/config對應目錄使用local-path存儲類,而/media則掛host-path,指定到linux上smb掛載的目錄。emby上配置/media下的目錄為媒體庫路徑
大致步驟:
- 將你的windows上的媒體目錄共享出來
- 起個hyper-v虛機,裝debian
- debian上裝cifs-utils,mount windows共享出來的目錄到本地
- debian上裝k3s
- 通過yaml腳本部署emby
- 打開emby進行設置
具體步驟:
下面可能廢話比較多,便於從0開始。
將你的windows上的媒體目錄共享出來
- 將你的windows目錄共享出來。在你想要共享的目錄上右鍵->屬性->共享->高級共享。勾選“共享此文件夾”,設置權限(推薦限制為指定用戶,並且只讀)。
- 如果有多個需要共享的電腦,或者多個目錄,重復進行上述步驟。
起個hyper-v虛機,裝debian
- 下載debian鏡像,地址:https://gemmei.ftp.acc.umu.se/debian-cd/current/amd64/iso-cd/debian-10.9.0-amd64-netinst.iso。
- hyper-v上新建一台虛機。
- 選擇“第二代”
- 分配內存4096MB,取消“動態分配內存”
- 網絡選擇外部的虛擬交換機,如果沒有則進hyper-v的菜單里找到“虛擬交換機管理”新建一個連接物理網卡。
- 新建1T虛擬磁盤,大小可以自己定,反正是動態的開始很小
- 選擇光驅為你剛剛下載的ISO文件
- 完成后,不着急開機,右鍵選中這台虛機,選“設置”。
- 選中“安全”,將“啟動安全啟動”勾去掉。
- 選中“處理器”,設置合適的核心數量,比如2
- 檢查點,勾去掉
- 自動停止操作,改為“強行關閉虛擬機”
- 啟動虛擬機,按照提示一步步安裝debian。(ip建議用static,建議此處配置)
- 安裝完成,進入虛機。debian的vi非常難用,建議安裝vim。
apt install -y vim
。避免鼠標右鍵粘貼出問題,需要配置vi ~/.vimrc
if has("mouse") set mouse-=a endif
- 如果安裝過程中沒有設置ip,則進系統設置。(如已配置,下列步驟可以省略)
vi /etc/resolv.conf
, 內容為 nameserver 192.168.1.1(ip自己改,一般是你的無線路由或者光貓)vi /etc/network/interfaces
,(具體ip自己改,網關一般是你的無線路由或者光貓),如果你的硬件名不是eth0,則使用你的硬件名。具體通過:ls /sys/class/net
找auto eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.xx netmask 255.255.255.0 gateway 192.168.1.1 bradcase 192.168.1.255
systemctl restart networking
- 如果希望以后使用ssh來管理該機器,建議配置並棄用sshd。注意默認情況下debian的sshd禁止其他ip的root訪問,需要執行下面步驟
- 配置
vi /etc/ssh/sshd_config
- 找到#PasswordAuthentication no,將注釋#符號去掉,並且把no改成yes。
- 找到#PermitRootLogin yes,將注釋#去掉。
systemctl restart sshd
- 配置
debian上裝cifs-utils,mount windows共享出來的目錄到本地
apt install -y cifs-utils
vi /root/.smbcred
username=windows共享服務器的用戶名 password=windows共享服務器的密碼
vi /etc/fstab
//windows的ip/共享的目錄(如//192.168.1.2/movie) /本地的目錄(如/mnt/media/movie) cifs ro,vers=3.0,credentials=/root/.smbcred
- 現在你可以重啟以使mount生效。當然如果不希望重啟,也可以手動掛載,(按照上述例子):
mount -t cifs //192.168.1.2/movie /mnt/media/movie -o ro,vers=3.0,credentials=/root/.smbcred
debian上裝k3s
curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s -
- 安裝完成后,可以查看
k3s kubectl get node
通過yaml腳本部署emby
-
vi emby.yaml
#pvc kind: PersistentVolumeClaim apiVersion: v1 metadata: name: emby-config spec: resources: requests: storage: 10Gi accessModes: - ReadWriteOnce storageClassName: local-path --- #svc apiVersion: v1 kind: Service metadata: name: emby labels: app: emby spec: type: NodePort ports: - name: emby port: 8096 targetPort: 8096 nodePort: 30030 selector: app: emby --- #deploy apiVersion: apps/v1 kind: Deployment metadata: name: emby labels: app: emby spec: replicas: 1 selector: matchLabels: app: emby template: metadata: labels: app: emby spec: containers: - name: emby image: emby/embyserver ports: - containerPort: 8096 resources: limits: cpu: 2000m memory: 4096Mi requests: cpu: 100m memory: 256Mi volumeMounts: - name: emby-config mountPath: /config - name: emby-media mountPath: /media - name: localtime readOnly: true mountPath: /etc/localtime volumes: - name: emby-config persistentVolumeClaim: claimName: emby-config - name: emby-media hostPath: type: Directory path: /mnt/media - name: localtime hostPath: type: File path: /etc/localtime strategy: type: Recreate
-
kubectl apply -f emby.yaml
-
然后就可以盯着看了
watch 'kubectl get pod'
,等到emby的pod狀態為Running就成功了
打開emby進行設置
- emby的地址在你的 http://linux機器的ip:30030
- 打開后進行設置,添加媒體庫,目錄定位在/media下的子目錄。如/media/movie
OK。收工
最后補充下。當你想卸載的時候,linux上只需要跑 kubectl delete -f emby.yaml
,你的config存儲和程序就都沒了。
當你連linux虛機也不想要了的時候,直接把虛機刪了。
原有的win上的媒體文件不受任何影響,非常方便。