信创 ctyunos 内网部署 dify
背景:由于项目需求,本人需要在 ctyunos 2.0.1 信创系统 + 内网环境中搭建 dify用于应用本地大模型。本篇用于记录整个搭建流程,以供参考。P.S. 涉及 ctyunos 本地测试可参考。
背景:由于项目需求,本人需要在 ctyunos 2.0.1 信创系统 + 内网环境中搭建 dify 用于应用本地大模型。本篇用于记录整个搭建流程,以供参考。
P.S. 涉及 ctyunos 本地测试可参考在 win11 (x86) docker destop 部署 ctyunos 2.0.1 (aarch64) 环境做(伪)容器嵌套。
目录
1. 安装 docker-ce
需要在联网环境下载 docker-ce 所需依赖文件,并导入至内网环境进行离线安装。
由于担心 dify 项目无法被老版本 docker 和 docker-compose 带动,因此选择直接安装推荐的 docker-ce。经实战测试可行,下面为 docker-ce 24.0.6-1 版本的安装步骤(其他版本不保证 ctyunos 可支持)。
1.1. 获取依赖 rpm 文件
下载地址:
1、ctyunos 官方下载源 [everything、update、extras]
2、Docker CE 官方下载源 [stable]
3、centos7 依赖下载源:非 x86 的其他架构阿里镜像、x86 架构阿里镜像
- 请根据 ctyunos 服务器环境已安装情况选择性下载下述依赖。具体查询依赖是否已安装可通过命令
yum list install | grep 依赖包名称查看。
| 依赖名称 | 版本 | 下载源 |
|---|---|---|
| container-selinux | 2.138.0-1 | ctyunos – everything |
| iptables | 1.8.5-2 | ctyunos – everything |
| iptables-help | 1.8.5-2 | ctyunos – everything |
| libcgroup | 0.42.2-1 | ctyunos – everything |
| policycoreutils | 3.1-6 | ctyunos – everything |
| selinux-policy | 3.14.2-64 | ctyunos – everything |
| selinux-policy-targeted | 3.14.2-64 | ctyunos – everything |
| tar | 1.32-1 | ctyunos – everything |
| fuse-overlayfs | 0.7.6-2 | ctyunos – update |
| fuse3 | 3.9.2-11 | ctyunos – update |
| fuse3-help | 3.9.2-11 | ctyunos – update |
| docker-ce | 24.0.6-1 | docker ce – stable |
| docker-buildx-plugin | 0.11.2-1 | docker ce – stable |
| docker-ce-cli | 24.0.6-1 | docker ce – stable |
| docker-ce-rootless-extras | 24.0.6-1 | docker ce – stable |
| containerd.io | 1.6.24-3.1 | docker ce – stable |
| docker-compose-plugin | 2.21.0-1 | docker ce – stable |
| slirp4netns | 0.4.3-4 | centos7 – packages |
1.2. rpm 离线安装
参考:Linux RPM包安装、卸载和升级(若安装有问题请按该链接方法卸载)
- 利用命令
rpm -ivh --nodeps rmp依赖包全程(空格分割多个)在内网环境中进行安装。- -i:安装
- -v:显示更详细的信息
- -h:打印,显示安装进度
- –nodeps:不检测依赖性安装
- 安装结束后通过命令
docker version查看是否成功安装(只要不提示无法识别 docker 即算成功安装,由于服务未启动,存在 server 的错误提示)。 - 通过命令
sudo systemctl start docker启动 docker server 服务。(可通过sudo systemctl enable docker设置开机自启动)
1.3. 更改存储位置【推荐】
鉴于 dify 所需容器较多,因此提前变更 docker 的存储路径,将其迁移到挂载较多空间的数据盘下。
参考:
- Docker 存储目录迁移的三种方式(本文采用最后一种)
- Docker 空间清理 + 迁移
- 通过命令
docker info查看 Docker Root Dir 存储路径,通常默认存储在 /var/lib/docker。 - 通过命令
sudo systemctl stop docker.service停止 docker 服务。 - 通过命令
sudo cp -r /var/lib/docker/* 新的存储路径复制原始 docker 相关所有文件至新的存储路径(即希望后续 docker info 显示的 Docker Root Dir 路径)。 - 新增或修改 /etc/docker/daemon.json 文件改变 docker 守护进程配置:
{
"data-root": "/data/docker"
}
- 通过命令
sudo systemctl daemon-reload加载上述更新后的 daemon.json 配置,再通过命令sudo systemctl restart docker.service重新启动 docker 服务。 - P.S. 若当前非 root 用户查询 docker 命令可能涉及权限问题,可添加用户到 docker 组解决,或
chmod -R 777 新的存储路径开放所有 docker 文件权限(不推荐)。
2. 部署 dify
需要在联网环境下载指定版本的 dify 工程项目,并导入至内网环境。
2.1. 获取项目文件
- 进入 dify 开源 GitHub 项目中 release 下载最新稳定版本的 tar.gz 文件,后续导入内网环境解压。本文选择部署的是 v1.10.1 版本。

2.2. 获取并导入镜像
- 下面为 v1.10.1 版本必要镜像及版本,需提前在联网环境下载,具体流程参考:直接下载镜像的 tar 包。其他额外需求详见 dify 项目中 docker/docker-compose.yaml 文件中各个 image 的要求。
| 镜像名称 | 版本 |
|---|---|
| langgenius/dify-api | 1.10.1 |
| langgenius/dify-web | 1.10.1 |
| langgenius/dify-plugin-daemon | 0.4.1-local |
| langgenius/dify-sandbox | 0.2.12 |
| postgres | 15-alpine |
| redis | 6-alpine |
| semitechnologies/weaviate | 1.27.0 |
| ubuntu/squid | latest |
| nginx | latest |
- 通过命令
docker load -i 镜像tar.gz包在内网中依次导入上述下载的镜像文件。
2.3. 启动 dify
进入 dify 项目的 docker 目录中进行配置和启动操作。
参考:dify 官网本地部署 FAQ
- 启动前通过命令
cp .env.example .env复制并配置环境变量文件。- 若需要变更网页代理映射端口可参考修改 nginx 访问端口(建议使用前完成环境参数的各项配置,否则迁移较麻烦)。
- 其他前置配置需根据官网 release 文件说明进行操作。
- 对于 v1.10.1 版本,需要额外执行命令
sudo chown -R 1001:1001 ./volumes/app/storage,否则打开网页会报错。
- 对于 v1.10.1 版本,需要额外执行命令
- 前置配置结束后,通过命令
docker compose up -d启动容器。待容器启动结束后可通过命令docker ps查看是否启动正常,若有问题可通过命令docker logs查看启动日志详情。

- 访问 http://localhost/install 进行 dify 管理员配置,后续可通过 http://localhost/sign 进行登录。
- 若通过内网其他通联服务器访问,则需要将 localhost 改为启动 dify 的服务器 ip 地址。
- 若变更了 nginx 映射端口,则需要在访问时加上指定端口。
3. 安装 dify 插件
需要联网环境下载并编译插件,再通过本地安装插件方式在内网安装。
3.1. 模拟环境编译插件
- 在联网环境中到 GitHub 下载 dify-plugin-repackaging 项目用于编译打包 dify 插件。
- 编译命令
./plugin_repackaging.sh local 插件difypkg包。建议采用 miniconda 配置 python>=3.12 的环境编译。 - 注意:鉴于该文本自动识别环境架构,因此建议联网编译环境尽量模拟内网环境。
- 方案一【推荐】:本地启动 ctyunos 容器环境进行打包(环境可参考在 win11 (x86) docker destop 部署 ctyunos 2.0.1 (aarch64) 环境)
- 方案二:同内网服务器 cpu 架构的 OpenEuler 或 centos 虚拟机进行编译打包(ctyunos 与上述两个架构类似)。
- 方案三:写死 shell 脚本的架构直接编译,不保证打包插件可迁移。
3.2. 配置 .env 环境参数
- 通过命令
docker compose down下线 dify,并重新配置环境参数:- 【必须】取消插件验证:
FORCE_VERIFYING_SIGNATURE=false和ENFORCE_LANGGENIUS_PLUGIN_SIGNATURES=false - 插件传输与安装最大限制:
NGINX_CLIENT_MAX_BODY_SIZE=500M和PLUGIN_MAX_PACKAGE_SIZE=52428800
- 【必须】取消插件验证:
- 配置好后通过命令
docker compose up -d重新启动服务。
3.3. 本地安装插件
- 将 3.1 小节中编译打包好的插件(带有 offline 字样的 difypkg 包)导入内网环境,并在插件中本地插件项加载。

更多推荐


所有评论(0)