Emby的一個比較繞的玩兒法


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下的目錄為媒體庫路徑

大致步驟:

  1. 將你的windows上的媒體目錄共享出來
  2. 起個hyper-v虛機,裝debian
  3. debian上裝cifs-utils,mount windows共享出來的目錄到本地
  4. debian上裝k3s
  5. 通過yaml腳本部署emby
  6. 打開emby進行設置

具體步驟:

下面可能廢話比較多,便於從0開始。

將你的windows上的媒體目錄共享出來

  1. 將你的windows目錄共享出來。在你想要共享的目錄上右鍵->屬性->共享->高級共享。勾選“共享此文件夾”,設置權限(推薦限制為指定用戶,並且只讀)。
  2. 如果有多個需要共享的電腦,或者多個目錄,重復進行上述步驟。

起個hyper-v虛機,裝debian

  1. 下載debian鏡像,地址:https://gemmei.ftp.acc.umu.se/debian-cd/current/amd64/iso-cd/debian-10.9.0-amd64-netinst.iso
  2. hyper-v上新建一台虛機。
    1. 選擇“第二代”
    2. 分配內存4096MB,取消“動態分配內存”
    3. 網絡選擇外部的虛擬交換機,如果沒有則進hyper-v的菜單里找到“虛擬交換機管理”新建一個連接物理網卡。
    4. 新建1T虛擬磁盤,大小可以自己定,反正是動態的開始很小
    5. 選擇光驅為你剛剛下載的ISO文件
  3. 完成后,不着急開機,右鍵選中這台虛機,選“設置”。
    1. 選中“安全”,將“啟動安全啟動”勾去掉。
    2. 選中“處理器”,設置合適的核心數量,比如2
    3. 檢查點,勾去掉
    4. 自動停止操作,改為“強行關閉虛擬機”
  4. 啟動虛擬機,按照提示一步步安裝debian。(ip建議用static,建議此處配置)
  5. 安裝完成,進入虛機。debian的vi非常難用,建議安裝vim。apt install -y vim。避免鼠標右鍵粘貼出問題,需要配置vi ~/.vimrc
    if has("mouse")
        set mouse-=a
    endif
    
  6. 如果安裝過程中沒有設置ip,則進系統設置。(如已配置,下列步驟可以省略)
    1. vi /etc/resolv.conf, 內容為 nameserver 192.168.1.1(ip自己改,一般是你的無線路由或者光貓)
    2. 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
      
    3. systemctl restart networking
  7. 如果希望以后使用ssh來管理該機器,建議配置並棄用sshd。注意默認情況下debian的sshd禁止其他ip的root訪問,需要執行下面步驟
    1. 配置vi /etc/ssh/sshd_config
    2. 找到#PasswordAuthentication no,將注釋#符號去掉,並且把no改成yes。
    3. 找到#PermitRootLogin yes,將注釋#去掉。
    4. systemctl restart sshd

debian上裝cifs-utils,mount windows共享出來的目錄到本地

  1. apt install -y cifs-utils
  2. vi /root/.smbcred
    username=windows共享服務器的用戶名
    password=windows共享服務器的密碼
    
  3. vi /etc/fstab
    //windows的ip/共享的目錄(如//192.168.1.2/movie)  /本地的目錄(如/mnt/media/movie)  cifs  ro,vers=3.0,credentials=/root/.smbcred
    
  4. 現在你可以重啟以使mount生效。當然如果不希望重啟,也可以手動掛載,(按照上述例子):
    mount -t cifs //192.168.1.2/movie /mnt/media/movie -o ro,vers=3.0,credentials=/root/.smbcred
    

debian上裝k3s

  1. curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -s -
  2. 安裝完成后,可以查看k3s kubectl get node

通過yaml腳本部署emby

  1. 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
    
  2. kubectl apply -f emby.yaml

  3. 然后就可以盯着看了 watch 'kubectl get pod',等到emby的pod狀態為Running就成功了

打開emby進行設置

  1. emby的地址在你的 http://linux機器的ip:30030
  2. 打開后進行設置,添加媒體庫,目錄定位在/media下的子目錄。如/media/movie

OK。收工

最后補充下。當你想卸載的時候,linux上只需要跑 kubectl delete -f emby.yaml,你的config存儲和程序就都沒了。

當你連linux虛機也不想要了的時候,直接把虛機刪了。

原有的win上的媒體文件不受任何影響,非常方便。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM