在Windows物理机上布置媒体库 - 使用WSL2, Jellyfin
我期望在本地局域网内搭建一套媒体库,旨在随时随地访问我的电影和电视剧内容。这套方案将分为两个版本:
- 验证版:该版本将在实验室的电脑上持续运行,用于稳定性验证等。
- 待定板:该版本将在未来出现在我家里,现在还是一个TODO的状态。
验证版
环境和软件
- 红米笔记本(CPU Intel-Core i5-9300H@2.40GHz,RAM 16G)
- Jellyfin(Jellyfin Server、Jellyfin Client AndroidTV、Jekkyfin Client Android)
预备内容
一些前期准备内容,包括搭建有效的局域网通信,以处理我的Shadowsocks无法在当作服务器的笔记本上运行的奇怪问题。
WSL2开启ssh server
参考
配置ssh服务器
由于该笔记本是首次用作服务器,因此我直接重装代替更新:
- 卸载
openssh-server
:1
$ sudo apt remove openssh-server
- 安装
openssh-server
:1
$ sudo apt install openssh-server
- 配置文件:
1
$ vim /etc/ssh/sshd_config
- 配置IP和Root,允许用户名和密码登录,开放或者修改如下内容:
1 2 3 4 5 6
Port 2222 # 配置ssh端口 ListenAddress 0.0.0.0 PermitRootLogin yes PasswordAuthentication yes PermitEmptyPasswords no
- 重启ssh服务:
1
sudo service ssh --full-restart
“固定”WSL IP
根据这篇教程,在WSL2.bashrc
里配置启动项,启动WSL的同时写Windows物理机hosts文件,因此需要一些辅助功能,比如类似于sudo
的gsudo
,直接照着这个仓库抄就行了。
配置局域网访问
- 配置Windows物理机到WSL端口转发规则:(TODO:目前Windows机重启后转发会失效,感觉可以在WSL的bashrc里配置)
1
$ netsh interface portproxy add v4tov4 listenaddress=0.0.0.0 listenport=2222 connectaddress=[IP] connectport=[PORT]
- 配置防火墙出入站规则:
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 进行授权