前言

Dify 是一个开源的 LLM 应用开发平台,支持可视化编排 Prompt、Agent、RAG 知识库和工作流,可本地私有化部署。

本文基于官方 Docker Compose 方式,在 Rocky Linux / RHEL 系上完成一键部署。

官方文档:https://docs.dify.ai/en/self-host/deploy/quick-start/docker-compose

项目地址:https://github.com/langgenius/dify

环境要求

硬件(最低)

项目 要求
CPU >= 2 核
内存 >= 4 GiB(生产建议 8 GiB+)
磁盘 建议预留 40 GiB+(镜像 + 向量库 + 知识库文件)

软件

项目 要求
操作系统 Linux(本文以 Rocky Linux 9 为例)
Docker 19.03+
Docker Compose 2.24.0+(必须)

环境配置

1
2
3
4
5
6
systemctl disable --now firewalld
sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config && setenforce 0
# 关闭防火墙和 SELinux

dnf install tree vim bash-completion tar git curl jq -y
# 安装基础工具;jq 用于拉取最新 Release 标签

Docker-CE 环境安装

1
2
3
4
5
6
7
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sed -i 's+https://download.docker.com+https://mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl enable --now docker
docker compose version
# 确认 Compose 版本 >= 2.24.0

参考清华大学源:https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/

Docker 国内镜像加速器配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://proxy.1panel.live",
"https://dockerpull.org",
"https://hub1.nat.tf",
"https://docker.m.daocloud.io"
]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
docker info | grep -A5 "Registry Mirrors"
docker pull hello-world

PS:也可参考 https://songxwn.com/cf-works-DockerHub-Proxy/ 自行搭建镜像加速。

部署 Dify

1. 克隆官方仓库(指定最新 Release)

1
2
3
4
5
cd /opt
git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git
# 需要 git、curl、jq
# 若 GitHub 较慢,可先手动查看 https://github.com/langgenius/dify/releases 后:
# git clone --branch 1.x.x https://github.com/langgenius/dify.git

2. 进入 docker 目录并生成配置

1
2
3
cd /opt/dify/docker
cp .env.example .env
# 默认配置即可启动;生产环境建议修改密钥、密码、端口等

常用 .env 项(按需修改)

vim .env 编辑,重点关注:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 对外暴露端口(默认 80 / 443)
EXPOSE_NGINX_PORT=80
EXPOSE_NGINX_SSL_PORT=443

# 向量库,默认 weaviate
VECTOR_STORE=weaviate

# 数据库类型,默认 postgresql
DB_TYPE=postgresql

# 若改过端口或走反向代理,可配置公网访问地址(可选)
# CONSOLE_API_URL=
# CONSOLE_WEB_URL=
# SERVICE_API_URL=
# APP_API_URL=
# APP_WEB_URL=

单域名 + Nginx 默认部署时,上述 URL 可留空,系统会按请求自动识别。

更多变量说明见:https://docs.dify.ai/en/self-host/deploy/configuration/environments

3. 启动服务

1
2
3
cd /opt/dify/docker
docker compose up -d
# 首次拉取镜像较慢,请耐心等待

启动后会拉起大致如下组件:

  • 核心服务apiapi_websocketworkerworker_beatwebplugin_daemonagent_backend
  • 依赖组件weaviatedb_postgresredisnginxssrf_proxyagent_ssrf_proxysandboxlocal_sandbox
  • 一次性任务init_permissions(初始化存储权限后自动退出,状态为 Exited 属正常)

4. 检查容器状态

1
2
3
4
5
docker compose ps
# 各容器应为 Up / healthy;init_permissions 为 Exited 即可

docker compose logs -f --tail=100
# 排查问题时查看日志

访问与初始化

浏览器打开管理员初始化页面,创建管理员账号:

1
2
3
4
5
# 本机
http://localhost/install

# 服务器
http://你的服务器IP/install

初始化完成后,通过以下地址登录使用:

1
2
3
http://localhost
# 或
http://你的服务器IP

默认对外端口为 80。若 .env 中修改了 EXPOSE_NGINX_PORT,访问时请带上对应端口。

反向代理(可选)

Dify 自带 Nginx 容器。若前面还有宿主机 Nginx / 宝塔 / 1Panel,可再做一层反向代理,注意 WebSocket(协作编辑)与大文件上传超时。

示例(宿主机 Nginx):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
server {
listen 80;
server_name dify.example.com;
client_max_body_size 100m;

location / {
proxy_pass http://127.0.0.1:80;
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 3600s;
proxy_send_timeout 3600s;
}
}

开启 HTTPS 也可参考仓库内 Certbot 说明:docker/certbot/README.md

自定义配置

修改配置后需重启生效:

1
2
3
4
5
6
7
8
cd /opt/dify/docker
# 编辑 .env,或按需从 envs/ 复制模板
# 例:启用 Milvus 向量库
# cp envs/vectorstores/milvus.env.example envs/vectorstores/milvus.env
# 并在 .env 中设置 VECTOR_STORE=milvus

docker compose down
docker compose up -d

说明:

  • 必改/启动项 写在 docker/.env
  • 可选/厂商相关 模板在 docker/envs/,去掉 .example 后缀后编辑
  • .env 中的值优先于 envs/*.env

升级

不同版本升级步骤可能不同,请先阅读目标版本的 Releases 说明。通用流程:

1
2
3
4
5
6
7
8
9
10
11
12
cd /opt/dify
git fetch --tags
git checkout <目标版本标签,如 1.x.x>

cd docker
# 对比 .env.example 与现有 .env,补全新变量
# 可选高级配置同理对比 envs/*.env.example

docker compose pull
docker compose down
docker compose up -d
docker compose ps

升级后务必核对 .env / envs/ 是否有新增或变更项,避免服务因缺变量起不来。

常用运维命令

1
2
3
4
5
6
7
cd /opt/dify/docker

docker compose ps # 查看状态
docker compose logs -f api # 看 API 日志
docker compose restart # 重启全部
docker compose down # 停止并移除容器(数据卷默认保留)
docker compose down -v # 危险:连数据卷一起删,等同清空数据

数据一般保存在 Docker Volume 中,备份时可一并备份 docker/.env 与 volumes 数据。

常见问题

  1. docker compose 报错或版本过低
    使用 docker compose version 确认 >= 2.24.0,并安装 docker-compose-plugin

  2. 镜像拉取超时
    配置国内 Registry Mirror,或自建 Docker Hub 代理。

  3. 页面能开但接口异常 / 白屏
    检查防火墙、端口映射、反向代理是否转发 WebSocket;若改过域名,补全 .env 中的 *_URL

  4. init_permissions 显示 Exited
    正常现象,该容器只负责初始化权限。

  5. 内存不足容器反复重启
    至少保证 4 GiB,生产建议 8 GiB+,并可用 docker stats 观察占用。

技术交流群

发送邮件到 ➡️ [email protected]

或者关注 WX 公众号:网工格物

微信扫码

博客(最先更新)

https://songxwn.com