通过SMB协议连接共享盘实现openclaw 读写文件
背景
资料存放在共享盘中,想要对共享盘的资料进行读写操作。
例如:有个 excel 表格,表格中记录这线索名称和最近一次的沟通内容,需要结合沟通内容给出结论,该客户是否有购买意向,是否能发展为客户;
验证可行性
通过 1Panel 部署 OpenCLaw
需要修改容器权限,修改docker-compose.yml文件
加上 privileged: true,然后重启容器
networks:
1panel-network:
external: true
services:
openclaw:
container_name: ${CONTAINER_NAME}
deploy:
resources:
limits:
cpus: ${CPUS}
memory: ${MEMORY_LIMIT}
environment:
HOME: /home/node
OPENCLAW_DISABLE_BONJOUR: "1"
TERM: xterm-256color
healthcheck:
interval: 3m
retries: 3
start_period: 15s
test:
- CMD
- node
- -e
- fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))
timeout: 10s
image: 1panel/openclaw:2026.4.26
init: true
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- ${HOST_IP}:${PANEL_APP_PORT_HTTP}:18789
privileged: true
restart: unless-stopped
volumes:
- ./data/conf:/home/node/.openclaw
- ./data/workspace:/home/node/.openclaw/workspace
- /etc/localtime:/etc/localtime
进到容器中安装cifs-utils 包
apt update -y
apt install cifs-utils -y在openclaw中安装skill
在对话页面输入一下文字:
请安装remote-disk-mount技能,技能地址 https://clawhub.ai/Leochens/remote-disk-mount
使用SMB
服务器地址:192.168.88.88
用户名:用户名
密码:密码
共享名称:share_demoopenclaw就能自动对话好,后续就可以通过openclaw进行文件处理;
方法二:
直接将共享文件夹挂载到宿主机上,然后再改 docker-compose.yml 文件进行映射也能实现效果
宿主机本身自带 cifs-utils 服务,若没有就安装一个
apt update -y
apt install cifs-utils -y执行命令进行挂载
#这个是创建的文件夹是root权限,不适合通过docker-compose.yml挂载
mount -t cifs //服务器ip/share_demo ~/mount_share_demo -o username=用户名,password='你的密码',vers=3.0,uid=0,gid=0,file_mode=0777,dir_mode=0777,iocharset=utf8
#这个是1000的权限可以通过docker-compose.yml挂载
mount -t cifs //服务器ip/share_demo ~/mount_share_demo -o username=用户名,password='你的密码',vers=3.0,uid=1000,gid=1000,file_mode=0777,dir_mode=0777,iocharset=utf8
后续直接改openclaw的docker-compose.yml即可;
注意⚠️:如果是在已创建的容器上直接修改它是不生效的,需要通过docker-compose down -v 取消挂载,然后通过docker-compose up -d 进行启动才生效,或者第一次创建用下面的yml创建也生效。
修改后的docker-compose.yml如下:
networks:
1panel-network:
external: true
services:
openclaw:
container_name: ${CONTAINER_NAME}
deploy:
resources:
limits:
cpus: ${CPUS}
memory: ${MEMORY_LIMIT}
environment:
HOME: /home/node
OPENCLAW_DISABLE_BONJOUR: "1"
TERM: xterm-256color
healthcheck:
interval: 3m
retries: 3
start_period: 15s
test:
- CMD
- node
- -e
- fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))
timeout: 10s
image: 1panel/openclaw:2026.4.26
init: true
labels:
createdBy: Apps
networks:
- 1panel-network
ports:
- ${HOST_IP}:${PANEL_APP_PORT_HTTP}:18789
privileged: true
restart: unless-stopped
volumes:
- ./data/conf:/home/node/.openclaw
- ./data/workspace:/home/node/.openclaw/workspace
- /etc/localtime:/etc/localtime
- cifs_data:/home/node/.openclaw/workspace/mount_share_demo
#- /root/mount_share_demo:/home/node/.openclaw/workspace/mount_share_demo:shared(宿主机挂载的方法)
volumes:
cifs_data:
driver: local
driver_opts:
device: //IP/share_demo
o: username=用户名,password=密码,vers=3.0,uid=1000,gid=1000,file_mode=0777,dir_mode=0777,iocharset=utf8
type: cifs后续不用这个文件夹可以取消挂载:
umount -l ~/mount_share_demo