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 并完成下载。
创建 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
但是安装完报错:
casaos-local-storage.service failed
查询发现在 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)
安装成功!✌️
配置
打开 LXC 容器配置的 IP 地址即可进入 CasaOS Web页面,依次根据提示创建用户,然后即可进入Dashboard:
点击左上角设置按钮,升级版本到最新:
打开 App Store ,就可以在 CasaOS 中自由地安装需要的应用了。
还可添加第三方软件源,比如下面👇的软件源包含了很多中文应用程序,如迅雷、青龙、微力同步等
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
图中的
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
:挂载点的索引,例如0
、1
、2
等。/data
:宿主机上的目录路径。/mnt/share
:要挂载到容器中的目录路径。