如何快速部署 HolyClaude:无根 Podman 与 SELinux 的 keep-id 和 :Z 标签权限完全指南

📅 发布时间:2026/10/3 7:20:08
如何快速部署 HolyClaude:无根 Podman 与 SELinux 的 keep-id 和 :Z 标签权限完全指南
如何快速部署 HolyClaude无根 Podman 与 SELinux 的 keep-id 和 :Z 标签权限完全指南【免费下载链接】HolyClaudeAI coding workstation: Claude Code web UI 8 AI CLIs headless browser 50 tools项目地址: https://gitcode.com/gh_mirrors/ho/HolyClaudeHolyClaude是一台可自托管的 AI 编程工作站内置 Claude Code、Web UI、多个 AI CLI 与无头浏览器。本文面向 Fedora 等启用 SELinux 的主机手把手讲解如何在**无根 Podmanrootless Podman**上部署 HolyClaude重点讲透keep-id用户命名空间映射与:Z卷标签两大权限机制帮你一次解决容器内写的文件宿主机改不了的顽疾 ️为什么无根 Podman 需要单独配置Docker 里设置PUID1000后容器内进程就是 UID 1000。但无根 Podman 没有 root 权限它默认把容器内 UID 映射到你/etc/subuid、/etc/subgid里的从属 UID 范围比如 100000。结果就是容器以为自己在写 UID 1000 的文件宿主机看到的却是100000之类的陌生用户SELinux 还会额外拦一道。于是git、npm install动不动就Permission denied。HolyClaude 专门为此提供了一份 docker-compose.podman-rootless.yaml两个机制各司其职机制解决的问题userns_mode: keep-id:uid1000,gid1000让容器内 UID 1000 在宿主机上真实可见文件归属与你的宿主用户一致卷挂载加:Z标签SELinux 自动重标记挂载目录容器与宿主机都能读写 一句话记忆keep-id管是谁的文件:Z管SELinux 让不让访问。一键安装步骤三条命令完成部署先克隆仓库获取配置文件git clone https://gitcode.com/gh_mirrors/ho/HolyClaude cd HolyClaude按官方文档见 README.md的无根 Podman 部署章节执行# 第一步创建持久化目录 mkdir -p data/claude data/cloudcli workspace # 第二步启动无根 Podman 专用配置 podman compose -f docker-compose.podman-rootless.yaml up -d # 第三步浏览器打开 # http://localhost:3001核心配置都在 docker-compose.podman-rootless.yaml 中关键几行userns_mode: keep-id:uid1000,gid1000 volumes: - ./data/claude:/home/claude/.claude:Z - ./data/cloudcli:/home/claude/.cloudcli:Z - ./workspace:/workspace:Z environment: - PUID1000 - PGID1000如果你的宿主用户不是 UID/GID 1000请先id -u和id -g确认并同步修改keep-id与PUID/PGID三处。keep-id 映射机制详解为什么 PUID 不够用keep-id是 Podman 4.0 引入的用户命名空间模式。它只建立一条恒等映射容器内 UID 1000 ↔ 宿主机 UID 1000其余 UID 再走从属范围。效果是容器内创建的文件宿主机ls -l直接显示为你的用户名宿主机上编辑的代码容器内同样有读权限不需要 root 权限就能实现 Docker 用户重映射的体验。这也是为什么官方文档反复强调无根 Podman 用户请改用 Podman 配置文件不要只靠PUID/PGID详见 docs/configuration.md 的 Rootless Podman 一节。HolyClaude 的启动脚本 scripts/entrypoint.sh 也做了适配——检测不到 root 时会自动跳过 root-only 的修复动作直接以目标用户运行。:Z 标签详解SELinux 下的正确姿势SELinux 主机上光 UID 对还不行文件还得带正确的SELinux 标签。Podman 的卷标签后缀就是干这个的后缀行为建议:Z把目录私有重标记为容器标签每次挂载自动对齐✅ 本方案使用:U递归重写宿主机文件属主为容器命名空间用户❌ 官方明确不建议README.md 中的 Permissions 章节特别提醒不要给/workspace加:U——它会递归改写宿主机文件归属反而让宿主机编辑失败。:Z只动标签、不动属主宿主机和容器双向编辑./workspace才能同时成立。⚠️ 另外两条避坑提示来自 docs/troubleshooting.mdCloudCLI 的 SQLite 数据库./data/cloudcli请留在本地磁盘不要放到 NAS/SMB/NFS 上无根 Podman不会做 Docker 那种特权属主修复所以别试图用chown -R修目录权限应由keep-id:Z保证。最快验证方法30 秒确认配置生效部署完成后运行以下两条验证命令与 tests/docker_rootless_smoke.sh 的冒烟检查思路一致# 验证容器内就是 UID 1000 podman exec holyclaude id # 验证双向可写容器内建的文件宿主机属主正确 podman exec holyclaude sh -c printf ok /workspace/rootless-test.txt ls -l workspace/rootless-test.txt # 应显示为你的用户若id显示的不是uid1000 gid1000说明keep-id参数没写对若宿主机ls显示属主异常通常是 UID 不匹配回到一键安装步骤对齐三处数值即可。常见问题速查症状原因与修复Permission denied/ git 失败改用 docker-compose.podman-rootless.yaml确认keep-id的 UID 与宿主用户一致unable to open database file.cloudcli目录不可写检查:Z是否遗漏、是否误用:U容器内写成功但宿主机属主怪异典型 subuid 映射问题必须上keep-idSELinuxPermission denied但 UID 正确标签问题确认三个卷都带:Z更多排障场景Chromium 崩溃、文件监听、NAS 挂载等可查阅 docs/troubleshooting.md完整配置项清单见 docs/configuration.md。总结记住这张清单✅ 用 docker-compose.podman-rootless.yaml别用普通 Docker 配置✅keep-id:uid你的UID,gid你的GID解决文件是谁的✅ 三个卷全部带:Z解决SELinux 让不让访问❌ 不给/workspace加:U它重写属主后适得其反❌ SQLite 状态不进网络存储。掌握keep-id与:Z这对组合拳你就能在 Fedora、RHEL 等 SELinux 主机上以完全无 root 的方式获得一台文件权限无感的 HolyClaude AI 编程工作站。祝部署顺利 【免费下载链接】HolyClaudeAI coding workstation: Claude Code web UI 8 AI CLIs headless browser 50 tools项目地址: https://gitcode.com/gh_mirrors/ho/HolyClaude创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考