编者:枫影
前言:
- 默认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安装完成。
配上几个技能,都是我常用的
clawhub login –token 你的token值修复.openclaw/workspace目录的映射(很重要)
注释:为什么这么做?由于刚刚安装的openclaw会生成配置文件和工作区文件,两者是嵌套的目录环境,但对于容器却是两个不同的目录(当然你也可以用同一个目录,但这样以后文件多了很难管理),通过这种方式手动修复一下,确保容器的目录挂载正常。
- 第一步: exit退出容器shell,停止容器,在飞牛的文件夹管理界面下,将.openclaw/workspace目录内容,全部剪切,粘贴到容器目录的workspace目录内
- 第二步: 再次启动容器(今后新生成的文件或目录,会根据容器的目录映射保存)
- [ ] 安装股票分析能力
- 配置mcp服务
mcpoter config add stock-mcp
编辑/config/mcpoter.json文件为以下内容
{ “mcpServers”: {
"stock-mcp": { "command": "npx", "args": ["-y", "stock-sdk-mcp"] }
}, “imports”: [] }
- 同样的,告诉你的虾上述内容。
- [ ] 安装语音转文字能力
- [ ] 安装文档转换能力
- [ ] 安装语音对话能力(也就是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,但那是以后的事情了。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/251052.html