Dify 公司内网部署教程及踩坑记录
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 内网环境... |
推荐分享

- 1情趣大湿丨图解100种嘿嘿嘿... 26042
- 2明日花キララ:明日花绮罗年度... 8806
- 3明日花キララ(明日花绮罗)经... 4885
- 4君子兰什么品种最名贵 十大名... 4741
- 5十大致癌花卉排行榜,哪些花卉... 4007
- 6世界上最名贵的10种兰花图片... 3899
- 7花圈挽联怎么写? 3876
- 8李晓明工笔牡丹(魏紫)《牡丹... 3796
- 9兰花叶子扭的是什么兰 3778
- 10鲜花养护:帝王花的养殖方法以... 3748




