PVE安装

参考:主要来源于张大妈

  1. https://post.smzdm.com/p/ar6zmoox/
  2. https://post.smzdm.com/p/a4dm98ok/

下载

使用ultraiso安装

image-20220626152733835

image-20220626152807814

用diskgenius删除所有分区重新格式化

如果插入u盘时提示需要格式化,大概率要重新格式化才能写入

image-20220626153040221

格式化需要用到DiskGenius

image-20220626152930413

image-20220626153200746

image-20220626153234507

恢复成功后应该就能够打开u盘了

image-20220626153324459

update 先用rufus安装,再切换到ultraiso重新安装就可以了

image-20220626154419319

image-20220626154603331

image-20220626155439675

pve设置

ssh免密登陆

直接搜ssh免密登陆,新建或者把已有的公钥黏贴到~/.ssh/authorized_keys即可

image-20220626163626565

image-20220626163702658

网络设置

参考:https://blog.csdn.net/tangobravo/article/details/119336503

网络不通,检查以下几个参数

/etc/network/interfaces,其中gateway填写路由器地址即可

image-20220626164007247

/etc/hosts一般不用改,安装的时候已经设置好了

image-20220626164026759

/etc/resolv.conf 重头戏,需要改,主要是添加dns,比如下面添加了两个,一个国内一个国外

image-20220626164157731

最后运行下面的命令重启网络服务

service networking restart

更换源(强烈建议更换)

APT源

参考:

  1. 强烈推荐USTC的源设置说明,非常方便https://mirrors.ustc.edu.cn/help/proxmox.html

这一步不是必选的,可以在没有配置上proxychains全局代理前先替换为国内源,方便安装各种依赖包

先备份源

cd /etc/apt/s
cp sources.list sources.list.bak

然后参考上述参考1

  • 更换source.list
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list

image-20220626171021868

  • 新增pve-no-subscription.list
source /etc/os-release
echo "deb https://mirrors.ustc.edu.cn/proxmox/debian/pve $VERSION_CODENAME pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
  • 最后更新(可选)
apt update && apt dist-upgrade -y

CT template源

参考:

  1. 强烈推荐USTC的源设置说明,非常方便
cp /usr/share/perl5/PVE/APLInfo.pm /usr/share/perl5/PVE/APLInfo.pm_back
sed -i 's|http://download.proxmox.com|https://mirrors.ustc.edu.cn/proxmox|g' /usr/share/perl5/PVE/APLInfo.pm

安装proxychains-ng以及Txray

proxychains-ng安装

参考:

  1. 使用proxychains-ng实现全局代理
git clone https://github.com/rofl0r/proxychains-ng
sudo apt-get install  gcc automake autoconf libtool make # 安装依赖

cd proxychains-ng/
./configure --prefix=/usr --sysconfdir=/etc
sudo make && make install

安装好以后配置代理/etc/proxychains.conf,其中1080是后面Txray的默认端口

image-20220626172109110

Txray安装

mkdir Txray-linux-64/Xray-core && unzip Xray-linux-64.zip -d Txray-linux-64/Xray-core
chmod u+x Txray-linux-64/Txray && chmod u+x Txray-linux-64/Xray-core/xray

配置环境变量

image-20220626175533572

Txray使用

  • Get "https://www.youtube.com": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

image-20220626222403547

image-20220626222409739

打开 允许来自局域网的连接,可能能缓解,问题原因未知

image-20220626222442872

image-20220626222511550

linux基础使用

用wget或者curl下载github release

参考:https://iogogogo.github.io/2020/02/14/cmd-download-file/

例子:

wget --no-check-certificate --content-disposition https://github.com/ctripcorp/apollo/releases/download/v1.5.1/apollo-adminservice-1.5.1-github.zip

curl -LJO https://github.com/ctripcorp/apollo/releases/download/v1.5.1/apollo-adminservice-1.5.1-github.zip

前面加上proxychains4即可实现通过代理下载

安装群晖

参考:

  1. 相当详细,https://post.smzdm.com/p/a0dol3wr/
  2. wxgas的教程,https://wp.gxnas.com/11213.html,也很详细
  3. 很不错的教程,https://www.modb.pro/db/337817
  4. DSM7.0.1的引导和pat下载,https://www.openos.org/threads/2022613dsm7-x.3529/

需要注意的是,下面的教程是融合了上述三个教程 + 单独试验的参数,不同的机器或者pve教程都不尽相同。除此之外,DSM的镜像也可以自己单独编译

创建虚拟机

image-20220626223528093

image-20220626223538363

BIOS改为SeaBIOS

image-20220626223622184

设成1即可,因为后面还要删掉

image-20220626223644630

CPU可选host或者默认

image-20220626223726728

image-20220626223733127

分离硬盘

image-20220626223852711

image-20220626223911943

再重新添加硬盘

image-20220626225138966

上传镜像

image-20220626223942710

image-20220626224107775

导入镜像(推荐方法)

找到上传的镜像位置,比如/var/lib/vz/template/iso/DS918__7.1.0-42661______.img,对应的虚拟机的编号是100,则importdisk的命令为:

qm importdisk 100 /var/lib/vz/template/iso/DS918__7.1.0-42661______.img local-lvm

先分离一开始新建的硬盘,然后再在这里设置,确保是sata0

image-20220627000933024

然后在修改启动选项,勾选sata0

image-20220627005744665

配置虚拟机conf(不推荐这个方法)

image-20220626224615076

args: -device 'qemu-xhci,addr=0x18' -drive 'id=synoboot,file=/var/lib/vz/template/iso/DS918__7.1.0-42661______.img,if=none,format=raw' -device 'usb-storage,id=synoboot,drive=synoboot,bootindex=5'

这个方法存在的问题是,安装完成后不会自动重启

修改镜像文件中的grub

参考wxgas的教程

主要就是修改这两行,后面的参数

image-20220626231959598

主要有:

  • 删除双网卡的设定

旧版:

usb:

syno_hw_version=DS918+ console=ttyS0,115200n8 netif_num=2 pid=0x0001 earlycon=uart8250,io,0x3f8,115200n8 syno_port_thaw=1 SasIdxMap=0 mac2=001132123457 mac1=001132123456 sn=2022NAS123456 vid=0x46f4 elevator=elevator loglevel=15 HddHotplug=0 DiskIdxMap=00 syno_hdd_detect=0 vender_format_version=2 syno_hdd_powerup_seq=1 log_buf_len=32M root=/dev/md0 SataPortMap=1 

sata

syno_hw_version=DS918+ console=ttyS0,115200n8 netif_num=2 pid=0x0001 earlycon=uart8250,io,0x3f8,115200n8 synoboot_satadom=2 syno_port_thaw=1 SasIdxMap=0 mac2=001132123457 mac1=001132123456 sn=2022NAS123456 vid=0x46f4 elevator=elevator loglevel=15 HddHotplug=0 DiskIdxMap=00 syno_hdd_detect=0 vender_format_version=2 syno_hdd_powerup_seq=1 log_buf_len=32M root=/dev/md0 SataPortMap=1 

新版:

usb:

syno_hw_version=DS918+ console=ttyS0,115200n8 netif_num=1 pid=0x0001 earlycon=uart8250,io,0x3f8,115200n8 syno_port_thaw=1 SasIdxMap=0 mac1=001132123456 sn=2022NAS123456 vid=0x46f4 elevator=elevator loglevel=15 HddHotplug=0 DiskIdxMap=00 syno_hdd_detect=0 vender_format_version=2 syno_hdd_powerup_seq=1 log_buf_len=32M root=/dev/md0 SataPortMap=1 

sata:

syno_hw_version=DS918+ console=ttyS0,115200n8 netif_num=1 pid=0x0001 earlycon=uart8250,io,0x3f8,115200n8 synoboot_satadom=2 syno_port_thaw=1 SasIdxMap=0 mac1=001132123456 sn=2022NAS123456 vid=0x46f4 elevator=elevator loglevel=15 HddHotplug=0 DiskIdxMap=00 syno_hdd_detect=0 vender_format_version=2 syno_hdd_powerup_seq=1 log_buf_len=32M root=/dev/md0 SataPortMap=1 

成品grub(省略其余未修改部分):

menuentry 'RedPill DS918+ v7.1.0-42661 (USB, Verbose)' {
	savedefault
	set root=(hd0,msdos1)
	echo Loading Linux...
	linux /zImage withefi earlyprintk syno_hw_version=DS918+ console=ttyS0,115200n8 netif_num=1 pid=0x0001 earlycon=uart8250,io,0x3f8,115200n8 syno_port_thaw=1 SasIdxMap=0 mac1=001132123456 sn=2022NAS123456 vid=0x46f4 elevator=elevator loglevel=15 HddHotplug=0 DiskIdxMap=00 syno_hdd_detect=0 vender_format_version=2 syno_hdd_powerup_seq=1 log_buf_len=32M root=/dev/md0 SataPortMap=1 
	echo Loading initramfs...
	initrd /rd.gz /custom.gz
	echo Starting kernel with USB boot
}

menuentry 'RedPill DS918+ v7.1.0-42661 (SATA, Verbose)' {
	savedefault
	set root=(hd0,msdos1)
	echo Loading Linux...
	linux /zImage withefi earlyprintk syno_hw_version=DS918+ console=ttyS0,115200n8 netif_num=1 pid=0x0001 earlycon=uart8250,io,0x3f8,115200n8 synoboot_satadom=2 syno_port_thaw=1 SasIdxMap=0 mac1=001132123456 sn=2022NAS123456 vid=0x46f4 elevator=elevator loglevel=15 HddHotplug=0 DiskIdxMap=00 syno_hdd_detect=0 vender_format_version=2 syno_hdd_powerup_seq=1 log_buf_len=32M root=/dev/md0 SataPortMap=1 
	echo Loading initramfs...
	initrd /rd.gz /custom.gz
	echo Starting kernel with SATA boot
	echo WARNING: SATA boot support on this platform is experimental!
}

设置硬盘直通

参考 参考3

ls -l /dev/disk/by-id

image-20220627005950628

虚拟机的编号是100,sata1已经被占用,因此命令是:

# qm set VMID -sata2 /dev/disk/by-id/
qm set 100 -sata2 /dev/disk/by-id/ata-WDC_WD40PURX-78AKYY0_WD-WX42DA1L45TC

image-20220627010206578

  • 最后的成品设置

image-20220627010814793

关于硬盘直通的问题

参考:https://wangxingcs.com/2020/0227/1411/

image-20220702013030758

遇到的问题

一直在还原界面循环

参考:https://www.openos.org/threads/vmware7-1-0-42661.4413/

image-20220627005238849

在安装的时候完全断外网(可以在路由器上断),就解决了

无法识别千兆网卡(实测并不是,virtio能够跑满千兆)

参照iperf3使用https://post.smzdm.com/p/ag89wxk7/。群晖作为服务端,windows或者linux作为客户端测试。默认的virtio速度只有百兆:

image-20220730013505676

最后发现是WiFi的问题。使用有线直接连接路由器的wan口后,速度达到了千兆。说明使用virtio做虚拟化是能够跑满千兆的!!!

image-20220730214342969

群晖使用

存储池

导入已有的存储池

利用在线重组

image-20220627010520959

image-20220627010536669

硬盘上原有的资料都在

image-20220627010553909

设置NFS

参考:

  1. https://post.smzdm.com/p/a4dz4do7/
  2. 更推荐这种方法:https://post.smzdm.com/p/a85g06k7/

image-20220629232705899

更好的方法:

通过pve前端设置,这样所有容器都能共用

下面这种方法实际上是把NFS重新挂载处理,方便pve处理而已

image-20220630005051914

更好的挂载方法

注意到群晖本身就支持网路区段设置。所以实际上是可以将整个路由器的区段都加进的

image-20220703142733221

参考https://zhuanlan.zhihu.com/p/450407655

image-20220703142821671

所以这里只需要根据路由器的区段,整个一起设置。比如路由器是192.168.68.1,那么可以设置为192.168.68.0/24。这样子就把整个192.168.68.1~196.168.68.254都囊括了进来

image-20220703142928806

实测也没有问题

20220904更新(以这个为准)

强烈建议除了使用网段之外,也把权限映射加上,这样就可以避免后续的权限问题

image-20220904121405132

实在没法连接的,考虑单独添加进来也可以

image-20220904121434878

和windows/Mac文件共享

建议直接用Samba协议,Mac和windows用起来都非常方便,其中账户直接用登陆DSM管理界面的账号即可,进去以后所有文件都能看到

image-20220701233425046

image-20220701233440403

速度和直接NFS差不多

image-20220701233528414

NFS:

实测更慢……

image-20220703113450907

NFS/SMB速度慢的问题(实测并不存在速度不同的问题)

image-20220703113522759

依旧很慢

image-20220703113657188

在mac上用NFS和SMB都测试过了,速度基本能够达到800M+,说明已经跑满了。按住option键点击wifi按钮即可看到

SMB:

image-20220703114548367

NFS mac下基本也能达到这个速率,但是实际感受SMB更快

image-20220703120619778

实际最后通过在windows下的wsl和mac的terminal中直接用iperf3对群晖的ip测速,发现二者的速度是一样的:

  • 在WiFi状态下只能达到百兆级别
  • 只有在有线连接(网线接路由器wan口)才能达到千兆级别

因此可以断定,所谓windows速度比mac慢的问题并不存在。在WiFi状态下,windows和mac一样慢,要跑满千兆必须得使用有线连接,或者更换路由器!!

portainer中添加了自动挂载,但是docker jellyfin经常没有挂载成功的问题

但是手动重启portainer的LXC容器,或者重启docker jellyfin之后,又可以了,怀疑是启动顺序的原因。因此调整启动顺序:

  • 群晖先于portainer启动
  • 群晖的启动延时至少有30s。这点才是关键!!群晖启动之后NFS服务并不是马上成功的,因此需要延时!!!

image-20220904121724733

DDNS

前置工作

参考:

  1. https://www.ioiox.com/archives/105.html,主要参考前面cloudflare设置的部分
  2. https://www.ioiox.com/archives/106.html,主要参考后面docker设置的部分

cloudflare配置,不推荐,已经无法通过api修改freenom免费域名记录

先添加站点,选免费的就好

image-20220904163935451

image-20220904164001036

先全部跳过,按照默认设置来,然后进入到主页面之后,复制右边的api

image-20220904164108987

获取api令牌,直接使用模板,改成所有区域即可

image-20220904164220078

image-20220904164332330

注意保管好生成的令牌!后续看不到

image-20220904164423318

再去到freenom的页面,修改对应的namserver

image-20220904173003150

image-20220904173046071

等待几分钟之后就好了

image-20220904173628746

实测会失败!!!!无法通过API修改!!!

image-20220904183724089

dnspod

image-20220904185425181

image-20220904185524781

同样是修改DNS服务器

image-20220904185829151

没问题之后获取API密匙

image-20220904190007029

image-20220904190111921

image-20220904190139183

id和token都需要

ddns go部署

参考:

  1. https://csyan.cn/2021/08/%E7%BE%A4%E6%99%96%EF%BC%9A%E4%BD%BF%E7%94%A8ddns-go%E5%A5%97%E4%BB%B6%E5%AE%9E%E7%8E%B0ipv6%E5%8A%A8%E6%80%81%E8%A7%A3%E6%9E%90.html,比较详细的教程

image-20220904164807974

参考官方文档的配置:

image-20220904164909186

image-20220904164939168

打开http://群晖IP:9876,填入刚刚获得的token,并启用ipv6,修改成网卡获取

image-20220904171232058

image-20220904171416076

**注意domains那里要填写需要的域名,可以添加主机记录,比如域名是example.com,那么可以填写ddns.example.com**。如果希望多个域名,则可以用ddns1:ddns2:example.com这样

image-20220904190915797

推送方面,可以通过注册个人企业微信,在企业微信群中添加机器人,得到对应的webhook,然后

参考的信息:

{
    "msgtype": "text",
    "text": {
        "content": "#{ipv6Domains} 获取ipv6地址结果:#{ipv6Result},新的ipv6地址:#{ipv6Addr}",
		"mentioned_list":["@all"]
    }
}

设置成功的话,可以在日志里看到

image-20220904190623519

安全设置

参考:

  1. https://hin.cool/posts/nasec.html 很详细

主要就设置几个地方:

  1. 关闭admin账号
  2. 如果开启ssh,要把默认的端口改成其他的,非22/23/80/8080的
  3. 开启账户保护

image-20220904175734244

image-20220904175717212

PVE使用windows系统

参考:

  1. 教程贴,虽然不是很详细,但是总体还不错,注意并不一定需要用到物理的U盘来安装https://www.right.com.cn/forum/thread-6546634-1-1.html
  2. 精简版windows server系统来源,包含部分使用说明,https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=7500317&highlight=%D1%B8%C0%D7但这个版本不包含NFS管理器,不推荐
  3. 强烈建议按照这篇的进行安装!!https://www.right.com.cn/forum/thread-4129536-1-1.html,非常不错!!
  4. 张大妈上的文章,注意看esd是怎么转化成iso的,https://post.smzdm.com/p/a78e79ll/

安装

关于windows版本选择

参考https://www.423down.com/10032.html

image-20220702180537741

最后选择了小修的系统https://www.423down.com/12361.html/comment-page-2#comments但小修的系统依旧没有NFS

不忘初心的系统也还行 https://www.mpyit.com/win10ltsc2019bwcx.html,**实测有NFS**

image-20220702221112714

有NFS

image-20220702221310172

驱动更全,只有网卡和PCI设备没有识别

image-20220702221205539

美中不足的是比较耗资源(内存)

image-20220702225611848

最后的结论:

  1. 使用不忘初心的版本最好!!,但是比较耗资源,远程桌面略卡。可以考虑用上面的windows server精简版,用SMB协议挂载,道理是类似的,可能SMB的性能没那么好,但是也够用了。但后面切换mac发现,远程桌面卡的问题应该是笔记本的问题
  2. 官方LTSC 2019版本不是那么好用,需要自己设置很多东西,比如远程桌面就需要自己单独设置。还不如不忘初心的。

准备ISO

主要参考 参考4

image-20220702002451649

第一步,利用winpe生成iso,此时的iso里面包含了winpe工具箱

image-20220701234022881

第二步,打开ultraiso,把esd文件直接拖进去,再把KMS激活程序也解压出来,一起加进去,另存为另一个iso

image-20220702183922214

最后得到两个ISO

image-20220701235907183

再算上参考3的驱动ISO,总共3个

开始安装

进入PE安装(esd格式的安装方法)

同样是先上传到local节点

image-20220702002708874

实测用小修的系统的话,12G也够了

image-20220702000209128

image-20220702000303523

image-20220702000316480

依次把三个ISO挂载上

image-20220702000418371

image-20220702182648947

默认使用的硬盘要注意开启SSD仿真。如果无法直接修改,就先分离硬屏,就可以修改参数了

image-20220828215436332

调整启动的顺序,让wepe的iso在最上面

image-20220702000507951

image-20220702182723788

启动之后很快进入了PE

image-20220702000620809

打开我的电脑,可以看到两个ISO都被挂载了,其中D盘包含了我们需要的esd

image-20220702000805301

先用DiskGenius分区

image-20220702182033796

image-20220702182052119

image-20220702182106504

image-20220702182136528

image-20220702182150608

建议还是不要勾选自动重启,方便后续调整虚拟机的启动顺序

image-20220702182213238

安装完成后,在重启前调整启动顺序

image-20220702182505998

顺利进入安装页面

image-20220702002159907

最后自动进入桌面

image-20220702002810227

直接挂载iso安装

针对的是像不忘初心这种,下载下来就是iso的情况,直接传输到local节点。(或者直接下载到硬盘里),然后挂载到虚拟机里

接下来同样是先进入pe,格式化硬盘(包括建立引导),注意这一步必不可少!!!,否则空间不足

然后在pe系统下,选择加载为ImDisk虚拟磁盘,可以看到多了一个盘符

image-20220702220045335

image-20220702220128430

选择sources目录下的install.esd即可

image-20220702220232175

其余步骤和上面基于esd格式的安装一致

注意默认的是Admin版本的。如果需要普通user版本的,则需要通过iso安装。具体而言:

  • 把原始的安装iso上传到local节点并挂载
  • 开机顺序选择该iso启动
  • 进入安装界面后继续选择

LTSC 2019版本的配置

image-20220828221635270

image-20220828221652824

PS:如何直接从硬盘从挂载而不先传到local 实测下面的方法不行,必须先得导入成cd rom镜像

创建好虚拟机之后,直接用命令即可

qm importdisk vm-id path/to/iso local-lvm
  • 首先找到镜像的位置:

image-20220828214808960

比如这里是/mnt/pve/wd_nas_4t/images/cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso

  • 然后按照上面的命令格式来:
qm importdisk 103 /mnt/pve/wd_nas_4t/images/cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso local-lvm

可以看到传输速度更快

image-20220828215026935

  • 导入完成后,可以看到这里有个未使用磁盘

image-20220828215050871

把这个改成sata格式即可

正确做法
  • 先找到位置硬屏上iso的位置

  • 然后用cp命令复制到iso目录下

cp /mnt/pve/wd_nas_4t/images/cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso /var/lib/vz/template/iso/
  • 其余步骤和一般的导入cdrom一样

安装完成后,调整启动顺序

安装完成后,先不要直接重启, 而是先关机,调整完启动顺序后再重启

image-20220828222029366

驱动安装

可以先安装好驱动,再激活

默认情况下可以看到以太网设备是不通的,所以需要参照参考3里面的驱动安装步骤

下载最新版本的驱动,https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.217-2/

image-20220702003035410

image-20220702003049286

同样是上传后挂载,然后重启,就能在windows系统里看到了

image-20220702003703900

网卡驱动:

image-20220702003643978

image-20220702003724174

image-20220702003739621

PCI驱动则是整个目录

image-20220702005506528

image-20220702005538804

激活

强烈建议使用萌卡大佬的https://www.moerats.com/kms/,按教程获得脚本即可

使用

windows系统设置

设置管理员密码,方便远程桌面登陆

image-20220702004542363

虚拟机开启远程桌面权限

LTSC 2019原版需要

首先参照 http://www.aichunjing.com/xtjc/14444.html 修改为个人电脑。然后在系统处设置相关

远程桌面设置

把所有选项勾上,共享磁盘

image-20220702005208836

挂载NFS

参考:https://blog.51cto.com/huny/3265487

首先按照NFS客户端

image-20220702221834014

然后找到本机ip,在DSM上添加对应的ip

image-20220702221935622

image-20220702222044490

参考参考:

image-20220702222253896

这里使用的命令类似,同样是挂载的X盘,注意下面的命令要在命令提示符里面,而不能在powershell

mount 192.168.68.189:/volume1/nas4t X:

image-20220702222247356

image-20220702222414798

但是重启后刚刚的挂载已经不见了,为此需要开机自动挂载

image-20220702222542133

windows开机自动挂载

参考:https://blog.csdn.net/baidu_27583743/article/details/113524415

为了实现开机自动自动挂载NFS

右键我的电脑-计算机管理

image-20220702223311175

image-20220702223454215

image-20220702223510660

image-20220702223539829

新建操作,其中的参数使用刚刚的命令行里用的参数

image-20220702223649938

image-20220702223709060

image-20220702223728305

设置运行后尝试重启,发现已经有了

image-20220702223755551

可以看到已经成功挂载了(虽然图标是X),但看任务记录已经运行成功,且可以成功传输文件

image-20220702224047646

image-20220702224057957

中文乱码

参考https://blog.csdn.net/baidu_41909866/article/details/116305972

image-20220703112537394

image-20220703112556081

image-20220703112613933

重启即可

挂载SMB

注意只能挂载dsm目录下的某一个文件夹

image-20220702233724013

image-20220702234033638

比如我要挂载nas4t文件夹,则对应如下:

image-20220702234129272

最后再输入账户和密码

image-20220702233755019

可以看到已经映射成功了

image-20220702234153516

实测速度比较慢

image-20220702234243747

重新测试,速度达到千兆

image-20220730214523859

直接看这个!!最佳的挂载方法

其实直接用 映射网络驱动器 即可

第一次映射的时候,需要登陆群晖的账号和密码

image-20220828223702106

登陆成功后就能看到所有的硬盘和文件夹

image-20220828223856520

安卓usb文件传输

实测需要开启usb调试+运行usb安装,才有可能连接上。如果不行,反复关闭开启试试看

pve备份

参考:https://blog.csdn.net/lyace2010/article/details/108918070

image-20220626152130072

scp存下来即可

在新pve上再用scp传回去(/var/lib/vz/dump)即可

image-20220626180115245

LXC jellyfin

常用路径

image-20220702231641803

在控制台里都有,尤其关注log文件

硬解

首先按照显卡直通给LXC容器并硬件让LXC容器至少vainfo能够正确显示

image-20220704224715682

然后设置/dev/dri的权限(这里参考司波图的教程的评论区https://www.bilibili.com/video/BV1ME411o7H2?share_source=copy_web)

image-20220704225809011

chmod -R 777 /dev/dri
# 下面这一步没问题的话就不要用了
chown -R nobody:users /dev/dri

建议只用第一步chmod -R 777 /dev/dri,实在还是硬件不了再用第二步

根据vainfo得到指令集,在jellyfin上进行设置

image-20220704230417162

image-20220704230425510

注意!!非常重要

测试硬件必须在调整成与原始视频不同的码率来进行播放,才会调用接码。如果是原始视频的码率,则不会调用GPU进行转码。例如:

  • 1080P视频调整成360P 40Mbps的码率解码
  • 4K视频调整成1080P

像下面这样就是已经有调用了,虽然是快的

image-20220704231503807

硬件权限设置

参考 https://www.reddit.com/r/jellyfin/comments/r5pur8/best_transcoding_settings_for_synology_ds920/

image-20220704232110725

image-20220705223948205

可以看到每次重启之后,/dev/dri目录的权限都会被重新变更(因为实际上这个目录是重新创建的),所以需要设置一个脚本自动设置权限

设置开机权限

问题

挂载NFS目录问题

image-20220702231606087

主要是默认的启动用户是jellyfin

image-20220702232552621

所以jellyfin用户并没有权限。需要添加把jellyfin添加权限

参考https://blog.csdn.net/u013197629/article/details/73608613

直接为改成所有用户都可读写即可

chmod -R a+rw *

备份还原后的容器问题

The server is expected to host the web client, but the provided content directory is either invalid or empty: /usr/lib/jellyfin/bin/jellyfin-web

参考 https://github.com/jellyfin/jellyfin/issues/3638

直接新建软连即可

ln -s /usr/share/jellyfin/web/ /usr/lib/jellyfin/bin/jellyfin-web

扫描慢

实测是刮削器慢,所以可以手动把所有刮削器和元数据器关了

参考 https://blog.pakro.top/2020/solve_the_problem_that_jellyfin_scans_the_media_library_abnormally_after_manually_importing_a_large_number_of_files_at_one_time/

扫描不出本地文件夹

参考https://forum.manjaro.org/t/jellyfin-cant-detect-external-drives-and-files-in-home-directory/90994/2

实测是因为权限问题,默认是root用户创建的文件夹。通过这个即可解决

chmod -R a+rx /root

修改权限后都能显示

image-20220708010823030

感觉好像没有解码?

比如这个4k的视频,GPU利用率才不到10%,实测是因为编码的问题。g3220的核显不支持HEVC

image-20220708011342814

image-20220708011311975

docker使用

jellyfin(更推荐使用这个)

核心是要硬解

参考:

  1. https://jellyfin.org/docs/general/administration/hardware-acceleration.html#va-api-and-qsv-hardware-acceleration-on-lxc-on-proxmox 硬解的docker配置
  2. https://jellyfin.org/docs/general/administration/installing.html#container-images jellyfin官方文档,docker下如何配置
  3. https://wp.xanderye.cn/archives/284,主要参考里面docker的配置部分

前置条件:

  • 先把docker装好。docker最好是装在ubuntu的ct模板里
  • ubuntu的lxc容器已经直通了显卡

准备工作

建议直接使用jellyfin特供版的。如果是不支持iHD的核显(比如4代的cpu),也可以用官方版本的

docker pull nyanmisaka/jellyfin:latest 
# 四代也可以用jellyfin/jellfin:latest

参考 参考2,首先创建一个文件夹jellyfin,同时在里面创建两个文件夹cacheconfig

mkdir -p jellyfin/cache
mkdir -p jellyfin/config

然后新建一个docker-compose.yml

  • group_add:参考 参考1, 在/etc/group里找到lxc容器的render的组(注意不是docker内部的!!!),比如这里是108

image-20220829003913351

  • volumes:主要就是config、cache以及媒体文件夹
  • devices:就是把宿主机(即LXC容器)里的硬件映射到container里

结合参考3

image-20220903010544097

最后的成品如下:

version: "3.5"
services:
  jellyfin:
    image: jellyfin/jellyfin
    container_name: jellyfin
    group_add:
      - "108"
    network_mode: "host"
    volumes:
      - /root/jellyfin/config:/config
      - /root/jellyfin/cache:/cache
      - /mnt/nas_wd_4t_1:/mnt/nas_wd_4t_1
    restart: "unless-stopped"
    devices:
      # VAAPI Devices (examples)
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0
    # Optional - alternative address used for autodiscovery
    environment:
      - JELLYFIN_PublishedServerUrl=http://example.com

特供版的nyanmisaka/jellyfin的配置:

  • 多了privileged参数
version: "3.5"
services:
  jellyfin:
    image: nyanmisaka/jellyfin
    container_name: nya-jellyfin
    group_add:
      - "108"
    network_mode: "host"
    volumes:
      - /root/nya-jellyfin/config:/config
      - /root/nya-jellyfin/cache:/cache
      - /mnt/nas_wd_4t_1:/mnt/nas_wd_4t_1
    restart: "unless-stopped"
    devices:
      # VAAPI Devices (examples)
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0
    privileged: true
    # Optional - alternative address used for autodiscovery
    environment:
      - JELLYFIN_PublishedServerUrl=http://example.com
      - TZ=Asia/Shanghai

最后开启容器:

docker compose up -d

进入container进行配置

首先找到docker container的id,用docker ps可以看到。

然后用下面的命令进入docker container

docker exec -it container_id bash

进入之后,依次安装驱动和vainfo。由于g3220是haswell架构,不支持iHD,所以直接安装i965的驱动即可 特供版的已经安装好了驱动,只需要安装vainfo即可

apt update && apt dist-upgrade -y && apt install vim sudo
sudo apt install i965-va-driver vainfo

最后看vainfo是否能正确输出结果,没问题说明能够硬解

image-20220829004559661

qbittorrent

同样是先创建文件夹/root/qbittorrent/config

不建议使用下面的镜像,而是直接使用nevinee/qbittorrent

version: "2.1"
services:
  qbittorrent :
    image: docker.mirrors.ustc.edu.cn/johngong/qbittorrent:latest
    container_name: qbittorrent
    environment:
      - TZ=Asia/Shanghai
      - QB_WEBUI_PORT=8989
      - QB_EE_BIN=false
      - QB_TRACKERS_UPDATE_AUTO=true
      - UID=1000
      - GID=1000
      - UMASK=022
    volumes:
      - /root/qbittorrent/config:/config
      - /mnt/nas_wd_4t_1:/mnt/nas_wd_4t_1
    ports:
      - 6881:6881
      - 8989:8989
      - 6881:6881/udp
    restart: unless-stopped

参考nevinee/qbittorrent官方页面里的docker compose文件

version: "2.0"
services:
  qbittorrent:
    image: nevinee/qbittorrent  # 如想参与测试工作可以指定nevinee/qbittorrent:unstable,如想使用集成了iyuu的版本请指定nevinee/qbittorrent:iyuu
    container_name: qbittorrent
    restart: always
    tty: true
    network_mode: bridge
    hostname: qbitorrent
    volumes:
      - ./data:/data      # 配置保存目录
    environment:          # 下面未列出的其他环境变量请根据环境变量清单自行添加
      - WEBUI_PORT=8080   # WEBUI控制端口,可自定义
      - BT_PORT=34567     # BT监听端口,可自定义
      - PUID=1000         # 输入id -u可查询,群晖必须改
      - PGID=100          # 输入id -g可查询,群晖必须改
    ports:
      - 8080:8080        # 冒号左右一致,必须同WEBUI_PORT一样,本文件中的3个8080要改一起改
      - 34567:34567      # 冒号左右一致,必须同BT_PORT一样,本文件中的5个34567要改一起改
      - 34567:34567/udp  # 冒号左右一致,必须同BT_PORT一样,本文件中的5个34567要改一起改
      #- 8787:8787       # 如使用的是nevinee/qbittorrent:iyuu标签,请解除本行注释
    #security_opt:       # armv7设备请解除本行和下一行的注释
      #- seccomp=unconfined

得到如下成品:

  • 映射下载的文件夹
  • 添加企业微信机器人。其中的web url可以参考群机器人配置说明,只需在一个已有群里里添加机器人,即可获得
  • 添加爱语飞飞,申请很简单,参考这里
  • 添加python
version: "2.0"
services:
  qbittorrent:
    image: nevinee/qbittorrent:latest-iyuu 
    container_name: qbittorrent
    restart: always
    tty: true
    network_mode: bridge
    hostname: qbitorrent
    volumes:
      - /root/qbittorrent/data:/data
      - /mnt/nas_wd_4t_1:/mnt/nas_wd_4t_1
    environment:         
      - WEBUI_PORT=8080 
      - BT_PORT=34567   
      - PUID=0       
      - PGID=0
      - INSTALL_PYTHON=true
      - IYUU_TOKEN=... # mask
      - WORK_WECHAT_BOT_KEY=#### #mask
    ports:
      - 8080:8080       
      - 34567:34567      
      - 34567:34567/udp  
      - 8787:8787       

分类配置

参考https://blog.17lai.site/posts/bb600b4b/#qbittorrent%E4%BD%BF%E7%94%A8%E8%AE%BE%E7%BD%AE

image-20220904003950622

在下载目录新建两个(or多个)文件夹,分别与标签对应

image-20220904004106961

image-20220904004413045

image-20220904004455764

image-20220904004507778

豆瓣配置

参考https://post.smzdm.com/p/ao9epg4m/

image-20220904011214341

jackett

直接安装nas-tool的安装教程,参考jackett官方镜像https://hub.docker.com/r/linuxserver/jackett

---
version: "2.1"
services:
  jackett:
    image: lscr.io/linuxserver/jackett:latest
    container_name: jackett
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
      - AUTO_UPDATE=true #optional
      - RUN_OPTS=<run options here> #optional
    volumes:
      - <path to data>:/config
      - <path to blackhole>:/downloads
    ports:
      - 9117:9117
    restart: unless-stopped

参考官方的compose文件,得到如下的compose.yml

  • 所谓的blackhole,指的是jackett刮削得到的torrent种子存放目录,直接和qbitorrent的共享即可
  • PGID PUID设置:参考这一段,直接用root权限即可

image-20220903172901511

image-20220903172853051

---
version: "2.1"
services:
  jackett:
    image: lscr.io/linuxserver/jackett:latest
    container_name: jackett
    environment:
      - PUID=0
      - PGID=
      - TZ=Asia/Shanghai
      - AUTO_UPDATE=true #optional
    volumes:
      - /root/jackett/config:/config
      - /mnt/nas_wd_4t_1/downloads/qbitorrent_download/torrent:/downloads
    ports:
      - 9117:9117
    restart: unless-stopped

ChineseSubFinder

参考 https://github.com/allanpk716/ChineseSubFinder/blob/master/docker/readme.md

根据参考yml

version: "3"
services:
  chinesesubfinder:
    image: allanpk716/chinesesubfinder:latest
    volumes:
      - ./config:/config  # 冒号左边请修改为你想在主机上保存配置、日志等文件的路径
      - ./media:/media    # 请修改为你的媒体目录,冒号右边可以改成你方便记忆的目录,多个媒体目录需要分别映射进来
      - ./browser:/root/.cache/rod/browser    # 容器重启后无需再次下载 chrome,除非 go-rod 更新
    environment:
      - PUID=1026         # uid
      - PGID=100          # gid
      - PERMS=true        # 是否重设/media权限
      - TZ=Asia/Shanghai  # 时区
      - UMASK=022         # 权限掩码
    restart: always
    network_mode: bridge
    hostname: chinesesubfinder
    container_name: chinesesubfinder
    ports:
      - 19035:19035  # 从0.20.0版本开始,通过webui来设置
      - 19037:19037  # webui 的视频列表读取图片用,务必设置不要暴露到外网
    logging:
        driver: "json-file"
        options:
          max-size: "100m" # 限制docker控制台日志大小,可自行调整

得到成品:

version: "3"
services:
  chinesesubfinder:
    image: allanpk716/chinesesubfinder:latest
    volumes:
      - /root/ChineseSubFinder/config:/config
      - /mnt/nas_wd_4t_1/videos:/videos
      - /root/ChineseSubFinder/browser:/root/.cache/rod/browser   
    environment:
      - PUID=0         
      - PGID=0          
      - PERMS=true        
      - TZ=Asia/Shanghai  
      - UMASK=022        
    restart: always
    network_mode: bridge
    hostname: chinesesubfinder
    container_name: chinesesubfinder
    ports:
      - 19035:19035  
      - 19037:19037  
    logging:
        driver: "json-file"
        options:
          max-size: "100m" 

nas-tools(强烈推荐,神器!)

参考:

  1. wiki安装教程,包括了各种额外的连接!强烈推荐
  2. https://post.smzdm.com/p/a7nxrz2g/张大妈上的教程,很详细
  3. https://post.smzdm.com/p/arqgoqp7/另一个张大妈的教程,也很详细
  4. 使用jeckett,sonarr,iyuu,qt,emby打造全自动追剧流程,安装wiki里的学习资源,强烈推荐看看!!!,对各种工具都介绍得很详细,方便直接按图上手

参考下面的compose.yml

version: "3.4"
services:
  nastools:
    image: jxxghp/nas-tools:latest
    container_name: nastools
    hostname: nastools
    ports:
      - 3000:3000        # 默认的webui控制端口
    volumes:
      - ${USERDIR}/nastools/config:/config   # 冒号左边请修改为你想保存配置的路径
      - ${USERDIR}/[path]/Download:/share/Download # 映射数据目录
      #- /你的媒体目录:/你想设置的容器内能见到的目录   # 媒体目录,多个目录需要分别映射进来
    environment:
      - PUID=${PUID}
      - PGID=${PGID}
      - TZ=${TZ}
      - UMASK=022 # 掩码权限,默认000,可以考虑设置为022
     #- REPO_URL=https://ghproxy.com/https://github.com/jxxghp/nas-tools.git  # 访问github困难的用户,可以取消本行注释,用以加速访问github
    restart: always 
version: "3.4"
services:
  nastools:
    image: jxxghp/nas-tools:latest
    container_name: nastools
    hostname: nastools
    ports:
      - 3000:3000        
    volumes:
      - /root/nas-tools/config:/config   
      - /mnt/nas_wd_4t_1/downloads:/share/Download 
      - /mnt/nas_wd_4t_1/videos:/videos
    environment:
      - PUID=0
      - PGID=0
      - TZ=Asia/Shanghai
      - UMASK=022 
    restart: always 

LXC xray

LXC clash

需要用特权容器,否则没有iptables

卡死在这个界面

image-20220706010434212

参考 https://github.com/vernesong/OpenClash/issues/1591

切换为官方皮肤之后,发现实际是 外部控制设置

image-20220706011634834

设置为当前LXC容器地址即可

LXC 容器

新建特权lxc容器

注意设为特权(去除选择无特权,即有特权)。还可以把当前电脑默认的ssh公钥放上来

image-20220703151009100

IP最好固定下来,网关填写路由器地址即可

image-20220703110344665

最后再把这些选项都勾上,全部开启

image-20220703111131175

注意!!实测用debian做容器更好!!

image-20220703150636521

中文乱码

参考https://lala.im/8090.html

dpkg-reconfigure locales

按空格确定

image-20220703185806837

显卡直通给LXC容器硬件

参考

  1. https://blog.csdn.net/weixin_38208216/article/details/122145751
  2. https://blog.timzhong.top/2020/10/13/jellyfin-in-lxc/#%E9%87%8D%E5%A4%B4%E6%88%8F%EF%BC%8C%E9%85%8D%E7%BD%AE%E6%98%BE%E5%8D%A1%E6%8C%82%E8%BD%BD
  3. jellyfin的官方操作,非常重要https://jellyfin.org/docs/general/administration/hardware-acceleration.html#va-api-and-qsv-hardware-acceleration-on-lxc-on-proxmox

在pve宿主机上安装驱动

直接apt install intel-media-va-driver-non-free可能会报错,原因是没有对应的源

image-20220703003356773

参考

  1. https://zhuanlan.zhihu.com/p/385401945

先去General Purpose GPU Drivers for Linux* Operating Systems,按照教程一步步来

lspci -nn | grep VGA

image-20220703004411938

image-20220703004434448

查看到对应的核显直接用intel源,可能有问题

image-20220703004515037

但实测没所谓。后退到前一页,点击ubuntu的安装方法, 按照Ubuntu* 20.04 (focal)的安装方法来

sudo apt-get install -y gpg-agent wget
wget -qO - https://repositories.intel.com/graphics/intel-graphics.key |
  sudo apt-key add -
sudo apt-get install software-properties-common
sudo apt-add-repository \
  'deb [arch=amd64] https://repositories.intel.com/graphics/ubuntu focal main'

再安装所有应用。实测速度比较慢,需要用代理

sudo apt-get update
sudo proxychains4 apt-get install \
  intel-opencl-icd \
  intel-level-zero-gpu level-zero \
  intel-media-va-driver-non-free libmfx1

再按照参考1的教程安装一遍

sudo apt-get install libmfx1 libmfx-tools
sudo apt-get install libva-dev libmfx-dev intel-media-va-driver-non-free
sudo apt-get install vainfo

按照官方教程

image-20220703005251022

可以看到root是并没有权限的

image-20220703005305427

因此需要用到这一步

sudo gpasswd -a ${USER} render
newgrp render

最后在安装vainfo,但发现并不行,原因参考知乎里说的,以及这个https://askubuntu.com/questions/1395620/chrome-libva-error-usr-lib-x86-64-linux-gnu-dri-ihd-drv-video-so-init-failed

image-20220703011050663

image-20220703011206252

发现pve早已经安装了所需的驱动i965-va-driver。所以只需要按照vainfo

所以需要重新把所有驱动都卸载了,参考https://blog.csdn.net/get_set/article/details/51276609

# 删除软件及其配置文件
apt-get --purge remove <package>
# 删除没用的依赖包
apt-get autoremove <package>

合理步骤

  • 按照intel的页面添加源
  • 仅仅只按照vainfo
  • 根据VA-API driver broken以及知乎,在bashrc末尾添加LIBVA_DRIVER_NAME=i965

重新测试vainfo,发现无error正确输出

image-20220703011451062

关于4代架构的cpu是否可以使用ihd(即intel-media-driver)

参考https://wiki.archlinux.org/title/Hardware_video_acceleration_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)

image-20220903010234914

可以看到g3220这种haswell架构的并不能使用intel-media-driver,即不支持iHD,也即无法使用qsv硬解!,所以只能用i965的驱动,使用vaapi硬解

配置lxc容器的conf(关键步骤!!看这里!!)

按照官方教程中的方法

image-20220703111436135

lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file

image-20220703111646408

复制进来保存

在lxc容器中安装驱动并配置

前置设置

首先登陆进去后调整ssh配置,允许root登陆

vi /etc/ssh/sshd_config

image-20220703112041725

保存后重启ssh服务

service ssh restart
更换源
  • ubuntu不推荐用ubuntu,docker可能有问题

首先进来更换源,参考https://mirrors.ustc.edu.cn/help/ubuntu.html

sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list

image-20220703125502472

然后也是全部更新一遍

apt update && apt dist-upgrade -y && apt install vim
  • debian

Debian的话类似 https://mirrors.ustc.edu.cn/help/debian.html

sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list
sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
# 合并成一条
sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list && sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list && sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && cat /etc/apt/sources.list

image-20220703150030190

安装sudo,然后把驱动全部更新一遍

apt update && apt dist-upgrade -y && apt install vim sudo

安装驱动

sudo apt install i965-va-driver vainfo

再配置bashrc,LIBVA_DRIVER_NAME=i965

export LIBVA_DRIVER_NAME=i965

image-20220703125953748

可以看到已经成功拿到了驱动

image-20220703151757436

安装portainer

参考:

  1. https://post.smzdm.com/p/aek7m57k/
  2. Portainer官方教程
  3. docker安装官方教程

首先得安装docker

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release


# Add Docker’s official GPG key:
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg


# Use the following command to set up the repository:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
  
# Preparation for docker installation
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

查看可用的docker版本

apt-cache madison docker-ce

image-20220703144105717

这里选择最新版本

sudo apt-get install docker-ce=5:20.10.17~3-0~ubuntu-jammy docker-ce-cli=5:20.10.17~3-0~ubuntu-jammy containerd.io docker-compose-plugin

可能遇到这个问题 docker: Error response from daemon: AppArmor enabled on system but the docker-default profile could not be loaded:

image-20220703144355395

原因:可能和CT模版是ubuntu有关。因此需要重新更换Debian模板!!!,实测ubuntu20也一样!!!

原因已查明,实测是conf的问题,调整之后就可以了

更简单的做法(推荐!!直接一键搞定)

参考 https://kawsing.gitbook.io/opensystem/andoid-shou-ji/pomoxve/lxc-run-docker

apt install curl && curl -sSL https://get.docker.com | sh

安装好之后,再运行一下helloworld测试一下

docker run hello-world

image-20220703151941065

最后再把docker compose安装上。参考https://blog.csdn.net/pushiqiang/article/details/78682323

sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

image-20220703152216748

修改docker镜像源(强烈推荐改一下)

参考https://mirrors.ustc.edu.cn/help/dockerhub.html

image-20220703172036760

/etc/docker/daemon.json修改

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}

重启服务

sudo systemctl restart docker

20220828 update ubuntu 22安装docker全流程,强烈建议用ubuntu来作为ct模版!!

参考:

  1. https://forum.proxmox.com/threads/run-docker-inside-lxc.112004/post-483176 完全就是一模一样的问题!!按照其中这个老哥的回答就能解决

按照下面的配置,默认是特权容器+显卡直通!!

核心步骤:

  • 配置特权容器+所有选项开启

image-20220829002752085

  • 配置conf文件

新建ubuntu 22的LXC容器

要点:

  • 特权容器!!方便直通显卡
  • 所有功能都开起来

image-20220829002837623

网关这里直接使用了openwrt的虚拟机作为旁路由,这样该lxc容器里的一切源都不需要更换了

image-20220829002846701

配置conf(核心!!)

参考参考1

image-20220829003034055

加上显卡直通的配置,最后该lxc容器的conf如下:

image-20220829003208753

核心即下面这段

# 解决AppArmor的问题
lxc.apparmor.profile: unconfined
lxc.cap.drop:
# 显卡直通,来自jellyfin的安装教程
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file

其余的和原来的配置相同

安装Portainer

参考:https://docs.portainer.io/start/install/server/docker/linux以及https://docs.portainer.io/start/upgrade(安装的命令主要是后面)

docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

docker ps查看情况

image-20220703152710439

https://xxx.xxx.xx.xx:9443登陆

image-20220703152816055

docker问题

docker exec -it <container-name> /bin/bash执行失败

提示OCI runtime exec failed: exec failed: unable to start container process: open /dev/pts/0: operation not permitted: unknown

参考:https://askubuntu.com/questions/1424317/docker-20-10-ubuntu-22-04-oci-runtime-exec-failed

实测应该是版本不对,失败了,重新安装低版本的就好

sudo apt install containerd.io=1.6.6-1

设置

挂载nfs

参考

sudo apt install nfs-common

创建本地文件夹并设置权限

mkdir -p /mnt/nas_wd_4t_1 && chmod -R a+rw /mnt/nas_wd_4t_1

挂载命令

sudo mount -t nfs 192.168.68.189:/volume1/nas4t /mnt/nas_wd_4t_1

设置自动挂载

参考:

  1. man page,主要是看看参数的含义 https://linux.die.net/man/5/nfs
  2. 不错的教程,还有部分参数的含义,https://linuxopsys.com/topics/linux-nfs-mount-entry-in-fstab-with-example

基本的范式是

Server:/path/to/export /local_mountpoint nfs <options> 0 0

所以这里可以是

  • timeo参数不设置,默认是60sec的等待时间
192.168.68.189:/volume1/nas4t /mnt/nas_wd_4t_1 nfs rw,hard,intr 0 0 

编辑 /etc/fstab

image-20220703220334055

Portainer使用

基础设置

设置dockerhub账号

image-20220703161123780

不设置的话,一天只有一百次

先去https://hub.docker.com/signup注册账号

image-20220703161839792

然后输入账号密码即可

新增中科大dockerhub源

直接添加https://docker.mirrors.ustc.edu.cn/即可

image-20220703172242287

jellyfin(不推荐下面的特供版,实测都会硬解失败)建议直接参考docker jellyfin

jellyfin docker版本选择

参考自https://post.smzdm.com/p/ar65vrp7/

image-20220703212637080

安装

参考:

  1. 官方docker教程https://jellyfin.org/docs/general/administration/installing.html
  2. 张大妈上很不错的教程https://post.smzdm.com/p/avxe2p87/
  3. 稍微有点旧https://post.smzdm.com/p/andr9g9p/

这里选择的是中国特供版 https://registry.hub.docker.com/r/nyanmisaka/jellyfin/实测不是很好用

然后基于官方教程

image-20220703165306864

创建两个文件夹

mkdir -p jellyfin/config 
mkdir jellyfin/cache

特供版

拉取最新的镜像,注意更换源,或者直接在portainer界面拉

docker pull nyanmisaka/jellyfin:latest

根据官方参数进行修改,以及张大妈上的教程,进行修改

image-20220703172554992

version: "3.5"
services:
  jellyfin:
    image: docker.mirrors.ustc.edu.cn/nyanmisaka/jellyfin
    container_name: jellyfin
    network_mode: "host"
    user: root
    volumes:
      - /root/jellyfin/config:/config
      - /root/jellyfin/cache:/cache
      - /mnt/nas_wd_4t_1:/mnt/nas_wd_4t_1
    restart: "unless-stopped"
    devices:
      - /dev/dri/renderD128:/dev/dri/renderD128
      - /dev/dri/card0:/dev/dri/card0

linuxserver版本

参考:https://wbsu2003.4everland.app/2021/03/12/%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96PUID%E5%92%8CPGID/

version: "2.1"
services:
  jellyfin:
    image: docker.mirrors.ustc.edu.cn/linuxserver/jellyfin:latest
    container_name: jellyfin
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Asia/Shanghai
      - JELLYFIN_PublishedServerUrl=192.168.0.5 #optional
    volumes:
      - /root/jellyfin/config:/config
      - /root/jellyfin/cache:/cache
      - /mnt/nas_wd_4t_1:/mnt/nas_wd_4t_1
    ports:
      - 8096:8096
      - 8920:8920 #optional
      - 7359:7359/udp #optional
      - 1900:1900/udp #optional
    devices:
      - /dev/dri:/dev/dri
    restart: unless-stopped
  • PGID和PUID的设置

image-20220703213302019

启动

启动后出现下面这种情况,直接把原有的库删了然后就会自动重建了

问题

无论是特供版还是linux-sever版,硬解始终会出问题,所以最后还是用LXC容器实现

image-20220703215958088

升级Portainer

参考https://docs.portainer.io/v/ce-2.9/start/upgrade/docker

docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce:latest 
docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 \
    --name=portainer --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data \
    portainer/portainer-ce:latest

云映像Cloud-image使用

基础配置

参考https://pve.proxmox.com/wiki/Cloud-Init_Support

debian

参考:

  1. https://fairysen.com/742.html,非常详细,且很新很全,强烈建议
  2. https://262235.xyz/index.php/archives/611/,部分参考

首先下载qcow2文件,比如这里就下载到了/root/images

wget https://cloud.debian.org/images/cloud/bullseye/latest/debian-11-nocloud-amd64.qcow2

按照参考1的教程创建虚拟机,注意直接把硬盘删除(省了后续分离硬盘的操作),创建好的容器配置如下:

image-20220709175713724

再添加cloud-init设备

image-20220709175738117

进入下载目录,导入镜像

qm importdisk 108 debian-11-nocloud-amd64.qcow2 local-lvm

image-20220709175924730

修改新添加的磁盘为SCSI,添加,并修改启动顺序

image-20220709175947592

image-20220709180124867

接下来修改Cloud-init的配置

参考参考1中所说的,这里具体设置用户为root,密码和网络设置自定义

用户:Debian11 的模板系统,默认用户是 debian。如果是配置 root 或用户登录,此处需输入用户名即可,不输入用户名,则用默认的用户可登录。
密码:可在此处输入上面用户的密码,建议输入,否则控制台端不能登录系统。
DNS域:可输入虚拟机的域名,不输入则继承 PVE 主机的域名。
DNS服务器:如果 VM 使用其它域名解析,可在此输入,不输入则继承 PVE 主机的域名解析服务器地址。
SSH公钥:SSH 连接虚拟机的公钥,使用密钥登录 SSH。
IP配置:不输入则使用 DHCP 给虚拟机分配 IPV4 和 IPV6,可在此定义该虚拟机的 IP 地址、子网掩码以及网关地址。

image-20220709180256796

debian更换源

除了按照,更换源里面debian一节进行替换外,还需要更换security的源,参考https://mirrors.ustc.edu.cn/help/debian-security.html

image-20220710224335095

具体来说就是把多余的debian-security删除

最后的sources.list文件

cloud-init安装

默认情况下是没有安装的,导致控制台那的配置无法生效。

image-20220710224451003

apt install cloud-init -y

image-20220710224552213

问题

ssh服务无法启动

Failed to start OpenBSD Secure Shell server

image-20220709181115530

参考https://blog.csdn.net/qq_38225558/article/details/117793432

ssh-keygen -A
systemctl restart ssh
systemctl restart sshd

Permission denied (publickey).

参考 https://askubuntu.com/a/337827

默认情况下PasswordAuthentication是no,所以需要把PasswordAuthentication改成yes

之后就可以通过这个password登陆了

然后再把本地公钥复制到~/.ssh/authorized_key进去,就可以免密码登陆了

ip设置可能无效

虽然在设置里面设置了192.168.68.34,但是在路由器里实际看到的是

image-20220709181514323

openwrt(旁路由)

参考:

  1. https://post.smzdm.com/p/awrx4lxm/p2/#comments 相当详细,但是仅仅参考前面的配置即可
  2. https://post.smzdm.com/p/a7dg5pko/ 看看单臂路由即旁路由的设置
  3. https://azhuge233.com/proxmox-ve-%E5%8D%95%E7%BD%91%E5%8F%A3%E5%AE%89%E8%A3%85-koolshare-lede-x86/ 主要看看其中的安装步骤
  4. https://moisfool.notion.site/Openwrt-3c4be24395a94c3eb887247ad6d2754f openwrt旁路网关的解说
  5. https://www.right.com.cn/forum/thread-4035785-1-1.html 旁路网关的基本概念。实测不是很好用,esir佛跳墙版本的固件,直接默认的端口配置即可,而且当且仅当使用默认配置的时候,其余容器才能正常通过openwrt的固件进行访问
  6. https://drive.google.com/drive/folders/1uRXg_krKHPrQneI3F2GNcSVRoCgkqESr esir的固件
  7. https://www.scarletdrop.cn/archives/19#toc-head-9 重点看看这个的安装步骤!!
  8. https://www.right.com.cn/forum/thread-2884039-1-1.html,和目前的配置几乎相同,可以好好看看

新建虚拟机

基本按照默认配置来就可以了

  • 内存用1G绰绰有余

image-20220814123514614

image-20220828133054760

  • 下载好之后加载img,并且通过下面这个命令加载进来,然后修改成sata或者scsi都可。然后修改启动顺序
## 注意把 202 替换成自己的虚拟机 VM ID
## 路径替换成上面上传镜像是记录的地址
qm importdisk 202 /var/lib/vz/template/iso/openwrt-buddha-version-v5_2022_-x86-64-generic-squashfs-legacy.img local-lvm

image-20220904112432372

设置

用vnc进去之后,第一件事就是修改ip,vi /etc/config/network,主要是修改lan这部分:

  • 只需要修改ipaddr即可,后续的可以在前端管理页面修改

image-20220904112719647

修改好之后进入,默认的账号密码是root password

网络-接口设置

进去之后先修改lan接口

image-20220904112943749

修改重点:

  • 网关改成主路由的

  • 关闭DHCP服务

其余保持默认即可

image-20220904113028495

image-20220904113059374

image-20220904113145030

image-20220904113153925

image-20220904113218117

image-20220904113227651

额外可以优化的点:

  • 做旁路由的话,无需桥接,因此可以把桥接的选项去除,记得选择eth0

网络-防火墙设置

基本保持默认即可,只需去除FullCone-NAT,存疑,根据Openwrt 作为旁路网关,只需要关闭SYN-flood防御,开启FullCone-NAT,实测开着FullCone-NAT也能正常代理,且速度差不多

image-20220904113331934

PassWall设置

按照上述步骤操作完之后,去PassWall先看看百度的连接状态,可以看到是联通的

image-20220904113452971

接下来的设置比较简单,只需要添加订阅定制,然后自动订阅即可

image-20220904113547725

配置完成后,直接连接,注意面板谷歌连接和ins连接不一定通(此时并不代表设置失败)

image-20220904113811088

  • 可以在其他客户端直接改网关看看能否成功
  • 也可以在LXC容器的网关处直接改成openwrt的地址,然后用curl www.google.com试试

image-20220904115809196

可以看到有内容返回,说明成功了

image-20220904120419484

smartdns+adgurad设置

参考:

  1. https://github.com/luckyyyyy/blog/issues/57,非常详细的描述,源代码出处
  2. https://www.robinxb.com/posts/2022/setting-smartdns-with-adguardhome-and-passwall/,不错的教程,可参考
  3. https://www.xtime.fun/smartdns.html,图文并茂

实测配了之后,提升不大,因此可以考虑不使用

ipv6设置

路由器以及光猫ipv6设置

参考:

  1. https://post.smzdm.com/p/amxllm2d/,移动的光猫+桥接模式下,如何设置ipv6,很不错
  2. https://www.zhihu.com/question/479819582,知乎的一个问题,可以看看如果正确设置了,ipv6地址应该是怎么样的
  3. https://zhuanlan.zhihu.com/p/146528034,更详细的移动光猫+桥接模式+开启ipv6

光猫除了改桥接,还需要关闭ipv6防火墙

image-20220904143705384

使用的路由器是京东路由宝:

  • 打开开关
  • 关闭防火墙!!特别注意这一点!!!!!!

image-20220904143402964

pve 7 ipv6设置

参考:

  1. https://www.haiyun.me/archives/1416.html#comment-688 感觉不一定好用,参考
  2. https://forum.proxmox.com/threads/ipv6-slaac-after-upgrading-from-6-4-to-7-1-6.100501/ 亲测有用!!

image-20220904162018482

添加下面这三行到/etc/network/interfaces即可

#This line needs to be here so that the next two get recognized
pre-up echo 2 > /proc/sys/net/ipv6/conf/vmbr0/accept_ra
post-up echo 2 > /proc/sys/net/ipv6/conf/vmbr0/accept_ra

修改完之后重启,最后ifconfig看到有240x开头的ip即可

image-20220904162331722

尝试直接用http://[ipv6 addr]:8006访问,可以正常打开

群晖ipv6设置

不需要设置,只要光猫和路由器设置好之后,装在pve里的dsm能够自动获取到

image-20220904162737410

同样可以通过http://[ipv6 addr]:5000来访问,注意要用下面长的那串ipv6地址!!