游乐游手机版
首页/AI热点日报/热点详情

离线局域网成功部署运行Dify企业版完整指南

类型:热点整理2026-07-08
针对金融医疗等强监管行业的物理断网环境,需提前打包Dify企业版所有依赖(Docker镜像、源码等)导入内网。核心步骤包括:在联网机器上打包镜像和源码;离线机初始化系统并导入镜像;配置 env文件中各项URL为静态内网IP;开放80、443、5001端口。确保镜像完整、内存充足、Redis就绪,否则容器会反复重启或报网络错误。

在金融、医疗这类强监管行业,服务器物理断网是硬性要求,这意味着Dify企业版的所有依赖——Docker镜像、前端静态资源、Python包、数据库初始化脚本——都得提前打包好,一次性塞进内网。否则,执行docker compose up时,系统一发现拉不到镜像,直接就卡死在启动阶段,连个像样的报错都不给。

分享一个实战经验:如果离线部署后容器反复重启,或者上传文件总报“Network Error”,十有八九是镜像没打全、Redis没就绪,或者防火墙端口没放开。下面把完整的操作流程拆开说,照着做能省不少排查时间。

如何在离线局域网环境中成功部署并运行Dify企业版

准备离线部署包

在联网机器上完成以下操作:先克隆最新的Dify仓库,进入dify/docker目录,运行docker compose config --services确认服务列表,然后用docker images --format "{{.Repository}}:{{.Tag}}" | grep -E "(dify|postgres|redis|wea viate)" > services.list提取所有镜像名,最后执行docker sa ve $(cat services.list) -o dify-offline-images.tar打包。

切记,这一步只能在联网机器上完成,离线机是干不了这活的。如果漏掉了wea viate或redis的镜像,后续启动时容器会反复重启,日志里根本看不出原因。

同时下载对应版本的Dify源码压缩包(比如v1.11.4),解压后把docker/.env.example复制为.env,用文本编辑器打开,把所有的http://localhost替换成你的局域网静态IP,比如http://192.168.100.50。这一步不做好,后面前端页面就是白屏。

离线机环境初始化

推荐直接用Ubuntu Server 22.04 LTS,安装时记得勾选“Install OpenSSH server”和“Install Docker”。装完立刻执行sudo apt remove snapd && sudo apt autoremove——snap这东西会干扰Docker镜像加载,实测导致wea viate容器启动超时,坑得很。

如果非要用CentOS 7,那得手动升级Docker到26.1.4以上版本。先装yum-utils,然后加repo,再装docker-ce。另外CentOS 7默认用iptables,必须把firewalld停掉并禁用,否则Docker网络桥接不畅通,容器之间互相访问不了。

导入镜像并启动服务

dify-offline-images.tar和源码目录拷到离线机的/opt/dify下,然后执行sudo docker load -i /opt/dify/dify-offline-images.tar,等终端返回“Loaded image(s): …”共12行确认信息。接着进入/opt/dify/docker目录,运行sudo docker compose up -d

启动后马上用sudo docker ps -a | grep -E "(dify|wea viate|redis)"检查容器状态,正常应该显示Up (healthy)。如果看到wea viateRestarting (1),那基本就是内存不足——这个容器最低需要4GB可用内存,宿主机剩余低于3.5GB必然挂掉。

配置局域网访问地址

编辑/opt/dify/docker/.env文件,确保下面六项全部指向同一个内网IP:

APP_WEB_URL=http://192.168.100.50
CONSOLE_WEB_URL=http://192.168.100.50
APP_API_URL=http://192.168.100.50
CONSOLE_API_URL=http://192.168.100.50
SERVICE_API_URL=http://192.168.100.50:5001
FILES_URL=http://192.168.100.50/files

保存后执行sudo docker compose restart,等30秒,用curl -I http://192.168.100.50/install验证,返回HTTP 200就对了。

开放防火墙端口

Ubuntu系统:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 5001/tcp
sudo ufw enable

CentOS系统:
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=5001/tcp
sudo firewall-cmd --reload

这四个端口缺一不可。5001端口是专门给知识库上传文件用的,没开放的话前端界面会显示“Network Error”,但控制台没有任何具体报错,排查起来相当头疼。

验证同事可访问

在同局域网另一台Windows电脑的浏览器里输入http://192.168.100.50/install,页面能加载出Dify初始化向导就说明部署成功了。

如果提示“Connection refused”,检查一下离线机是否启用了host-only网络模式;如果页面空白,用sudo docker logs dify-web-1 | tail -20看日志,常见错误是Failed to connect to redis:6379,这说明Redis容器还没完全就绪,等它健康检查通过后再刷新即可。

来源:https://www.php.cn/faq/2786518.html?uid=1589237

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。