开源版coze本地部署与试用


   官方部署文档:

   https://github.com/coze-dev
https://github.com/coze-dev/coze-studio

   服务器信息:

   主机名
IP
操作系统
规格
GPU情况
备注

   ksp-registry
172.20.0.22
Ubuntu 20.04.3 LTS
1

  • 2025-08-25 08:26:13

一、背景与环境信息

  此文档使用docker-compose的方式来部署coze。

二、部署操作

2.1 下载安装源码

# 克隆代码 
root@ksp-registry:/opt/code_repos# git clone -b release/v0.2.4 https://github.com/coze-dev/coze-studio.git
<p>SHELL

2.2 执行部署

#(1)启动部署前,需先确定几个可用模型。从模板目录复制 doubao-seed-1.6 模型的模版文件,并粘贴到配置文件目录
#   需要什么模型就复制什么对应厂商的配置文件并修改,一个配置文件对应一个具体的模型
#   模型配置文档:https://github.com/coze-dev/coze-studio/wiki/3.-%E6%A8%A1%E5%9E%8B%E9%85%8D%E7%BD%AE
cp backend/conf/model/template/model_template_ollama.yaml backend/conf/model/ollama-gemma3-4b.yaml 
#在配置文件目录下,修改模版文件
cd backend/conf/model
#(2)修改文件ollama-gemma3-4b.yaml 
vi ollama-gemma3-4b.yaml 
<p>SHELL

  1 id: 68010       #整个coze环境中,每个模型id必须唯一,且最好不要修改
  2 name: gemma3-4b #可以修改名字
...
 49 meta:
 50     protocol: ollama
 51     capability:
 52         function_call: true
 53         input_modal:
 54             - text
 55         input_tokens: 128000
 56         json_mode: false
 57         max_tokens: 128000
 58         output_modal:
 59             - text
 60         output_tokens: 16384
 61         prefix_caching: false
 62         reasoning: false
 63         prefill_response: false
 64     conn_config:
 65         base_url: "http://172.20.0.22:11434"  #ollama提供服务的base url,最好使用IP
 66         api_key: ""                           #我的ollama服务没有启用api key。如果使用qwen等模型需要  
 67         timeout: 0s
 68         model: "gemma3:4b"   #ollama中管理的模型名称
 69         temperature: 0.6
 70         frequency_penalty: 0
 71         presence_penalty: 0
 72         max_tokens: 4096
 73         top_p: 0.95
 74         top_k: 20
 75         stop: []
 76         custom: {}
 77     status: 0
 ...
 377   coze-web:
378     # build:
379     #   context: ..
380     #   dockerfile: frontend/Dockerfile
381     image: opencoze/web:latest
382     container_name: coze-web
383     restart: always
384     ports:
385       - "8888:80"
386       # - "443:443"  # SSL port (uncomment if using SSL)
387     volumes:
388       - ./nginx/nginx.conf:/etc/nginx/nginx.conf:rw  # Main nginx config        ###从ro修改为rw
389       - ./nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf:rw  # Proxy config  ###从ro修改为rw(否则无法修改此文件)
390       # - ./nginx/ssl:/etc/nginx/ssl:ro  # SSL certificates (uncomment if using SSL)
391     depends_on:
392       - coze-server
393     networks:
394       - coze-network
 ...


YAML
#(3)修改docker-compose.yml 文件
#修改minio容器使用的镜像为minio/minio,否则coze-minio一直启动失败后反复重启、同时无日志信息可查看
root@ksp-registry:/opt/code_repos/coze-studio/docker# cp docker-compose.yml docker-compose.yml.bak
root@ksp-registry:/opt/code_repos/coze-studio/docker# vi docker-compose.yml 
...
162   minio:
163           #    image: minio/minio:RELEASE.2025-06-13T11-33-47Z-cpuv1
164     image: minio/minio
...


SHELL
#(4)复制.env文件
root@ksp-registry:/opt/code_repos/coze-studio/docker# cp .env.example .env

#修改.env文件,否则使用"服务器IP:8888"访问web界面并注册时会报错、失败,日志提示“connect() failed (111: Connection refused) while connecting to upstream”
root@ksp-registry:/opt/code_repos/coze-studio/docker# vi .env
  1 # Server
  2 #export LISTEN_ADDR="http://localhost${LISTEN_ADDR}"
  3 export LISTEN_ADDR="0.0.0.0:8888"   
...


SHELL
#(5)启动服务、查看所有相关容器
root@ksp-registry:/opt/code_repos/coze-studio/docker# docker-compose up -d
root@ksp-registry:/opt/code_repos/coze-studio/docker# docker-compose ps


SHELL

  image-20250814113644467https://s2.loli.net/2025/08/14/TSnruVeDczq7ER8.png

2.3 登录web界面

  浏览器访问 http://172.20.0.22/ 即可打开 Coze Studio。其中 8888 为后端监听端口。

  输入邮箱与密码注册后使用。

2.4 插件配置

  参考:配置官方插件工具

  image-20250814171152934https://s2.loli.net/2025/08/14/1Ce7S4WFJRDXzUy.png

2.5 配置基础组件

上传组件(暂未成功)

#1.设置上传组件类型。
root@ksp-registry:/opt/code_repos/coze-studio-v0.2.4/docker# vi .env
export FILE_UPLOAD_COMPONENT_TYPE="storage"
<p>#2.为上传组件添加秘钥等配置。 同样在 docker 目录的 .env 文件中,根据组件类型填写以下配置。
#使用默认的minio。
#2.1. 在 Coze studio 项目的 docker/.env 文件中,FILE_UPLOAD_COMPONENT_TYPE 设置为 storage。
#2.2. 在 Storage component 区域,设置 STORAGE_TYPE 为 minio。
#2.3. 在 MiniO 区域,我稍微做了一个参数MINIO_ENDPOINT的修改(本来想配置成外网映射后的地址,但重启服务时报错:init minio client failed check bucket opencoze exist failed Get "http://175.6.40.93:61872/opencoze/?location=": dial tcp 175.6.40.93:61872: i/o timeout,不知如何处理,暂放弃)</p>
<h1 id="MiniIO">MiniIO</h1>
<p>export MINIO_ROOT_USER=minioadmin
export MINIO_ROOT_PASSWORD=minioadmin123
export MINIO_DEFAULT_BUCKETS=milvus
export MINIO_AK=$MINIO_ROOT_USER
export MINIO_SK=$MINIO_ROOT_PASSWORD
#export MINIO_ENDPOINT="minio:9000"
export MINIO_ENDPOINT="172.20.0.22:49402"
#export MINIO_ENDPOINT="175.6.40.93:61872"
export MINIO_API_HOST="http://${MINIO_ENDPOINT}"</p>
<p>SHELL

配置向量化模型(Embedding)

  Coze Studio 开源版支持自定义设置知识库向量化依赖的 Embedding 模型,使知识库的向量化环节效果更符合指定场景的业务需求。

  此处向量化存储模块使用默认的​milvus,按照如下方式设置 Embedding 模型。

#编辑.env
root@ksp-registry:/opt/code_repos/coze-studio/docker# vi .env
<p>SHELL

...
# Settings for Embedding
# The Embedding model relied on by knowledge base vectorization does not need to be configured
# if the vector database comes with built-in Embedding functionality (such as VikingDB). Currently,
# Coze Studio supports four access methods: openai, ark, ollama, and custom http. Users can simply choose one of them when using
# embedding type: openai / ark / ollama / http
#export EMBEDDING_TYPE="ark"
export EMBEDDING_TYPE="ollama"

# ollama embedding
export OLLAMA_EMBEDDING_BASE_URL="http://172.20.0.22:11434" # (string, required) Ollama embedding base_url
export OLLAMA_EMBEDDING_MODEL="nomic-embed-text:latest"    # (string, required) Ollama embedding model
export OLLAMA_EMBEDDING_DIMS="768"     # (int,    required) Ollama embedding dimensions
...

TOML
#重启服务
root@ksp-registry:/opt/code_repos/coze-studio/docker# docker-compose up -d --force-recreate --no-deps coze-server


SHELL

配置AI 生成模型(Model)

  Coze Studio 知识库提供文本转 SQL(NL2SQL)、一句话生成 Query(Message to Query)、图像标注(Image Annotation)、workflow 大模型节点召回知识库等功能,这些功能统一依赖于 Coze Studio 预配置的 AI 生成模型。在 Coze Studio 开源版中使用这些功能前,你需要先配置这个AI 生成模型。

  • 此处配置的 AI 生成模型只在 NL2SQL、Message to Query、Image Annotation、Workflow knowledge recall 四个场景中生效。
  • 如果需要在不同场景中使用不同模型,你可以通过添加前缀来针对特定场景应用特定配置,例如图片标注场景需要配置视觉模型,其余场景不需要,则可以新增export IA_BUILTIN_CM_OPENAI_MODEL="xxx"来配置图片标注场景专用的视觉模型。
#编辑.env
root@ksp-registry:/opt/code_repos/coze-studio/docker# vi .env
<p>SHELL

...
# Model for knowledge nl2sql, messages2query (rewrite), image annotation, workflow knowledge recall
# add prefix to assign specific model, downgrade to default config when prefix is not configured:
# 1. nl2sql:                    NL2SQL_ (e.g. NL2SQL_BUILTIN_CM_TYPE)
# 2. messages2query:            M2Q_    (e.g. M2Q_BUILTIN_CM_TYPE)
# 3. image annotation:          IA_     (e.g. IA_BUILTIN_CM_TYPE)
# 4. workflow knowledge recall: WKR_    (e.g. WKR_BUILTIN_CM_TYPE)
# supported chat model type: openai / ark / deepseek / ollama / qwen / gemini
#export BUILTIN_CM_TYPE="ark"
export BUILTIN_CM_TYPE="ollama"

# type ollama
export BUILTIN_CM_OLLAMA_BASE_URL="http://172.20.0.22:11434"
export BUILTIN_CM_OLLAMA_MODEL="qwen2.5:32b"
...

TOML
#重启服务
root@ksp-registry:/opt/code_repos/coze-studio/docker# docker-compose up -d --force-recreate --no-deps coze-server


SHELL

设置 OCR 组件

  Coze Studio 知识库的 ORC 能力由火山引擎 OCR 产品提供服务。在 Coze Studio 开源版中开启 OCR 功能前,应先开通火山引擎 OCR 产品,并在本地项目中填写 ORC 配置,将 OCR 组件的 AK、SK 配置为火山引擎的密钥对。

  访问 Hi,这里是API服务:通用文字识别开通(或试用。试用只是QPS上限为1,比正式开通时的10小)字节跳动火山引擎的通用文字识别功能。未开通时如下图。其中,QPS(Queries Per Second)上限 是指该服务​每秒能处理的最大请求量,是衡量服务并发处理能力的关键指标。

  image-20250814200535691https://s2.loli.net/2025/08/14/UL8R6Abha9GVYWI.png

  试用或正式开通后,参考 Access Key(密钥)管理 获取火山账号的 AK 和 SK。

  然后配置到.env文件中。

#编辑.env
root@ksp-registry:/opt/code_repos/coze-studio/docker# vi .env
<p>SHELL

...
# Settings for OCR
# If you want to use the OCR-related functions in the knowledge base feature,You need to set up the OCR configuration.
# Currently, Coze Studio has built-in Volcano OCR.
# Supported OCR types: `ve`, `paddleocr`
export OCR_TYPE="ve"
# ve ocr
export VE_OCR_AK="AKLTZWI1ZmQ5YzUxNjVkNDQ3N2FjN2Nk**************"
export VE_OCR_SK="TVRRMllqRTFOelpoT1dKbE5EQXpOR0pt****************************"
...


TOML
#重启服务
root@ksp-registry:/opt/code_repos/coze-studio/docker# docker-compose up -d --force-recreate --no-deps coze-server


SHELL

2.6 创建知识库

  image-20250814202137136https://s2.loli.net/2025/08/14/KsYRJTi5IdmQq1G.png

  image-20250814202621783https://s2.loli.net/2025/08/14/yNZoQEdejDnk83p.png

  image-20250814202735726https://s2.loli.net/2025/08/14/tWd3EHeYkv4U8CA.png

  image-20250814202858280https://s2.loli.net/2025/08/14/boJ2U85KDOyrxBf.png

  等待文档的处理进度达到100%,才可使用此知识库。

2.7 创建智能体

  image-20250814205605720https://s2.loli.net/2025/08/14/z4iI1AygYstDKlT.png

  image-20250814205819400https://s2.loli.net/2025/08/14/wvYAaSHzF79kQXG.png

  image-20250814213416559https://s2.loli.net/2025/08/14/tA5ivmg9yxMkhnr.png

  相关系统提示词如下:

# 角色:{#InputSlot placeholder="角色名称" mode="input"#}领克汽车手册使用助手{#/InputSlot#}
{#InputSlot placeholder="角色概述和主要职责的一句话描述" mode="input"#}领克汽车手册使用助手对《领克汽车用户手册》非常熟悉,能够回复用户关于此品牌汽车的相关信息与操作步骤{#/InputSlot#}
<h2 id="目标:">目标:</h2>
<p>{#InputSlot placeholder="角色的工作目标,如果有多目标可以分点列出,但建议更聚焦1-2个目标" mode="input"#}1. 可以回复关于领克汽车的相关介绍信息
2. 也可以告诉用户关于使用领克汽车的操作细节
3. 可以告诉用户使用领克汽车过程中的注意事项{#/InputSlot#}</p>
<h2 id="技能:">技能:</h2>
<ol>
<li>{#InputSlot placeholder="为了实现目标,角色需要具备的技能1" mode="input"#}具有分析问题的能力,能快速准确地识别用户问题的关键{#/InputSlot#}</li>
<li>{#InputSlot placeholder="为了实现目标,角色需要具备的技能2" mode="input"#}识别出问题后,能够快速从知识库中现有的文档中搜索相关内容{#/InputSlot#}</li>
<li>{#InputSlot placeholder="为了实现目标,角色需要具备的技能3" mode="input"#}搜索到相关内容后,能将这些内容作为上下文,对它们进行提炼与综合,以以精简的内容回复用户的问题{#/InputSlot#}</li>
<li>{#InputSlot placeholder="为了实现目标,角色需要具备的技能3" mode="input"#}请尽量以清晰明了的形式对回复内容进行排版,如果有必要可以分点阐述{#/InputSlot#}</li>
<li>{#InputSlot placeholder="为了实现目标,角色需要具备的技能3" mode="input"#}请尽量指出回复内容的出处{#/InputSlot#}</li>
</ol>
<h2 id="输出格式:">输出格式:</h2>
<p>{#InputSlot placeholder="如果对角色的输出格式有特定要求,可以在这里强调并举例说明想要的输出格式" mode="input"#}请以markdown格式给出回复内容。{#/InputSlot#}</p>
<h2 id="限制:">限制:</h2>
<ul>
<li>{#InputSlot placeholder="描述角色在互动过程中需要遵循的限制条件1" mode="input"#}对于你不知道的问题、在知识库中没有找到相关内容的问题,请直接回复“不好意思,这个问题我暂时不知道”,严禁凭空捏造回复内容{#/InputSlot#}</li>
<li>{#InputSlot placeholder="描述角色在互动过程中需要遵循的限制条件2" mode="input"#}不能辱骂、恐吓或威胁用户,回复内容中请规避色情与暴力相关内容{#/InputSlot#}</li>
</ul>
<p>TOML

  测试无误后,点击右上角的“发布”按钮进行发布。

四、问题

4.1 创建知识库并上传文件时,文档反复“处理中”

  2025年8月20日,使用main分支部署后,创建知识库并上传文件时,页面上显示文档反复“处理中”。

  image-20250820112713996https://s2.loli.net/2025/08/20/Li1tUJqC9wyZIez.png

  coze-server 容器日志反复打印如下信息:

  image-20250820112850144https://s2.loli.net/2025/08/20/h7IWD3K6xEaLHTp.png

  解决办法:我下载release/v0.2.4,重新部署。

  从nomic-embed-text:latest转到使用bge-m3:latest,知识库中上传文件时解析到50%左右提示“code=105000004 message=SearchStore operation failed: store search store failed, err: [Store] upsert failed, the length(102400) of float data should divide the dim(768)”

  解决办法:

  参考“Issue #537 · coze-dev/coze-studio”,停止所有coze容器,然后删除data整个目录,修改好.env文件然后启动coze服务。