dify企业版在金融、医疗等强监管行业需全离线部署,必须提前在联网机打包docker镜像、源码、依赖及配置,离线机导入后通过docker load和docker compose up -d启动,并确保内存≥4gb、防火墙开放80/443/5001端口且.env中所有url统一指向内网ip,否则将因镜像缺失、redis未就绪或端口阻塞导致容器重启或上传失败。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在金融、医疗等强监管行业,服务器物理断网是硬性要求,此时必须将Dify企业版所有依赖(包括Docker镜像、前端静态资源、Python包、数据库初始化脚本)全部打包进内网,否则启动时会卡在docker compose up阶段因无法拉取镜像而失败。
准备离线部署包
从联网机器上执行以下操作:克隆Dify官方仓库→进入dify/docker目录→运行docker compose config --services确认服务列表→用docker images --format "{{.Repository}}:{{.Tag}}" | grep -E "(dify|postgres|redis|weaviate)" > services.list提取所有镜像名→执行docker save $(cat services.list) -o dify-offline-images.tar。
这一步必须在联网机完成,【离线机上无法生成镜像包】。若漏掉weaviate或redis镜像,后续启动时容器会反复重启。
同时下载对应版本的Dify源码压缩包(如v1.11.4),解压后将docker/.env.example复制为.env,并用文本编辑器打开,把所有http://localhost替换为http://192.168.100.50(你的局域网静态IP)。
离线机环境初始化
方法一:Ubuntu Server 22.04 LTS(推荐)
安装时勾选“Install OpenSSH server”和“Install Docker”,安装完成后立即执行sudo apt remove snapd && sudo apt autoremove——snap会干扰Docker镜像加载,实测导致weaviate容器启动超时。
方法二:CentOS 7
需手动升级Docker至26.1.4以上版本,执行sudo yum install -y yum-utils && sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo,再sudo yum install docker-ce docker-ce-cli containerd.io。注意:CentOS 7默认使用iptables,必须sudo systemctl stop firewalld && sudo systemctl disable 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|weaviate|redis)"检查容器状态,正常应显示Up (healthy)而非Restarting
如果看到weaviate容器状态为Restarting (1),说明内存不足——该容器最低需4GB可用内存,【宿主机剩余内存低于3.5GB时必然失败】。
配置局域网访问地址
编辑/opt/dify/docker/.env文件,确保以下六项全部指向同一内网IP:APP_WEB_URL=http://192.168.100.50CONSOLE_WEB_URL=http://192.168.100.50APP_API_URL=http://192.168.100.50CONSOLE_API_URL=http://192.168.100.50SERVICE_API_URL=http://192.168.100.50:5001FILES_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/tcpsudo ufw allow 443/tcpsudo ufw allow 5001/tcpsudo ufw enable
CentOS系统执行:sudo firewall-cmd --permanent --add-port=80/tcpsudo firewall-cmd --permanent --add-port=443/tcpsudo firewall-cmd --permanent --add-port=5001/tcpsudo firewall-cmd --reload
这四条命令缺一不可,【未开放5001端口会导致知识库上传文件失败】,前端界面显示“Network Error”但控制台无具体报错。
验证同事可访问
在同局域网另一台Windows电脑浏览器中输入http://192.168.100.50/install,页面加载出Dify初始化向导即成功。
若提示“Connection refused”,检查离线机是否启用host-only网络模式;若页面空白,检查docker ps中dify-web容器日志:sudo docker logs dify-web-1 | tail -20,常见错误是Failed to connect to redis:6379,说明Redis容器未就绪,需等待其健康检查通过后再刷新。











