运行 dify
下载好 dify 源码后,就可以使用 docker 开始运行 dify。
cd docker
cp .env.example .env
docker compose up -d
等待拉取镜像,构建服务,初始化。
如果宿主机的80,443 端口已经被使用了。请在 .env 中修改 dify 的本地映射端口为其他端口。比如:
EXPOSE_NGINX_PORT=8080
EXPOSE_NGINX_SSL_PORT=8443
这个时候,如果宿主机的 nginx 想访问 dify 的服务,可以用宿主机的 ip + dify 本地映射端口来访问。
通过 hostname -I 可以查看宿主机的 ip,第一个就是的。下边给一个 nginx 的示例。
# 映射 WebSocket 升级头
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
server {
listen 80;
server_name xxx.yuepaibao.com;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name xxx.yuepaibao.com;
charset utf-8;
index index.php index.html index.htm;
ssl_certificate /etc/letsencrypt/live/xxx.yuepaibao.com/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/xxx.yuepaibao.com/privkey.pem; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options SAMEORIGIN always;
add_header X-Content-Type-Options nosniff always;
add_header X-Frame-Options "ALLOW-FROM https://www.yuepaibao.com";
add_header Content-Security-Policy "frame-ancestors https://www.yuepaibao.com";
location / {
proxy_pass http://172.17.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host $server_name;
# WebSocket 支持(Dify 实时聊天必需)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
# 超时配置:适配长连接
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
proxy_connect_timeout 60s;
}
# API 路径:增大文件上传限制
location /api {
proxy_pass http://172.17.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
client_max_body_size 100M;
}
location /xxabcxxx.txt {
return 200 "33b454d18da17ebb845c9e046e2c4956";
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
access_log /var/log/nginx/xxx.yuepaibao.com.log main;
error_log /var/log/nginx/xxx.yuepaibao.com.error.log warn;
}

使用 docker compose ps -a 可以查看服务的情况。其中 docker-init_permissions-1 只是在启动的时候调用一下,然后就退出了。
配置管理员账号
运行起来后,输入 http://localhost/ 会进入安装配置管理员界面。设置好邮箱,账号和密码确定好就可以。
开始使用
创建知识库


然后开始配置知识库。
Dify 里的知识库检索必须用 Embedding 模型,作用是:把文字变成向量 → 让系统能计算相似度 → 实现文档检索、问答匹配。
知识库 embedding 模型选择,可以选择使用云端,也可以使用本地的。都是以插件的方式进行安装,配置和使用。
1 选择云端。
| 模型 | 优点 | 缺点 |
|---|---|---|
| OpenAI text-embedding-3-small | 效果顶级、稳定、Dify 原生支持 | 需要付费 API Key |
| 阿里通义 Embedding | 国内速度快、便宜 | 需要阿里云账号 |
| 百度千帆 Embedding | 国内稳定、免费额度高 | 需要百度智能云 |
| 智谱 GLM Embedding | 中文效果好 | 需要 API Key |
先配置云端插件。




插件已经下载安装,还需要配置。去对应的官网获取 apikey 信息,配置进去。
然后添加知识库文件,配置 embedding 模型,继续下去。

参考和相关
https://blog.csdn.net/weixin_28931449/article/details/156266015


