日期: 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
创建虚拟机
- 进入 PVE 后台,选择创建虚拟机,这里默认 VM ID 为 100 并勾上高级选项,选择开机自启动
- 操作系统, 这里选择不使用任何介质
- 系统,这里直接下一步
- 磁盘,这里默认有一个 scsi 0 选择删除
- Cpu, CPU 核心数量按需添加,一般双核足够了;
CPU 权重要注意一下,它默认为 1024,是虚拟机之间的相对值,设置越高虚拟机获得 CPU 时间的优先级就越高,如果使用的是 J3455 CPU 等性能一般的主板,建议稍微增加软路由虚拟机的 CPU 权重以保证网络通畅。这里我填1025 - 内存,这里我分配 2048 M 内存小的可以分配 1024 M
- 网络,选择默认的 vmbr 0。因为我这里想要主板上的 8111 做管理口,vmbr 对应的就是 8111
- 最后确认
为虚拟机创建硬盘
- 录 pve 的 ssh,上传我们刚刚下载的镜像到/root,然后输入以下命令
qm importdisk 100 /root/openwrt.img local-lvm
- 等待完成后,进入 PVE 后台,选择虚拟机-硬件,删除不用的 CD 设备,然后点击刚刚创建的硬盘,编辑,总线设备选择 SATA,保存。
- 进入虚拟机的选项,引导顺序,取消其他的选项,把刚刚弄好的磁盘勾上,保存
- 回到虚拟机-硬件,选择添加-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
- 选择配置硬件 PCI 直通,等待跑码,然后输入 reboot 重启宿主机。再次进入虚拟机-硬件-添加 PCI 设备,选择你要直通的网卡
- 保存
- 然后选择概要,启动虚拟机
配置电脑网络
- 手动设置电脑的 ip,进入控制面板-网络和共享中心,选择你的连接设备-属性-ipv4
ip 192.168.1.2
子网掩码 255.255.255.0
网关 192.168.1.1
DNS 192.168.1.1
配置 openwrt
- 打开浏览器,输入 192.168.1.1
- 进入 openwrt 界面,默认账号密码 root password, 选择网络-接口,现在插上你的入户网线到 82576 网卡上,如果你是 dhcp 服务器上网,那么 wan 口将显示你主路由给你分配的 ip,如果 wan 口没有显示,那么就换另外一个接口,那么这个接口就是你的 wan 口,最好拿记号笔标记一下。如果你是 pppoe 拨号,点修改,选择 pppoe 协议,输入账号密码即可。
- 因为我们要使 openwrt 和 pve 为同一网段。所以我们还要改 LAN,选择 LAN。修改
ipv4 192.168.88.1
子网掩码 255.255.255.0
网关 192.168.88.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
- 连接 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 实现家庭流媒体
- 创建目录
mkdir -p /opt/jellyfin/{config,cache}
- 输入
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
- 打开 192.168.88.8:8096