上一篇 下一篇 分享链接 返回 返回顶部

Dify 服务器部署实战:Docker Compose 一键上线,附配置文件与避坑指南

发布人:慈云数据-客服中心 发布时间:11小时前 阅读量:6

Dify 部署完整教程|附配置文件

前言

Dify 是一款开源的 LLM 应用开发平台,支持可视化编排 AI 应用、构建聊天机器人、Agent、知识库问答、工作流以及 API 服务。相比从零开发一个大模型应用,Dify 提供了更完整的工程化能力,包括模型接入、提示词管理、数据集管理、向量检索、应用发布、API 调用、日志观测等功能,非常适合企业内部知识库、智能客服、AI 助手、自动化工作流等场景。

本文将以 Docker Compose 部署方式 为主,完整介绍 Dify 的部署流程,并附上常用配置文件示例。该方式适合个人开发者、中小团队以及测试环境快速上线。如果你希望在服务器上稳定运行 Dify,本文也会补充域名、反向代理、HTTPS、环境变量配置、常见问题排查等内容。


一、部署前准备

在开始部署 Dify 之前,需要准备一台 Linux 服务器。推荐使用 Ubuntu 20.04 / 22.04,也可以使用 Debian、CentOS、Rocky Linux 等系统。

1. 服务器配置建议

如果只是个人测试,最低配置可以较低;如果要接入知识库、多人使用,建议适当提高配置。

使用场景 CPU 内存 磁盘
个人测试 2 核 4 GB 30 GB
小团队使用 4 核 8 GB 80 GB
企业内部部署 8 核以上 16 GB 以上 200 GB 以上

注意:如果 Dify 使用本地向量数据库、处理较多知识库文档,磁盘空间和内存都要预留充足。

2. 软件环境要求

部署前需要安装以下组件:

  • Docker
  • Docker Compose
  • Git
  • Nginx(可选,用于反向代理和 HTTPS)
  • 域名(可选,但生产环境建议配置)

本文默认使用 Docker Compose 部署,因此不需要手动安装 PostgreSQL、Redis、向量数据库等服务,Dify 官方 Compose 文件会统一编排这些服务。


二、安装 Docker 和 Docker Compose

以下命令以 Ubuntu 系统为例。

1. 更新系统依赖

sudo apt update
sudo apt upgrade -y

安装常用工具:

sudo apt install -y ca-certificates curl gnupg lsb-release git

2. 安装 Docker

添加 Docker 官方 GPG key:

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

添加 Docker 软件源:

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装 Docker:

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

启动 Docker:

sudo systemctl enable docker
sudo systemctl start docker

查看 Docker 版本:

docker version

查看 Docker Compose 版本:

docker compose version

如果能够正常输出版本信息,说明 Docker 环境已安装完成。


三、获取 Dify 项目源码

进入服务器合适目录,例如 /opt

cd /opt

克隆 Dify 官方仓库:

sudo git clone https://github.com/langgenius/dify.git

进入 Docker 部署目录:

cd /opt/dify/docker

查看目录文件:

ls -lah

通常会看到如下文件或目录:

docker-compose.yaml
.env.example
nginx/
volumes/
middleware.env.example

不同版本的 Dify 文件结构可能略有差异,但核心部署方式基本一致。


四、配置环境变量

Dify 的主要配置集中在 .env 文件中。官方一般提供 .env.example 示例文件,我们需要复制一份并进行修改。

cp .env.example .env

然后编辑 .env

nano .env

如果你熟悉 Vim,也可以使用:

vim .env

五、核心配置项说明

.env 文件内容较多,不同版本变量名可能会更新。下面列出常见且重要的配置项。

1. 服务访问地址

CONSOLE_API_URL=
CONSOLE_WEB_URL=
SERVICE_API_URL=
APP_API_URL=
APP_WEB_URL=

如果只是本地或服务器 IP 测试,可以先留空或设置为服务器地址。生产环境建议填写完整域名。

示例:

CONSOLE_API_URL=https://dify.example.com
CONSOLE_WEB_URL=https://dify.example.com
SERVICE_API_URL=https://dify.example.com
APP_API_URL=https://dify.example.com
APP_WEB_URL=https://dify.example.com

如果你使用的是纯 IP 访问,例如:

CONSOLE_API_URL=http://你的服务器IP
CONSOLE_WEB_URL=http://你的服务器IP
SERVICE_API_URL=http://你的服务器IP
APP_API_URL=http://你的服务器IP
APP_WEB_URL=http://你的服务器IP

2. Secret Key

Dify 需要配置安全密钥,例如:

SECRET_KEY=your-secret-key

建议使用随机字符串,不要直接使用默认值。可以通过以下命令生成:

openssl rand -base64 42

然后写入:

SECRET_KEY=生成的随机字符串

3. 数据库配置

Dify 默认使用 PostgreSQL。Compose 部署时数据库通常由容器自动启动,配置类似:

DB_USERNAME=postgres
DB_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify

生产环境不建议使用默认密码,建议修改为强密码:

DB_USERNAME=postgres
DB_PASSWORD=请替换为强密码
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify

注意:如果已经启动过容器并初始化了数据库,再修改数据库密码可能会导致连接失败。首次部署前修改最稳妥。

4. Redis 配置

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0

如果你希望设置 Redis 密码,可以配置:

REDIS_PASSWORD=请替换为Redis密码

但同时要确保 Docker Compose 中 Redis 服务也启用对应密码,否则会出现连接失败。

5. 向量数据库配置

Dify 支持多种向量数据库,例如 Weaviate、Qdrant、Milvus、pgvector 等。官方 Docker Compose 默认可能使用 Weaviate 或其他向量库,具体取决于版本配置。

常见配置示例:

VECTOR_STORE=weaviate
WEAVIATE_ENDPOINT=http://weaviate:8080
WEAVIATE_API_KEY=

如果使用 Qdrant:

VECTOR_STORE=qdrant
QDRANT_URL=http://qdrant:6333
QDRANT_API_KEY=

对于新手来说,建议先使用官方默认向量数据库,不要一开始就改动太多。

6. 文件存储配置

默认可以使用本地存储:

STORAGE_TYPE=local

如果是生产环境且需要更稳定的文件管理,可以配置 S3 兼容对象存储,例如 AWS S3、MinIO、阿里云 OSS 等。

本地存储示例:

STORAGE_TYPE=local
STORAGE_LOCAL_PATH=storage

S3 示例:

STORAGE_TYPE=s3
S3_ENDPOINT=https://s3.amazonaws.com
S3_BUCKET_NAME=dify
S3_ACCESS_KEY=your-access-key
S3_SECRET_KEY=your-secret-key
S3_REGION=ap-southeast-1

7. 邮件服务配置

如果需要邀请成员、找回密码等功能,建议配置 SMTP。

MAIL_TYPE=smtp
MAIL_FROM=noreply@example.com
SMTP_SERVER=smtp.example.com
SMTP_PORT=465
SMTP_USERNAME=noreply@example.com
SMTP_PASSWORD=邮箱授权码
SMTP_USE_TLS=true

不同邮箱服务商的 SMTP 端口和安全策略不同,需要根据服务商文档调整。


六、配置文件示例

下面提供一个适合单机 Docker Compose 部署的 .env 示例。请根据自己的域名、密码、密钥进行修改。

.env 示例配置

# =========================
# Dify 基础访问地址
# =========================

CONSOLE_API_URL=https://dify.example.com
CONSOLE_WEB_URL=https://dify.example.com
SERVICE_API_URL=https://dify.example.com
APP_API_URL=https://dify.example.com
APP_WEB_URL=https://dify.example.com

# =========================
# 安全密钥
# =========================

SECRET_KEY=replace-with-a-random-secret-key

# =========================
# 数据库配置
# =========================

DB_USERNAME=postgres
DB_PASSWORD=replace-with-strong-db-password
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify

# =========================
# Redis 配置
# =========================

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0

# =========================
# Celery 配置
# =========================

CELERY_BROKER_URL=redis://redis:6379/1

# =========================
# 向量数据库配置
# =========================

VECTOR_STORE=weaviate
WEAVIATE_ENDPOINT=http://weaviate:8080
WEAVIATE_API_KEY=

# =========================
# 文件存储配置
# =========================

STORAGE_TYPE=local
STORAGE_LOCAL_PATH=storage

# =========================
# 上传文件限制
# =========================

UPLOAD_FILE_SIZE_LIMIT=15
UPLOAD_FILE_BATCH_LIMIT=5

# =========================
# 邮件配置,可选
# =========================

MAIL_TYPE=smtp
MAIL_FROM=noreply@example.com
SMTP_SERVER=smtp.example.com
SMTP_PORT=465
SMTP_USERNAME=noreply@example.com
SMTP_PASSWORD=replace-with-email-password
SMTP_USE_TLS=true

# =========================
# Web 服务配置
# =========================

WEB_API_CORS_ALLOW_ORIGINS=*
CONSOLE_CORS_ALLOW_ORIGINS=*

说明:Dify 官方版本更新较快,变量名可能出现变化。实际部署时应以官方 .env.example 为准,本文配置可作为理解和修改参考。


七、启动 Dify 服务

确认 .env 配置完成后,在 /opt/dify/docker 目录执行:

docker compose up -d

该命令会自动拉取镜像并启动所有服务。首次启动需要下载多个镜像,耗时取决于服务器网络环境。

查看容器状态:

docker compose ps

如果服务全部处于 runninghealthy 状态,说明启动正常。

查看日志:

docker compose logs -f

也可以单独查看某个服务日志,例如:

docker compose logs -f api
docker compose logs -f web
docker compose logs -f worker
docker compose logs -f db

八、访问 Dify 控制台

如果你未配置域名和 Nginx,一般可以通过服务器 IP 访问:

http://服务器IP

如果配置了域名:

https://dify.example.com

首次访问时,Dify 会引导你创建管理员账号。按照页面提示填写邮箱、用户名和密码即可。

创建完成后,就可以进入控制台,开始配置模型供应商、创建应用、导入知识库等。


九、配置大模型供应商

部署 Dify 后,最重要的一步是配置模型。Dify 支持多种模型供应商,例如:

  • OpenAI
  • Azure OpenAI
  • Anthropic
  • Google Gemini
  • Ollama
  • DeepSeek
  • Zhipu AI
  • Moonshot
  • Tongyi
  • Baichuan
  • OpenRouter
  • 本地模型服务

进入 Dify 控制台后,通常可以在:

设置 → 模型供应商

中添加模型 API Key。

例如配置 OpenAI:

Provider: OpenAI
API Key: sk-xxxx
Base URL: https://api.openai.com/v1

如果你使用第三方兼容 OpenAI API 的服务,通常需要填写自定义 Base URL。

例如:

Base URL: https://api.example.com/v1
API Key: your-api-key

配置完成后,可以设置默认模型,例如:

  • Chat Model:gpt-4o-mini
  • Embedding Model:text-embedding-3-small

知识库问答通常需要配置 Embedding 模型,否则无法正常进行向量化。


十、Nginx 反向代理配置

生产环境建议使用 Nginx 反向代理,并配置 HTTPS。假设你的域名是:

dify.example.com

Dify 容器对外暴露端口通常是 80 或其他端口,具体以 Docker Compose 文件为准。如果容器已经占用宿主机 80 端口,则 Nginx 可以直接使用 Dify 自带的 nginx 服务;如果你想使用宿主机 Nginx 代理,可以将 Dify 映射到例如 8080 端口。

下面给出一个宿主机 Nginx 反向代理示例。

Nginx 配置文件示例

创建配置文件:

sudo nano /etc/nginx/conf.d/dify.conf

写入以下内容:

server {
    listen 80;
    server_name dify.example.com;

    client_max_body_size 50M;

    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;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";

        proxy_read_timeout 300s;
        proxy_send_timeout 300s;
    }
}

检查 Nginx 配置:

sudo nginx -t

重载 Nginx:

sudo systemctl reload nginx

注意:上面的 proxy_pass http://127.0.0.1:8080; 需要与你实际 Dify 暴露端口一致。如果 Dify 直接占用了 80 端口,就不能让宿主机 Nginx 同时监听 80 端口。


十一、配置 HTTPS 证书

推荐使用 Certbot 自动申请 Let’s Encrypt 免费证书。

1. 安装 Certbot

sudo apt install -y certbot python3-certbot-nginx

2. 申请证书

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

根据提示选择是否自动跳转 HTTPS。完成后,Certbot 会自动修改 Nginx 配置。

3. 测试自动续期

sudo certbot renew --dry-run

如果输出正常,说明证书自动续期可用。


十二、Docker Compose 配置文件示例

一般情况下不建议随意修改官方 docker-compose.yaml,因为 Dify 的服务较多,包括 API、Web、Worker、数据库、Redis、向量数据库、Nginx 等。如果确实需要调整端口,可以参考以下简化示例。

docker-compose.override.yaml 示例

/opt/dify/docker 目录下创建:

nano docker-compose.override.yaml

写入:

services:
  nginx:
    ports:
      - "8080:80"

  api:
    restart: always

  worker:
    restart: always

  web:
    restart: always

  db:
    restart: always

  redis:
    restart: always

这样可以避免直接修改官方 docker-compose.yaml。以后升级 Dify 时,官方文件变化不会被你大量改动影响。

然后重新启动:

docker compose down
docker compose up -d

十三、开放防火墙端口

如果服务器开启了防火墙,需要放行 HTTP 和 HTTPS 端口。

Ubuntu UFW 示例

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

如果你使用 8080 端口测试,也需要放行:

sudo ufw allow 8080/tcp

云服务器还需要在云厂商安全组中放行相应端口,例如阿里云、腾讯云、华为云、AWS、Azure 等。


十四、数据持久化与备份

Dify 的数据库、上传文件、向量数据都非常重要。Docker Compose 部署通常会通过 volume 持久化数据。你需要重点关注以下内容:

  • PostgreSQL 数据
  • Redis 数据
  • 向量数据库数据
  • 上传文件目录
  • .env 配置文件

1. 备份 PostgreSQL

可以通过容器执行 pg_dump

docker compose exec db pg_dump -U postgres dify > dify_backup.sql

如果数据库密码或用户名不同,请对应修改命令。

恢复数据库:

cat dify_backup.sql | docker compose exec -T db psql -U postgres dify

2. 备份 Dify Docker 目录

建议定期备份整个 Docker 部署目录:

tar -zcvf dify-docker-backup.tar.gz /opt/dify/docker

如果数据卷不在该目录内,还需要单独备份 Docker volumes。

3. 查看 Docker volume

docker volume ls

查看具体 volume 信息:

docker volume inspect volume_name

生产环境建议制定定期备份策略,例如每天凌晨备份数据库,每周备份完整数据,并将备份文件上传至对象存储。


十五、升级 Dify

Dify 版本更新比较频繁,升级前一定要备份数据。

1. 停止服务

cd /opt/dify/docker
docker compose down

2. 拉取最新代码

cd /opt/dify
git pull

3. 检查配置差异

升级后建议对比 .env.example 和当前 .env

cd /opt/dify/docker
diff .env.example .env

如果新版本增加了环境变量,需要手动补充到 .env 中。

4. 拉取最新镜像并启动

docker compose pull
docker compose up -d

5. 查看日志

docker compose logs -f

确认 API、Worker、Web、数据库等服务启动正常后,再访问页面验证功能。


十六、常见问题排查

1. 页面无法访问

首先查看容器状态:

docker compose ps

再查看端口监听:

sudo ss -tulnp | grep -E '80|443|8080'

如果端口没有监听,说明容器或 Nginx 未正常启动。

查看日志:

docker compose logs -f nginx
docker compose logs -f web
docker compose logs -f api

2. API 服务启动失败

常见原因包括:

  • .env 配置错误
  • 数据库密码不匹配
  • Redis 无法连接
  • SECRET_KEY 未配置
  • 数据库尚未初始化完成

查看 API 日志:

docker compose logs -f api

如果出现数据库连接错误,重点检查:

DB_HOST=db
DB_PORT=5432
DB_USERNAME=postgres
DB_PASSWORD=你的密码
DB_DATABASE=dify

3. 知识库无法索引

知识库索引失败通常与以下因素有关:

  • 没有配置 Embedding 模型
  • 模型 API Key 无效
  • 向量数据库未启动
  • 文档过大或格式不支持
  • Worker 服务异常

查看 Worker 日志:

docker compose logs -f worker

查看向量数据库日志:

docker compose logs -f weaviate

或:

docker compose logs -f qdrant

具体取决于你使用的向量数据库。

4. 上传文件失败

检查上传文件大小限制:

UPLOAD_FILE_SIZE_LIMIT=15
UPLOAD_FILE_BATCH_LIMIT=5

同时检查 Nginx 的上传限制:

client_max_body_size 50M;

如果 Nginx 限制太小,即使 Dify 配置允许上传,也会被反向代理拦截。

5. HTTPS 后回调地址异常

如果启用 HTTPS,但 .env 中仍然配置了 HTTP 地址,可能出现接口请求异常、跳转异常、应用分享链接不正确等问题。

请确保:

CONSOLE_API_URL=https://dify.example.com
CONSOLE_WEB_URL=https://dify.example.com
SERVICE_API_URL=https://dify.example.com
APP_API_URL=https://dify.example.com
APP_WEB_URL=https://dify.example.com

修改后重启服务:

docker compose down
docker compose up -d

十七、安全加固建议

生产环境部署 Dify 时,建议进行以下安全加固:

  1. 不要使用默认数据库密码
    PostgreSQL、Redis 等服务应使用强密码。

  2. 使用 HTTPS
    登录凭证、API Key、应用请求都应通过 HTTPS 传输。

  3. 限制后台访问来源
    如果是企业内部使用,可以通过防火墙或 Nginx 白名单限制访问 IP。

  4. 定期备份数据
    数据库和知识库文件一旦丢失,恢复成本较高。

  5. 及时升级版本
    Dify 和依赖组件更新较快,建议关注官方发布说明。

  6. 保护 .env 文件
    .env 中包含数据库密码、密钥等敏感信息,不要上传到公开仓库。

  7. 合理配置模型 Key 权限
    如果使用 OpenAI、DeepSeek、通义千问等模型 API Key,建议单独创建用途明确的 Key,并控制额度。


十八、一个完整部署流程总结

如果你想快速部署,可以按下面命令执行:

# 1. 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release git

# 2. 安装 Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 3. 克隆 Dify
cd /opt
sudo git clone https://github.com/langgenius/dify.git
cd /opt/dify/docker

# 4. 创建环境变量文件
cp .env.example .env

# 5. 编辑配置文件
nano .env

# 6. 启动服务
docker compose up -d

# 7. 查看状态
docker compose ps

如果容器正常启动,即可通过服务器 IP 或域名访问 Dify。


结语

通过本文的步骤,你已经可以完成 Dify 的 Docker Compose 部署,并掌握环境变量、数据库、Redis、向量数据库、Nginx 反向代理、HTTPS、备份升级和常见故障排查等关键内容。

对于大多数用户来说,使用官方 Docker Compose 是部署 Dify 最简单、最稳定的方式。测试环境可以直接使用 IP 访问,生产环境建议配置域名、HTTPS、强密码和定期备份。如果后续团队规模扩大,也可以将 PostgreSQL、Redis、向量数据库拆分到独立服务器或托管服务中,以提升稳定性和可维护性。

Dify 的优势不只是“部署一个 AI 平台”,更重要的是它提供了一套从模型接入、知识库构建、提示词编排到应用发布的完整工作流。部署完成后,你可以继续尝试创建聊天助手、企业知识库、自动化 Agent、工作流应用,并通过 API 将 AI 能力集成到自己的业务系统中。

目录结构
全文