服务器部署dify
使用宿主反向代理转发,先删除docker目录中的nginx文件夹,和docker-compose.yaml中的nginx项,并添加web和api的端口暴露端口
docker-compose.yaml
services:
api:
ports:
- "5001:5001"
web:
ports:
- "3000:3000"
plugin_daemon:
PYTHON_ENV_INIT_TIMEOUT: 640
PLUGIN_MAX_EXECUTION_TIMEOUT: 900
宿主中nginx的转发
# dify转发
server {
listen 443 ssl;
server_name ai.usmm.cn;
ssl_certificate /home/ssl/ai.usmm.cn.pem;
ssl_certificate_key /home/ssl/ai.usmm.cn.key;
client_max_body_size 200M;
location /console/api {
proxy_pass http://127.0.0.1:5001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location /api {
proxy_pass http://127.0.0.1:5001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location /v1 {
proxy_pass http://127.0.0.1:5001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location /files {
proxy_pass http://127.0.0.1:5001;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location /explore {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location /e/ {
proxy_pass http://127.0.0.1:5002;
proxy_set_header Host $host;
proxy_set_header Dify-Hook-Url $scheme://$host$request_uri;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port $server_port;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_buffering off;
proxy_read_timeout 3600s;
proxy_send_timeout 3600s;
}
}
重置管理员账号密码
假设docker-api-1是api容器名称docker exec -it docker-api-1 flask reset-password
然后根据提示重置
停止和运行
cd dify/docker
cp .env.example .env
sudo docker compose up -d
启动并运行容器,也可以作为重启sudo docker compose down
# 停止并移除现有的容器
插件如果一直无法安装成功
安装插件时要等待一会等插件生效
去插件市场直接下载,然后点头像旁边的插件卸载原插件
检查错误
sudo docker logs docker-plugin_daemon-1
嵌入网页修改
<iframe :src="embedUrl" style="width: 100%; height: calc(100vh - 5px); min-height: 700px" frameborder="0" allow="microphone">
</iframe>
实现写ppt功能
创建一个flask虚拟环境和服务,来实现dify调用api
from flask import Flask, request
import time
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload_markdown1():
content = request.get_data(as_text=True)
file_name = str(int(time.time())) + ".md"
with open(f"/home/ai/dify/docker/markdown/{file_name}", 'w', encoding='utf-8') as f:
f.write(content)
return f'已根据您提供的素材文件生成对应的PPT!\n下载链接:https://files.fyinfor.com/{file_name}?pptx'
@app.route('/upload2', methods=['POST'])
def upload_markdown2():
content = request.get_data(as_text=True)
file_name = str(int(time.time())) + ".md"
with open(f"/home/ai/dify/docker/markdown/{file_name}", 'w', encoding='utf-8') as f:
f.write(content)
return f'根据就诊过程生成患者病历成功!\n下载链接:https://files.fyinfor.com/{file_name}?pdf'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5004)
docker-compose.yaml 创建服务
marp:
image: marpteam/marp-cli:latest
container_name: marp
restart: always
volumes:
- ./markdown:/home/marp/app
ports:
- 5005:8080
environment:
- LANG=${LANG}
command: -s .
networks:
- ssrf_proxy_network
- default
并在docker目录下创建markdown目录用于存放md文件
设置nginx将域名请求转发给marp容器
server {
listen 443;
server_name files.fyinfor.com;
ssl_certificate /home/ssl/files.fyinfor.com.pem;
ssl_certificate_key /home/ssl/files.fyinfor.com.key;
#location / {
# root /home/ai/docker/markdown;
# autoindex on;
# autoindex_exact_size on;
# autoindex_localtime off;
#}
location / {
proxy_pass http://127.0.0.1:5005; # 将所有请求转发到本地8880端口
proxy_set_header Host $host; # 传递Host头信息
proxy_set_header X-Real-IP $remote_addr; # 传递真实IP
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 传递代理信息
}
}