通过OpenClaw实现副业收入《OpenClaw赚钱实录从“养龙虾“到可持续变现的实践指南》Podman在无根rootlessPodman 容器中运行 OpenClaw 网关。使用与 Docker 相同的镜像从仓库中的 Dockerfile 构建。要求Podman无根模式一次性设置时需要 sudo 权限用于创建用户、构建镜像快速开始1. 一次性设置从仓库根目录执行会创建用户、构建镜像并安装启动脚本./setup-podman.sh该脚本还会创建一个最小化的~openclaw/.openclaw/openclaw.json配置文件设置gateway.modelocal以便网关无需运行向导即可直接启动。默认情况下容器不会被安装为 systemd 服务而是需要手动启动见下文。若希望实现生产级配置自动启动和重启请改用 systemd Quadlet 用户服务方式安装./setup-podman.sh--quadlet或者设置环境变量OPENCLAW_PODMAN_QUADLET1使用--container选项则仅安装容器和启动脚本。可选的构建期环境变量在运行setup-podman.sh前设置OPENCLAW_DOCKER_APT_PACKAGES—— 在镜像构建过程中额外安装 apt 软件包OPENCLAW_EXTENSIONS—— 预先安装扩展依赖项以空格分隔的扩展名称列表例如diagnostics-otel matrix2. 启动网关手动方式适用于快速冒烟测试./scripts/run-openclaw-podman.sh launch3. 初始化向导例如用于添加通道或提供者./scripts/run-openclaw-podman.sh launch setup然后打开http://127.0.0.1:18789/并使用~openclaw/.openclaw/.env中的令牌或 setup 过程中打印出的值进行访问。SystemdQuadlet可选如果您运行了./setup-podman.sh --quadlet或设置了OPENCLAW_PODMAN_QUADLET1系统将安装一个 Podman Quadlet 单元使网关作为 openclaw 用户的 systemd 用户服务运行。服务会在设置过程结束时自动启用并启动。启动sudo systemctl --machine openclaw --user start openclaw.service停止sudo systemctl --machine openclaw --user stop openclaw.service状态sudo systemctl --machine openclaw --user status openclaw.service日志sudo journalctl --machine openclaw --user -u openclaw.service -fQuadlet 配置文件位于~openclaw/.config/containers/systemd/openclaw.container。如需更改端口或环境变量请编辑该文件或其引用的.env文件然后执行sudo systemctl --machine openclaw --user daemon-reload并重启服务。如果为 openclaw 用户启用了 linger当系统中存在 loginctl 时setup 脚本会自动启用则服务将在系统启动时自动运行。若初始设置未使用 Quadlet但后续希望添加只需重新运行./setup-podman.sh --quadlet。openclaw 用户非登录用户setup-podman.sh会创建一个专用的系统用户openclawShellnologin—— 禁止交互式登录以减少攻击面。Home 目录例如/home/openclaw—— 存放~/.openclaw配置与工作区以及启动脚本run-openclaw-podman.sh。Rootless Podman该用户必须拥有subuid和subgid范围。许多发行版在创建用户时会自动分配这些范围。如果 setup 脚本输出警告请向/etc/subuid和/etc/subgid添加如下行openclaw:100000:65536然后以该用户身份启动网关例如通过 cron 或 systemdsudo-uopenclaw /home/openclaw/run-openclaw-podman.shsudo-uopenclaw /home/openclaw/run-openclaw-podman.sh setup配置权限只有openclaw用户和 root 可以访问/home/openclaw/.openclaw。要编辑配置请在网关运行后使用 Control UI或执行sudo -u openclaw $EDITOR /home/openclaw/.openclaw/openclaw.json。环境与配置令牌Token存储在~openclaw/.openclaw/.env中键名为OPENCLAW_GATEWAY_TOKEN。如果缺失setup-podman.sh和run-openclaw-podman.sh会自动生成使用openssl、python3或od。可选配置在该.env文件中您可以设置提供者密钥例如GROQ_API_KEY、OLLAMA_API_KEY以及其他 OpenClaw 环境变量。主机端口默认情况下脚本将映射端口18789网关和18790桥接。您可以通过在启动时设置OPENCLAW_PODMAN_GATEWAY_HOST_PORT和OPENCLAW_PODMAN_BRIDGE_HOST_PORT来覆盖主机端口映射。网关绑定地址默认情况下run-openclaw-podman.sh使用--bind loopback启动网关以确保仅本地安全访问。若需在局域网中暴露服务请设置OPENCLAW_GATEWAY_BINDlan并在openclaw.json中配置gateway.controlUi.allowedOrigins或显式启用 host-header 回退机制。路径主机上的配置和工作区默认位于~openclaw/.openclaw和~openclaw/.openclaw/workspace。您可以通过设置OPENCLAW_CONFIG_DIR和OPENCLAW_WORKSPACE_DIR来覆盖启动脚本使用的主机路径。存储模型持久化主机数据OPENCLAW_CONFIG_DIR和OPENCLAW_WORKSPACE_DIR会被 bind-mount 到容器内并在主机上保留状态。临时沙箱 tmpfs如果您启用了agents.defaults.sandbox工具沙箱容器会在/tmp、/var/tmp和/run挂载tmpfs。这些路径基于内存随沙箱容器销毁而消失顶层 Podman 容器设置本身不会添加自己的 tmpfs 挂载。磁盘增长热点需重点关注的主要路径包括media/、agents//sessions/sessions.json、转录 JSONL 文件、cron/runs/*.jsonl以及/tmp/openclaw/下的滚动文件日志或您在logging.file中配置的路径。setup-podman.sh现在会将镜像 tar 文件暂存于私有临时目录中并在设置过程中打印所选的基础目录。对于非 root 用户运行的情况脚本仅在该基础目录安全可用时才接受TMPDIR否则会依次回退到/var/tmp再回退到/tmp。保存的 tar 文件权限为仅所有者可读并通过流式传输加载到目标用户的podman load中因此调用者的私有临时目录不会阻碍设置过程。常用命令查看日志使用 Quadletsudo journalctl --machine openclaw --user -u openclaw.service -f使用脚本sudo -u openclaw podman logs -f openclaw停止服务使用 Quadletsudo systemctl --machine openclaw --user stop openclaw.service使用脚本sudo -u openclaw podman stop openclaw重新启动使用 Quadletsudo systemctl --machine openclaw --user start openclaw.service使用脚本重新运行启动脚本或执行podman start openclaw删除容器sudo -u openclaw podman rm -f openclaw—— 主机上的配置和工作区将被保留故障排除配置或 auth-profiles 出现权限被拒EACCES容器默认使用--usernskeep-id以运行脚本的主机用户的 uid/gid 身份执行。请确保您的主机OPENCLAW_CONFIG_DIR和OPENCLAW_WORKSPACE_DIR目录由该用户拥有。网关启动被阻塞缺少gateway.modelocal请确保~openclaw/.openclaw/openclaw.json文件存在且设置了gateway.modelocal。setup-podman.sh会在文件缺失时自动创建。openclaw 用户的 Rootless Podman 失败检查/etc/subuid和/etc/subgid是否包含openclaw的条目例如openclaw:100000:65536。若缺失请添加并重启相关服务。容器名称已被占用启动脚本使用podman run --replace因此再次启动时会替换现有容器。如需手动清理podman rm -f openclaw。以 openclaw 用户身份运行时找不到脚本请确保已运行setup-podman.sh以便将run-openclaw-podman.sh复制到 openclaw 用户的家目录例如/home/openclaw/run-openclaw-podman.sh。Quadlet 服务未找到或无法启动编辑.container文件后请运行sudo systemctl --machine openclaw --user daemon-reload。Quadlet 要求使用 cgroups v2执行podman info --format {{.Host.CgroupsVersion}}应显示2。可选以您自己的用户身份运行若希望以普通用户身份运行网关而非专用的 openclaw 用户您可以自行构建镜像在~/.openclaw/.env中设置OPENCLAW_GATEWAY_TOKEN并使用--usernskeep-id和挂载到您~/.openclaw目录的方式运行容器。启动脚本专为 openclaw 用户流程设计对于单用户设置您也可以手动执行脚本中的podman run命令并将配置和工作区指向您的家目录。不过我们仍建议大多数用户使用setup-podman.sh并以 openclaw 用户身份运行以实现配置与进程的隔离。
OpenClaw从入门到应用——安装:Podman
通过OpenClaw实现副业收入《OpenClaw赚钱实录从“养龙虾“到可持续变现的实践指南》Podman在无根rootlessPodman 容器中运行 OpenClaw 网关。使用与 Docker 相同的镜像从仓库中的 Dockerfile 构建。要求Podman无根模式一次性设置时需要 sudo 权限用于创建用户、构建镜像快速开始1. 一次性设置从仓库根目录执行会创建用户、构建镜像并安装启动脚本./setup-podman.sh该脚本还会创建一个最小化的~openclaw/.openclaw/openclaw.json配置文件设置gateway.modelocal以便网关无需运行向导即可直接启动。默认情况下容器不会被安装为 systemd 服务而是需要手动启动见下文。若希望实现生产级配置自动启动和重启请改用 systemd Quadlet 用户服务方式安装./setup-podman.sh--quadlet或者设置环境变量OPENCLAW_PODMAN_QUADLET1使用--container选项则仅安装容器和启动脚本。可选的构建期环境变量在运行setup-podman.sh前设置OPENCLAW_DOCKER_APT_PACKAGES—— 在镜像构建过程中额外安装 apt 软件包OPENCLAW_EXTENSIONS—— 预先安装扩展依赖项以空格分隔的扩展名称列表例如diagnostics-otel matrix2. 启动网关手动方式适用于快速冒烟测试./scripts/run-openclaw-podman.sh launch3. 初始化向导例如用于添加通道或提供者./scripts/run-openclaw-podman.sh launch setup然后打开http://127.0.0.1:18789/并使用~openclaw/.openclaw/.env中的令牌或 setup 过程中打印出的值进行访问。SystemdQuadlet可选如果您运行了./setup-podman.sh --quadlet或设置了OPENCLAW_PODMAN_QUADLET1系统将安装一个 Podman Quadlet 单元使网关作为 openclaw 用户的 systemd 用户服务运行。服务会在设置过程结束时自动启用并启动。启动sudo systemctl --machine openclaw --user start openclaw.service停止sudo systemctl --machine openclaw --user stop openclaw.service状态sudo systemctl --machine openclaw --user status openclaw.service日志sudo journalctl --machine openclaw --user -u openclaw.service -fQuadlet 配置文件位于~openclaw/.config/containers/systemd/openclaw.container。如需更改端口或环境变量请编辑该文件或其引用的.env文件然后执行sudo systemctl --machine openclaw --user daemon-reload并重启服务。如果为 openclaw 用户启用了 linger当系统中存在 loginctl 时setup 脚本会自动启用则服务将在系统启动时自动运行。若初始设置未使用 Quadlet但后续希望添加只需重新运行./setup-podman.sh --quadlet。openclaw 用户非登录用户setup-podman.sh会创建一个专用的系统用户openclawShellnologin—— 禁止交互式登录以减少攻击面。Home 目录例如/home/openclaw—— 存放~/.openclaw配置与工作区以及启动脚本run-openclaw-podman.sh。Rootless Podman该用户必须拥有subuid和subgid范围。许多发行版在创建用户时会自动分配这些范围。如果 setup 脚本输出警告请向/etc/subuid和/etc/subgid添加如下行openclaw:100000:65536然后以该用户身份启动网关例如通过 cron 或 systemdsudo-uopenclaw /home/openclaw/run-openclaw-podman.shsudo-uopenclaw /home/openclaw/run-openclaw-podman.sh setup配置权限只有openclaw用户和 root 可以访问/home/openclaw/.openclaw。要编辑配置请在网关运行后使用 Control UI或执行sudo -u openclaw $EDITOR /home/openclaw/.openclaw/openclaw.json。环境与配置令牌Token存储在~openclaw/.openclaw/.env中键名为OPENCLAW_GATEWAY_TOKEN。如果缺失setup-podman.sh和run-openclaw-podman.sh会自动生成使用openssl、python3或od。可选配置在该.env文件中您可以设置提供者密钥例如GROQ_API_KEY、OLLAMA_API_KEY以及其他 OpenClaw 环境变量。主机端口默认情况下脚本将映射端口18789网关和18790桥接。您可以通过在启动时设置OPENCLAW_PODMAN_GATEWAY_HOST_PORT和OPENCLAW_PODMAN_BRIDGE_HOST_PORT来覆盖主机端口映射。网关绑定地址默认情况下run-openclaw-podman.sh使用--bind loopback启动网关以确保仅本地安全访问。若需在局域网中暴露服务请设置OPENCLAW_GATEWAY_BINDlan并在openclaw.json中配置gateway.controlUi.allowedOrigins或显式启用 host-header 回退机制。路径主机上的配置和工作区默认位于~openclaw/.openclaw和~openclaw/.openclaw/workspace。您可以通过设置OPENCLAW_CONFIG_DIR和OPENCLAW_WORKSPACE_DIR来覆盖启动脚本使用的主机路径。存储模型持久化主机数据OPENCLAW_CONFIG_DIR和OPENCLAW_WORKSPACE_DIR会被 bind-mount 到容器内并在主机上保留状态。临时沙箱 tmpfs如果您启用了agents.defaults.sandbox工具沙箱容器会在/tmp、/var/tmp和/run挂载tmpfs。这些路径基于内存随沙箱容器销毁而消失顶层 Podman 容器设置本身不会添加自己的 tmpfs 挂载。磁盘增长热点需重点关注的主要路径包括media/、agents//sessions/sessions.json、转录 JSONL 文件、cron/runs/*.jsonl以及/tmp/openclaw/下的滚动文件日志或您在logging.file中配置的路径。setup-podman.sh现在会将镜像 tar 文件暂存于私有临时目录中并在设置过程中打印所选的基础目录。对于非 root 用户运行的情况脚本仅在该基础目录安全可用时才接受TMPDIR否则会依次回退到/var/tmp再回退到/tmp。保存的 tar 文件权限为仅所有者可读并通过流式传输加载到目标用户的podman load中因此调用者的私有临时目录不会阻碍设置过程。常用命令查看日志使用 Quadletsudo journalctl --machine openclaw --user -u openclaw.service -f使用脚本sudo -u openclaw podman logs -f openclaw停止服务使用 Quadletsudo systemctl --machine openclaw --user stop openclaw.service使用脚本sudo -u openclaw podman stop openclaw重新启动使用 Quadletsudo systemctl --machine openclaw --user start openclaw.service使用脚本重新运行启动脚本或执行podman start openclaw删除容器sudo -u openclaw podman rm -f openclaw—— 主机上的配置和工作区将被保留故障排除配置或 auth-profiles 出现权限被拒EACCES容器默认使用--usernskeep-id以运行脚本的主机用户的 uid/gid 身份执行。请确保您的主机OPENCLAW_CONFIG_DIR和OPENCLAW_WORKSPACE_DIR目录由该用户拥有。网关启动被阻塞缺少gateway.modelocal请确保~openclaw/.openclaw/openclaw.json文件存在且设置了gateway.modelocal。setup-podman.sh会在文件缺失时自动创建。openclaw 用户的 Rootless Podman 失败检查/etc/subuid和/etc/subgid是否包含openclaw的条目例如openclaw:100000:65536。若缺失请添加并重启相关服务。容器名称已被占用启动脚本使用podman run --replace因此再次启动时会替换现有容器。如需手动清理podman rm -f openclaw。以 openclaw 用户身份运行时找不到脚本请确保已运行setup-podman.sh以便将run-openclaw-podman.sh复制到 openclaw 用户的家目录例如/home/openclaw/run-openclaw-podman.sh。Quadlet 服务未找到或无法启动编辑.container文件后请运行sudo systemctl --machine openclaw --user daemon-reload。Quadlet 要求使用 cgroups v2执行podman info --format {{.Host.CgroupsVersion}}应显示2。可选以您自己的用户身份运行若希望以普通用户身份运行网关而非专用的 openclaw 用户您可以自行构建镜像在~/.openclaw/.env中设置OPENCLAW_GATEWAY_TOKEN并使用--usernskeep-id和挂载到您~/.openclaw目录的方式运行容器。启动脚本专为 openclaw 用户流程设计对于单用户设置您也可以手动执行脚本中的podman run命令并将配置和工作区指向您的家目录。不过我们仍建议大多数用户使用setup-podman.sh并以 openclaw 用户身份运行以实现配置与进程的隔离。