通过SMB协议连接共享盘实现openclaw 读写文件

18

背景

资料存放在共享盘中,想要对共享盘的资料进行读写操作。
例如:有个 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_demo

openclaw就能自动对话好,后续就可以通过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
da661ed0-e730-45e5-8ec8-a09d0e6b758c.png

后续直接改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