我从2017年开始使用Plex作为家里的媒体服务已经挺长时间了,一开始用的闲置笔记本,尝试了一阵子后决定给它配个专门的主机,于是年底买了台Nuc7作为Plex服务,装了Windows10作为操作系统,在当时主流片源大都1080P、上传带宽30mbps封顶的前提下,同时转码4、5路播放还是能很轻松的满足日常的媒体播放需求。
随着时间慢慢前进,4k、HDR、杜比视界这些新技术慢慢普及,在Windows限制下,Plex转码带有HDR内容的片源无法调用GPU,只能靠CPU来处理HDR转SDR的色彩映射,这就造成了CPU会一直高居100%,无论是其他播放体验还是远程管理都明显感到延迟和卡顿。
随着新一代技术的来临,各方媒体测试Intel的N100性能似乎证明了在linux下这款CPU是完美的Plex服务器首选处理器,观摩了同好北京土著的实机效果后,我决定给家里的主机升级换代。
目标:在保留现有数据库的前提下,把Plex服务器从Windows中迁移到Linux(Ubuntu)
首先,决定网络架构,现有的Windows主机上除了Plex之外我还有一些其他的服务比如alist、komga不能停,Windows用USB连接了2台世特力的5盘位硬盘盒。现在就要将这10个盘作为NFS服务提供给N100主机挂载。
配置Windows10内的NFS服务,列举重点操作
-
去
https://hanewin.net/nfs-e.htm这里下载NFS服务软件及语言文件 -
安装软件,把中文语言文件复制到安装目录的语言文件夹
-
启动软件,切换成中文
-
注册软件,不小心在网上搜到了共享出来的注册信息
点击查看name:astray.cnkey:FBLZ9467C95EEB4B
-
打开应用切换到输出,点击编辑输出表文件
-
编辑共享路径,设置仅限指定ip(N100主机)访问
示例 E:\ -alldirs -name:HDD-E -maproot:0 -range 192.168.1.80 F:\ -alldirs -name:HDD-F -maproot:0 -range 192.168.1.80 G:\ -alldirs -name:HDD-G -maproot:0 -range 192.168.1.80 -
确认服务器选项卡中的“将客户根目录映射到根目录”已勾选
以上操作结束,Windows这边的准备工作就全部完成了
接下来在畅网N100的工控主机上安装Ubuntu20.04.3 LTS
1、小白,全部选默认安装,安装好进到桌面
2、开启root用户
sudo passwd root
输入root用户的密码,回车
再次输入root用户的密码,回车
提示下面信息表示设置成功
passwd: password updated successfully
3、开启ssh模式root用户登录,打开编辑配置文件
sudo vi /etc/ssh/sshd_config
找到#Authentication行,将 PermitRootLogin no改成yes,并确认行首没有#号注释
找到#Authentication行,将 PasswordAuthentication no改成yes,并确认行首没有#号注释,没有的话可以直接添加此行
esc退出编辑模式后:wq保存退出
4、重新启动ssh服务
service sshd restart
5、开启GUI模式root用户登录,打开编辑配置文件
sudo vi /etc/gdm/gdm.conf
找到 AllowRoot=false,更改为 AllowRoot=ture
esc退出编辑模式后:wq保存退出
6、安装防火墙GUI界面
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install gufw
7、安装intel核显工具
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install intel-gpu-tools -y
8、查看核显状态
ls -l /dev/dri
9、启用GuC和HuC,打开grub文件编辑
sudo vi /etc/default/grub
# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
# info -f grub -n 'Simple configuration'
GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX="intel_iommu=on i915.enble_guc=7 quiet"
# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"
# Uncomment to disable graphical terminal (grub-pc only)
#GRUB_TERMINAL=console
# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480
# Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux
#GRUB_DISABLE_LINUX_UUID=true
# Uncomment to disable generation of recovery mode menu entries
#GRUB_DISABLE_RECOVERY="true"
# Uncomment to get a beep at grub start
#GRUB_INIT_TUNE="480 440 1"
找到 # GRUB_CMDLINE_LINUX_DEFAULT="quiet"
把原先的这行注释掉在下面新建一行
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on i915.enable_guc=7 quiet"
10、重启ubuntu
sudo reboot
11、查看显卡信息
intel_gpu_top
以上内容可以参考北京土著的wiki,链接跳转后有虚拟机方面更详细的步骤
12、在Ubuntu上建立挂载目录(上面Windows已经打开NFS服务)
示例
sudo mkdir /mnt/nuc/win-e
sudo mkdir /mnt/nuc/win-f
sudo mkdir /mnt/nuc/win-g
13、配置fstab增加挂载命令,打开编辑配置文件
sudo vi /etc/fstab
14、在最下面增加挂载命令
示例
192.168.1.150:/e /mnt/media/win-e nfs ro,sync,soft,nolock,_netdev 0 0
192.168.1.150:/f /mnt/media/win-f nfs ro,sync,soft,nolock,_netdev 0 0
192.168.1.150:/g /mnt/media/win-g nfs ro,sync,soft,nolock,_netdev 0 0
15、配置开机自动运行服务(代码为北京土著大佬手搓)
根目录建立文件夹amount
sudo mkdir amount
16、在目录中新建amount.sh文件
sudo touch amount.sh
17、打开编辑内容
sudo vi /amount/amount.sh
18、复制粘贴进下面内容,ip段更改为挂载的目标主机(我这里是Windows主机ip)
#!/bin/bash
# 检测网络链接畅通
function network() {
# 目标 IP
local target=192.168.1.150
# ping 命令检测网络
if ping -c 1 ${target} &> /dev/null
then
# 网络畅通
return 1
else
# 网络不畅通
return 0
fi
}
# 循环检测网络,直到网络畅通
while true; do
network
if [ $? -eq 1 ];then
echo "网络畅通,开始执行 mount -a 命令"
sudo mount -a
exit 0
else
echo "网络不畅通,继续检测..."
sleep 5
fi
done
:wq保存退出
19、在目录中增加install.sh文件
sudo touch install.sh
20、打开编辑内容
vi /amount/install.sh
21、复制粘贴进下面内容
#!/bin/bash
# 创建服务文件
cat << EOF > /etc/systemd/system/amount.service
[Unit]
Description=Check Network Connectivity
[Service]
ExecStart=/amount/amount.sh
Restart=always
[Install]
WantedBy=multi-user.target
EOF
# 重新加载 systemd,使其读取新的服务文件
systemctl daemon-reload
# 启动服务
systemctl start amount
# 设置服务在开机时自动启动
systemctl enable amount
:wq保存退出
22、给上面两个文件增加权限
chmod +x amount.sh
chmod +x install.sh
23、运行脚本
./install.sh
24、重启后输入df -h命令可以查看挂载是否生效
sudo df -h
文件系统 大小 已用 可用 已用% 挂载点
tmpfs 1.6G 2.9M 1.6G 1% /run
/dev/nvme0n1p2 916G 111G 759G 13% /
tmpfs 7.7G 4.0K 7.7G 1% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
efivarfs 192K 86K 102K 46% /sys/firmware/efi/efivars
/dev/nvme0n1p1 511M 6.1M 505M 2% /boot/efi
192.168.1.150:/e 9.1T 9.0T 144G 99% /mnt/nuc/hdd-e
192.168.1.150:/f 9.1T 9.0T 163G 99% /mnt/nuc/hdd-f
192.168.1.150:/g 9.1T 8.9T 234G 98% /mnt/nuc/hdd-g
tmpfs 1.6G 128K 1.6G 1% /run/user/0
到这里两个服务器的连接就已经打通了,接下来安装Plex到新的Ubuntu服务器中
- 首先安装CURL
sudo apt-get install apt-transport-https curl
- 添加 GPG 密钥
curl https://downloads.plex.tv/plex-keys/PlexSign.key | gpg --dearmor | sudo tee /usr/share/keyrings/plexserver.gpg > /dev/null
- 添加存储库
echo deb [arch=amd64 signed-by=/usr/share/keyrings/plexserver.gpg] https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list
- 运行系统更新
sudo apt-get update
sudo apt-get upgrade
- 安装 Plex 媒体服务
sudo apt install plexmediaserver
当它要求更新 Plex Media 配置文件时,按Y并按Enter键
- 检查Plex服务状态
systemctl status plexmediaserver
- 如果它未激活,则使用给定的命令启动并启用它
systemctl enable --now plexmediaserver
- 常用的Plex命令
启动服务
systemctl start plexmediaserver
停止服务
systemctl stop plexmediaserver
重新启动
systemctl restart plexmediaserver
- 浏览器中打开Plex管理页面
http://localhost:32400/web
- 全新服务器一路下一步即可,设置完毕后记得认领。
到这里,新Plex服务就已经部署完毕,接下来把Windows服务器中的现有库迁移到新服务器中
1、在Plex安装目录删除掉media、metadata、plug-in support、plug-ins四个文件夹
Plex安装目录
/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/
2、停止Windows中的plex服务
3、从Windows以下路径中
复制media、metadata、plug-in support、plug-ins四个文件夹全部内容到第一步的ubuntu目录
%localappdata%\plex media server
库比较大的话建议先做个压缩包,复制到位后解压缩再删除压缩包,所需时间要比几十GB碎文件来回Copy要省很多
4、复制完毕后启动Ubuntu中的Plex服务
systemctl start plexmediaserver
5、浏览器中打开Plex管理页面
http://localhost:32400/web
或者
https://app.plex.tv/
这时可以看到Windows的库已经在新的服务器上显示了,但因为路径变更了,点击播放会报错
6、关闭Plex设置中自动扫描功能,关闭扫描后清理垃圾功能,关闭删除功能
7、点击任意库的编辑-添加文件夹,在里面增加新的挂载路径,注意先不要删除旧Windows路径
8、添加新路径后保存修改,Plex会自动扫描,完毕后删掉旧的Windows路径
9、重复上面步骤把所有库的路径更新
10、现在可以开启Plex设置中自动扫描功能、扫描后清理垃圾和删除功能了
以上步骤参考自 https://www.youtube.com/watch?v=ggzlBVIwyDk
注意一点,建议更新资料库连接的时候,同时关闭片头片尾检测和缩略图生成,能节省大量时间,全部设置完毕后可以再开启,以后不论是手动添加还是自动计划任务均可
2024-04-15 如果Window重启,挂载的句柄会失效,需要用命令umount -a卸载旧的挂载句柄,然后再次mount-a挂载即可。
任务完成!撒花!
Mission completed!
写在最后:
这次迁移对我这种Linux零认知的小白来说学到了不少东西,从啥也不会到最后成功,绕了不少弯路,但也证明了凡事最重要的是走出第一步,一旦行动了,后来自然就水到渠成了,必要的步骤一锅烩的做个记录,岁数大了,再好的脑子也不如笔头子。