Dify本地安装
目录
方式一docker安装:
方式二源码安装:
Dify本地安装可以用docker方式,和源码编译方式。
先到云厂商平台申请一台Centos系统云主机,网络选择海外,需要公网IP,再按一下流程操作:
方式一docker安装:
安装docker compose:https://blog.csdn.net/weixin_56781779/article/details/132258636
安装dify并启动:
git clone https://github.com/langgenius/dify.gitcd dify/dockerexport EXPOSE_NGINX_PORT=8080docker compose up -d
启动后docker ps 可以看到以下容器

netstat -natp可以看到docker监听的端口是8080,设置安全组开发8080端口

访问 http://虚拟机ip:8080 根据情况输邮箱,用户名,密码 完成本地注册可以开始使用

方式二源码安装:
源码安装主要可以参考文档
https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/local-source-code
文档里有一些要调整的地方:
安装数据库:
sudo apt-get update#安装pg redis
sudo apt install redis-server wget postgresql postgresql-client -ysudo apt install nginx nodejs npm -ysudo wget https://github.com/weaviate/weaviate/releases/download/v1.27.12/weaviate-v1.27.12-linux-amd64.tar.gzsudo tar -zxf weaviate-v1.27.12-linux-amd64.tar.gz#安装向量数据库
sudo chmod +x weaviatesudo mv weaviate /opt
设置数据库密码:
修改/etc/redis/redis.conf,添加:requirepass difyai123456
启动redis:
service redis-server start
启动pg:
service postgresql start
修改pg密码:
su - postgrespsqlCREATE DATABASE dify;ALTER USER postgres WITH PASSWORD 'difyai123456';quit;
启动weaviate:
export PERSISTENCE_DATA_PATH=/var/lib/weaviate
export QUERY_DEFAULTS_LIMIT=25
export AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=false
export DEFAULT_VECTORIZER_MODULE=none
export CLUSTER_HOSTNAME=node1
export AUTHENTICATION_APIKEY_ENABLED=true
export AUTHENTICATION_APIKEY_ALLOWED_KEYS=WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih
export AUTHENTICATION_APIKEY_USERS=hello@dify.ai
export AUTHORIZATION_ADMINLIST_ENABLED=true
export AUTHORIZATION_ADMINLIST_USERS=hello@dify.aicd /opt
nohup ./weaviate --host 0.0.0.0 --port '8080' --scheme http |tee ./weaviate.log 2>&1 &
再按照文档进行源码安装,文档中
如果执行poetry shell失败的话以下命令要带上poetry run,否则会报错
poetry run flask db upgrade
启动前端,后端,和worker
#启动前端
export NEXT_PUBLIC_DEPLOY_ENV=DEVELOPMENT
export NEXT_PUBLIC_EDITION=SELF_HOSTED
export NEXT_PUBLIC_API_PREFIX=/console/api #不设置默认访问http://localhost/console/api
export NEXT_PUBLIC_PUBLIC_API_PREFIX=/api #不设置默认访问http://localhost/api
export NEXT_PUBLIC_SENTRY_DSN=
export NEXT_TELEMETRY_DISABLED=1
export NEXT_PUBLIC_UPLOAD_IMAGE_AS_ICON=false
export NEXT_PUBLIC_TEXT_GENERATION_TIMEOUT_MS=60000
export NEXT_PUBLIC_CSP_WHITELIST=
export NEXT_PUBLIC_TOP_K_MAX_VALUE=10
export NEXT_PUBLIC_INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH=4000
nohup npm run start &#启动worker
#start backend
export CONSOLE_API_URL=
export APP_API_URL=
export WEB_SENTRY_DSN=
export NEXT_TELEMETRY_DISABLED=0
export TEXT_GENERATION_TIMEOUT_MS=60000
export CSP_WHITELIST=
export TOP_K_MAX_VALUE=10
export INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH=4000
cd /app/dify/api
nohup poetry run celery -A app.celery worker -P gevent -c 1 -Q dataset,generation,mail,ops_trace --loglevel INFO ./celery.log 2>&1 &nohup poetry run flask run --host 0.0.0.0 --port=5001 --debug |tee ./backend.log 2>&1 &
这样跑起来只适合本机访问,如果要从公网访问还要假一层nginx,我们在前面已安装nginx,这里我们就配置nginx,让其可以代理访问dify
修改/etc/nginx/nginx.conf如下:
user www-data;
worker_processes auto;
pid /run/nginx.pid;
error_log /var/log/nginx/error.log;
include /etc/nginx/modules-enabled/*.conf;events {worker_connections 768;# multi_accept on;
}http {include /etc/nginx/mime.types;default_type application/octet-stream;log_format main '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log /var/log/nginx/access.log main;sendfile on;#tcp_nopush on;keepalive_timeout 65;#gzip on;client_max_body_size 15M;include /etc/nginx/conf.d/*.conf;
}
修改文件 /etc/nginx/conf.d/default.conf
server {listen 8080;server_name _;location /console/api {proxy_pass http://127.0.0.1:5001;}location /api {proxy_pass http://127.0.0.1:5001;}location /v1 {proxy_pass http://127.0.0.1:5001;}location /files {proxy_pass http://127.0.0.1:5001;}location / {proxy_pass http://127.0.0.1:3000;}}
重启nginx:systemctl restart nginx
通过命令netstat -natp 确认nginx确实监听8080端口
访问 http://虚拟机ip:8080 后续页面访问同方式一
相关文章:
Dify本地安装
目录 方式一docker安装: 方式二源码安装: Dify本地安装可以用docker方式,和源码编译方式。 先到云厂商平台申请一台Centos系统云主机,网络选择海外,需要公网IP,再按一下流程操作: 方式一doc…...
python | 两招解决第三方库安装难点
前言 python 被广泛应用的原因之一,便是拥有大量的第三方库,涵盖 web 开发、数据分析和机器学习等多个方面。 对于多数初学者来说,如何成功安装 python 第三方库成为了一大难点,总是因各种原因导致安装失败。 本文以自身经验&a…...
stm32mp15x 之 M4 使用 canfd
目录 序配置添加注坑参考 序 在使用 stm32mp15x 系列时,M4 有不少的坑,这里简单聊聊使用 canfd 时遇到的一些问题。 配置 这里使用 PLL4R 为 100M,用于 CANFD 的时钟 canfd 速率配置成 1M ,5M,其中数据传输速率为 5M…...
第七天:数据提取-正则表达式
每天上午9点左右更新一到两篇文章到专栏《Python爬虫训练营》中,对于爬虫有兴趣的伙伴可以订阅专栏一起学习,完全免费。 键盘为桨,代码作帆。这趟为期30天左右的Python爬虫特训即将启航,每日解锁新海域:从Requests库的…...
Python入门全攻略(六)
文件操作 文件路径 绝对路径:D:\pythonLearing\fileOperating.exe 相对路径:./fileOperating.exe # ./表示当前目录 # ../表示上一级目录 字符编码 字符集编码说明ASCll 最早的字符编码标准之一,基于拉丁字母的字符集,一共有128个字符GBK(国际码)用于简体中文的字符编码,…...
MongoDB副本集
副本集架构 对于mongodb来说,数据库高可用是通过副本集架构实现的,一个副本集由一个主节点和若干个从节点所组成。 客户端通过数据库主节点写入数据后,由从节点进行复制同步,这样所有从节点都会拥有这些业务数据的副本࿰…...
登录弹窗效果
1,要求 点击登录按钮,弹出登录窗口 提示1:登录窗口 display:none 隐藏状态; 提示2:登录按钮点击后,触发事件,修改 display:block 显示状态 提示3:登录窗口中点击关闭按钮࿰…...
C++上机_日期问题
1.求下一天的年月日 问题 已知某天的年月日,求下一天的年月日。 思路 参数:年,月,日(int) 返回值:void 处理:根据参数所给年月日,求下一天的年月日 思路: 1、定义一个数组&a…...
应对DeepSeek总是服务器繁忙的解决方法
最近由于访问量过大,DeepSeek服务器官网经常弹出:“服务器繁忙,请稍后再试”的提示,直接卡成PPT怎么办?服务器繁忙直接看到视觉疲劳: 解决DeepSeek卡顿问题 DeepSeek使用卡顿问题,是因为访问量…...
web第三次作业
弹窗案例 1.首页代码 <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>综合案例</title><st…...
力扣 438.找到字符串中所有字母异位词
题目: 给定两个字符串 s 和 p,找到 s 中所有 p 的 异位词 的子串,返回这些子串的起始索引。不考虑答案输出的顺序。 示例 1: 输入: s "cbaebabacd", p "abc" 输出: [0,6] 解释: 起始索引等于 0 的子串是 "cb…...
【Python】Python入门——基础语法及顺序语句
Python入门——基础语法及顺序语句 官方文档地址:https://docs.python.org/zh-cn/3/tutorial/index.htmlPython 是一门易于学习、功能强大的编程语言。它提供了高效的高级数据结构,还能简单有效地面向对象编程。Python 优雅的语法和动态类型以及解释型语…...
2.2 反向传播:神经网络如何“学习“?
一、神经网络就像小学生 想象一个刚学算术的小学生,老师每天布置练习题,学生根据例题尝试解题,老师批改后指出错误。神经网络的学习过程与此相似: 输入层:相当于练习题(如数字图片)输出层&…...
frp-tool,客户端frp命令行工具
在日常开发和运维过程中,端口转发和配置管理是常见的需求。 如果有自己一台服务器,并且已经开放好端口,配置好token后,这个工具一定能帮到你。 今天给大家推荐一款非常好用的frpc命令行工具,它是一个用Python编写的命令…...
【学术投稿-第五届应用数学、建模与智能计算国际学术会议】CSS伪类选择器深度解析:分类、应用与技巧
大会官网:www.cammic.org 大会时间:2025年3月21-23日 大会地点:中国-上海(上海大学宝山校区北大门乐乎新楼) 简介 第五届应用数学、建模与智能计算(CAMMIC 2025)将于2025年3月21-23日在中国…...
常用查找算法整理(顺序查找、二分查找、哈希查找、二叉排序树查找、平衡二叉树查找、红黑树查找、B树和B+树查找、分块查找)
常用的查找算法: 顺序查找:最简单的查找算法,适用于无序或数据量小的情况,逐个元素比较查找目标值。二分查找:要求数据有序,通过不断比较中间元素与目标值,将查找范围缩小一半,效率…...
Express 中 res 响应方法详解
一、res.send() 1. 功能 该方法用于发送各种类型的响应,包括字符串、对象、数组、Buffer 等。它会自动设置响应的 Content-Type 头。 2. 示例代码 const express require("express");const app express();app.get("/", (req, res) > {…...
DeepAR:一种用于时间序列预测的深度学习模型
介绍 DeepAR是一种基于递归神经网络(RNN)的时间序列预测模型,由亚马逊在2017年提出。它特别适用于处理多变量时间序列数据,并能够生成概率预测。DeepAR通过联合训练多个相关时间序列来提高预测性能,从而在实际应用中表…...
权限模型深度解析:RBAC vs ABAC vs PBAC vs TBAC,如何选择最适合的方案?
在数字化系统的安全架构中,权限管理如同一把“隐形钥匙”,既需精准控制访问边界,又要灵活适配复杂多变的业务需求。从传统的角色划分到动态属性策略,从合规驱动的集中管控到任务流程的临时授权,RBAC、ABAC、PBAC、TBAC…...
Windows逆向工程入门之堆栈结构与信息获取
公开视频 -> 链接点击跳转公开课程博客首页 -> 链接点击跳转博客主页 目录 1. 堆栈结构基础 堆栈的主要操作: 2. 代码功能解析 2.1 加载 ntdll.dll 2.2 获取 NtQueryInformationThread 函数指针 2.3 调用 NtQueryInformationThread 获取线程信息…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...
ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...
