首页 分享 Dify 公司内网部署教程及踩坑记录

Dify 公司内网部署教程及踩坑记录

来源:花匠小妙招 时间:2026-06-02 05:03

Dify 内网离线部署全攻略:从镜像迁移到踩坑复盘

作为一个常年和公司内网打交道的开发者,最近接到了在离线服务器部署 Dify 开源智能体平台的需求。Dify作为非常火的开源智能体平台,最近已经更新到了2.0.0,增强了不少知识库的能力。相信不少公司都会需要Dify来做智能体的任务,小伙伴们也会因为部署过程中的报错感到头疼。由于公司网络管控严格,外网访问需要层层审批,常规的在线部署流程完全行不通。经过两天的摸索踩坑,我成功跑通了全流程,这篇就以第一人称记录下整个过程 —— 既是给新手的教程,也是自己的复盘笔记。

一、部署前的核心困境与解决思路

公司的 Linux 服务器处于完全离线状态,既不能拉取 GitHub 代码,也无法 下载 Docker 镜像;而本地办公电脑虽能联网,却受权限限制无法直接对接服务器。

核心突破点很明确:用一台可联网的个人电脑当 “中转站”,先在上面完成代码拉取、镜像下载等准备工作,再通过 U 盘等物理介质将资源转移到离线服务器,最后在服务器上完成配置与启动。整个过程就像 “离线安装包” 的定制与部署,关键在于镜像的完整迁移和配置的精准适配。

二、联网电脑:做好 “资源 中转站 ” 的准备

这一步的目标是打包好 Dify 运行所需的所有 “原材料”,包括代码和 Docker 镜像,为后续转移做准备。

拉取 Dify 源码

首先确保电脑上安装了 Git、Docker 和 Docker Compose(版本建议 Docker 28.10+、后续服务器也需满足这个要求)。打开终端执行命令:

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

cd dify/docker

这里有个小提醒:如果后续需要切换 向量数据库 (比如用 Weaviate 替代默认库),要在这一步修改 docker-compose.yaml 中的镜像配置,我打算在之后的博客专门讲这个,这次先按默认配置来。

下载 Docker 镜像

进入 docker 目录后,直接执行镜像拉取命令:

docker compose pull

此时终端会开始批量下载 Dify 依赖的所有镜像,包括后端服务、数据库、缓存等。可以通过 docker images 命令查看下载进度,等所有镜像都显示 “下载完成” 后,就可以准备打包了。

打包镜像:避坑关键一步

镜像下载完成后,必须打包成 tar 文件才能转移。这里藏着一个我踩过的大坑,先直接上正确操作:

第一步:生成纯净的镜像列表

执行以下命令获取所有有效镜像(排除 <none> 标签的无效镜像):

# 生成包含 Repository:Tag 的镜像列表

docker images --format "{{.Repository}}:{{.Tag}}" | grep -v "<none>" > image_list.txt

第二步:批量保存镜像

docker save -o all_images.tar $(cat image_list.txt)

踩坑复盘:为什么必须带 Repository:Tag?

第一次尝试时,我直接用 docker save -o all_images.tar $(docker images -q) 按镜像 ID 保存,结果到服务器加载后,所有镜像都没有 Repository 和 Tag 标签。启动时 Docker Compose 找不到对应的镜像,直接报错 “image not found”。

后来才明白:Docker 启动容器时是通过 “Repository:Tag” 来匹配镜像的,只按 ID 保存会丢失这些关键标识。所以必须用 Repository:Tag 格式保存,这是镜像迁移的核心原则。

如果你的电脑上还有其他无关镜像,建议单独筛选 Dify 相关镜像,避免打包文件过大,把不必要的镜像也打包进去。。

准备转移资源

将以下两个文件 / 文件夹复制到 U 盘:

打包好的镜像文件:all_images.tar

Dify 源码文件夹:dify/(整个文件夹直接复制,后续配置还要用)

到这里,联网电脑的任务就彻底完成了,接下来的重点转移到离线服务器。

三、离线服务器:配置与启动的实战操作

服务器系统是 Linux(我用的 CentOS 7),默认已安装 Docker 和 Docker Compose(如果没装,需要提前在联网电脑下载对应系统的安装包,用 U 盘拷贝过来手动安装)。

转移资源到服务器

将 U 盘连接到服务器,把 all_images.tar 和 dify 文件夹复制到服务器的目录下,然后进入目录:

cd dify/docker

加载 Docker 镜像

执行加载命令,将镜像导入服务器的 Docker 环境:

docker load -i all_images.tar

加载完成后用 docker images 检查,确认所有镜像都带有正确的 Repository 和 Tag,和联网电脑上的列表一致,这一步就没问题了。

关键配置:解决权限与内网适配问题

这是整个部署过程最容易出问题的环节,我前后调试了三次才成功,核心是修改两个文件:.env 和 docker-compose .yaml。

先改 .env 文件:适配内网环境

进入 dify/docker 目录,找到 .env.example 文件,复制一份并重命名为 .env:

cd dify/docker cp .env.example .env

编辑 .env 文件,重点修改以下配置(内网部署必改项):

# 1. 配置 PyPI 国内镜像(解决内网无法安装 Python 依赖的问题)

PIP_MIRROR_URL=https://pypi.tuna.tsinghua.edu.cn/simple

这些配置里,PIP_MIRROR_URL 是内网部署的关键 —— 如果不改,后续在安装相应插件时,会尝试访问外网 PyPI 源,直接超时失败。

再改 docker-compose.yaml:解决权限报错

这是我踩过的最棘手的坑:按默认配置启动时,容器总是初始化失败,查看日志显示 “权限不足”。最终解决方法是在 docker-compose.yaml 的每个 service 节点下添加两个配置项:

以 api 服务为例,修改后的配置如下:

services:

api:

   image: langgenius/dify-api:latest

  restart: always

  privileged: True

  # 新增:赋予容器 root 权限

  security_opt: # 新增:禁用 Seccomp 安全限制

- seccomp:unconfined

depends_on:

- db

- redis

env_file:

- .env

  volumes:

- ../uploads:/app/uploads

- ../database/init:/app/database/init

配置原因揭秘

privileged: True:允许容器以 root 权限操作宿主机的目录挂载。Dify 需要挂载 uploads 等数据卷存储文件,内网服务器的 SELinux 安全策略通常更严格,不加这个参数会出现 “cannot open directory: Permission denied” 错误。

security_opt: - seccomp:unconfined:禁用 Docker 的默认安全沙盒限制。部分内网服务器的内核安全配置会拦截容器内的系统调用,导致初始化失败,关闭 Seccomp 限制后能解决这个问题(虽然不符合最小权限原则,但内网环境下是快速解决问题的有效方案)。

启动 Dify 服务

配置完成后,就可以启动服务了:

# 启动所有默认容器 docker compose up -d

# 如果切换了向量数据库,需指定 profile,比如用 Weaviate:

# docker compose --profile weaviate up -d

启动后不要急着访问,先执行 docker ps 查看容器状态,确保所有容器都是 “Up” 状态。如果有容器退出,用这个命令查日志定位问题:

# 查看 api 容器的最新 100 行日志(api 是核心服务,最容易出问题)

docker logs -n 100 docker-api-1

我第一次启动时 db 容器退出,查日志发现是 .env 里的数据库密码太简单,修改成复杂密码后就正常了。

验证部署成功

在服务器浏览器输入 http://localhost:8080,或在同一内网的其他电脑输入 http://服务器内网IP:8080,如果能看到 Dify 的登录页面,说明部署成功!首次登录会需要输入admin的邮箱。

四、部署心路与后续计划

整个过程最挫败的是第一次镜像打包失败和权限报错,前前后后花了 4 个小时排查,但解决问题的瞬间特别有成就感 —— 内网部署的核心就是 “预判问题”:提前想到镜像标识、权限限制、内网源适配这些点,就能少走很多弯路。

后续我打算围绕 Dify 写一个系列:

向量数据库切换实战(Weaviate/Elasticsearch 配置教程)

离线服务器升级指南(如何更新 Dify 版本)

性能优化技巧(针对低配置服务器的调优方案)

如果大家有具体的问题,欢迎在评论区留言,我会优先在后续文章里解答!

相关知识

保姆级教程!Linux 内网环境离线安装 Docker(含 docker
Linux跨平台部署DotNetCore记录
花生壳内网穿透实战
ArkTs api8 开发踩坑记录及解决方案
Win11+Ubuntu20.04双系统安装教程(避坑版)
【教程】巡检巡更/打卡/消防记录二维码标签的建立及如何使用(一)
别再手动写用例了!未来测试设计的核心是“教AI怎么思考”
那些年,我踩过的坑与悟出的道:获取热搜长尾词教程平台大比拼
DeepSeek 付费教程火了?“割韭菜”套路曝光
DeepSeek 付费教程火了?“割韭菜”套路曝光!

原文链接: Dify 公司内网部署教程及踩坑记录 https://www.huajiangbk.com/newsview2606744.html

分类:花卉
上一篇: 学插花最基本要准备哪些材料和工具...下一篇: 保姆级教程!Linux 内网环境...

推荐分享