文章

在Windows物理机上布置媒体库 - 使用WSL2, Jellyfin

我期望在本地局域网内搭建一套媒体库,旨在随时随地访问我的电影和电视剧内容。这套方案将分为两个版本:

  1. 验证版:该版本将在实验室的电脑上持续运行,用于稳定性验证等。
  2. 待定板:该版本将在未来出现在我家里,现在还是一个TODO的状态。


验证版


环境和软件

预备内容

一些前期准备内容,包括搭建有效的局域网通信,以处理我的Shadowsocks无法在当作服务器的笔记本上运行的奇怪问题。

WSL2开启ssh server


参考
配置ssh服务器

由于该笔记本是首次用作服务器,因此我直接重装代替更新:

  1. 卸载openssh-server
    1
    
     $ sudo apt remove openssh-server
    
  2. 安装openssh-server
    1
    
     $ sudo apt install openssh-server
    
  3. 配置文件:
    1
    
     $ vim /etc/ssh/sshd_config
    
  4. 配置IP和Root,允许用户名和密码登录,开放或者修改如下内容:
    1
    2
    3
    4
    5
    6
    
     Port 2222 # 配置ssh端口
     ListenAddress 0.0.0.0
    
     PermitRootLogin yes
     PasswordAuthentication yes
     PermitEmptyPasswords no
    
  5. 重启ssh服务:
    1
    
     sudo service ssh --full-restart
    


“固定”WSL IP

根据这篇教程,在WSL2.bashrc里配置启动项,启动WSL的同时写Windows物理机hosts文件,因此需要一些辅助功能,比如类似于sudogsudo,直接照着这个仓库抄就行了。

配置局域网访问
  1. 配置Windows物理机到WSL端口转发规则:(TODO:目前Windows机重启后转发会失效,感觉可以在WSL的bashrc里配置)
    1
    
     $ netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=[IP] connectport=[PORT]
    
  2. 配置防火墙出入站规则:
    1
    
     $ netsh advfirewall firewall add rule name=WSL2 dir=in action=allow protocol=TCP localport=2222
    


远程传递文件

如果不能远程传递文件,那么服务器就没有意义,不如搭一个本地的。我们选用rsync进行文件的传递,速度取决于网口带宽:

1
$  sudo rsync -av -e "ssh -p 2222" ./Shadowsocks-4.4.1.0.zip  root@192.168.1.112:/mnt/c/Downloads/

考虑到我更改了ssh的服务端口,所以需要-e "ssh -p 2222"来指定rsync的端口。

Jellyfin安装


附录:一些小工具


批量改名

使用PowerToys和PowerShell配合批量替换文件名或者添加公共前缀,PowerShell的一些功能subexpression operator

1
$(Get-ChildItem ./) | Rename-Item -NewName {"prefix" + $_.Name}

Get-ChildItem会循环读取路径下的子文件/文件夹,因此需要增加()对方法进行限定。

本文由作者按照 CC BY 4.0 进行授权