Dify源码启动

前置

Clone Dify 代码:

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

在启用业务服务之前,我们需要先部署 PostgresSQL / Redis / Weaviate(如果本地没有的话),可以通过以下命令启动:

1
2
cd docker
docker compose -f docker-compose.middleware.yaml up -d

环境安装(conda)

使用poetry环境请参考:poetry安装依赖

创建python环境,dify基于python3.10开发

1
conda create --name dify python=3.10 --channel https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

切换环境

1
conda activate dify

Dify API 服务使用 Poetry 来管理依赖,执行以下命令安装依赖

1
2
3
pipx install poetry
如果不使用poetry则:
pip install -r requirements.txt

:::
如果未安装Poetry则先安装:

sudo apt update sudo apt install pipx pipx ensurepath

pipx install poetry
:::

其他环境依赖

:::
sudo apt-get update

sudo apt-get install ffmpeg
:::

问题

如果指示“++未找到私钥++”的错误表明在查找指定租户 ID 的私钥时存在问题。

执行以下命令重置:

flask reset-encrypt-key-pair

启动

参考:dify源码启动

执行数据库迁移

将数据库结构迁移至最新版本。

1
2
poetry shell
flask db upgrade

启动 API 服务

1
flask run --host 0.0.0.0 --port=5001 --debug

前端页面部署

进入 web 目录

1
cd web

安装依赖包

1
npm install

配置环境变量。在当前目录下创建文件 .env.local,并复制.env.example中的内容。根据需求修改这些环境变量的值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# For production release, change this to PRODUCTION
NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
# The deployment edition, SELF_HOSTED
NEXT_PUBLIC_EDITION=SELF_HOSTED
# The base URL of console application, refers to the Console base URL of WEB service if console domain is
# different from api or web app domain.
# example: http://cloud.dify.ai/console/api
NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api
# The URL for Web APP, refers to the Web App base URL of WEB service if web app domain is different from
# console or api domain.
# example: http://udify.app/api
NEXT_PUBLIC_PUBLIC_API_PREFIX=http://localhost:5001/api

# SENTRY
NEXT_PUBLIC_SENTRY_DSN=
NEXT_PUBLIC_SENTRY_ORG=
NEXT_PUBLIC_SENTRY_PROJECT=

构建代码

1
npm run build

启动 web 服务

1
2
3
4
5
npm run start
# or
yarn start
# or
pnpm start