PVE LXC 容器中安装 CasaOS 及硬盘直通
✨ 在 PVE 中安装体验开源私有云软件 CasaOS。通过创建 LXC 容器并安装 CasaOS,可以在 PVE 上体验这个简单易用的开源私有云系统。安装过程中可能会遇到报错,可以安装旧版本后通过 Web 更新到最新版本。安装完成后,可以进入 CasaOS Web 页面进行配置和使用。另外,还可以通过修改 LXC 容器配置实现硬盘直通,将宿主机的硬盘挂载到容器中使用。
👆之前在 GitHub 上发现了上面这个项目:CasaOS —— 一个简单易用的开源私有云系统,看项目介绍及界面截图都蛮不错的,也有挺多人推荐。正好将其装在 PVE 中体验一下,同时也用作 Docker 测试环境。
与之前的 OpenWRT 类似,这次也是安装在 LXC 容器中。
安装
下载 CT 模板
直接在 Web 管理页面中选择 Debian 12 并完成下载。

创建 LXC 容器
执行命令创建 LXC 容器:
pct create 201 /var/lib/vz/template/cache/debian-12-standard_12.2-1_amd64.tar.zst --rootfs local-lvm:20 --ostype debian --hostname casaos --arch amd64 --password password --cores 2 --memory 2048 --swap 0 -net0 bridge=vmbr0,name=eth0 --features nesting=1 --unprivileged 0
安装完毕后启动容器。
安装 CasaOS
进入容器 Shell,键入命令 wget -qO- https://get.casaos.io | bash 开始安装

但是安装完报错:casaos-local-storage.service failed

查询发现在 GitHub 中有同样的问题,也是在 PVE 8.1 CT 容器环境下
Issue 中有提到可以安装旧版本,然后通过 Web 更新版本到最新即可。
安装旧版本命令:bash <(curl -fsSL https://get.casaos.io/v0.4.4)

安装成功!✌️
配置
打开 LXC 容器配置的 IP 地址即可进入 CasaOS Web页面,依次根据提示创建用户,然后即可进入Dashboard:

点击左上角设置按钮,升级版本到最新:

打开 App Store ,就可以在 CasaOS 中自由地安装需要的应用了。

还可添加第三方软件源,比如下面👇的软件源包含了很多中文应用程序,如迅雷、青龙、微力同步等
https://play.cuse.eu.org/Cp0204-AppStore-Play.ziphttps://github.com/Cp0204/CasaOS-AppStore-Play相关信息
设置硬盘直通
修改 LXC 容器配置:vim /etc/pve/lxc/201.conf(201 为 VMID),增加如下内容:
# 停用容器安全策略
lxc.apparmor.profile: unconfined查看所需硬盘的 ID 信息
lsblk
ls -al /dev/sd*
# 查看有卷标的磁盘
ls -al /dev/disk/by-label
ls -al /dev/disk/by-id
图中的 8, 65 之类的即为硬盘块设备对应 ID 信息。下面绑定硬盘,继续编辑上面的配置文件:
lxc.cgroup.devices.allow: b 8:32 rwm
lxc.cgroup.devices.allow: b 8:33 rwm
lxc.cgroup.devices.allow: b 8:34 rwm编辑自动挂载脚本用于容器启动时执行:vim /var/lib/lxc/201/mount-hook.sh
#!/bin/sh
mknod -m 777 ${LXC_ROOTFS_MOUNT}/dev/sdc b 8 32
mknod -m 777 ${LXC_ROOTFS_MOUNT}/dev/sdc1 b 8 33
mknod -m 777 ${LXC_ROOTFS_MOUNT}/dev/sdc2 b 8 34保存后 chmod +x /var/lib/lxc/201/mount-hook.sh 授予可执行权限。继续编辑 LXC 容器配置:
lxc.autodev: 1
lxc.hook.autodev: /var/lib/lxc/201/mount-hook.sh完整的修改内容如下:
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: b 8:32 rwm
lxc.cgroup2.devices.allow: b 8:33 rwm
lxc.cgroup2.devices.allow: b 8:34 rwm
lxc.autodev: 1
lxc.hook.autodev: /var/lib/lxc/201/mount-hook.sh挂载宿主机目录到 LXC 容器中
pct set 201 -mp0 /data,mp=/mnt/share201:LXC 容器的 ID。
-mp0:挂载点的索引,例如0、1、2等。/data:宿主机上的目录路径。/mnt/share:要挂载到容器中的目录路径。