Skip to content

在线安装 latest[v2.7.2]

部署提示:在开始“在线安装”之前,我们强烈建议您在技术部门同事的指导下进行安装部署。由于安装过程可能涉及到复杂的配置和系统环境要求,专业指导可以帮助您避免潜在的技术问题,确保安装过程顺利进行。 如您在安装部署或使用过程中遇到任何问题,请添加下面微信获取 1V1 人工帮助。 Image description

整个安装过程分为以下几步:

    1. 部署要求: 说明需要的软硬件资源
    1. 下载所需文件: 下载安装所需的文件,并按要求修改配置文件。步骤中详细介绍文件的具体含义。
    1. 启动服务:启动服务时,将会从镜像仓库下载镜像,此时需要大约10-20分钟,请耐心等待,下载完镜像后,将会自动运行服务。
    1. 访问服务:此步骤将介绍服务启动后,如何访问登录NebulaAi
    1. 配置模型和相关初始数据: 访问NebulaAi后,需要配置模型和一些初始化数据后,才能正常使用。
    1. 服务配置详解:完成1-5步骤,可以正常使用NebulaAi。 该步骤为可选步骤,如果用户需要更加详细了解每个配置代表什么含义,可以阅读该部分。

1. 部署要求

1.1 在线安装之前,需要确保服务器上安装以下基础服务:

bash
- docker  >= 20.10.24 

# 高版本的docker自带docker compose命令,则无需安装docker-compose服务。可以直接使用docker compose命令代替docker-compose
- docker-compose  >=  1.25.4 (非必须) 
- 操作系统优先推荐Ubuntu 22.04或以上, Debian 11或以上,次级推荐CentOS 7.9 64 位系统

1.2 需要申请兼容 open ai调用方式的模型,获取相关秘钥、模型类型、请求地址等信息,例如阿里云的千问系列、DeepSeek系列等。

1.3 单机部署资源建议:cpu >=8C,memory>=16G

1.4 网络服务:建议允许外部网络访问

1.5 磁盘需求:使用docker安装时,docker所在的磁盘大小最低预留40G以上空间,生产环境建议100G以上。空间不足将导致镜像拉取失败和容器异常终止。

2. 下载所需文件

2.1 下载所需的 docker-compose.yaml 文件

arm架构部署时,大部分功能都可以正常使用,后续版本将会完善相关服务。 受影响的功能有:智能卡片服务、知识库中关于关于视频处理的文件内容、应用发布到第三方如企业微信和钉钉功能、工作流服务

bash
wget --content-disposition "https://nbagent.ai/api/docs/files?version=v2.7.2"
mv docker-compose-v2.7.2.yaml docker-compose.yaml

nebula-ai-flow【工作流服务】其中挂卷目录要给予相应的777权限。创建目录并给予相应权限:

sh
mkdir -p /home/chatbot/langflow-data
mkdir -p /home/chatbot/chatbot-agent/files/upload
chmod -R 777  /home/chatbot/langflow-data
chmod -R 777  /home/chatbot/chatbot-agent/files/upload

2.2 使用自己的ip或者域名

或者创建如下 docker-compose.yaml 文件, 将变量 {your_ip_or_host} 替换成实际的 ip 或者域名,例如,本机的 ip 地址为 10.10.4.10, 则将 {your_ip_or_host} 的地址全部替换成 10.10.4.10。例如 vim 批量替换命令:

:%s/{your_ip_or_host}/10.10.4.10/g

注意事项

  • 选择Mysql 8.0.42版本时,docker版本要大于 24.0.8

  • 如遇下载异常或者其他情况,复制下面的文本作为docker-compose.yaml文件内容

yaml
version: '3'
services:
  chatbot-server:
    container_name: chatbot-server
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/chatbot-server:v2.7.2-ce
    restart: always
    environment:
      - DATABASE_URI=mysql://root:yourchatbotpassword@{your_ip_or_host}/chatbot?maxsize=10  # mysql配置地址
      - AGENT_BASE_URL=http://{your_ip_or_host}:8000        # chatbot-agent的服务地址
      - AGENT_WS_PATH=ws://{your_ip_or_host}:8000/dev/eia/ws/chat    # chatbota-agent服务的ws访问地址
      - UPLOAD_FOLDER=/data/uploads            # 文件上传后的存储路径
      - ANT_AGENT_URL=http://{your_ip_or_host}:8081   # 蚂蚁金融财报研报服务暂时不对外开放
      - REDIS_URL=redis://:Nopassredis^^NexP@{your_ip_or_host}   # redis服务的地址
      - FAISS_DB_PATH=/data/faiss_db          # 知识库向量存储路径
      - MOCK_SERVER=http://{your_ip_or_host}:5000       # mock服务地址,此处为chatbot-server服务
      - SECRET_KEY=8hW691DzKSHrEG222qYCv1m4rcHRQRbqr4KlaFkjZa0c1     # chatbot-server的jwt secret,pageplug、nebula-ai-flow集成需要
      - TIME_OUT=300
      - LOG_LEVEL=DEBUG
      - TEACH_DB=/data/teach_db      # 可教性存储路径
      - PAGEPLUG_SERVER=http://{your_ip_or_host}:30080     # pageplug服务地址
      - PAGEPLUG_CHATBOT_TOKEN_NAME=chatbot_token    # 访问pageplug token的key
      - CHATBOT_KEY=3kuuVcM0CUC1hpnq            # 第三方应用接入的key
      - ROBOT_HOST=http://{your_ip_or_host}:7777        # 集成第三方应用企业微信、钉钉机器人的服务,该服务只能部署到外网
      - CHATBOT_WEB_SERVER=http://{your_ip_or_host}:3000      # chatbot-web的服务地址
      - CHROMADB_PATH=/data/chromadb   # 训练数据存储目录
      - MAX_HISTORY=5  # 每次聊天时初始携带的最大上下文消息
      - FLOW_HOST=http://{your_ip_or_host}:7860    # 工作流服务的地址
      - ACCESS_TOKEN_EXPIRE_MINUTES=240    # 自定义token过期时间,单位分钟. 推荐120-240
      - COMPRESS_IMAGE_SIZE=40   # 上传的图片压缩后的大小配置,单位KB
      # 新增环境变量
      - RAG_DB=milvus  # 向量数据库配置,faiss或者milvus
      - MCP_GATEWAY_SERVER=http://mcp-gateway:8080
    ports:
      - 5000:5000
    volumes:
      - /home/chatbot/chatbot-agent/files:/data/uploads     # 文件上传存储路径卷
      - /home/chatbot/chatbot-agent/faiss_db:/data/faiss_db    # 向量数据库卷
      - /home/chatbot/chatbot-agent/teach_db:/data/teach_db    # 可教性数据卷
      - /home/chatbot/chatbot-agent/chromadb:/data/chromadb    # 训练数据挂卷目录

  chatbot-agent:
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/agent:v2.7.2
    container_name: chatbot-agent
    restart: always
    ports:
      - 8000:8000
    environment:
      FLASH_RERANK_MODEL_NAME: "ms-marco-MiniLM-L-12-v2"  # 系统内置重排序模型,请勿删除
      REDIS_URL: "redis://:Nopassredis^^NexP@{your_ip_or_host}"
      FILE_UPLOAD_ROOT: "/data/uploads"
      FAISS_DB_PATH: "/data/faiss_db"
      CHROMADB_PATH: "/data/chromadb"
      CHATBOT_SERVER: "http://{your_ip_or_host}:5000"
      LOG_LEVEL: "INFO"
      MAX_TOKEN: "18000"  # 模型的最大token数,建议配置为2/3
      TEACH_DB: "/data/teach_db"
      LLM_TIMEOUT: "600"
      # VIDEO_CHAT_SERVER: "http://{your_ip_or_host}:8090"  # video-chat视频处理服务地址, 该参数已废弃
      CHATBOT_KEY: "3kuuVcM0CUC1hpnq"   # 第三方访问chatbot-server的key
      CHATBOT_SERVER_OUT: "http://{your_ip_or_host}:5000"  # chatbot-server外部调用地址
      EMBEDDING_BATCH_SIZE: "25"  # 当次请求向量模型携带的文本块数量。公有云模型的大部分都会限制调用api携带的文本块数量
      MINILM_L12V2_PATH: "/app/sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2"
      DOC_HANDLER: "antiword"   # 处理doc word2003 文档的方式,此处无需变动
      FLOW_HOST: "http://{your_ip_or_host}:7860"   # 工作流服务的访问地址
      WEBSEARCH_HOST: "http://websearch.nbagent.ai"    # 此处参数填写固定值。如果私有化部署无法访问外网,联网搜索功能将无法使用。
      AUDIO_SEGMENT_DURATION: "30"     # 自定义音视频分段处理时长,以便模型能够正常处理。单位s
      VIDEO_SEGMENT_DURATION: "30"

      # 新增环境变量
      MILVUS_URI: http://{your_ip_or_host}:19530
      RAG_DB: milvus
      MCP_GATEWAY_SERVER: http://mcp-gateway:8080  # agent会调用mcpgateway启动的mcp服务,所以此处只能填写服务名称

    volumes:
      - /home/chatbot/chatbot-agent/files:/data/uploads   # 文件上传存储路径卷
      - /home/chatbot/chatbot-agent/faiss_db:/data/faiss_db   # 向量数据库卷
      - /home/chatbot/chatbot-agent/teach_db:/data/teach_db   # 可教性数据卷
      - /home/chatbot/chatbot-agent/chromadb:/data/chromadb   # 训练数据卷
      - /home/chatbot/chatbot-agent/nvidia:/usr/local/lib/python3.10/site-packages/nvidia   # 挂卷nvidia pip包

  chatbot-web:
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/chatbot-ui:v2.7.2
    container_name: chatbot-web
    ports:
      - 3000:3000
    restart: always
    environment:
      SERVER_URL: "http://{your_ip_or_host}:5000"  # chatbot-server的服务地址
      NEXT_PUBLIC_SERVER_URL: "http://{your_ip_or_host}:5000"  # mock服务地址,此处填写chatbot-server地址
      NEXT_PUBLIC_DOC_URL: "http://nbagent.ai/docs"   # 帮助文档地址
      NEXT_PUBLIC_APP_LOGO: "/api/get/image/YXBwLnBuZw=="
      NEXT_PUBLIC_PLUGIN_LOGO: "/api/get/image/cGx1Z2luLnBuZw=="
      ROBOT_AGENT_SERVER: "http://{your_ip_or_host}:5000"  # 企业微信和钉钉集成,注意该服务需要暴漏到外网才能使用企业微信
      NEXT_PUBLIC_GPUSTACK_URL: ""
      NEXT_PUBLIC_WORKFLOW_URL: "http://{your_ip_or_host}:7860"  # 工作流服务地址
      NEXT_PUBLIC_PAGEPLUG_URL: "http://{your_ip_or_host}:30080"   #  支持pageplug使用其他域名访问
      NEXT_PUBLIC_DEFAULT_LOCALE: "zh-CN"

  pageplug:
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/pageplug-ee:chatbot_202412251048
    container_name: pageplug
    ports:
      - "30080:80"
      - "32017:27017"
    volumes:
      - /home/chatbot/stacks:/appsmith-stacks
    restart: unless-stopped
    environment:
      - PAGEPLUG_CHATBOT_OFFICIAL_WORKSPACE_ID=66ebbd1858fb1943e10a665e
      - PAGEPLUG_CHATBOT_DEPLOY=true
      - PAGEPLUG_CHATBOT_DEFAULT_USER_PASSWORD=chatbotpwd  # 使用chatbot-server账号访问pageplug页面时的初始密码
      - PAGEPLUG_CHATBOT_BASE64_ENCODED_SECRET_KEY=OGhXNjkxRHpLU0hyRUcyMjJxWUN2MW00cmNIUlFSYnFyNEtsYUZralphMGMx   # chatbot-server的jwt base64字符串
      - PAGEPLUG_LICENSE_KEY=rgC+4eVz2xqWkVGXFA7jVYWmisE8CfgAgJzqfd+0E3yj5cZz6k7NT5Ii3fcwFgKl9ZFLAVPyGtObSxia3H9ArMpZwoCSW5/knsnqVWtQZbH8+oZsXrKPx1vEOI4qG8oWXc7c0GKSErQKh7mfQvrUCmtV0N3iFRe/kivjghE7LtqPsonmHLlRFuk0JUb6R2VtmZyXb6EF830ROLYOISK8mkBK3oUz6UpHvdDpCQarf8lXKdEEs2UPjwlmjoufP0cwKgHPzTo0TDrfeP7riiWKirW0we7B8/1/a34VBWAgvS+/1n7GhLKwmCpX5eQr7uRtda5Tz5KJ9CF4IT7WiszwfQ==

  redis:
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/redis:6.2
    container_name: redis
    ports:
      - 6379:6379
    restart: always
    privileged: true
    volumes:
      - /home/chatbot/redis/data:/data
    command:  redis-server  --appendonly yes --requirepass Nopassredis^^NexP    # redi设置强密码

  mysql:
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/mysql:8.0.42-v2.7.2
    container_name: mysql
    ports:
      - 3306:3306
    restart: always
    volumes:
      - /home/chatbot/mysql:/var/lib/mysql
      - /home/chatbot/mysql_conf/my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      MYSQL_ROOT_PASSWORD: "yourchatbotpassword"
      MYSQL_INITDB_CHARSET: "utf8mb4"
      MYSQL_INITDB_COLLATE: "utf8mb4_unicode_ci"
  nebula-ai-flow:
    container_name: nebula-ai-flow
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/nebulaai-flow:v1.3.2-20250702210612
    privileged: true
    ports:
      - "7860:7860"
    depends_on:
      - postgres
    environment:
      - LANGFLOW_DATABASE_URL=postgresql://nebulaai:Nebuxxl^T11@postgres:5432/nebulaai   # 连接postgres服务地址
      - LANGFLOW_AUTO_LOGIN=true
      - LANGFLOW_SECRET_KEY=iaTca1Z-j2laYLkfbGCyGjIVYlQusIqWrvvJgaNGJDE    # 工作流的秘钥
      - LANGFLOW_NEW_USER_IS_ACTIVE=True
      - LANGFLOW_NBAI_SECRET_KEY=8hW691DzKSHrEG222qYCv1m4rcHRQRbqr4KlaFkjZa0c1    # 工作流与chatbot-server集成的公用秘钥
      - LANGFLOW_WORKERS=3   # 工作流的工作进程数量
      - LANGFLOW_LOG_LEVEL=INFO
      - LANGFLOW_LOG_ENV=container_csv
    volumes:
      - /home/chatbot/langflow-data:/app/langflow  # 工作流的存储路径

  postgres:
    container_name: postgres
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/postgres:15.10-bullseye
    privileged: true
    environment:
      POSTGRES_USER: nebulaai
      POSTGRES_PASSWORD: Nebuxxl^T11
      POSTGRES_DB: nebulaai
    ports:
      - "15432:5432"
    volumes:
      - /home/chatbot/langflow-postgres:/var/lib/postgresql/data


  mcp-gateway:
    container_name: mcp-gateway
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/mcp-gateway:v1.0
    privileged: true
    ports:
      - "18080:8080"
      # - "51000-51200:51000-51200"  # Port range for gateway instances
    environment:
      - HOST=0.0.0.0
      - PORT=8080
      - DEBUG=false
      - LOG_LEVEL=INFO
      - GATEWAY_PORT_START=41000
      - GATEWAY_PORT_END=65000
      - COMMAND_TIMEOUT=30
      - CORS_ORIGINS=*
      - REDIS_URL=redis://:Nopassredis^^NexP@{your_ip_or_host}
      # npm以及uvx安装MCP服务时镜像加速地址
      - NPM_CONFIG_REGISTRY=https://registry.npmmirror.com
      - UV_DEFAULT_INDEX=https://mirrors.aliyun.com/pypi/simple
      #volumes:
      # - /var/run/docker.sock:/var/run/docker.sock  # If needed for container management
    restart: unless-stopped
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:8080/health" ]
      interval: 30s
      timeout: 10s
      retries: 3
      # start_period: 40s

  # milvus相关服务以及镜像地址
  etcd:
    container_name: milvus-etcd
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/etcd:v3.5.18
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
    command: etcd -advertise-client-urls=http://etcd:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
    healthcheck:
      test: [ "CMD", "etcdctl", "endpoint", "health" ]
      interval: 30s
      timeout: 20s
      retries: 3

  minio:
    container_name: milvus-minio
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/minio:RELEASE.2024-05-28T17-19-04Z
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    ports:
      - "9001:9001"
      - "9000:9000"
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
    command: minio server /minio_data --console-address ":9001"
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:9000/minio/health/live" ]
      interval: 30s
      timeout: 20s
      retries: 3

  standalone:
    container_name: milvus-standalone
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/milvus:v2.5.14
    command: [ "milvus", "run", "standalone" ]
    security_opt:
      - seccomp:unconfined
    environment:
      MINIO_REGION: us-east-1
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
    healthcheck:
      test: [ "CMD", "curl", "-f", "http://localhost:9091/healthz" ]
      interval: 30s
      # tart_period: 90s
      timeout: 20s
      retries: 3
    ports:
      - "19530:19530"
      - "9091:9091"
    depends_on:
      - "etcd"
      - "minio"
  nbai-graphrag:
    container_name: nbai-graphrag
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/nbai-graphrag:v2.7.2
    ports:
      - "${PORT:-9621}:9621"
    volumes:
      - /home/chatbot/graph/data/rag_storage:/app/data/rag_storage
      - /home/chatbot/graph/data/inputs:/app/data/inputs
      - /home/chatbot/graph/config.ini:/app/config.ini
      - /home/chatbot/graph/lightrag:/app/lightrag
      #- /home/chatbot/graph/.env:/app/.env
      #env_file:
      # - .env

    environment:
      - HOST=0.0.0.0
      - TIKTOKEN_CACHE_DIR=/app/data/tiktoken
      - OLLAMA_EMULATING_MODEL_TAG=latest
      - ENABLE_LLM_CACHE=true
      - RERANK_BINDING=aliyun  # 重排序模型类型
      - RERANK_BY_DEFAULT=True    # 使用默认使用重排序
      - RERANK_MODEL=gte-rerank-v2   # 重排序模型
      - RERANK_BINDING_HOST=https://dashscope.aliyuncs.com/api/v1/services/rerank/text-rerank/text-rerank   # 重排序地址
      - RERANK_BINDING_API_KEY=your-apikey  # 模型访问的apikey
      - ENABLE_LLM_CACHE_FOR_EXTRACT=true
      - SUMMARY_LANGUAGE=Chinese
      - MAX_ASYNC=4
      - MAX_PARALLEL_INSERT=2
      - EMBEDDING_FUNC_MAX_ASYNC=8
      - EMBEDDING_BATCH_NUM=10
      - LLM_MODEL=qwen3-max    # 大语言模型的名称
      - LLM_BINDING_HOST=https://dashscope.aliyuncs.com/compatible-mode/v1   # 大语言模型的访问地址
      - LLM_BINDING_API_KEY=your-apikey    # 大语言模型的apikey
      - LLM_BINDING=openai     # 大语言模型的访问方式
      - OPENAI_LLM_MAX_COMPLETION_TOKENS=9000
      - OLLAMA_LLM_NUM_CTX=32768
#      - EMBEDDING_BINDING=azure_openai
#      - AZURE_EMBEDDING_DEPLOYMENT=text-embedding-3-large
#      - AZURE_EMBEDDING_API_VERSION=2025-01-01-preview
#      - AZURE_EMBEDDING_ENDPOINT=https://yourendpoint.openai.azure.com
#      - AZURE_EMBEDDING_API_KEY=your-apikey

      - EMBEDDING_BINDING=openai  # 向量模型的类别
      - EMBEDDING_MODEL=text-embedding-3-large    # 向量模型的名称
      - EMBEDDING_DIM=3072
      - EMBEDDING_BINDING_HOST=https://api.openai.com/v1    # 向量模型的访问地址
      - EMBEDDING_BINDING_API_KEY=your_api_key   # 向量模型的apikey
      - OLLAMA_EMBEDDING_NUM_CTX=8192

      - LIGHTRAG_KV_STORAGE=RedisKVStorage   # 缓存使用存储方式
      - LIGHTRAG_VECTOR_STORAGE=MilvusVectorDBStorage   # 向量数据库使用存储方式
      - LIGHTRAG_GRAPH_STORAGE=MemgraphStorage    # 图数据库的使用方式
      # 下面是向量数据库的一些配置内容
      - MILVUS_URI=http://{your_ip_or_host}:19530
      - MILVUS_DB_NAME=graphrag
      # MILVUS_USER=root
      # MILVUS_PASSWORD=your_password
      # MILVUS_TOKEN=your_token
      # MILVUS_WORKSPACE=yourworkspace

      # 缓存的配置信息
      - REDIS_URI=redis://:Nopassredis^^NexP@{your_ip_or_host}:6379/2
      - REDIS_SOCKET_TIMEOUT=30
      - REDIS_CONNECT_TIMEOUT=10
      - REDIS_MAX_CONNECTIONS=50
      - REDIS_RETRY_ATTEMPTS=3

      # 图数据库的配置内容
      - MEMGRAPH_URI=bolt://{your_ip_or_host}:7687
      - MEMGRAPH_USERNAME=
      - MEMGRAPH_PASSWORD=
      - MEMGRAPH_DATABASE=memgraph

      - NBAI_SECRET_KEY=8hW691DzKSHrEG222qYCv1m4rcHRQRbqr4KlaFkjZa0c1

  memgraph:
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/memgraph-mage:3.7.2
    container_name: nbai-memgraph
    ports:
      - "7687:7687"
      - "7444:7444"
    command: [ "--log-level=TRACE" ]
    volumes:
      - memgraph_data:/var/lib/memgraph

volumes:
  memgraph_data:

3. 启动服务

注意事项

启动服务前,请确保所有变量 {your_ip_or_host} 替换成实际的 ip 或者域名。

在 docker-compose.yaml 文件所在目录,使用以下命令启动所有服务.

docker-compose up -d

此过程将会下载镜像并且初始化服务,预计需要10-20分钟,请耐心等待所有镜像下载和相关服务都启动完毕。如遇到镜像下载失败等原因,请检查下自己的网络以及尝试重新执行命令。

4. 访问服务

4.1 打开浏览器:首先,请确保您的计算机已经连接到互联网。

4.2 输入地址:在浏览器的地址栏中输入以下格式的网址来访问服务:

http://{ip 地址或者域名}:{chatbot-web 的监听端口}

例如,如果您的服务器IP地址是10.10.0.4,并且服务监听在端口3000上,那么您应该输入:

http://10.10.0.4:3000

4.3 登录:在服务页面上,您将看到一个登录界面。请使用以下默认账号和密码进行登录:

账号:chatbot
密码:yourchatbotpassword

请确保在输入 IP 地址、域名和端口时保持准确无误。登录成功后,如果是外网环境,请及时更换密码。 如果遇到无法访问的情况,请检查网络连接,并确认服务器是否已经启动且监听在正确的端口上。 如果问题依旧,请尝试重启服务或联系技术支持获取帮助。


5. 配置模型和相关初始数据

服务启动后,对话功能、知识库等功能暂时是不可使用的,需要配置模型和nvidia安装包才可以使用。

5.1 挂卷pip nvidia安装包

运行一下命令,下载和安装nvidia包。arm版本和amd的包有一点差异。请根据不同平台下载。

bash
docker exec chatbot-agent pip install -i https://mirrors.aliyun.com/pypi/simple nvidia-cublas-cu12==12.4.5.8 nvidia-cuda-cupti-cu12==12.4.127  nvidia-cuda-nvrtc-cu12==12.4.127 nvidia-cuda-runtime-cu12==12.4.127  nvidia-cudnn-cu12==9.1.0.70 nvidia-cufft-cu12==11.2.1.3 nvidia-curand-cu12==10.3.5.147 nvidia-cusolver-cu12==11.6.1.9 nvidia-cusparse-cu12==12.3.1.170 nvidia-nccl-cu12==2.21.5 nvidia-nvjitlink-cu12==12.4.127 nvidia-nvtx-cu12==12.4.127

由于该安装包较大,下载完之后进行挂卷。使用以下命令将容器的nvidia安装包copy到宿主机并进行挂卷。

bash
docker cp chatbot-agent:/usr/local/lib/python3.10/site-packages/nvidia  /home/chatbot/chatbot-agent/
vi docker-compose.yaml
# 检查挂卷信息是否正确,如果是下面信息,则无需修改直接重启chatbot-agent
volumes:
  - /home/chatbot/chatbot-agent/files:/data/uploads   # 文件上传存储路径卷
  - /home/chatbot/chatbot-agent/faiss_db:/data/faiss_db   # 向量数据库卷
  - /home/chatbot/chatbot-agent/teach_db:/data/teach_db   # 可教性数据卷
  - /home/chatbot/chatbot-agent/chromadb:/data/chromadb   # 训练数据卷
  - /home/chatbot/chatbot-agent/nvidia:/usr/local/lib/python3.10/site-packages/nvidia   # 挂卷nvidia pip包

重启chatbot-agent服务.docker-compose up -d chatbot-agent

5.2 配置语言模型和向量模型等

登录后,在模型管理页面,点击模型接入,例如选择大语言模型,接口类型选择Generic OpenAI,其中api访问地址以及API-key,不同平台的地址均不一样。更为详细的配置,请参考

【模型管理】 章节。

img

下面以线上阿里云百炼官网、Deepseek官网以及Ollama本地部署的模型进行配置讲解:

  • 阿里云百炼官网:https://bailian.console.aliyun.com/?spm=5176.29619931.J__Z58Z6CX7MY__Ll8p1ZOR.1.ad2a521cA8LYfi#/model-market

    img

    右上角是申请的API-key。点击进入创建自己的apikey, 选择任何一个模型,点击api调用示例:

    img

    如下图所示:找到模型名称,以及openai的调用示例中复制其调用地址。全部复制,包括域名和/v1. 将模型名称、apikey和调用地址填入即可。

    img

  • Deepseek配置。访问官方文档:https://api-docs.deepseek.com/zh-cn/

    依次点击快速开始-->首次调用API,如下图所示:申请apikey、查看openai的调用地址以及模型名称。

    img

  • ollama的配置。

    模型名称:可通过ollama list命令查看,docker部署的可以通过 sudo docker exec ollama ollama list 如下图所示:

    img

    • 大语言模型:

      img

      api key如果没有配置则填写任意值。

      调用地址:填写http://ollmahost:port/v1, 例如ollama所在的ip为10.10.10.6,端口为11434,则调用地址填写:http://10.10.10.6:11434/v1

    • Embedding (向量)模型:

      img

      api key如果没有配置则填写任意值。

      调用地址:填写http://ollmahost:port, 例如ollama所在的ip为10.10.10.6,端口为11434,则调用地址填写:http://10.10.10.6:11434. 注意大语言模型需要带上/v1,但是Embedding 模型不要带

5.3 配置可使用的图谱知识库【Beta版本】

正常运行后,在添加知识库类型时,选择图谱类型是无法添加成功的。还需要进行代理访问,才能够使用。

  • 安装nginx

    bash
    sudo apt install nginx
  • 配置代理

    1. nginx.conf文件需配置支持ws协议. 默认路径:/etc/nginx/nginx.conf
    nginx
    user www-data;
    worker_processes auto;
    pid /run/nginx.pid;
    error_log /var/log/nginx/error.log;
    include /etc/nginx/modules-enabled/*.conf;
    
    events {
            worker_connections 768;
            # multi_accept on;
    }
    
    http {
        include       mime.types;
        include /etc/nginx/conf.d/*.conf;
        map $http_upgrade $connection_upgrade {
        default upgrade;
        ''      close;
        }
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
        access_log  /var/log/nginx/access.log  main;
        sendfile        on;
        #tcp_nopush     on;
        keepalive_timeout  65;
        send_timeout 60;
        tcp_nodelay on;
        proxy_read_timeout 600;
        proxy_connect_timeout 60;
        proxy_send_timeout 100;
        client_max_body_size 300M;
        gzip  on;
        gzip_min_length 1k;
        gzip_buffers 4 16k;
        gzip_comp_level 3;
        gzip_types text/plain text/css application/xml application/javascript application/x-javascript text/javascript;   
        default_type application/octet-stream;
        access_log /var/log/nginx/access.log;
        include /etc/nginx/sites-enabled/*;
    }
    1. 如果/etc/nginx/conf.d不存在,使用命令:sudo mkdir -p /etc/nginx/conf.d 如果default.conf文件不存在,则创建default.conf文件, sudo touch /etc/nginx/conf.d/default.conf。假设您的ip为10.10.13.57(请替换成您自己的ip),default.conf配置如下:
    nginx
    server {
      listen       80;
      server_name  localhost 127.0.0.1 10.10.13.57;
    
      #access_log  /var/log/nginx/host.access.log  main;
      location /api/chat/ws/debug/ {
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://10.10.13.57:5000/api/chat/ws/debug/;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection $connection_upgrade;
      }
    
    
      location /api/chat/ws/ {
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_pass http://10.10.13.57:5000/api/chat/ws/;
    
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection $connection_upgrade;
      }
    
      location /graph/ {
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_cookie_path / /;
          proxy_pass http://10.10.13.57:9621/;
      }
      
      location /api/ {
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_cookie_path / /;
          proxy_pass http://10.10.13.57:5000/api/;
      }
      
      
      location / {
          #root   /usr/share/nginx/html;
          #index  index.html index.htm;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
          proxy_set_header X-Forwarded-Host $host;
          proxy_cookie_path / /;
          proxy_pass http://10.10.13.57:3000/;
      }
      
    
      error_page  404              index.html;
    
      # redirect server error pages to the static page /50x.html
      #
      error_page   500 502 503 504  /50x.html;
      location = /50x.html {
          root   /usr/share/nginx/html;
      }
    
    }

    配置完成后,重新加载nginx配置:sudo nginx -s reload即可通过80端口进行访问,同时也可以使用图谱知识库。例如通过http://10.10.13.57访问

    最后,如需使用语音相关内容,请点击如何配置语音

6. 服务配置详解

已正常配置语言模型和向量模型后,则可正常使用系统的绝大部分功能。如果不想深入了解系统的其它配置项,该部分功能无需了解。如需深入了解各个服务的配置项,请阅读下面各个服务的配置说明:

6.1 chatbot-server 服务各个环境变量解释.

其中 chatbot-server 服务和 chatbot-agent 服务共用数据卷。

yaml
DATABASE_URI: mysql 配置地址
AGENT_BASE_URL: chatbot-agent 的服务地址
AGENT_WS_PATH: chatbota-agent 服务的 ws 访问地址
UPLOAD_FOLDER: 文件上传后的存储路径,需要与数据卷的配置一致
REDIS_URL: redis 服务的地址
FAISS_DB_PATH: 知识库向量存储路径
MOCK_SERVE: mock 服务地址,此处为 chatbot-server 服务
SECRET_KEY: chatbot-server 的 jwt secret,pageplug 集成需要
TIME_OUT: 300
LOG_LEVEL: 日志级别
TEACH_DB: 可教性存储路径
PAGEPLUG_SERVER: pageplug 服务地址
PAGEPLUG_CHATBOT_TOKEN_NAME: 访问 pageplug token 的 key
CHATBOT_KEY: 第三方应用接入的  key,例如 robotagnt、video-chat 接入需要
ROBOT_HOST:  集成第三方应用企业微信、钉钉机器人的服务
CHATBOT_WEB_SERVER:     chatbot-web的服务地址
CHROMADB_PATH:  训练数据存储目录
MAX_HISTORY:10  聊天时初始化的最大上下文消息
FLOW_HOST: "http://10.10.11.120:7860"  # 工作流服务地址
ACCESS_TOKEN_EXPIRE_MINUTES: 120   # token过期时间,单位分钟
COMPRESS_IMAGE_SIZE: 40   # 上传的图片压缩后的大小配置,单位KB

数据卷配置需要与chatbot-agent的配置一致

yaml
- /home/chatbot/chatbot-agent/files:/data/uploads     # 文件上传存储路径卷
- /home/chatbot/chatbot-agent/faiss_db:/data/faiss_db    # 向量数据库卷
- /home/chatbot/chatbot-agent/teach_db:/data/teach_db    # 可教性数据卷
- /home/chatbot/chatbot-agent/chromadb:/data/chromadb    # 训练数据挂卷目录

6.2 chatbot-agent 服务各个环境变量解释。

全部环境变量配置以及解释如下:

yaml
FLASH_RERANK_MODEL_NAME: "ms-marco-MiniLM-L-12-v2"  # 系统内置重排序模型,请勿删除
REDIS_URL: "redis://:redis@{your_ip_or_host}"  # redis配置
FILE_UPLOAD_ROOT: "/data/uploads"   #文件上传路径
FAISS_DB_PATH: "/data/faiss_db"  # 向量数据库路径
CHROMADB_PATH: "/data/chromadb"   # 训练数据路径
CHATBOT_SERVER: "http://{your_ip_or_host}:5000"   # chatbot-server服务地址
LOG_LEVEL: "INFO"   # 日志级别
MAX_TOKEN: "18000"  # 模型的最大token数,建议配置为2/3
TEACH_DB: "/data/teach_db"   # 可教性存储路径
LLM_TIMEOUT: "600"  # 模型超时时间
VIDEO_CHAT_SERVER: "{your_ip_or_host}:8090"  # video-chat视频处理服务地址
CHATBOT_KEY: "3kuuVcM0CUC1hpnq"   # 第三方访问chatbot-server的key
CHATBOT_SERVER_OUT: "http://{your_ip_or_host}:5000"  # chatbot-server外部调用地址
EMBEDDING_BATCH_SIZE: "25"  # 当次请求向量模型携带的文本块数量。公有云模型的大部分都会限制调用api携带的文本块数量
DOC_HANDLER: "antiword"    # word 2003 文档处理工具
FLOW_HOST: "http://10.10.13.166:7860"    # 工作流服务地址
WEBSEARCH_HOST: "http://websearch.nbagent.ai"    # 此处参数填写固定值。如果私有化部署无法访问外网,联网搜索功能将无法使用。
AUDIO_SEGMENT_DURATION: "30"   # 自定义音视频分段处理时长,以便模型能够正常处理。单位s
VIDEO_SEGMENT_DURATION: "30"

数据卷配置:

yaml
- /var/lib/chatbot/chatbot-agent/files:/data/uploads   # 文件上传存储路径卷
- /var/lib/chatbot/chatbot-agent/faiss_db:/data/faiss_db   # 向量数据库卷
- /var/lib/chatbot/chatbot-agent/teach_db:/data/teach_db   # 可教性数据卷
- /var/lib/chatbot/chatbot-agent/chromadb:/data/chromadb   # 训练数据卷用来微调agent
- /home/chatbot/chatbot-agent/nvidia:/usr/local/lib/python3.10/site-packages/nvidia   # 挂卷nvidia pip包

6.3 chatbot-web 服务各个环境变量解释

环境变量如下所示:

yaml
SERVER_URL: "http://{your_ip_or_host}:5000"  # chatbot-server 的服务地址
NEXT_PUBLIC_SERVER_URL: "http://{your_ip_or_host}:5000"  # mock服务地址,此处填写chatbot-server地址
NEXT_PUBLIC_DOC_URL: "http://nbagent.ai/docs"   # 帮助文档地址
NEXT_PUBLIC_APP_LOGO: "/api/get/image/YXBwLnBuZw=="
NEXT_PUBLIC_PLUGIN_LOGO: "/api/get/image/cGx1Z2luLnBuZw=="
ROBOT_AGENT_SERVER: "http://{your_ip_or_host}:7777"  # 集成第三方应用企业微信、钉钉机器人的服务,该服务只能部署到外网
NEXT_PUBLIC_PAGEPLUG_URL: "http://10.10.11.120:30080"  # pageplug服务的地址

6.4 Pageplug

Pageplug 是一款低代码平台。他极大的增强了 NebulaAI 的多模态应用。通过 Pageplug 仅需简单配置,就可以实现几十种图表渲染,例如列表、表格、饼图、柱状图、折线图、水波图、轮播图等等。

以下是 pageplug 的各个环境变量说明:

yaml
- PAGEPLUG_CHATBOT_OFFICIAL_WORKSPACE_ID=66ebbd1858fb1943e10a665e  # 官方卡片 id
- PAGEPLUG_CHATBOT_DEPLOY=true
- PAGEPLUG_CHATBOT_DEFAULT_USER_PASSWORD=chatbotpwd  # 使用 chatbot-server 账号访问 Pageplug 页面时的初始密码
- PAGEPLUG_CHATBOT_BASE64_ENCODED_SECRET_KEY:xxxxx   # chatbot-server的 jwt base64 字符串
- PAGEPLUG_LICENSE_KEY: # pageplug license

6.5 Redis

redis服务配置相关存储卷以及访问秘钥信息,具体信息如下:

yaml
  redis:
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/redis:6.2
    container_name: redis
    ports:
      - 6379:6379
    restart: always
    privileged: true
    volumes:
      - /home/chatbot/redis/data:/data
    command:  redis-server  --appendonly yes --requirepass NubelaAi^TesT

6.6 Mysql

Mysql服务配置相关存储卷以及访问秘钥信息,如需挂载mysql的配置文件,需要先创建mysql配置文件信息,具体操作步骤如下:

bash
mkdir -p /home/chatbot/mysql_conf
cd /home/chatbot/mysql_conf 
touch mysql.cnf

mysql.cnf内容如下:

text
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci

[client]
default-character-set = utf8mb4

[mysql]
default-character-set = utf8mb4

最后给这个文件赋予响应的权限:chmod 644 mysql.cnf

具体配置信息如下:

yaml
  mysql:
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/mysql:8.0.42-v2.7.2
    container_name: mysql
    ports:
      - 3306:3306
    restart: always
    volumes:
      - /home/chatbot/mysql:/var/lib/mysql
      - /home/chatbot/mysql_conf/mysql.cnf:/etc/mysql/conf.d/mysql.cnf
    environment:
      MYSQL_ROOT_PASSWORD: "NubelaAi^TesT"  # 可以自定义强密码
      MYSQL_INITDB_CHARSET: "utf8mb4"
      MYSQL_INITDB_COLLATE: "utf8mb4_unicode_ci"

6.7 nebula-ai-flow

nebula-ai-flow【工作流服务】和其访问的数据库配置具体信息如下: 其中挂卷目录要给予相应的777权限。创建目录并给予相应权限:

sh
mkdir -p /home/chatbot/langflow-data
mkdir -p /home/chatbot/chatbot-agent/files/upload
chmod -R 777  /home/chatbot/langflow-data
chmod -R 777  /home/chatbot/chatbot-agent/files/upload

具体的yaml配置信息如下:

yaml
  nebula-ai-flow:
    container_name: nebula-ai-flow
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/nebulaai-flow:v1.3.2-20250526192805
    privileged: true
    ports:
      - "7860:7860"
    depends_on:
      - postgres
    environment:
      - LANGFLOW_DATABASE_URL=postgresql://nebulaai:NebulaAi^T11@postgres:5432/nebulaai
      # 访问postgresql的地址
      - LANGFLOW_AUTO_LOGIN=true
      - LANGFLOW_SECRET_KEY  # 秘钥
      - LANGFLOW_NEW_USER_IS_ACTIVE=True
      - LANGFLOW_NBAI_SECRET_KEY   # 与chatbot-server集成,该值与chatbot-server的SECRET_KEY需要配置同一个值
      - LANGFLOW_WORKERS=3
      - LANGFLOW_LOG_LEVEL=INFO
      - LANGFLOW_LOG_ENV=container_csv
    volumes:
      - /home/chatbot/langflow-data:/app/data
      - /home/chatbot/chatbot-agent/files/upload:/app/data/.cache/langflow/upload

  postgres:
    container_name: postgres
    image: registry.cn-shenzhen.aliyuncs.com/nb-agent/postgres:15.10-bullseye
    privileged: true
    environment:
      POSTGRES_USER: nebulaai   # 用户
      POSTGRES_PASSWORD: NebulaAi^T11    # 密码
      POSTGRES_DB: nebulaai    # 数据库
    ports:
      - "15432:5432"
    volumes:
      - /home/chatbot/flow-postgres:/var/lib/postgresql/data

卸载和清理

卸载和清理主要分为三个步骤: 1.停止服务; 2.清理挂卷信息; 3.删除 docker 镜像;

  • 停止服务:执行命令docker-compose down
  • 清理挂卷信息:执行命令 rm -rf /home/chatbot. 如果该路径发生变更,则清理变更后的挂卷路径
  • 清理镜像:清理镜像前,确保本台机器没有其他额外的镜像,则使用docker image prune -a -f 进行清理。 如果有其他镜像,则需要执行docker rmi {chatbot-image}进行删除。 chatbot-image 指 docker-compose.yaml 中的相关镜像。