香港服务器部署Dify:可视化AI工作流编排平台 + 接入Ollama本地模型完整教程

香港服务器部署Dify:可视化AI工作流编排平台 + 接入Ollama本地模型完整教程

搭建 AI 应用不再需要写大量代码——Dify 是目前最受欢迎的开源 AI 应用开发平台,通过可视化工作流编排,将 LLM、知识库、工具调用组合成完整的 AI 应用。在香港服务器上自托管 Dify,可以同时接入 Ollama 本地模型(无 API 费用)和 Claude/GPT-4(在线模型),打造完全私有的企业 AI 平台。


一、Dify 核心功能

  • Chat 应用:多轮对话,支持知识库检索增强
  • 工作流(Workflow):可视化节点编排,LLM + 条件判断 + HTTP 调用 + 代码执行
  • RAG 知识库:上传 PDF/Word/网页,自动向量化,问答时检索相关段落
  • Agent:工具调用(搜索、计算器、代码执行),自主完成复杂任务
  • API 发布:一键将应用发布为 REST API,集成到现有系统
  • 多模型支持:Ollama、OpenAI、Anthropic、Google、Azure 等 20+ 模型提供商

二、服务器要求

规模配置说明
个人/小团队(仅在线模型)2核4G不跑本地 LLM
中等规模(本地模型 7B)8核16GDify + Ollama 共用
企业(本地模型 14B+)GPU 服务器GPU 跑 Ollama,CPU 跑 Dify

三、Docker Compose 部署 Dify

<code"># 克隆官方仓库
git clone https://github.com/langgenius/dify.git
cd dify/docker

# 复制环境变量模板
cp .env.example .env

# 编辑关键配置
cat > .env << 'EOF'
# 必须修改的配置
SECRET_KEY=sk-$(openssl rand -hex 32)    # 生成随机密钥

# 数据库(使用内置 PostgreSQL 即可)
DB_USERNAME=postgres
DB_PASSWORD=dify_db_pass_2026
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify

# Redis
REDIS_HOST=redis
REDIS_PORT=6379

# 存储(本地文件系统,也可以换成 S3/R2)
STORAGE_TYPE=local

# 向量数据库(Weaviate 内置,也可以换成 Qdrant/Milvus)
VECTOR_STORE=weaviate

# 访问域名
CONSOLE_API_URL=https://dify.yourdomain.com
CONSOLE_WEB_URL=https://dify.yourdomain.com
SERVICE_API_URL=https://dify.yourdomain.com
APP_WEB_URL=https://dify.yourdomain.com

# Nginx 监听
EXPOSE_NGINX_PORT=80
EXPOSE_NGINX_SSL_PORT=443
EOF

# 启动所有服务
docker compose up -d

# 查看启动状态(约需 2~3 分钟完成初始化)
docker compose ps
docker compose logs -f api | grep -E "running|error"

四、Nginx 反向代理(外部 HTTPS 访问)

<code"># Dify 自带 Nginx,但建议用外部 Nginx 统一管理 SSL

# 修改 dify/docker/docker-compose.yaml 中的 nginx 服务,
# 改为只监听内网端口:
# ports:
#   - "127.0.0.1:8080:80"

# /etc/nginx/sites-available/dify.yourdomain.com
server {
    listen 443 ssl http2;
    server_name dify.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/dify.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/dify.yourdomain.com/privkey.pem;

    client_max_body_size 100M;    # 允许上传大文档
    proxy_read_timeout 300s;      # AI 处理可能需要较长时间

    location / {
        proxy_pass http://127.0.0.1:8080;
        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_set_header X-Forwarded-Proto $scheme;
        # SSE(流式输出)
        proxy_buffering off;
        proxy_cache off;
        proxy_http_version 1.1;
    }
}

五、接入 Ollama 本地模型

<code"># 前提:同一台服务器已安装 Ollama(参考第六阶段文章01)
# 并已下载模型:ollama pull qwen2.5:7b

# 在 Dify 管理后台配置 Ollama:
# 设置 → 模型供应商 → 添加模型供应商 → Ollama
#
# 配置项:
# - 模型名称:qwen2.5:7b
# - 基础 URL:http://host.docker.internal:11434
#   (如果 Dify 在 Docker 中,Ollama 在宿主机,使用 host.docker.internal)
#   (如果 Ollama 也在 Docker 同一网络,使用 ollama:11434)
# - 上下文长度:32768(Qwen2.5 支持 32K)
# - 最大 tokens:4096

# Docker Compose 中让 Dify 能访问宿主机 Ollama:
# 在 docker-compose.yaml 中为 api 和 worker 服务添加:
# extra_hosts:
#   - "host.docker.internal:host-gateway"

六、构建 RAG 知识库问答应用

<code">
操作路径:知识库 → 创建知识库 → 上传文档

支持的文档格式:
PDF / Word (.docx) / Markdown / TXT / Excel / CSV
HTML(网页内容)/ Notion 导出 / 语雀导出

分块策略选择:
- 自动分块:适合大多数场景
- 自定义分块:按标题/段落,适合结构化文档
- 父子分块:小段检索 + 大段上下文,答案质量最高

向量化模型选择:
- 使用 Ollama:nomic-embed-text(免费,需提前下载)
- 使用 OpenAI:text-embedding-3-small($0.02/1M tokens)

创建应用:
知识库 → 新建应用 → Chat 应用 → 添加知识库
配置系统提示词:
"你是公司的智能助手,只根据提供的知识库内容回答问题。
如果知识库中没有相关信息,请如实说明,不要编造。"

七、构建 AI 工作流(客服自动回复示例)

<code">
工作流节点编排(可视化拖拽):

[开始] → 接收用户问题
    │
    ▼
[知识库检索] → 从FAQ知识库检索相关内容
    │
    ▼
[条件判断] → 检索相关度是否 > 0.7?
    │
   是↓                    否↓
[LLM节点]           [LLM节点]
根据检索内容生成答案    告知用户转人工客服
    │                    │
    └──────────┬──────────┘
               ▼
           [回复用户]
               │
               ▼
        [HTTP请求节点]
    将对话记录写入 CRM 系统

八、发布为 API 并集成到业务系统

<code">import requests

# Dify 应用 API Key(在应用 → API → 创建 API 密钥)
API_KEY = "app-xxxxxxxxxxxxxxxx"
DIFY_API = "https://dify.yourdomain.com/v1"

def ask_knowledge_base(question: str, user_id: str = "user-001") -> str:
    """调用 Dify 知识库问答 API"""
    response = requests.post(
        f"{DIFY_API}/chat-messages",
        headers={
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/json"
        },
        json={
            "inputs": {},
            "query": question,
            "response_mode": "blocking",    # 等待完整回复
            "user": user_id,
            "conversation_id": ""           # 空=新会话,填ID=继续对话
        },
        timeout=60
    )
    result = response.json()
    return result.get("answer", "抱歉,暂时无法回答。")

# 流式输出(打字机效果)
def ask_streaming(question: str):
    response = requests.post(
        f"{DIFY_API}/chat-messages",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={"query": question, "response_mode": "streaming", "user": "u1"},
        stream=True
    )
    for line in response.iter_lines():
        if line and line.startswith(b"data: "):
            import json
            data = json.loads(line[6:])
            if data.get("event") == "message":
                print(data.get("answer", ""), end="", flush=True)

九、多租户应用(团队成员管理)

<code">
Dify 支持多成员协作:

工作区 → 成员 → 邀请成员

权限角色:
- Owner:完全控制
- Admin:管理应用和知识库
- Editor:创建和编辑应用
- Viewer:只能使用应用

邀请方式:
1. 发送邮件邀请(需配置 SMTP)
2. 生成邀请链接(有效期24小时)

多工作区:
- 不同业务线可以创建独立工作区
- 知识库和应用相互隔离

十、总结

Dify 将 AI 应用开发的门槛从「会写代码」降低到「会拖拽」,让产品经理、运营人员也能构建实用的 AI 工作流。在香港服务器自托管的核心优势:同时接入本地 Ollama 模型(零 API 费用)和在线模型(高质量)、数据不出境、团队无限用户无额外费用。对于已有香港服务器的团队,部署 Dify 几乎是零成本的 AI 能力升级。

Telegram