Loading... 我从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服务器首选处理器,观摩了同好[北京土著](https://github.com/Tosslog/PlexMediaServer/wiki)的实机效果后,我决定给家里的主机升级换代。 目标:在保留现有数据库的前提下,把Plex服务器从Windows中迁移到Linux(Ubuntu) 首先,决定网络架构,现有的Windows主机上除了Plex之外我还有一些其他的服务比如alist、komga不能停,Windows用USB连接了2台世特力的5盘位硬盘盒。现在就要将这10个盘作为NFS服务提供给N100主机挂载。 配置Windows10内的NFS服务,列举重点操作 - 去 `https://hanewin.net/nfs-e.htm` 这里下载NFS服务软件及语言文件 - 安装软件,把中文语言文件复制到安装目录的语言文件夹 - 启动软件,切换成中文 - 注册软件,不小心在网上搜到了共享出来的注册信息 <div class="panel panel-default collapse-panel box-shadow-wrap-lg"><div class="panel-heading panel-collapse" data-toggle="collapse" data-target="#collapse-d113a35dee67a9b107106a70387d448f65" aria-expanded="true"><div class="accordion-toggle"><span style="">点击查看</span> <i class="pull-right fontello icon-fw fontello-angle-right"></i> </div> </div> <div class="panel-body collapse-panel-body"> <div id="collapse-d113a35dee67a9b107106a70387d448f65" class="collapse collapse-content"><p></p>name:astray.cn key:FBLZ9467C95EEB4B<p></p></div></div></div> - 打开应用切换到输出,点击编辑输出表文件 - 编辑共享路径,设置仅限指定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 ``` 以上内容可以参考[北京土著](https://github.com/Tosslog/PlexMediaServer/wiki/%E5%85%B3%E4%BA%8E%E4%B8%80%E7%AF%87-N100-%E5%A6%82%E4%BD%95%E5%9C%A8-ESXi-linux-PMS%E5%AE%9E%E7%8E%B0%E7%A1%AC%E8%A7%A3-%E5%8F%AF%E4%BB%A5%E4%BD%9C%E4%B8%BA%E6%95%99%E7%A8%8B%E7%9A%84%E8%AE%B0%E5%BD%95)的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服务器中的现有库迁移到新服务器中 <div class="tip inlineBlock share"> 内容引用自:[这里编辑标签内容](https://www.youtube.com/watch?v=ggzlBVIwyDk) </div> --- 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零认知的小白来说学到了不少东西,从啥也不会到最后成功,绕了不少弯路,但也证明了凡事最重要的是走出第一步,一旦行动了,后来自然就水到渠成了,必要的步骤一锅烩的做个记录,岁数大了,再好的脑子也不如笔头子。 最后修改:2024 年 09 月 25 日 © 允许规范转载 赞 1 如果觉得我的文章对你有用,请随意赞赏