AIStudio SSH 公钥管理,一处配置,处处可用AIStudio SSH 公钥管理,一处配置,处处可用 ,只为更佳开发体验如何配置
Skip to content
回到全部文章

在智算云平台上部署 Dify

Dify 是一个开源项目,旨在提供可视化编排生成式 AI 应用的专业工作站。该项目的 Github 仓库地址为:https://github.com/langgenius/dify,截止本教程最新版 tag 为 1.1.3。

NOTE

如果只需要了解在 Dify 中如何配置 GenStudio API,请移步文末 使用 Dify 集成 GenStudio API

方案概述

我们将使用智算云平台「开发机」功能来部署 Dify。

  • 使用 Dify 官方文档基于 Docker Compose 的部署方案: Docker Compose 部署
  • 使用 AIStudio 开发机的 Docker 容器功能。该功能允许用户在开发机内(主容器)运行其他容器,并创建挂载 GPU 的容器,测试容器化应用,从而提供更高的灵活性和隔离性:Docker 容器
  • 使用 AIStudio 开发机的 Web 应用预览功能。该功能允许用户提供一个开发机内部 Web UI 服务端口,由平台监听并生成访问链接: Web 应用预览

本方案仅用于在智算云平台 AIStudio 开发机上测试、体验 Dify 平台,非生产级别服务部署方案。

实施障碍

在智算云平台的开发机中安装 Dify 时,如果根据 Dify 官方文档进行操作,可能会遇到一些障碍:

环境准备

创建一台开发机,要求如下:

  • 推荐使用 Ubuntu 22.04 操作系统镜像
  • Dify 不使用 GPU,CPU/内存基本要求为 2c4g。开发机算力规格主要由您的本地模型推理需求决定,如简单测试,选择单卡 GPU 即可。
  • 请确保为开发机开启 Docker 容器功能,请在创建开发机时启用「Docker 容器」开关。
  • 请确保为开发机填写 Web 应用预览端口,用于后续方案 Dify 控制台。本教程假设端口号为 9999。

TIP

开发机系统盘大小为 50GiB,存储容量有限。如果需要使用 Ollama 等框架进行本地推理,建议为开发机提供更大的持久化存储,例如云盘共享高性能存储

安装 Docker Compose

验证 Docker Compose 是否已安装。

shell
docker compose version

如已安装,将正常输出版本号。如未安装 Docker Compose,请移步自行安装 Docker Compose

拉取 Dify 项目代码

拉取 Dify GitHub 代码仓库。以下示例中已添加第三方加速服务前缀。

bash
cd /root
# 拉取 Dify 代码仓库
git clone https://ghfast.top/https://github.com/langgenius/dify.git --branch 1.1.3

如遇到问题,可尝试替换为其他加速服务。详见第三方学术加速服务指南

处理 Docker 镜像问题

Dify 原始 Docker Compose 文件中定义了多个服务,使用了 Docker Hub 镜像。由于运营商网络原因,直接拉取 Docker Hub 镜像时会下载失败。

WARNING

以下方案均需要您自行寻找代理工具,或第三方 Docker 镜像加速服务。智算云平台不提供此类服务。请务必解决镜像问题,否则无法继续执行后续步骤。

方案一 使用 Docker 服务代理工具

在有自备代理工具的情况下,该方案较为简便。本教程中采用方案一。

  1. 以 Clash 类工具为例,从第三方获取相关服务凭证后,可在 AIStudio 开发机中安装客户端。详见 第三方学术加速服务或代理工具

  2. 在开发机中启动您的代理服务,假设您的本地 HTTP 代理服务运行在 127.0.0.1,端口为 7890。

  3. 为开发机 Docker 服务配置代理。

    shell
    # 创建目录
    mkdir -p /etc/docker
    # 创建 Docker 服务配置文件
    touch /etc/docker/daemon.json

    /etc/docker/daemon.json 写入如下内容:

    json
    {
        "proxies": {
        "http-proxy": "http://127.0.0.1:7890",
        "https-proxy": "http://127.0.0.1:7890",
        "no-proxy": "*.test.example.com,.example.org,127.0.0.0/8"
        },
        "registry-mirrors": ["https://<my-docker-mirror-host>"]
    }
  4. 使用 Dockerctl 重启 Docker 服务。

    shell
    dockerctl restart

方案二 提前拉取 Docker 镜像

您也可以提前手动拉取 Docker Compose 服务镜像,保存到租户私有仓库

  • 使用第三方镜像加速服务,拉取 amd64 架构的镜像到本地,推送到租户镜像仓库。请参考迁移外部镜像
  • 或直接在 Compose 文件使用第三方镜像加速服务,例如直接在 Compose 文件中采用增加前缀的方式拉取镜像。

修改环境变量

进入 Dify 源代码的 Docker 目录。

shell
cd dify/docker

复制环境配置文件。

shell
cp .env.example .env

需要修改 Dify 项目中 NGINX 配置,默认为 80,请修改 EXPOSE_NGINX_PORT 为开发机的 Web 应用预览端口(本教程中该端口号为 9999)。

yaml
# ------------------------------
# Docker Compose Service Expose Host Port Configurations
# ------------------------------
EXPOSE_NGINX_PORT=9999
EXPOSE_NGINX_SSL_PORT=44443

启动 Dify 服务

shell
docker compose up -d

启动完成后,可通过 docker ps 检查服务健康状态。输出示例:

shell
root@is-dazzy7xv2ymalks7-devmachine-0:~/dify/docker# docker ps
CONTAINER ID   IMAGE                                       COMMAND                  CREATED         STATUS                   PORTS                                                                              NAMES
7c123a7bedcd   nginx:latest                                "sh -c 'cp /docker-e…"   2 minutes ago   Up 2 minutes             0.0.0.0:9999->80/tcp, :::9999->80/tcp, 0.0.0.0:44443->443/tcp, :::44443->443/tcp   docker-nginx-1
69b1d31195b2   langgenius/dify-api:1.1.3                   "/bin/bash /entrypoi…"   2 minutes ago   Up 2 minutes             5001/tcp                                                                           docker-worker-1
2dc5392950b3   langgenius/dify-api:1.1.3                   "/bin/bash /entrypoi…"   2 minutes ago   Up 2 minutes             5001/tcp                                                                           docker-api-1
dca4f37622bc   langgenius/dify-plugin-daemon:0.0.6-local   "/bin/bash -c /app/e…"   2 minutes ago   Up 2 minutes             0.0.0.0:5003->5003/tcp, :::5003->5003/tcp                                          docker-plugin_daemon-1
0d0f4cb537c3   langgenius/dify-web:1.1.3                   "/bin/sh ./entrypoin…"   5 hours ago     Up 2 minutes             3000/tcp                                                                           docker-web-1
49c6fc2ef344   langgenius/dify-sandbox:0.2.11              "/main"                  5 hours ago     Up 2 minutes (healthy)                                                                                      docker-sandbox-1
f59502e8a3a2   postgres:15-alpine                          "docker-entrypoint.s…"   5 hours ago     Up 2 minutes (healthy)   5432/tcp                                                                           docker-db-1
5aa727dec5d1   ubuntu/squid:latest                         "sh -c 'cp /docker-e…"   5 hours ago     Up 2 minutes             3128/tcp                                                                           docker-ssrf_proxy-1
e76499e67c2c   redis:6-alpine                              "docker-entrypoint.s…"   5 hours ago     Up 2 minutes (healthy)   6379/tcp                                                                           docker-redis-1
ae9da2cc6734   semitechnologies/weaviate:1.19.0            "/bin/weaviate --hos…"   5 hours ago     Up 2 minutes                                                                                                docker-weaviate-1

访问 Dify 控制面板

前往开发机详情页,点击 Web 应用预览,点击弹窗中的跳转链接。

IMPORTANT

Web 应用预览链接仅在登录智算云平台账号后可用,因此不适用于对外发布应用服务。

使用 Dify 集成 GenStudio API

GenStudio 提供大语言模型、视觉模型、嵌入模型、重排序等多种预置模型 API 服务,欢迎使用。

获取 GenStudio API Key

您可以复制已有 API Key 或创建新的 Key。

预置模型 API 服务有 API 频率限制。企业级用户如使用预置模型,可联系无问芯穹调整限额。

配置 GenStudio API 服务

  1. 在 Dify 控制台,点击右上角头像,点击设置

  2. 在左侧点击模型提供商,找到无问芯穹

    alt text

  3. 等待插件安装完成后,为插件配置 GenStudio API Key。

  4. 在 Dify 系统模型设置中配置 GenStudio 提供的模型。

    alt text

参考资源

  • 接入 GenStudio LLM API
  • 科学安装 Ollama: 如果需要在同一台开发机上安装和访问 Ollama,请注意通过 OLLAMA_HOST 环境变量将 Ollama 服务绑定至 0.0.0.0。请注意通过 OLLAMA_ORIGINS 环境变量允许跨域访问。