菜单

Administrator
发布于 2024-01-08 / 170 阅读
0

homelab小记,家庭all in one的最佳方案-2022年01月29日


日期: 2022 年 01 月 29 日
Tags:

  • 折腾
  • homelab
  • linux
  • docker

    最近折腾起了 All in one 的各种方案,软件啊硬件啊头疼了很久,也折腾了很久。本来在咸鱼上买了个 n 3150 做硬件基础的,结果发成了 j 1900。无奈,手头上正好有退下来的一套桌面平台,正好用来做 homelab 合适。

预期

  • 能不虚拟化就不虚拟化
  • 软路由懂得都懂
  • 轻度 nas 存储
  • 下载文件
  • 家庭流媒体
  • OneDrive 文件备份(暂更新)

硬件选择

原本计划的 n3150,被换成了 i5-4460
最终硬件如下

  • Cpu:i5-4460
  • 主板:华硕 B 85 Plus-R 2.0
  • 内存:海盗船 8 G 1600 mhz
  • 网卡:英特尔 82576
  • SSD:三星 850 evo
  • HDD:希捷 1 t

软件选择

  • Unraid 由于只能用 u 盘安装。收费。稳定性与速度存疑。Pass
  • Omv 默认只能安装一个盘不能分区不能存储,空间比较浪费,而且虚拟机性能没有 kvm 方案好。国内文档资料少,omv 6 还在测试。Pass
  • 纯 Debian+docker。由于 docker 中跑 openwrt 终端会和宿主机终端冲突。虽然可以连接外网但是无法连接宿主机,配置特别麻烦,折腾了几天没解决,pass
  • PVE+LXC。LXC 资料比较少,折腾 openwrt 需要固件的 rootfs,资源得联系编译者或者自己编译。麻烦,且不知道会不会向 docker 一样终端冲突。而且需要更换宿主机内核才能实现某些功能,非常麻烦。Pass
  • PVE+KVM+Docker。这是我最终的选择方案。KVM 可以解决软路由的问题,docker 可以解决其他的问题而且性能不会有什么损失。PVE 又是基于 Debian 的,各种软件都可以直接安装。所以在我这里他就成为了我的最终方案。
  • ESXI 和 Hyper-v,ESXI 驱动不太完善,Hyper-V 桌面环境消耗资源较大,pass

计划实现

环境:

  • 主路由网段 192.168.0. X 网关 192.168.0.1
  • 软路由网段 192.168.88. X 网关 192.168.88.1
  • PVE 管理 ip 192.168.88.1 管理网卡为主板集成的 8111
  • PVE 版本为 PVE7

软路由

这里使用 PVE 虚拟化一个 VM 来实现,这里会讲到网卡直通等方案,需要处理器 VT-D 来支持

下载 openwrt 镜像

这里我使用的镜像是恩山上的高大全 plus 版本,您可以选择其他的或者和我一样

https://openwrt.mpdn.fun:8443/?dir=lede/x86_64/2022-01-29__05-00-41--plus-daily

解压到桌面,重命名为 openwrt. Img

创建虚拟机

  1. 进入 PVE 后台,选择创建虚拟机,这里默认 VM ID 为 100 并勾上高级选项,选择开机自启动
  2. 操作系统, 这里选择不使用任何介质
  3. 系统,这里直接下一步
  4. 磁盘,这里默认有一个 scsi 0 选择删除
  5. Cpu, CPU 核心数量按需添加,一般双核足够了;
    CPU 权重要注意一下,它默认为 1024,是虚拟机之间的相对值,设置越高虚拟机获得 CPU 时间的优先级就越高,如果使用的是 J3455 CPU 等性能一般的主板,建议稍微增加软路由虚拟机的 CPU 权重以保证网络通畅。这里我填1025
  6. 内存,这里我分配 2048 M 内存小的可以分配 1024 M
  7. 网络,选择默认的 vmbr 0。因为我这里想要主板上的 8111 做管理口,vmbr 对应的就是 8111
  8. 最后确认

为虚拟机创建硬盘

  1. 录 pve 的 ssh,上传我们刚刚下载的镜像到/root,然后输入以下命令
qm importdisk 100 /root/openwrt.img local-lvm
  1. 等待完成后,进入 PVE 后台,选择虚拟机-硬件,删除不用的 CD 设备,然后点击刚刚创建的硬盘,编辑,总线设备选择 SATA,保存。
  2. 进入虚拟机的选项,引导顺序,取消其他的选项,把刚刚弄好的磁盘勾上,保存
  3. 回到虚拟机-硬件,选择添加-PCI 设备,这里需要开启 PVE 的 VTD 支持,我们进入终端,输入以下命令
echo "nameserver  223.5.5.5" >> /etc/resolv.conf && rm /etc/apt/sources.list.d/pve-enterprise.list && export LC_ALL=en_US.UTF-8 && apt update && apt -y install git && git clone https://hub.fastgit.org/ivanhao/pvetools.git && cd pvetools && ./pvetools.sh
  1. 选择配置硬件 PCI 直通,等待跑码,然后输入 reboot 重启宿主机。再次进入虚拟机-硬件-添加 PCI 设备,选择你要直通的网卡
  2. 保存
  3. 然后选择概要,启动虚拟机

配置电脑网络

  1. 手动设置电脑的 ip,进入控制面板-网络和共享中心,选择你的连接设备-属性-ipv4
ip 192.168.1.2
子网掩码 255.255.255.0
网关 192.168.1.1
DNS 192.168.1.1

配置 openwrt

  1. 打开浏览器,输入 192.168.1.1
  2. 进入 openwrt 界面,默认账号密码 root password, 选择网络-接口,现在插上你的入户网线到 82576 网卡上,如果你是 dhcp 服务器上网,那么 wan 口将显示你主路由给你分配的 ip,如果 wan 口没有显示,那么就换另外一个接口,那么这个接口就是你的 wan 口,最好拿记号笔标记一下。如果你是 pppoe 拨号,点修改,选择 pppoe 协议,输入账号密码即可。
  3. 因为我们要使 openwrt 和 pve 为同一网段。所以我们还要改 LAN,选择 LAN。修改
ipv4 192.168.88.1
子网掩码 255.255.255.0
网关 192.168.88.1
  1. 按照第六步,进入网络设置,选择自动获取 ip。不出意外等待一会就可以上网了。接下来就是各种常规 openwrt 配置了,这里不细讲

NAS

这里使用 samba 来实现轻度 nas 需求,并配置 aria2下载

安装 Docker

连接 ssh,这里安装下面依次输入

Apt install sudo
```
Sudo apt-get install \
   Apt-transport-https \
   Ca-certificates \
   Curl \
   Gnupg \
   Lsb-release
```
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring. Gpg
```
Echo \
  "deb [arch=amd 64 signed-by=/usr/share/keyrings/docker-archive-keyring. Gpg] https://mirrors.aliyun.com/docker-ce/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources. List. D/docker. List > /dev/null
```
Apt-get update
```
Apt-get install docker-ce docker-ce-cli containerd. Io
```
Sudo systemctl enable docker
```
Sudo systemctl start docker
```
Sudo nano /etc/docker/daemon. Json
```
    {
 "registry-mirrors": [
   "https://hub-mirror.c.163.com",
   "https://mirror.baidubce.com"
 ]
}

按 ctrl+x 保存

Sudo systemctl daemon-reload
```
Sudo systemctl restart docker

安装 samba

  1. 连接 ssh 输入 cd pvetools 然后输入./pvetools 选择安装 samba,按照提示安装即可

安装 aria2

输入以下命令

docker run -d \
--name aria2-pro \
--restart unless-stopped \
--log-opt max-size=1m \
--network host \
-e PUID=$UID \
-e PGID=$GID \
-e RPC_SECRET=123123 \
-e RPC_PORT=6800 \
-e LISTEN_PORT=6888 \
-e DISK_CACHE=256M \
-v $PWD/aria2-config:/config \
-v 这里填你设置的samba路径:/downloads \
p3terx/aria2-pro

安装 aria-ng

输入以下命令

docker run -d \
--name ariang \
--log-opt max-size=1m \
--restart unless-stopped \
--network host \
p3terx/ariang --port 6880 --ipv6

然后打开浏览器,进入 http://192.168.88.8:6880 ,选择 AriaNG 设置-RPC-Aria 2 密钥,输入 123123

完成安装

安装 jellyfin 实现家庭流媒体

  1. 创建目录 mkdir -p /opt/jellyfin/{config,cache}
  2. 输入
Docker run -d \
-v /opt/jellyfin/config:/config \
-v /opt/jellyfin/cache:/cache \
-v 你的 samba 服务器文件路径:/media \
--net=host \
--name=jellyfin \
--restart=always \
Jellyfin/jellyfin:latest
  1. 打开 192.168.88.8:8096