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

Dify 内网落地指南:从 Docker 部署到配置文件一次讲清楚

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

Dify 私有化部署方案|附配置文件

随着大模型应用逐渐从“尝鲜”走向“生产落地”,越来越多企业开始关注如何在内部环境中快速构建、管理和发布 AI 应用。Dify 作为一款开源的大模型应用开发平台,提供了 Prompt 编排、Agent、工作流、知识库、模型接入、应用发布、API 调用等能力,非常适合企业搭建自己的 AI 应用中台。

相比直接使用公有云 SaaS 服务,Dify 私有化部署具备更高的数据安全性、更强的系统可控性,也更方便与企业内部系统、私有模型、知识库、权限体系进行集成。本文将围绕 Dify 私有化部署方案展开,介绍部署架构、服务器规划、环境准备、Docker Compose 部署方式、核心配置文件示例、常见问题及运维建议,帮助你快速完成一套可用于测试或生产环境的 Dify 私有化部署。


一、Dify 私有化部署适用场景

Dify 私有化部署通常适用于以下几类场景:

  1. 企业内部 AI 应用平台建设
    企业希望统一管理内部大模型应用,例如智能客服、知识库问答、合同审查、数据分析助手、运维助手等。

  2. 数据安全要求较高
    部分业务涉及客户资料、合同、财务、人事、研发文档等敏感信息,不适合直接上传至外部 SaaS 平台。

  3. 需要接入私有大模型
    企业已经部署了本地大模型服务,例如 Qwen、DeepSeek、ChatGLM、Llama、Baichuan 等,希望通过 Dify 统一编排和发布。

  4. 需要对接内部系统
    例如对接企业微信、飞书、钉钉、CRM、ERP、OA、工单系统、数据仓库等。

  5. 需要可控的二次开发能力
    Dify 是开源项目,私有化部署后可以结合企业需求进行界面、插件、鉴权、审计、日志、业务流程等扩展。


二、Dify 部署架构说明

Dify 官方推荐使用 Docker Compose 方式进行部署,这也是最简单、稳定、适合快速上线的方案。一个标准的 Dify 私有化环境通常包含以下组件:

组件 说明
Web Dify 前端页面,用于管理应用、知识库、工作流等
API Dify 后端 API 服务
Worker 异步任务处理服务,例如知识库索引、批处理任务
PostgreSQL 关系型数据库,存储用户、应用、配置、会话等数据
Redis 缓存和任务队列
Weaviate / Qdrant / Milvus 向量数据库,用于知识库向量检索
Nginx 反向代理,对外提供统一访问入口
Sandbox 代码执行沙箱,用于部分工具或代码节点
SSRF Proxy 防止服务端请求伪造,提高访问外部资源时的安全性

在生产环境中,也可以将数据库、Redis、向量数据库拆分到独立服务器或使用云数据库服务,以提升稳定性和可维护性。


三、服务器配置建议

Dify 的资源消耗主要取决于以下因素:

  • 用户并发量;
  • 应用数量;
  • 知识库文档数量;
  • 是否本地部署大模型;
  • 是否使用复杂工作流;
  • 向量数据库规模;
  • 是否开启大量异步任务。

如果只是部署 Dify 平台本身,不包含本地大模型推理服务,推荐配置如下。

1. 测试环境配置

项目 建议配置
CPU 4 核
内存 8GB
磁盘 100GB SSD
操作系统 Ubuntu 22.04 LTS / Debian 12 / CentOS Stream
部署方式 Docker Compose
适用场景 功能测试、演示、PoC

2. 中小型生产环境配置

项目 建议配置
CPU 8 核及以上
内存 16GB / 32GB
磁盘 300GB SSD 起
操作系统 Ubuntu 22.04 LTS
部署方式 Docker Compose 或 Kubernetes
适用场景 部门级应用、企业内部知识库

3. 大规模生产环境配置

项目 建议配置
Web/API/Worker 多节点部署
PostgreSQL 独立高可用数据库
Redis 独立 Redis Cluster 或主从
向量数据库 独立部署 Milvus / Qdrant / Weaviate
对象存储 MinIO / S3
网关 Nginx / Ingress / API Gateway
适用场景 企业级平台、多业务线、多租户、高并发

需要注意的是,如果你希望在同一台服务器上同时部署本地大模型,例如 7B、14B、32B 或更大参数模型,则还需要单独考虑 GPU 显存、推理框架、模型服务并发等问题。Dify 本身并不负责大模型推理,它主要负责应用编排和调用模型接口。


四、部署前环境准备

以下示例以 Ubuntu 22.04 为例。

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装基础工具

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

3. 安装 Docker

curl -fsSL https://get.docker.com | bash

安装完成后查看版本:

docker version

将当前用户加入 Docker 用户组:

sudo usermod -aG docker $USER

执行后建议重新登录服务器。

4. 安装 Docker Compose

较新版本 Docker 已经内置 Compose 插件,可以执行:

docker compose version

如果没有安装,可执行:

sudo apt install -y docker-compose-plugin

5. 配置防火墙

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

sudo ufw allow 80
sudo ufw allow 443
sudo ufw reload

如果只是测试环境,也可以临时放行 Dify 默认端口,例如:

sudo ufw allow 8080

五、获取 Dify 源码

执行以下命令拉取 Dify 官方仓库:

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

Dify 的 Docker Compose 部署文件通常位于 docker 目录下。进入该目录后,可以看到类似以下文件:

ls

常见文件包括:

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

复制环境变量配置文件:

cp .env.example .env

后续主要修改 .env 文件即可。


六、核心配置文件说明

Dify 的私有化部署中,最关键的是 .envdocker-compose.yaml。一般情况下,不建议大幅修改 docker-compose.yaml,除非你明确知道每个服务的作用。大部分配置都可以通过 .env 完成。

下面提供一份适合内网测试或中小型生产环境的参考配置。不同版本 Dify 的环境变量可能略有差异,实际部署时应以官方最新 .env.example 为准。


七、.env 配置文件示例

说明:以下配置仅为参考示例,请根据实际域名、数据库密码、密钥、对象存储、模型服务地址进行调整。

# ----------------------------------------------------------------------------
# 基础访问配置
# ----------------------------------------------------------------------------

# 控制台访问地址,用于前端页面访问
CONSOLE_WEB_URL=https://dify.example.com

# API 服务访问地址
CONSOLE_API_URL=https://dify.example.com

# 应用访问地址,例如通过 Dify 发布出来的 WebApp
APP_WEB_URL=https://dify.example.com

# 服务端 API 地址
SERVICE_API_URL=https://dify.example.com

# 文件预览或下载地址
FILES_URL=https://dify.example.com

# ----------------------------------------------------------------------------
# 密钥配置
# ----------------------------------------------------------------------------

# 用于加密敏感信息,生产环境必须修改
# 可以使用 openssl rand -base64 42 生成
SECRET_KEY=please-change-this-secret-key

# ----------------------------------------------------------------------------
# 数据库配置
# ----------------------------------------------------------------------------

DB_USERNAME=postgres
DB_PASSWORD=please-change-postgres-password
DB_HOST=db
DB_PORT=5432
DB_DATABASE=dify

# ----------------------------------------------------------------------------
# Redis 配置
# ----------------------------------------------------------------------------

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_USERNAME=
REDIS_PASSWORD=please-change-redis-password
REDIS_USE_SSL=false
REDIS_DB=0

# ----------------------------------------------------------------------------
# Celery 异步任务队列
# ----------------------------------------------------------------------------

CELERY_BROKER_URL=redis://:please-change-redis-password@redis:6379/1

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

# 可选值通常包括:weaviate、qdrant、milvus、pgvector 等
VECTOR_STORE=weaviate

# Weaviate 配置
WEAVIATE_ENDPOINT=http://weaviate:8080
WEAVIATE_API_KEY=

# 如果使用 Qdrant,可参考:
# VECTOR_STORE=qdrant
# QDRANT_URL=http://qdrant:6333
# QDRANT_API_KEY=

# 如果使用 Milvus,可参考:
# VECTOR_STORE=milvus
# MILVUS_URI=http://milvus:19530
# MILVUS_TOKEN=

# ----------------------------------------------------------------------------
# 文件存储配置
# ----------------------------------------------------------------------------

# 本地文件存储,适合测试环境
STORAGE_TYPE=local

# 本地文件存储路径,容器内路径
STORAGE_LOCAL_PATH=storage

# 如果生产环境使用 S3 / MinIO,可参考:
# STORAGE_TYPE=s3
# S3_ENDPOINT=http://minio:9000
# S3_BUCKET_NAME=dify
# S3_ACCESS_KEY=minioadmin
# S3_SECRET_KEY=minioadmin
# S3_REGION=us-east-1
# S3_USE_AWS_MANAGED_IAM=false

# ----------------------------------------------------------------------------
# 邮件配置
# ----------------------------------------------------------------------------

MAIL_TYPE=smtp
MAIL_DEFAULT_SEND_FROM=notice@example.com
SMTP_SERVER=smtp.example.com
SMTP_PORT=465
SMTP_USERNAME=notice@example.com
SMTP_PASSWORD=please-change-email-password
SMTP_USE_TLS=true
SMTP_OPPORTUNISTIC_TLS=false

# ----------------------------------------------------------------------------
# 代码执行沙箱配置
# ----------------------------------------------------------------------------

CODE_EXECUTION_ENDPOINT=http://sandbox:8194
CODE_EXECUTION_API_KEY=please-change-sandbox-api-key

# ----------------------------------------------------------------------------
# SSRF Proxy 配置
# ----------------------------------------------------------------------------

SSRF_PROXY_HTTP_URL=http://ssrf_proxy:3128
SSRF_PROXY_HTTPS_URL=http://ssrf_proxy:3128

# ----------------------------------------------------------------------------
# 上传文件限制
# ----------------------------------------------------------------------------

UPLOAD_FILE_SIZE_LIMIT=15
UPLOAD_FILE_BATCH_LIMIT=5

# ----------------------------------------------------------------------------
# 日志配置
# ----------------------------------------------------------------------------

LOG_LEVEL=INFO

# ----------------------------------------------------------------------------
# 时区配置
# ----------------------------------------------------------------------------

TZ=Asia/Shanghai

在生产环境中,必须重点修改以下配置:

  • SECRET_KEY
  • DB_PASSWORD
  • REDIS_PASSWORD
  • CELERY_BROKER_URL
  • CODE_EXECUTION_API_KEY
  • 邮件账号密码
  • 域名相关 URL
  • 对象存储密钥
  • 向量数据库访问密钥

建议通过以下命令生成随机密钥:

openssl rand -base64 42

八、Docker Compose 配置文件示例

Dify 官方提供的 docker-compose.yaml 已经比较完整。下面给出一个简化版示例,便于理解各服务之间的关系。生产环境建议优先使用官方文件,并基于官方文件做最小化修改。

version: "3.8"

services:
  api:
    image: langgenius/dify-api:latest
    container_name: dify-api
    restart: always
    env_file:
      - .env
    depends_on:
      - db
      - redis
      - weaviate
    volumes:
      - ./volumes/app/storage:/app/api/storage
    networks:
      - dify

  worker:
    image: langgenius/dify-api:latest
    container_name: dify-worker
    restart: always
    env_file:
      - .env
    command: celery -A app.celery worker -P gevent -c 1 --loglevel INFO
    depends_on:
      - db
      - redis
      - weaviate
    volumes:
      - ./volumes/app/storage:/app/api/storage
    networks:
      - dify

  web:
    image: langgenius/dify-web:latest
    container_name: dify-web
    restart: always
    env_file:
      - .env
    depends_on:
      - api
    networks:
      - dify

  db:
    image: postgres:15-alpine
    container_name: dify-db
    restart: always
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: please-change-postgres-password
      POSTGRES_DB: dify
    volumes:
      - ./volumes/db/data:/var/lib/postgresql/data
    networks:
      - dify

  redis:
    image: redis:6-alpine
    container_name: dify-redis
    restart: always
    command: redis-server --requirepass please-change-redis-password
    volumes:
      - ./volumes/redis/data:/data
    networks:
      - dify

  weaviate:
    image: semitechnologies/weaviate:1.19.0
    container_name: dify-weaviate
    restart: always
    environment:
      QUERY_DEFAULTS_LIMIT: 25
      AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: "true"
      PERSISTENCE_DATA_PATH: /var/lib/weaviate
      DEFAULT_VECTORIZER_MODULE: none
      CLUSTER_HOSTNAME: node1
    volumes:
      - ./volumes/weaviate:/var/lib/weaviate
    networks:
      - dify

  sandbox:
    image: langgenius/dify-sandbox:latest
    container_name: dify-sandbox
    restart: always
    environment:
      API_KEY: please-change-sandbox-api-key
    networks:
      - dify

  nginx:
    image: nginx:latest
    container_name: dify-nginx
    restart: always
    ports:
      - "80:80"
    volumes:
      - ./nginx/conf.d:/etc/nginx/conf.d
    depends_on:
      - api
      - web
    networks:
      - dify

networks:
  dify:
    driver: bridge

再次强调,以上示例主要用于帮助理解,不建议直接替代官方 docker-compose.yaml。Dify 版本升级较快,不同版本的服务名称、环境变量和镜像标签可能会有所变化。


九、Nginx 反向代理配置

如果你希望通过域名访问 Dify,例如:

https://dify.example.com

建议使用 Nginx 做反向代理,并配置 HTTPS 证书。

1. HTTP 反向代理示例

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

    client_max_body_size 100M;

    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_read_timeout 300s;
        proxy_send_timeout 300s;
    }
}

如果 Dify 的 Nginx 容器已经监听宿主机 80 端口,则外层 Nginx 可以转发到 Dify 暴露的端口,例如 8080。你也可以将 Docker Compose 中的端口映射改为:

ports:
  - "8080:80"

2. HTTPS 配置示例

server {
    listen 80;
    server_name dify.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name dify.example.com;

    ssl_certificate /etc/nginx/ssl/dify.example.com.pem;
    ssl_certificate_key /etc/nginx/ssl/dify.example.com.key;

    client_max_body_size 100M;

    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 https;

        proxy_connect_timeout 60s;
        proxy_read_timeout 300s;
        proxy_send_timeout 300s;
    }
}

配置完成后检查 Nginx 配置:

sudo nginx -t

重载 Nginx:

sudo systemctl reload nginx

十、启动 Dify 服务

进入 dify/docker 目录后执行:

docker compose up -d

查看容器状态:

docker compose ps

查看日志:

docker compose logs -f

如果只想查看 API 服务日志:

docker compose logs -f api

如果只想查看 Worker 日志:

docker compose logs -f worker

首次启动时,数据库初始化、镜像拉取、服务健康检查可能需要几分钟。待所有容器正常启动后,即可通过浏览器访问:

http://服务器IP

或:

https://dify.example.com

首次访问时需要创建管理员账号。


十一、模型服务接入方案

Dify 私有化部署完成后,下一步通常是配置模型供应商。Dify 支持多种模型接入方式,包括 OpenAI、Azure OpenAI、Anthropic、通义千问、智谱、百川、火山方舟、Ollama、Xinference、OpenAI-API-Compatible 等。

1. 接入公有云模型

如果企业可以访问外部大模型 API,则可以在 Dify 控制台中直接配置对应供应商的 API Key。例如:

  • OpenAI
  • Azure OpenAI
  • 通义千问
  • 火山方舟
  • 智谱 AI
  • DeepSeek API
  • Moonshot
  • 零一万物

这种方式部署简单,模型效果好,但需要考虑数据出境、合规和 API 成本问题。

2. 接入本地模型服务

如果企业希望模型完全在内网运行,可以使用以下方案:

  • Ollama
  • Xinference
  • vLLM
  • FastChat
  • LMDeploy
  • Text Generation Inference
  • OpenAI-Compatible API Server

其中,最推荐的方式是将本地模型服务封装为 OpenAI Compatible API,然后在 Dify 中通过兼容接口接入。

例如,本地模型服务地址为:

http://10.0.0.20:8000/v1

在 Dify 控制台中添加模型供应商时,选择兼容 OpenAI API 的方式,填写:

Base URL: http://10.0.0.20:8000/v1
API Key: 任意非空字符串或实际配置的密钥
Model Name: qwen2.5-14b-instruct

如果 Dify 部署在 Docker 容器中,需要确保容器网络能够访问该模型服务地址。


十二、知识库与向量数据库选择

Dify 的知识库能力依赖向量数据库。常见选择包括 Weaviate、Qdrant、Milvus、pgvector 等。

1. Weaviate

Weaviate 是 Dify 默认部署中较常见的选择,适合快速启动和中小规模知识库场景。优点是集成简单,使用门槛低。

2. Qdrant

Qdrant 性能较好,部署相对简单,适合对检索性能有一定要求的业务场景。对于中大型知识库,Qdrant 是非常值得考虑的选择。

3. Milvus

Milvus 适合大规模向量检索场景,在海量文档、高并发检索下更有优势。但部署和运维复杂度也更高。

4. pgvector

pgvector 可以直接基于 PostgreSQL 存储向量数据,架构更简单。但在大规模向量检索场景下,性能和扩展能力需要谨慎评估。

对于大多数中小型企业来说,初期可以使用 Weaviate 或 Qdrant;如果后续知识库规模显著增长,再考虑迁移到 Milvus。


十三、生产环境部署建议

测试环境只要能跑起来即可,但生产环境需要重点考虑安全性、稳定性、性能和可维护性。

1. 不要使用默认密码

所有默认密码都必须修改,包括:

  • PostgreSQL 密码;
  • Redis 密码;
  • Sandbox API Key;
  • 对象存储密钥;
  • 邮件服务密码;
  • 各类模型 API Key。

2. 开启 HTTPS

生产环境必须使用 HTTPS,尤其是在登录、API 调用、文件上传下载、知识库管理等场景中,HTTPS 可以避免敏感信息明文传输。

3. 数据卷持久化

必须确认以下目录已持久化:

./volumes/db/data
./volumes/redis/data
./volumes/weaviate
./volumes/app/storage

如果使用 MinIO 或外部对象存储,也要确保对象存储具备备份机制。

4. 定期备份数据库

PostgreSQL 是 Dify 的核心数据存储之一,建议每天定时备份。

示例备份命令:

docker exec dify-db pg_dump -U postgres dify > dify_backup_$(date +%F).sql

恢复示例:

cat dify_backup_2025-01-01.sql | docker exec -i dify-db psql -U postgres dify

5. 监控容器运行状态

可以使用以下命令查看容器状态:

docker compose ps
docker stats

生产环境建议接入 Prometheus、Grafana、Loki、ELK 或其他日志监控系统。

6. 控制公网访问范围

如果 Dify 只用于企业内部,建议仅开放内网访问,或通过 VPN、堡垒机、零信任网关访问。管理后台不建议直接暴露在公网。

7. 限制上传文件大小

知识库上传文件过大可能导致解析慢、任务堆积、存储快速增长。建议根据业务需求设置合理的上传限制。

8. Worker 横向扩展

如果知识库文档较多,或工作流中存在大量异步任务,可以增加 Worker 数量。例如:

docker compose up -d --scale worker=3

但需要注意,具体是否支持横向扩展、服务名称和配置方式,应结合当前 Dify 版本和官方说明。


十四、升级方案

Dify 版本更新较快,升级前务必做好备份。推荐流程如下:

1. 备份数据

docker compose down
tar czvf dify-volumes-backup-$(date +%F).tar.gz ./volumes

备份数据库:

docker compose up -d db
docker exec dify-db pg_dump -U postgres dify > dify-db-backup-$(date +%F).sql

2. 拉取最新代码

cd dify
git pull
cd docker

3. 对比环境变量

新版 .env.example 可能新增配置项。建议对比:

diff .env.example .env

将新增必要配置补充到 .env 中。

4. 拉取最新镜像并启动

docker compose pull
docker compose up -d

5. 检查服务状态

docker compose ps
docker compose logs -f api

升级后需要重点验证:

  • 登录是否正常;
  • 应用是否正常运行;
  • 知识库是否可检索;
  • 模型调用是否正常;
  • 文件上传下载是否正常;
  • 工作流任务是否正常。

十五、常见问题排查

1. 页面无法访问

检查容器是否启动:

docker compose ps

检查端口是否监听:

sudo ss -tunlp | grep 80

检查 Nginx 日志:

docker compose logs -f nginx

2. API 服务启动失败

查看 API 日志:

docker compose logs -f api

常见原因包括:

  • 数据库密码错误;
  • Redis 密码错误;
  • .env 配置缺失;
  • 数据库未初始化完成;
  • 镜像版本和配置文件不匹配。

3. 知识库上传后无法检索

可以检查:

  • Worker 是否正常运行;
  • 向量数据库是否正常;
  • Embedding 模型是否配置;
  • 文档是否解析成功;
  • 是否存在网络访问问题。

查看 Worker 日志:

docker compose logs -f worker

4. 模型调用失败

常见原因包括:

  • API Key 错误;
  • Base URL 配置错误;
  • 容器无法访问模型服务;
  • 模型名称填写错误;
  • 模型服务超时;
  • 代理配置影响访问。

如果模型服务在宿主机上,可以尝试在容器内测试网络:

docker exec -it dify-api sh
curl http://10.0.0.20:8000/v1/models

5. 邮件发送失败

检查 SMTP 配置:

  • SMTP 地址是否正确;
  • 端口是否正确;
  • 是否需要 TLS;
  • 账号密码是否正确;
  • 邮件服务器是否允许第三方客户端登录。

十六、安全加固建议

为了让 Dify 更适合企业生产环境,建议进行以下安全加固:

  1. 最小化暴露端口
    仅对外暴露 Nginx 的 80/443 端口,数据库、Redis、向量数据库不要直接暴露公网。

  2. 使用强密码和随机密钥
    所有密码建议至少 16 位以上,包含大小写字母、数字和特殊字符。

  3. 限制管理员账号数量
    管理员只授予必要人员,并定期检查账号权限。

  4. 接入企业统一身份认证
    如果企业具备条件,可以通过 SSO、LDAP、OAuth 等方式统一身份认证。

  5. 定期审计日志
    对登录、应用发布、API Key 创建、知识库上传、模型调用等操作进行审计。

  6. 隔离模型服务和业务系统
    模型服务、Dify 平台、内部业务系统之间应有清晰的网络边界和访问控制。

  7. 设置 API 调用限流
    对外发布应用 API 时,应结合网关限制调用频率,避免恶意调用导致成本失控。


十七、推荐目录结构

为了方便运维,可以将 Dify 部署目录整理如下:

/opt/dify/
├── dify/                     # Dify 源码目录
│   └── docker/
│       ├── docker-compose.yaml
│       ├── .env
│       ├── nginx/
│       └── volumes/
├── backup/                   # 备份目录
│   ├── db/
│   └── volumes/
├── scripts/                  # 运维脚本
│   ├── backup.sh
│   ├── upgrade.sh
│   └── healthcheck.sh
└── logs/                     # 可选日志目录

备份脚本示例:

#!/bin/bash

DATE=$(date +%F_%H-%M-%S)
BASE_DIR=/opt/dify
BACKUP_DIR=$BASE_DIR/backup

mkdir -p $BACKUP_DIR/db
mkdir -p $BACKUP_DIR/volumes

cd $BASE_DIR/dify/docker || exit 1

docker exec dify-db pg_dump -U postgres dify > $BACKUP_DIR/db/dify-db-$DATE.sql

tar czf $BACKUP_DIR/volumes/dify-volumes-$DATE.tar.gz ./volumes

find $BACKUP_DIR/db -type f -mtime +15 -delete
find $BACKUP_DIR/volumes -type f -mtime +15 -delete

echo "backup finished: $DATE"

设置定时任务:

crontab -e

加入:

0 2 * * * /opt/dify/scripts/backup.sh >> /opt/dify/logs/backup.log 2>&1

十八、总结

Dify 私有化部署是一种非常适合企业构建 AI 应用平台的方案。通过 Docker Compose,可以在较短时间内完成 Dify 的安装、启动和初始化;通过 .env 文件,可以灵活配置数据库、Redis、向量数据库、文件存储、访问域名、邮件服务和安全密钥;通过接入公有云模型或本地模型服务,可以满足不同安全等级和业务场景的需求。

对于测试环境,可以采用单机 Docker Compose 快速部署;对于生产环境,则建议重点关注 HTTPS、密码安全、数据备份、日志监控、权限控制、向量数据库选型以及模型服务稳定性。如果企业知识库规模较大、用户并发较高,建议逐步将 PostgreSQL、Redis、向量数据库、对象存储拆分为独立服务,并结合 Kubernetes 或云原生组件实现更高可用性。

整体来看,Dify 的优势在于降低了大模型应用开发门槛,让业务人员和开发人员可以通过可视化方式快速搭建 AI 应用。私有化部署则进一步增强了企业对数据、安全、模型和系统集成的掌控能力。只要在部署初期做好架构规划、配置管理和安全加固,Dify 完全可以成为企业内部 AI 应用落地的重要基础设施。

目录结构
全文