超详细的私有化安装部署Dify服务以及安装过程中问题处理

一、什么是Dify

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和  LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。它的名称 "Dify" 来源于 "Define" 和 "AI" 的组合,寓意着通过定义来创造 AI 应用。

由于 Dify 内置了构建 LLM 应用所需的关键技术栈,包括对数百个模型的支持、直观的 Prompt 编排界面、高质量的 RAG 引擎、稳健的 Agent 框架、灵活的流程编排,并同时提供了一套易用的界面和 API。这为开发者节省了许多重复造轮子的时间,使其可以专注在创新和业务需求上。

核心特点

可视化编排:
        提供直观的工作流设计界面,无需编写复杂代码即可构建 AI 应用
        支持拖拽式操作,简化提示词工程和模型调优过程
多模型支持:
        支持主流大语言模型如 GPT-4、Claude、Llama 等
        可同时连接多个模型提供商,实现模型间的灵活切换
应用类型丰富:
        支持构建问答系统、文本生成、摘要提取等多种 AI 应用
        可开发对话型应用和文本处理型应用
企业级功能:
        提供 API 访问控制和用量监控
        支持知识库增强,可上传文档作为上下文
        包含用户管理和权限系统

技术架构

Dify 采用现代化的技术栈构建:

  • 前端:React + TypeScript

  • 后端:Python (FastAPI)

  • 数据库:PostgreSQL

  • 缓存:Redis

  • 部署:Docker 容器化

适用场景

企业内部 AI 助手:
        构建基于企业知识库的智能问答系统
        自动化文档处理和报告生成
开发者平台:
        快速原型设计和验证 AI 应用想法
        为开发者提供统一的模型接入层
教育领域:
        创建智能教学助手
        开发自动批改和反馈系统
内容创作:
        辅助写作和创意生成
        多语言内容生产和翻译

与同类产品的比较

相比于其他 LLM 应用平台,Dify 的特点是:

  • 更注重开发者的灵活性和控制权

  • 提供完整的开源解决方案

  • 支持私有化部署,保障数据安全

  • 强调工作流编排能力而非单一功能

Dify 适合需要定制化 AI 应用同时又希望减少底层开发工作的团队和个人开发者。

二、安装部署

环境准备:

说一下我的环境信息:

  • 操作系统: Ubuntu 22.04

  • Docker: 27.5.1

  • Docker Compose: v2.10.2

  • Python: 3.10.12

  • 硬件: 64G+4090

两种安装方式:【docker方式安装】、【源码安装】

方式一:【docker方式安装】:

1.安装 Docker 和 Docker Compose

确保你已经安装了 Docker 和 Docker Compose。如果没有,请先安装。

Docker 和Docker Compose可以参考博主的这篇文章:

【Docker 01】docker安装和基本理论内容-CSDN博客

Docker Compose安装我在这里遇到了很多问题:

当时使用的是apt 安装的,结果在安装dify时,出现了很多报错信息,后来网上搜索是Docker Compose安装方式不对,且版本太低导致的,后来更改了安装方式才好了。

docker-compose up报错KeyError: 'ContainerConfig’的解决办法

先卸载已有的docker-compose:

sudo apt purge docker-compose

然后使用如下方式重新安装:

### install docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.10.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

 这里在执行  

 curl -L "https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

时,一直报错,连接不上服务

这里我下载了离线的包,传上去了,然后才不报错了

https://github.com/docker/compose/releases/download/v2.10.0/docker-compose-Linux-x86_64

https://blog.csdn.net/tabactivity/article/details/146210697

https://blog.csdn.net/lpy13699855019/article/details/139746249

https://blog.csdn.net/qq_44866828/article/details/147549836

2.克隆 Dify 代码仓库

克隆 Dify 源代码至本地环境。

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

3.启动 Dify

3.1 进入 Dify 源代码的 Docker 目录
cd dify/docker
3.2 复制环境配置文件
cp .env.example .env

如果默认端口(80, 5432, 6379等)被占用,修改.env文件中的端口配置:

我是nginx和ssl冲突了:

EXPOSE_NGINX_PORT=8000
EXPOSE_NGINX_SSL_PORT=445# 修改PostgreSQL端口
PG_PORT=5433# 修改Redis端口
REDIS_PORT=6380
3.3 启动 Docker 容器

根据你系统上的 Docker Compose 版本,选择合适的命令来启动容器。

docker-compose up -d
3.4.运行命令

运行命令后,你应该会看到类似以下的输出,显示所有容器的状态和端口映射:

等上一会儿你就会发现部署结果:

[+] Running 10/10✔ Network docker_ssrf_proxy_network  Created                                                                 0.1s ✔ Network docker_default             Created                                                                 0.0s ✔ Container docker-redis-1           Started                                                                 2.4s ✔ Container docker-ssrf_proxy-1      Started                                                                 2.8s ✔ Container docker-sandbox-1         Started                                                                 2.7s ✔ Container docker-web-1             Started                                                                 2.7s ✔ Container docker-weaviate-1        Started                                                                 2.4s ✔ Container docker-db-1              Started                                                                 2.7s ✔ Container docker-api-1             Started                                                                 6.5s ✔ Container docker-worker-1          Started                                                                 6.4s ✔ Container docker-nginx-1           Started                                                                 7.1s

最后检查是否所有容器都正常运行:docker-compose ps

在这个输出中,你应该可以看到包括 3 个业务服务 api / worker / web,以及 6 个基础组件 weaviate / db / redis / nginx / ssrf_proxy / sandbox

 通过这些步骤,你可以在本地成功安装 Dify。

4.访问 Dify

在浏览器输入框里输入:localhost:8000/install,这是为了完成 Dify 的初始配置的。稍等一会儿,就大功告成了。

根据情况输邮箱,用户名,密码 完成本地注册可以开始使用

5.更新 Dify

进入 dify 源代码的 docker 目录,按顺序执行以下命令:cd dify/docker
git pull origin main
docker-compose down
docker-compose pull
docker-compose up -d
同步环境变量配置 (重要!)
  • 如果 .env.example 文件有更新,请务必同步修改你本地的 .env 文件。
  • 检查 .env 文件中的所有配置项,确保它们与你的实际运行环境相匹配。你可能需要将 .env.example 中的新变量添加到 .env 文件中,并更新已更改的任何值。

完整的环境变量集合可以在 docker/.env.example 中找到。 

自定义配置

编辑 .env 文件中的环境变量值。然后重新启动 Dify:

# 停止
docker-compose down
# 开启
docker-compose up -d

https://blog.csdn.net/yinshuilan/article/details/146498600

https://www.jb51.net/os/Ubuntu/985789.html

Docker Compose 部署 - Dify Docs

方式二:【源码方式安装】:

这个参考文档,大体差不多,先不做详细记录了,等有空接着完善。

使用源代码本地启动 - Dify Docs

官方文档:

产品简介 - Dify Docs

dify社区版添加新成员用户账号可以参考这篇文章:

dify社区版添加新成员用户账号_dify账号注册-CSDN博客

dify社区版添加新成员用户账号(适合公司等内部使用)_dify添加用户-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913407.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913407.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

国产DSP,QXS320F280049,QXS320F28377D,QXS320F2800137,QXS320F28034

自定义指令集,自研内核架构,基于eclipse自研IDE,工具链,算法库。 根据自研QXS320F280049,做了600W和2KW数字电源方案,1.5KW电机方案,目前已在市场大量投产。 QXS320F290049应用于数字电源&#…

dotnet publish 发布后的项目,例如asp.net core mvc项目如何在ubuntu中运行,并可外部访问

复制到 Ubuntu 上的是使用 Visual Studio 或 dotnet publish 命令生成的 发布后的输出文件(publish output),而不是原始项目源代码。在这种情况下,确实没有 .csproj 文件,所以不能直接用 dotnet run 启动。但你可以通过…

Linux多线程(十二)之【生产者消费者模型】

文章目录生产者消费者模型为何要使用生产者消费者模型生产者消费者模型优点基于BlockingQueue的生产者消费者模型BlockingQueueC queue模拟阻塞队列的生产消费模型单线程生产消费模型多线程生产消费模型生产者消费者模型 consumer/productor 321原则(便于记忆) 为何要使用生产…

MySQL表的操作(3)

文章目录前言一、创建表创建表时指定属性二、查看表查看表结构查看建表消息三、修改表修改列属性修改列名修改表名四、删除表总结前言 Hello! 那我们乘胜追击,开始 表的操作! 一、创建表 首先创建一个 数据库 testForTable mysql> create database i…

从“人工智障”到“智能助手”:集成为什么能拯救AI用户体验?

几年前,当人们满怀期待地与AI语音助手对话时,常常遭遇令人啼笑皆非的回应——“抱歉,我不明白你在说什么”“请再说一遍”甚至答非所问。AI被戏称为“人工智障”,用户体验一度让人失望。然而,近年来,随着技…

Uniapp 自定义TabBar + 动态菜单实现教程(Vuex状态管理详解)

大家好,我是一诺。今天跟大家分享一下uniapp 封装自定义底部导航栏(TabBar) 过程中的思考和实践。通过本文,你将学会如何打造一个功能完善、可自由定制的TabBar组件! 先看效果: 支持自定义图标和样式动态显…

MySQL数据库主从复制

概述1、master开启二进制日志记录2、slave开启IO进程,从master中读取二进制日志并写入slave的中继日志3、slave开启SQL进程,从中继日志中读取二进制日志并进行重放4、最终,达到slave与master中数据一致的状态,我们称作为主从复制的…

Rancher Server + Kubernets搭建云原生集群平台

目录Rancher Server Kubernets搭建云原生集群平台一、环境准备1、软件准备2、环境规划3、挂载数据盘二、虚拟机初始化基础配置(所有节点都需要操作)1、执行时间服务器脚本(包括配置hostName主机名)2、配置hosts文件3、配置各节点…

Java学习第八部分——泛型

目录 一、概述 (一)定义 (二)作用 (三)引入原因 二、使用 (一)类 (二)接口 (三)方法 三、类型参数 (一&#xf…

定时点击二次鼠标 定时点击鼠标

定时点击二次鼠标 定时点击鼠标 今天分享一个定时点击两次的小工具。 我们在生活中,可能会遇到一些定时点击的任务。比如说在晚上9点去发送一个群发,或者倒计时点击一个按钮。那么可以使用这个工具,仅适用于Windows电脑。 #定时点击鼠标 #倒计…

Linux网络配置与故障排除完全指南

1. ifconfig命令 - 网络接口配置器 ifconfig(interface configurator)是Linux系统中最基础的网络配置工具。该命令可以初始化网络接口、分配IP地址、启用或禁用接口,同时还能查看接口的详细信息。 查看网络接口信息 # ifconfig eth0 …

Python Pytest-Benchmark详解:精准性能测试的利器

在软件开发的迭代过程中,性能优化如同精密手术,需要精准的测量工具。Pytest-Benchmark作为pytest生态中的性能测试插件,凭借其无缝集成能力和专业统计功能,成为Python开发者进行基准测试的首选工具。本文将深入解析其技术特性与实…

60天python训练营打卡day51

学习目标: 60天python训练营打卡 学习内容: DAY 51 复习日 作业:day43的时候我们安排大家对自己找的数据集用简单cnn训练,现在可以尝试下借助这几天的知识来实现精度的进一步提高 学习时间: 2025.07.04 浙大疏锦行…

支持向量机(SVM)在肺部CT图像分类(肺癌检测)中的实现与优化

🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…

YOLOv3-SPP 深度解析:引入 SPP 结构,显著提升目标检测性能!

✅ YOLOv3-SPP 技术详解 一、前言 YOLOv3-SPP 是在 YOLOv3 基础上加入 SPP(Spatial Pyramid Pooling)模块的一种改进版本,旨在提升模型对不同尺度目标的识别能力,尤其是在大目标检测方面表现更优。 它由 Alexey Bochkovskiy 在…

负载均衡--常见负载均衡算法

负载均衡算法可以分为两类:静态负载均衡算法和动态负载均衡算法。 1、静态负载均衡算法包括:轮询,比率,优先权 轮询(Round Robin):顺序循环将请求一次顺序循环地连接每个服务器。当其中某个服务…

深入解析GCC:开源的编译器之王

在编程世界中,编译器是将人类可读代码转化为机器指令的关键桥梁。而GCC(GNU Compiler Collection) 无疑是这个领域最耀眼的明星之一。作为开源世界的基石,它支撑着Linux内核、众多开源项目和商业软件的构建。今天,我们…

https和http有什么区别

目录 一、核心区别:是否基于加密传输 二、底层传输机制差异 三、HTTPS 的加密原理 四、应用场景差异 五、其他细节区别 总结 在网络通信中,HTTP(Hypertext Transfer Protocol,超文本传输协议) 和HTTPS&#xff0…

CSS3 文本效果详解

CSS3 文本效果详解 引言 随着Web技术的发展,CSS3为前端设计师和开发者提供了丰富的文本效果选项。这些效果不仅能够增强网页的美观性,还能提升用户体验。本文将详细介绍CSS3中的文本效果,包括文本阴影、文本描边、文本装饰、文本换行、文本大小写等,并探讨如何在实际项目…

MySQL 中 -> 和 ->> 操作符的区别

简介 MySQL 5.7 或更高版本,可以使用 ->> 和 -> 运算符简化语法这两个操作符都是用于提取 JSON 数据的,但有一些重要区别 -> 操作符 功能:提取 JSON 对象的指定路径的值 返回类型:返回 JSON 类型的值(可…