我的 5.10.1 代 homelab

仅仅更新了一点微小的东西。

为什么又双叒叕升级了?

又几个月过去了,没有什么设备变化,主要是网络上的变化。

跟 cola 大老板起了一个 OpenVPN,用于互相内网访问资源,当然因为一些网段冲突了所以无法访问。

在 Wireguard 的基础上起了个 VXLAN,于是在我这边开了个 VLAN,并且在 GS316EPP 处设置好 VLAN 并物理接入了一台设备,这台设备直接从对方的 Router 获取 DHCP,从而除了变相的实现代理上网以外,同时也能直接访问所在网段的资源。

现在是个什么样子?

2024.11 的构造.png

怎么在已有的上面配置?

因为其余不是我设置的,我只能发一下 GS316EPP 的设置:

VLAN ID lan1 lan13 lan14 lan15 lan16
1 U - T T U
10 - - T T T
20 - - T T T
30 - - T T T
50 - U - - T
40 - - T T T
100 - - T T T
200 - - T T T

大功告成。

自动化压制?

每一周现在我都会压制日本电视的录制,目前都是在我自己的 PC 上压制,感觉很费时间,还要手动上传,打算借着将 E5 OneDrive for Business 同步接入 QNAP 的东风顺便把自动压制做了。

经过一个小时的考察,打算在 Proxmox 上再开一个 lxc,用 iGPU 来压制,这样可以跟 Jellyfin 共用一个 iGPU。如果在 QNAP 或者 Synology 上实现虽然也不是不行,但是感觉会影响 CPU,因为 yadif 这种 deinterlacer 好像是在 CPU 上跑的?

遂开始新建一个 Unprivileged container,同样的,因为我的 E5 同步是在 NAS 上的,所以要在 host 创建一个目录用于挂载文件。

mkdir -p /mnt/lxc_shares/e5

然后将挂载的相关信息写入 /etc/fstab

{ echo '' ; echo '# Mount CIFS share on demand with rwx permissions for use in LXCs ' ; echo '//SynologyIP/mount/QNAP-e5 /mnt/lxc_shares/e5 cifs _netdev,x-systemd.automount,noatime,uid=100000,gid=110000,dir_mode=0770,file_mode=0770,user=SynologyUsername,pass=SynologyPassword 0 0' ; } | tee -a /etc/fstab

其中,SynologyUsernameSynologyPassword 是你的群晖登录信息。也不要忘记更改 //SynologyIP/mount/QNAP-e5 这一部分,例如 //10.0.0.1/Videos

_netdev 让 systemd 认为挂载的是一个网络载点。

x-systemd.automount 如果 NAS 离线然后重新在线了,可以让它被自动挂载。

noatime 设置读取文件(夹)的时候不修改时间戳。

uid=100000,gid=110000 的设置是为了让 host 跟 LXC 内的 UID 和 GID 对应上。简单来说,host 内的 UID 是 100000 的话,LXC 内对应的 UID 就是 0。host 内的 GID 是 110000 的话,LXC 内对应的 GID 就是 10000。

dir_mode=0770,file_mode=0770 设置只有这个 UID 和 GID 才有读写执行权限。Proxmox 的 root 用户对任何文件都有权限。

接下来手动挂载。后面重启之后就是自动挂载。

mount /mnt/lxc_shares/e5

假设你已经创建好了 LXC,修改你的 LXC 设置。

{ echo 'mp0: /mnt/lxc_shares/e5,mp=/mnt/backup' ; } | tee -a /etc/pve/lxc/LXC_ID.conf

我这里需要读写文件夹(压制完再 copy 回去,从而直接上传到 E5),所以去掉了 ro=1

不要忘记将 LXC_ID.conf 里面的 LXC_ID 修改成你实际的 ID。

随后进入 LXC 的终端,添加一个用户组。GID=10000 的话会跟 host 的 GID=110000 对应上。

groupadd -g 10000 lxc_shares

因为我们之前已经做了 Jellyfin 的编解码支持已经设置过一次了,只需要照猫画虎。但这里我遇到了一个问题,我发现跟 Jellyfin 那边不同,我这边的 render 组默认是 993,而 108 被一个叫做 rdma 的组占领了。

root@machine:~# cat /etc/group | grep render
render:x:993:

此时我们需要做一个交换,思路就是,先更改 rdma 组的 GID 为 110,然后过一遍 filesystem 上的文件,将 108 组所有的文件改成 110,最后再将 render 组的 GID 更改为 108。

groupmod -g 110 rdma
groupmod -g 108 render
find / -gid 108 ! -type l -exec chgrp 110 {} \;

此时就大功告成了。因为我给自己开了个用户,所以我还需要将自己添加至 renderlxc_shares

usermod -aG render misaka00251
usermod -aG lxc_shares misaka00251

之后我在 lxc 内用 qsv 遇到了各种莫名其妙的问题,甚至遇到了 Intel 都知道的 bug,然后我转投了 vaapi 虽然可以压制但是画质不尽人意,而且参数非常复杂,最终跟 qsv 硬刚了一个周末,因为 bug 的原因,以前用 hevc 压制,目前只能用 h264 压制了。期待我能找到更好的方法吧。

压制脚本我就先留着不放了吧,怕还有 bug,有需要可以戳我,我单独给你 :D


如果喜欢本文,欢迎点击下方的「鼓掌」按钮!

如果上面没有加载出任何东西,可以点击这里