PVE LXC 容器中安装 CasaOS 及硬盘直通

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

安装

下载 CT 模板

直接在 Web 管理页面中选择 Debian 12 并完成下载。
notion image

创建 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
notion image
安装完毕后启动容器。

安装 CasaOS

进入容器 Shell,键入命令 wget -qO- https://get.casaos.io | bash 开始安装
notion image
但是安装完报错:casaos-local-storage.service failed
notion image
查询发现在 GitHub 中有同样的问题,也是在 PVE 8.1 CT 容器环境下
[Bug] Fresh install casaos in ct on fresh install Promox 8.1
Issue 中有提到可以安装旧版本,然后通过 Web 更新版本到最新即可。
安装旧版本命令:bash <(curl -fsSL https://get.casaos.io/v0.4.4)
notion image
安装成功!✌️

配置

打开 LXC 容器配置的 IP 地址即可进入 CasaOS Web页面,依次根据提示创建用户,然后即可进入Dashboard:
notion image
点击左上角设置按钮,升级版本到最新:
notion image
打开 App Store ,就可以在 CasaOS 中自由地安装需要的应用了。
notion image
还可添加第三方软件源,比如下面👇的软件源包含了很多中文应用程序,如迅雷、青龙、微力同步等
https://play.cuse.eu.org/Cp0204-AppStore-Play.zip
 
 
 

相关信息

设置硬盘直通
修改 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
notion image
图中的 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/share
201:LXC 容器的 ID。 -mp0:挂载点的索引,例如 012 等。 /data:宿主机上的目录路径。 /mnt/share:要挂载到容器中的目录路径。