1.安装dify :git clone https://gitee.com/dify_ai/dify.git
cd dify/docker
cp .env.example .env
!修改端口号: vi .env 中 EXPOSE_NGINX_PORT=888
docker compose up -d
注意:如果 up 报错,则修改vi docker-compose.yml ,让 镜像指向国内的docker.1ms.run/...,例用deepseek 生成 一下1ms开始的文件即可。
用 http://ip 打开并配置用户
如果新建管理员时报权限错误,执行以下语句:
# 创建 volumes 目录结构 mkdir -p volumes/app/storage # 创建必要的子目录 mkdir -p volumes/app/storage/privkeys mkdir -p volumes/app/storage/uploads mkdir -p volumes/app/storage/temp mkdir -p volumes/app/storage/logs # 设置正确的权限 sudo chown -R 1000:1000 volumes/ sudo chmod -R 755 volumes/ sudo chmod 777 volumes/app/storage/privkeys
或在 docker-compose.yaml 中
# The postgres database.
db:
image: postgres:15-alpine
restart: always
privileged: true # 加这一行。
---------------------------------------
更新DIFY:
cd dify/docker
docker compose down
git pull origin main
docker compose pull
docker compose up -d
---------------------------------------------
配置https域名
a.将证书上传至dify/docker/nginx/ssl 目录下
b.修改 dify/docker 下面的.env文件
# ------------------------------ NGINX_SERVER_NAME=XXX # 这里填写自己的域名 NGINX_HTTPS_ENABLED=true # 改成true ... NGINX_SSL_CERT_FILENAME=YYY.crt # 这里是下载的证书文件 NGINX_SSL_CERT_KEY_FILENAME=ZZZ.key # 这里是下载的证书文件注意一下:
如果是从别的服务器反向代理到这个dify ip,则不需要在这里做以上的配置,直接在做反向代理的nginx 加cert 等操作即可。
让容器中的nginx重启:docker exec nginx nginx -t && docker exec nginx nginx -s reload
2.安装ADH: 在安装目录执行:
git clone https://gitee.com/chen_jian1994/awesome-digital-human-live2d.git
进行目录,执行:docker compose -f docker-compose-quickStart.yaml up -d
访问:http://localhost:8880
3.在Dify平台上创建一个ChatFlow,三个组件,开始 LLM 结束。
点发布->访问 ->API ,把 url 及 key ,粘到 ADH平台->设置->AI智能体->Dify里即可。
修改默认值:/configs/config_template.yaml 中设置为difyAgent.yaml,并修改difyAgent.yaml
中的值即可。
如果内存紧张,请申请点磁盘空间,先看看有没有swapon --show:
再执行:
# 1. 创建8GB交换文件 sudo fallocate -l 8G /swapfile # 2. 设置权限 sudo chmod 600 /swapfile # 3. 格式化为交换空间 sudo mkswap /swapfile # 4. 启用新的交换文件 sudo swapon /swapfile # 5. 添加到 fstab 使其永久生效 ⭐重要步骤⭐ echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
更换大小:
# 禁用交换文件 sudo swapoff /swapfile # 删除旧的交换文件 sudo rm /swapfile # 验证是否已禁用 free -h
修改优先级:
vi /etc/sysctl.conf
vm.swappiness = 60 # 0-100 值越大,赵用swap
sysctl -p # 配置生效。
4.JIRA 安装备忘:
mkdir -p /mydata/docker/jira/{data,logs,home}
权限: chmod -R 333 /{...}
docker compose :
services: jira: image: cptactionhank/atlassian-jira-software container_name: jira ports: - "8080:8080" environment: - JVM_MINIMUM_MEMORY=512m - JVM_MAXIMUM_MEMORY=1024m - JAVA_OPTS=-Djava.awt.headless=true volumes: - /mydata/docker/jira/home:/var/atlassian/jira - /mydata/docker/jira/logs:/opt/atlassian/jira/logs restart: unless-stopped networks: - jira-network networks: jira-network: driver: bridgehttp://localhost:8080 开始配置
5.Neo4j 图数据库安装使用
docker pull neo4j # 创建neo4j容器 docker run -it -d -p 7474:7474 -p 7687:7687 \ -v /mydata/docker/neo4j/data:/data \ -v /mydata/docker/neo4j/logs:/logs \ -v /mydata/docker/neo4j/conf:/var/lib/neo4j/conf \ -v /mydata/docker/neo4j/import:/var/lib/neo4j/import \ -v /mydata/docker/neo4j/plugins:/var/lib/neo4j/plugins \ -e NEO4J_AUTH=neo4j/password \ --name neo4j neo4j 或者使用docker-compose.yml :
services: neo4j: image: neo4j # 推荐使用较新的稳定版本 container_name: neo4j ports: - "7474:7474" # Neo4j Browser 和 HTTP API - "7687:7687" # Bolt 协议(驱动连接) environment: - NEO4J_AUTH=neo4j/password # 设置初始密码,建议修改为更安全的密码 - NEO4J_ACCEPT_LICENSE_AGREEMENT=yes # 接受许可协议 volumes: - /mydata/neo4j/data:/data # 持久化图数据 - /mydata/neo4j/logs:/logs # 日志文件 - /mydata/neo4j/plugins:/plugins # 插件目录(如 APOC) - /mydata/neo4j/import:/import # 导入 CSV 等文件的目录 - /mydata/neo4j/conf:/var/lib/neo4j/conf # 配置文件(可选) restart: unless-stopped
http://ip:7474/
安装好后,安装插件:apoc ,下载地址:http://doc.we-yun.com:1008/doc/
按理说将 apoc-5.12.0-core.jar 复制 到 /mydata/neo4j/plugins 下,docker restart neo4j 就可以了。但以下命令可以检查挂载是否是成功的,
docker exec -it neo4j ls -id /plugins /var/lib/neo4j/plugins
如果inode 号不一致,用 docker cp /mydata/.../plugins/abc.jar neo4j:/var/.../plugins/
然后docker restart neo4j
在:ip:7474/ 运行 call apoc.help('apoc') 看安装成功与否。
6.neo4j常用语法:
create (n:person {name:'Xiaohong'}) RETURN n create (n:person {name:'Xiaoming'}) RETURN n create (n:person {name:'Xiaojun'}) RETURN n create (n:person {name:'Xiaoqiang'}) RETURN n create (n:location{city:'Zhengzhou',province:'Henan'}) create (n:location{city:'Xinxiang',province:'Henan'}) create (n:location{city:'Baoding',province:'Hebei'}) create (n:location{city:'Shijiazhuang',province:'Hebei'}) //创建关系时,create merge 都可以,但merge不会重复 match (a:person{name:'Xiaohong'}),(b:person{name:'Xiaoming'}) merge (a)-[:FRIENDS{since:2020}]->(b); match (a:person{name:'Xiaojun'}),(b:person{name:'Xiaoqiang'}) merge (a)-[:FRIENDS{since:2010}]->(b); match (a:person{name:'Xiaoming'}),(b:person{name:'Xiaojun'}) merge (a)-[:FRIENDS{since:2011}]->(b); match(a:person{name:'Xiaohong'}),(b:location{city:'Baoding'}) merge(a)-[:born{year:2001}]->(b); match(a:person{name:'Xiaoming'}),(b:location{city:'Baoding'}) merge(a)-[:born{year:2002}]->(b); match(a:person{name:'Xiaojun'}),(b:location{city:'Xinxiang'}) merge(a)-[:born{year:1990}]->(b); match(a:person{name:'Xiaoqiang'}),(b:location{city:'Zhengzhou'}) merge(a)-[:born{year:1990}]->(b); //查询出生于Xinxiang的人。 match(a:person)-[:born]->(b:location{city:'Xinxiang'}) return a,b //删除节点 match(a:location{city:'Zhengzhou'}) delete a //修改/增加节点的属性: match(a:person{name:'Xiaoming'}) set a.age=23 删除节点属性: match(a:person{name:'Xiaoming'}) remove a.age //以下可以查小红的朋友的朋友 MATCH (a:person{name:'Xiaohong'})-[:FRIENDS]->(friend)-[:FRIENDS]->(b) RETURN a.name, friend.name, b.name 返回: a.name friend.name b.name "Xiaohong" "Xiaoming" "Xiaojun"7.neo4j与dify的交互
在dify中新建工作流,先用LLM生成Neo4j的查询语句,再加一个Http请求的结点,把HEADER 定义好,body中使用LLM中生成的语句,最后再加一个LLM结点,在上下文中说明使用前两者输出。