超詳細的私有化安裝部署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
英文地址,請注明出處:http://en.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 類型的值(可…