前情提要

最近突然很怀念过去,整理nas发现家人以前备份的各种相机和手机图片分散在nas各处,要寻找非常不方便,虽说文件的批量搜索已经用alist实现了(按文件名1s内可以搜索全盘文件),但是对图片就毫无能力,这肯定不符合现在智能搜索的趋势。于是我打算用immich来搭建家庭的图片站;

我希望使用lxc容器隔离宿主并获得更好的性能,同时我也想用1panel更方便的管理immich,还需要再lxc内挂载smb,同步数据到nas内。遇到了许多问题,于是就有了这篇文章。

心路历程

首先我先一如往常创建了一个lxc容器,尝试创建一个smb共享目录到lxc内,发现smb挂载报错,原来是没有开特权容器,没办法,只好重新创建了一个带特权的lxc容器,这时候启动lxc发现终端一直无法连接,研究半天后终于解决

https://blog.dimeta.top/archives/pve-lxcte-quan-rong-qi-wu-fa-zheng-chang-lian-jie-zhong-duan

接着,再将挂载信息写入fstab,开机自动挂载就弄好了。

接着就是安装1panel了,安装确实是非常的简单,使用官方给的一键安装脚本一下子就安装好了。简单配置完成代理和docker之后,再添加了一个第三方配置源,在1panel的计划任务中添加如下脚本(记得安装unzip)

wget -P /opt/1panel/resource/apps/local https://ghfast.top/https://github.com/okxlin/appstore/archive/refs/heads/localApps.zip

unzip -o -d /opt/1panel/resource/apps/local/ /opt/1panel/resource/apps/local/localApps.zip

cp -rf /opt/1panel/resource/apps/local/appstore-localApps/apps/* /opt/1panel/resource/apps/local/

rm -rf /opt/1panel/resource/apps/local/appstore-localApps

rm -rf /opt/1panel/resource/apps/local/localApps.zip

再在商店右上角刷新商店,就可以找到immich等官方源没有的应用了。

但是当我按下安装后,发现应用拉取完成镜像后应用服务启动,并且黄色警告报错提醒查看日志,但是日志内空无一物。在经历许久的探索之后终于找到方法。

https://www.right.com.cn/forum/thread-8249971-1-1.html

在宿主机的目录下/etc/pve/lxc/XXX.config (XXX是你LXC容器的序号,例如100,101这些)配置文件添加

lxc.cgroup2.devices.allow: a
lxc.cap.drop:

重启lxc即可运行安装好的应用(docker应用)啦。

总之,在特权lxc下使用docker容器,最好还是加上这个参数!

智能总结

懒得打啦,用AI偷个懒。

用户希望通过 Immich 搭建家庭图片站,使用 LXC 容器隔离宿主并提升性能,同时借助 1Panel 管理,并挂载 SMB 共享同步数据到 NAS。搭建过程中遇到以下问题及解决方案:

  1. 初始问题:创建普通 LXC 容器时,SMB 挂载失败,因未启用特权容器。改为特权 LXC 后,又遇到终端无法连接问题,经研究解决。

  2. SMB 挂载:通过配置 fstab 实现 SMB 共享的开机自动挂载。

  3. 1Panel 安装:使用官方一键脚本安装 1Panel,配置代理和 Docker 后,通过脚本添加第三方应用源,成功在商店中加载 Immich。

  4. 应用启动失败:安装 Immich 后,服务启动报错且日志为空。最终通过在 LXC 配置文件 /etc/pve/lxc/XXX.config 中添加 lxc.cgroup2.devices.allow: alxc.cap.drop:,重启 LXC 解决,Docker 应用正常运行。

结论:在特权 LXC 下运行 Docker 应用时,需添加上述配置参数以确保正常运行。