前言
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 # 首次拉取镜像较慢,请耐心等待
|
启动后会拉起大致如下组件:
- 核心服务:
api、api_websocket、worker、worker_beat、web、plugin_daemon、agent_backend
- 依赖组件:
weaviate、db_postgres、redis、nginx、ssrf_proxy、agent_ssrf_proxy、sandbox、local_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 数据。
常见问题
docker compose 报错或版本过低
使用 docker compose version 确认 >= 2.24.0,并安装 docker-compose-plugin。
镜像拉取超时
配置国内 Registry Mirror,或自建 Docker Hub 代理。
页面能开但接口异常 / 白屏
检查防火墙、端口映射、反向代理是否转发 WebSocket;若改过域名,补全 .env 中的 *_URL。
init_permissions 显示 Exited
正常现象,该容器只负责初始化权限。
内存不足容器反复重启
至少保证 4 GiB,生产建议 8 GiB+,并可用 docker stats 观察占用。
技术交流群
发送邮件到 ➡️ [email protected]
或者关注 WX 公众号:网工格物

博客(最先更新)
https://songxwn.com