最新n1n v2.0.1 正式上线!企业级大模型接口聚合平台 (LLM API Gateway),为您接入 500+ AI Models,价格低至 1 折, 立即尝试

在 云服务器 上 部署 Dify:从 选型 到 Docker 容器化 部署 全指南

作者
  • avatar
    姓名
    Nino
    职业
    Senior Tech Editor

在企业级 AI 应用落地的过程中,仅仅在本地单机使用 Python 脚本调用 API 已无法满足生产环境的需求。随着 AI 编排技术的演进,开发者与企业架构师越来越关注数据隐私、架构自主可控度、低延迟响应以及可视化工作流。Dify 作为当前最受欢迎的开源大语言模型(LLM)应用开发平台之一,凭借其基于 MIT 协议的开放性、强大的 RAG(检索增强生成)引擎、 Agent 智能体编排与可视化工作流,迅速获得了全球开源社区的青睐。

尽管 Dify 官方提供了 SaaS 托管服务,但在自有 Virtual Private Cloud (VPC) 或云服务器上私有化部署 Dify 依然是企业和中高级开发者的首选方案。私有化部署不仅能保障核心敏感数据的安全合规,避免按 Token 被叠加中间商溢价,还能自由对接本地私有化模型或像 n1n.ai 这样支持多模型统一调度的聚合网关。本文将从云服务器选型、硬件配置评估、Docker Compose 一键部署、Nginx 反向代理配置、向量数据库性能调优到高可用 API 接入,全面讲解如何搭建一个稳定高效的 Dify 生产环境。


1. Dify 架构解析与云服务器硬件选型

在部署 Dify 之前,理解其内部微服务架构对于后期运维与性能调优至关重要。Dify 并非单个单体应用,而是一个高度解耦的微服务分布式架构:

  1. dify-web:基于 Next.js 开发的前端 Web 界面。
  2. dify-api:基于 Python (Flask/Gunicorn) 的后端主 API 服务,处理业务逻辑、用户鉴权与工作流调度。
  3. dify-worker:基于 Celery 的异步任务队列 worker,负责后台文档解析、分块(Chunking)、向量化(Embedding)处理等耗时任务。
  4. db (PostgreSQL):存储系统元数据、用户账号、工作流配置、对话历史及文档元信息。
  5. redis:用于高速缓存、分布式锁以及 Celery 消息队列。
  6. Vector DB (向量数据库):如 Weaviate、Qdrant、Milvus 或 pgvector,用于存储向量嵌入数据并提供毫秒级语义检索能力。
  7. sandbox:隔离的代码执行沙箱环境,用于安全地运行工作流节点中的自定义 Python / Node.js 代码。

由于向量数据库与 Celery worker 在处理大文件向量索引时会消耗较多系统资源,合理的服务器硬件配置是保障系统不发生 OOM(内存溢出)崩溃的前提。

硬件配置评估矩阵

部署等级处理器 (vCPU)内存 (RAM)存储空间 (SSD/NVMe)最大并发用户数主要适用场景
基础测试级2 核2 GB40 GB1 - 3 人功能评估、个人开发测试、轻量 API 工作流,不建议运行大文件 RAG
标准推荐级2 核4 GB60 GB5 - 20 人团队协同开发、中小规模 RAG 知识库构建、多 Agent 流程搭建
企业生产级4 核8 GB100 GB+ SSD50+ 人高并发生产环境、多租户工作区、大规模文档持续向量化处理
高性能集群级8 核+16 GB+200 GB+ NVMe200+ 人企业级海量知识库检索、复杂代码沙箱计算与多任务并发调度
本地推理混合级8 核 + GPU32 GB+500 GB+ NVMe团队共享需在服务器本地部署 Ollama / vLLM 运行开源模型的混合部署场景

运维提示:对于使用 2 核 2G(2C2G)入门级服务器的开发者,必须在系统层配置 2 GB 到 4 GB 的 Linux Swap 交换分区。否则 PostgreSQL 数据库初始化或 Weaviate 向量索引创建时极易被系统 Kernel 直接杀死。按需接入 n1n.ai 等高可用 API 聚合平台可有效减少本地模型部署带来的内存压力。


2. 云服务器环境准备与基础配置

推荐选择主流云厂商(如阿里云、腾讯云、AWS、Google Cloud 或 Hetzner)提供的 Ubuntu 22.04 LTS 或 Debian 12 64 位操作系统。

步骤 2.1:系统更新与工具链安装

首先通过 SSH 连接至云服务器,更新软件包列表并安装必要基础工具:

sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git ufw fail2ban htop

配置防火墙规则,开放标准服务端口:

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable

步骤 2.2:创建 Swap 虚拟内存(针对 2G/4G 内存服务器)

若服务器内存 < 4 GB,运行以下脚本创建 4 GB 交换分区:

sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

# 设置开机自动加载
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

使用 free -h 命令检查 Swap 空间是否生效。

步骤 2.3:安装最新版 Docker 与 Docker Compose Plugin

避免使用操作系统自带的过时软件包,使用 Docker 官方自动化脚本进行安装:

# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 安装官方 Docker 引擎
curl -fsSL https://get.docker.com | bash

# 启动 Docker 并设置开机自启
sudo systemctl enable docker
sudo systemctl start docker

# 验证 Docker Compose V2
docker compose version

3. Docker Compose 手动部署 Dify 完整步骤

Dify 官方团队推荐使用 Docker Compose 进行容器化部署,该方式便于后续维护、平滑升级及环境迁移。

步骤 3.1:克隆官方仓库

将 Dify 官方 Git 仓库克隆至服务器 /opt 目录:

cd /opt
sudo git clone https://github.com/langgenius/dify.git
cd dify/docker

步骤 3.2:配置环境变量文件 .env

从模板复制一份新的配置文件:

cp .env.example .env

使用 vim .envnano .env 打开并修改关键参数:

# 核心安全密钥(务必修改为 32 位以上的随机字符串)
SECRET_KEY=sk-your-ultra-secure-random-secret-key-2025

# 向量数据库选择:默认为 weaviate(可选 qdrant, milvus, pgvector)
VECTOR_STORE=weaviate

# 数据库密码设置(生产环境务必重置默认密码)
DB_USERNAME=postgres
DB_PASSWORD=YourStrongDBPassword2025!
DB_DATABASE=dify

# 是否开放公开注册功能(初始管理员注册完成后建议改为 false)
ALLOW_CREATE_ACCOUNT=true

# 默认 HTTP 服务端口
HTTP_PORT=80
HTTPS_PORT=443

步骤 3.3:启动容器集群

后台启动所有 Dify 微服务容器:

docker compose up -d

Docker 将自动拉取镜像并按顺序初始化 Redis、PostgreSQL、Weaviate 以及 Dify 后端容器。运行以下命令检查运行状态:

docker compose ps

确认所有容器(docker-web-1docker-api-1docker-worker-1 等)状态均为 Uprunning

# 如遇容器启动失败,可查看日志定位原因
docker compose logs -f api

4. 生产环境安全加固:Nginx 反向代理与 HTTPS 配置

直接将 Docker 的 80 端口暴露给公网缺乏 SSL 加密保护。推荐将 Dify 的 Docker HTTP 端口改为内部端口,使用宿主机的 Nginx 配合 Certbot 申请免费 Let's Encrypt 证书完成 HTTPS 卸载。

步骤 4.1:修改 Dify 内部端口

编辑 dify/docker/.env 文件,将 HTTP_PORT 端口更改为 8080:

HTTP_PORT=8080

应用端口变更:

docker compose down
docker compose up -d

步骤 4.2:安装配置 Nginx

在宿主机上安装 Nginx 和 Certbot:

sudo apt install -y nginx certbot python3-certbot-nginx

创建 Nginx 虚拟主机配置文件 /etc/nginx/sites-available/dify

server {
    listen 80;
    server_name dify.yourdomain.com; # 替换为你的真实域名

    client_max_body_size 100M; # 支持大文件上传以满足 RAG 知识库需求

    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;

        # WebSocket 支持(工作流实时输出流式响应)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 3600s;
        proxy_send_timeout 3600s;
    }
}

启用配置并重启 Nginx:

sudo ln -s /etc/nginx/sites-available/dify /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

步骤 4.3:申请并应用 TLS/SSL 证书

使用 Certbot 一键开启 HTTPS 加密:

sudo certbot --nginx -d dify.yourdomain.com

配置完成后,在浏览器中访问 https://dify.yourdomain.com/install 即可进入管理员初始账号注册页面。


5. 在 Dify 中接入高可用大模型 API

Dify 部署完成后,需要接入后台大模型(LLM)驱动 Agent 编排、流式对话与知识库问答。直接在各个模型官网分散管理 API Key 往往面临海外信用卡支付繁琐、并发限速(RPM/TPM)以及国内网络延迟高的问题。

通过接入 n1n.ai 统一模型网关,开发者可以在 Dify 中以一个 API 密钥无缝使用全球领先的商业与开源模型,包括 DeepSeek-V3Claude 3.5 SonnetOpenAI o3 以及 GPT-4o。网络层优化确保了毫秒级首包延迟(TTFT)与极高的可用性 SLA。

[ Dify 可视化编排引擎 ] 
           (OpenAI 标准兼容 REST API 格式)
   [ https://api.n1n.ai/v1 ] ──(智能路由分发)──► DeepSeek-V3 / Claude 3.5 / OpenAI o3

在 Dify 中配置 n1n.ai 聚合 API 的步骤:

  1. 登录 Dify 管理后台(https://dify.yourdomain.com)。
  2. 点击右上角头像,选择 设置 > 模型供应商
  3. 在列表中找到 OpenAI-API-Compatible(OpenAI API 兼容模式)或标准 OpenAI 节点。
  4. 填入从 n1n.ai 控制台获取的参数:
    • 模型类型:LLM / Text Embedding
    • 模型名称deepseek-chat(或 claude-3-5-sonneto3-minigpt-4o
    • API Base URLhttps://api.n1n.ai/v1
    • API Keysk-n1n-your-api-key
  5. 点击 保存。至此,Dify 中的所有 Workflow 节点、RAG 向量提取与智能 Agent 均已实现通过 n1n.ai 路由层的稳定加速。

6. 常见故障排查与运维指南

问题 1:服务器 80 或 443 端口被其他应用占用

若服务器上已有 Apache、Nginx 或 Caddy 运行,可按本文第 4 节所示,修改 dify/docker/.env 中的 HTTP_PORT 端口为 80808090,再使用主 Nginx 进行反向代理转发,切勿直接强行绑定公网端口导致冲突。

问题 2:向量数据库内存占用过高导致宿主机 OOM

Weaviate / Qdrant 数据库在大批量分块向量化时内存消耗极大。如遇到容器无故停止:

  1. 检查内核 OOM 日志:sudo dmesg -T | grep -i oom
  2. 确认已按步骤 2.2 创建足够的 Swap 分区。
  3. 在低配服务器上,可尝试将向量数据库切换为轻量级的 pgvector。编辑 .env
    VECTOR_STORE=pgvector
    
    使用 pgvector 可将向量检索合并至已有的 PostgreSQL 容器中运行,省去独立向量数据库的内存开销。

步骤 6.3:数据备份与灾难恢复

Dify 的核心持久化数据保存在 Docker Volume 中(dify_db-datadify_app-data 等)。定期备份脚本示例:

#!/bin/bash
   BACKUP_DIR="/var/backups/dify"
   TIMESTAMP=$(date +%Y%m%d_%H%M%S)
   mkdir -p ${BACKUP_DIR}

   # 导出 PostgreSQL 数据库
   docker exec -t docker-db-1 pg_dump -U postgres dify > ${BACKUP_DIR}/dify_db_${TIMESTAMP}.sql

   # 打包上传的文件存储目录
   tar -czvf ${BACKUP_DIR}/dify_storage_${TIMESTAMP}.tar.gz /var/lib/docker/volumes/docker_app-data/_data

   echo "Dify 数据备份完成,保存至: ${BACKUP_DIR}"

建议将备份文件定期同步至对象存储(如 S3 或 OSS)。

步骤 6.4:Dify 版本平滑升级

当 Dify 发布新版本时,按以下命令完成无损升级:

cd /opt/dify/docker

# 停止当前运行的服务
docker compose down

# 拉取 Git 最新代码
git pull origin main

# 拉取最新镜像
docker compose pull

# 重新启动并自动执行数据库 Migration
docker compose up -d

7. 架构优化与长期成本控制建议

要保障 Dify 系统长期稳定运行并最大化降低 IT 预算,建议实施以下优化策略:

  1. 云服务器长期合约优化:利用云厂商新用户活动或多年期预留实例锁定优惠。对于大多数 30 人以内的企业团队,一台 2核 4G 的标准云服务器足以支撑日均数千次工作流调用。
  2. 托管数据库迁移:当团队扩展至百人规模以上时,建议将 PostgreSQL 与 Redis 从 Docker 容器中解耦,迁移至云厂商的 RDS 托管数据库服务,获得多可用区高可用与自动快照能力。
  3. API 模型混合路由控制:使用 n1n.ai 统一路由层,将简短摘要、文档提取等高频基础设施任务分发给性价比高、速度快的 DeepSeek-V3;而在复杂的逻辑推理与代码生成节点中接入 OpenAI o3 或 Claude 3.5 Sonnet。这种混合路由架构能在不牺牲模型表现的前提下,将企业整体 Token 开销降低 50% 以上。

通过上述步骤,你已成功搭建起一套自主可控、具备企业级防护与高性能 API 路由能力的 Dify AI 基础设施。

Get a free API key at n1n.ai