OpenClaw 容器化Docker 安装部署教程 适配任意类似飞牛等NAS系统环境

OpenClaw 容器化Docker 安装部署教程 适配任意类似飞牛等NAS系统环境编者 枫影 前言 默认 NAS 系统为飞牛 其他例如群晖等 NAS 系统大同小异 以下内容基本通用 几个优势 linuxserver io 也算是互联网界比较有名气的组织了 在此平台上部署你的龙虾不用担心里面有不知名的后门或木马 提醒各位 谨慎为上 非知名镜像你敢用吗 底层做到了完整的 root 权限的龙虾 能升级能更新可持续 完全的隔离 龙虾只能在 debian 容器环境内活动

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



编者:枫影
前言:
  • 默认NAS系统为飞牛(其他例如群晖等NAS系统大同小异,以下内容基本通用)
  • 几个优势:
    linuxserver.io也算是互联网界比较有名气的组织了,在此平台上部署你的龙虾不用担心里面有不知名的后门或木马(提醒各位,谨慎为上,非知名镜像你敢用吗?)。
    底层做到了完整的root权限的龙虾,能升级能更新可持续。
    完全的隔离,龙虾只能在debian容器环境内活动,编辑的文件和目录均映射出来方便操作。
    就算龙虾被养挂了,只要.openclaw目录内的内容均在,就可以重新启动个容器从头来过,起到原地满血复活的效果。
























一、制作容器
  • 变量文件:.env
OPENCLAW_IMAGE=alpine/openclaw:latest #OPENCLAW_IMAGE=alpine/openclaw:2026.3.22 #OPENCLAW_IMAGE=alpine/openclaw:2026.2.19 #OPENCLAW_IMAGE=ghcr.io/openclaw/openclaw:latest OPENCLAW_GATEWAY_TOKEN=换成你的 #推荐使用openssl rand -hex 32生成 OPENCLAW_GATEWAY_BIND=lan #OPENCLAW_GATEWAY_BIND=127.0.0.1 OPENCLAW_GATEWAY_PORT=18789 OPENCLAW_BRIDGE_PORT=18790

OPENCLAW_CONFIG_DIR=./.openclaw #OPENCLAW_CONFIG_DIR=/root/.openclaw OPENCLAW_WORKSPACE_DIR=./.openclaw/workspace

#gmail的认证 GOG_KEYRING_PASSWORD=换成你的 #指定目录 XDG_CONFIG_HOME=/home/node/.openclaw

  • 容器配置文件:docker-compose.yml
services: debian-openclaw:

image: lsiobase/debian:trixie-version-1b7f8754 #伟大的linuxserver.io官方的debian镜像 #restart: unless-stopped restart: always container_name: debian-openclaw #user: '1000:1001' #还在研究,暂不使用 env_file: - .env #读取.env文件内的变量定义 environment: - HOME=/home/node - NODE_ENV=production - TERM=xterm-256color - OPENCLAW_GATEWAY_MODE=local - OPENCLAW_GATEWAY_BIND=${OPENCLAW_GATEWAY_BIND} - OPENCLAW_GATEWAY_PORT=${OPENCLAW_GATEWAY_PORT} - OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN} - GOG_KEYRING_PASSWORD=${GOG_KEYRING_PASSWORD} - XDG_CONFIG_HOME=${XDG_CONFIG_HOME} - TZ=Asia/Shanghai - PGID=999 #根据你自己NAS内的id改变 - PUID=999 #根根据你自己NAS内的id改变 #- LANGUAGE=zh_CN.UTF-8 #- LANG=zh_CN.UTF-8 #这条命令是让容器构建时额外安装的包,一些apt-get需要装的包就可以写入,终于找到这个了 #- OPENCLAW_DOCKER_APT_PACKAGES=ffmpeg build-essential pip vim git curl jq #这条命令是增加openclaw支持的扩展插件,只支持openclaw支持的插件,也就是list出来的 #- OPENCLAW_EXTENSIONS=clawhub mcporter stock-sdk-mcp caiyun-weather markitdown-skill - CAIYUN_WEATHER_API_TOKEN=换成你的 #彩云天气的token - DEEPSEEK_API_KEY=换成你的 #deepseek的api key - TAVILY_API_KEY=换成你的 #超牛的tavily搜索的api key - Z_API_KEY=换成你的 #智普的 - OPENROUTER_API_KEY=换成你的 #openrouter的key 有居多free的模型随便用 #其他一些配置 #clawhub login --token 换成你的 volumes: - ./config:/config #配置文件目录,有用,例如我就将whisper_model模型提前下载好存入该目录 - ./.openclaw:/home/node/.openclaw #openclaw的配置存储目录 - ./workspace:/home/node/.openclaw/workspace #openclaw的工作空间目录 - ./custom-cont-init:/custom-cont-init.d:ro #伟大的linuxserver.io镜像的特有机制,系统重启自动执行该目录下脚本,自由发挥 - ./custom-services:/custom-services.d:ro #镜像的特有机制,系统重启自动运行该目录下服务,可以理解为systemd的服务自启动,自己自由发挥 

#开放两个端口,一个http另一个https的。如果完全不需要web界面和模式可以完全屏蔽掉,自己按需配置

ports: # 推荐:在 VPS 上保持 Gateway 网关仅限 loopback;通过 SSH 隧道访问。 # 要公开暴露,移除 `127.0.0.1:` 前缀并相应配置防火墙。 #- "127.0.0.1:${OPENCLAW_GATEWAY_PORT}:18789" - ${OPENCLAW_GATEWAY_PORT}:18789 - ${OPENCLAW_BRIDGE_PORT}:18790 

#以下均是官方容器研究所用,均屏蔽掉

 #command: supervisord -c /etc/supervisor/supervisord.conf #command: openclaw gateway run #command: openclaw gateway run --bind ${OPENCLAW_GATEWAY_BIND} --port ${OPENCLAW_GATEWAY_PORT} 

command: openclaw gateway start –bind \({OPENCLAW_GATEWAY_BIND} --port \){OPENCLAW_GATEWAY_PORT}

command: node dist/index.js gateway –bind \({OPENCLAW_GATEWAY_BIND} --port \){OPENCLAW_GATEWAY_PORT}

command: node openclaw.mjs gateway –bind \({OPENCLAW_GATEWAY_BIND} --port \){OPENCLAW_GATEWAY_PORT}

command: node openclaw.mjs gateway –bind \({OPENCLAW_GATEWAY_BIND} --port \){OPENCLAW_GATEWAY_PORT} –allow-unconfigured

command: node dist/index.js gateway –bind \({OPENCLAW_GATEWAY_BIND} --port \){OPENCLAW_GATEWAY_PORT} –allow-unconfigured

# 资源限制 deploy: resources: limits: # 【上限】容器最多能使用的资源量(硬限制) cpus: '4.0' # 最多使用4个CPU核心,每0.5一档 memory: 8G # 最多使用8G内存 reservations: # 【预留】保证容器至少能获得的资源量(软限制) cpus: '0.25' # 保证至少25%的CPU核心 memory: 512M # 保证至少512MB内存 

#networks:

openclaw:

driver: bridge

新建以下目录,与上述容器配置文件内的volumes容器目录映射对应:

二、配置容器内debian系统环境

两种方式:

  • 方式一直接可以使用docker管理界面自带的bash进行操作;
    ![Pasted image 410.png]]




  • 方式二就是开启飞牛的ssh端口,使用终端应用登录至飞牛os内,执行下列命令进入搭建好的容器debian系统,教程默认采用方式二。
    顺便力荐:Netcetty,开源,免费,还带云同步,简直神器了。
    开源地址:binaricat/Netcatty: SSH workspace, SFTP, and terminals in one
    ![Pasted image 103.png]]


















进入容器(需要先SSH入飞牛NAS,然后用 sudo -i 切换至root权限)
docker exec -it debian-openclaw /bin/bash
容器内的debian系统默认就是root用户(最高权限)因此下面均不需要sudo










安装应用和依赖包
手动安装Node.js 24版本(否则默认安装的是22的版本,太低了)
补全debian的中文环境和中文字体
调出语言配置界面

dpkg-reconfigure locales
输入中文语言编号,例如323
默认中文语言环境,例如3










安装自选应用包
==特别注释:== python3.11之后的版本,为了避免pip安装影响系统apt的应用依赖库,因此使用pip安装,绝大多数应用都会遇到【error: externally-managed-environment】的错误提示,直接被系统拒绝,并给了三个方案。方案一,先用apt install python3-你的包,看是否有系统级别的编译版本。如果没有包,则方案二,创建venv虚拟环境,虚拟环境内pip安装,但这样太麻烦;方案三,pip安装包的命令最后面加参数–break-system-packages强制安装,但这样很容易导致整个系统依赖出问题;优选,方案四,使用pipx安装,也就是前面提到的为什么要提前安装pipx包的原因。 说人话:就是你准备安装某包时,先使用apt-get install python3-某包,如果提示没有,再用pipx install 某包,即可。 

以下是我提前安装的应用包,用于范例

    • 上述命令分别对应的是:语音文件、模型名字、语音所属语言、输出文件格式、输出目录、模型目录、禁用CPU FP16(被禁则自动使用FP32加速)
    • 命令模型目录内是真有模型(我提前下载好的)。如果你从来没下载过,则删除–model_dir参数,应用会自动下载模型至/tmp/whisper_cache/目录内,事后你拷贝到/config/自己目录保存就好。
    • 默认用turbo模型(1.5G),6G内存4核CPU就行,硬件要求高但识别率也高,力推。什么?!你用ARM跑飞牛?那你老实用base模型(138M)吧。
三、容器系统内安装openclaw
执行官方安装脚本,不自动执行配置

curl -fsSL https://openclaw.ai/install.sh | bash -s – –no-onboard

手动配置openclaw

openclaw onboard –install-daemon
注释:



  • 重点提醒下,在skills环节,一定要把clawhub和mcpoter两个服务用空格选上安装,安装方式选择npm,绝大部分场景都需要这两个服务!
  • 具体配置流程啥啥啥的此教程不赘述,网上大把
  • 安装完成后会看到openclaw提示gateway不能以systemd服务安装,正常现象,具体看最下面的解释和注意事项。
    配置完毕,各种文件会自动生成,至此openclaw安装完成。



配上几个技能,都是我常用的

  • 都干嘛用的不说了,自行搜索
  • 安装时如遇429限流(clawhub经常限流),则需要去clawhub.ai上注册个账号,并拿到你账号的token,然后用以下命令登录clawhub即可。至此,以后的安装或update均不会再429限流了,登录命令:clawhub login –token 你的token值
  • 修复.openclaw/workspace目录的映射(很重要)

    注释:为什么这么做?由于刚刚安装的openclaw会生成配置文件和工作区文件,两者是嵌套的目录环境,但对于容器却是两个不同的目录(当然你也可以用同一个目录,但这样以后文件多了很难管理),通过这种方式手动修复一下,确保容器的目录挂载正常。

    • 第一步: exit退出容器shell,停止容器,在飞牛的文件夹管理界面下,将.openclaw/workspace目录内容,全部剪切,粘贴到容器目录的workspace目录内
    • 第二步: 再次启动容器(今后新生成的文件或目录,会根据容器的目录映射保存)
    - [ ] 安装股票分析能力
    1. 配置mcp服务
      mcpoter config add stock-mcp
      编辑/config/mcpoter.json文件为以下内容










    { “mcpServers”: {

     "stock-mcp": { "command": "npx", "args": ["-y", "stock-sdk-mcp"] } 

    }, “imports”: [] }

    1. 同样的,告诉你的虾上述内容。
    - [ ] 安装语音转文字能力
    - [ ] 安装文档转换能力
    - [ ] 安装语音对话能力(也就是TTS、语音转文字和文字转语音)

    写累了,以后补充:)

    四、正式投入生产环境
    配置自动启动服务
    #!/usr/bin/with-contenv bash

    openclaw gateway run

    平时文件管理

    特别注释:平时需要启动和停止openclaw,直接停止容器即可。

    需要安装新的应用或包,可直接用容器的终端机操作,简直不要太方便,如下图:

    ![Pasted image 415.png]]

    我要更新openclaw了怎么办?

    直接上图执行:openclaw update,搞定。是不是很方便。

    该容器一经制作投入运行就不需要再动它了。只要不让你的虾乱来(例如执行exec等命令瞎干活啥的)。
    五、其他事项

    记录一些本人还在研究的一些事情。

    初始化龙虾的常规动作
    • 操作文档转换,告诉你的龙虾:
    在我的工作区的”我的文档/待转换文档”目录内有一些docx文件,使用markitdown-skill技能转换为md文档,并存储到该目录下的”已完成”目录内。 
    • 关于龙虾的分层记忆逻辑,避免龙虾以后记忆错乱,告诉你的龙虾:
    以后都按照以下逻辑分层记忆。
    分层记忆:
    1、MEMORY.md只放长期有效的信息(用户偏好、决策原因、失败教训),关键原则:只记为什么和教训,不记做了什么。
    2、每日记录放入memory/YYYY-MM-DD.md,完整保留最近7天。
    3、7天后至30天内的记录只保留“关键决策和教训”,压缩成 SUMMARY.md,删除执行日志。
    4、30天后的记录只存索引(日期+关键词),正文移到archive/,保留30天后删除。































    • 其他欢迎补充
    使用龙虾干活的场景
    • 会议纪要
    我是飞牛的NAS,自带webdav,并通过私人域名,把很多服务均已经域名发布。自然,我的手机的mix文件管理应用,能够直接访问飞牛某文件夹。我是通过飞书与我的虾交流的。适用场景自然就成了:开会时,用手机将会议录音,将录音文件mp3(也可能是其他)通过mix文件,存到虾自己的工作目录下,通过飞书告诉虾,将工作目录下的这个录音文件转换为文字,整理为会议纪要。将该纪要保存为md文件,存到/会议纪要/目录内,并发给我。 
    • 欢迎补充
    关于文件权限的事情

    注释:

    • 能看到,文件和目录所属均是root,虽然不影响使用,但看着别扭。其实linuxserver.io的容器有完备的权限修复及继承机制(例如官方封装的freshrss、nextcloud等容器保存的文件均能完美与NAS用户对应),只是我还没完全掌握,下面是部分研究成果,目的就是做到保存的文件均与你NAS当前用户一致。
    • 容器内有个abc的用户,该用户就是与容器配置的PUID PGID一一对应的存在。除非是通过abc用户执行openclaw gateway run,否则,默认root执行的一旦修改过文件或目录,所属者会自动变为root。
      我做了以下事情,首先,修复一下目录权限:



    • 设置共享组
    groupadd shared usermod -aG shared abc usermod -aG shared root 
    • 设置目录权限
    lsiown -R abc:shared /home/node/.openclaw chmod -R 775 /home/node/.openclaw chmod g+s /home/node/.openclaw 

    注释:

    • /home/node/.openclaw这个目录,就是容器已经映射的目录,对应你的NAS的目录。
    • abc就是容器PUID的对应用户,也就是说,任何用abc创建的文件,在容器内是abc用户的权限,在NAS内是你NAS系统ID的PUID权限。
    • lsiown和chown的区别。lsiown就是重新封装的chown命令,是linuxserver.io封装镜像的特有命令,更好的修复目录权限。
      将上述命令写成脚本,放入容器【custom-cont-init】脚本目录,每次启动均会自动修复一次权限:
      脚本名:99-fix-openclaw










    #!/bin/bash

    这个脚本会在容器启动时自动执行

    修正所有权为 abc 用户

    lsiown -R abc:shared /home/node/.openclaw

    可选:设置 SGID,让新建文件继承组

    chmod g+s /home/node/.openclaw

    删除之前在服务自启目录创建的文件openclaw-root,重新创建一个文件(直接修改内部命令也可以):
    文件名:openclaw-abc



    #!/usr/bin/with-contenv bash

    s6-setuidgid abc openclaw gateway run

    注释:

    • 【s6-setuidgid】是linuxserver.io封装的特有命令,意在切换当前用户为abc用户,让你的openclaw进程以abc用户运行(来执行目标服务),如此保存的文件自然也是abc的继承权了。这样权限对等puid参数。
    • 我亲测过,只要openclaw不涉及root类权限的操作,就不会有任何问题。当然,还没做到linuxserver官方封装的效果,还需研究。
    关于openclaw官方镜像
    关于systemd自启服务
    • 选1-可以参考该文修复systemd服务:
      OpenClaw部署Gateway报错:Failed to connect to bus-腾讯云开发者社区-腾讯云
      但我觉得实在没有这个必要,因为本质上仍然执行的是openclaw gateway run命令,相较于上述的自启服务不香么?!











    • 选2-也可以安装supervisor服务
    # 安装 supervisor apt-get install -y supervisor

    创建 supervisor 配置

    [program:openclaw-gateway] command=/usr/bin/openclaw gateway run autostart=true autorestart=true stderr_logfile=/var/log/openclaw-gateway.err.log stdout_logfile=/var/log/openclaw-gateway.out.log

    启动 supervisor

    supervisord -c /etc/supervisor/supervisord.conf

    • 选3-也是**选择,就是上述都不选。上述虽然都可以修复,但容器启动后,是否能在飞牛界面上看到openclaw的实时日志,我不知道。上述都是我做过的研究,不忍删除,因此单纯的保留记录下。
    关于openrouter的免费模型
    • z-ai/glm-4.5-air:free
    关于pip安装提示空间不足
    最后:
    • 转载请注明出处。
    • 文件存储权限的事情,以及其他几个研究事项,通过我抛砖引玉出那位大神搞定了,欢迎发邮件交流:[[]]
    • 我估计linuxserver官方大概率会封装openclaw,但那是以后的事情了。
    教程编制时间:2026年3月30日

    小讯
    上一篇 2026-04-08 13:10
    下一篇 2026-04-08 13:08

    相关推荐

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
    如需转载请保留出处:https://51itzy.com/kjqy/251052.html