Flowise生产环境:PostgreSQL持久化部署最佳实践

📅 发布时间:2026/7/9 16:52:26 👁️ 浏览次数:
Flowise生产环境:PostgreSQL持久化部署最佳实践
Flowise生产环境PostgreSQL持久化部署最佳实践1. 引言为什么你的Flowise需要持久化想象一下这个场景你花了整整一个下午在Flowise上精心搭建了一个智能客服工作流连接了公司的知识库调试好了所有的提示词和逻辑分支。然后你关掉了浏览器去吃了个晚饭。第二天回来打开Flowise——傻眼了昨天搭建的所有工作流全都不见了。这就是Flowise默认使用内存数据库SQLite的痛点。所有数据都保存在内存里服务一重启数据就清零。对于个人玩玩还行但如果你想在公司里用起来或者想长期维护一个AI助手这种“失忆症”是绝对不能接受的。今天我就来手把手教你如何给Flowise换上“钢铁般的记忆”——用PostgreSQL实现数据持久化。这不是简单的配置修改而是经过实战检验的生产级部署方案。我会告诉你每一步该怎么做为什么要这么做以及如何避免那些我踩过的坑。2. 准备工作环境与工具清单在开始之前我们先看看需要准备什么。别担心东西不多大部分你可能已经有了。2.1 硬件与系统要求服务器任何能跑Docker的Linux服务器Ubuntu 20.04 / CentOS 7 都行内存至少4GBFlowise本身不占多少主要是给AI模型留的磁盘空间20GB以上PostgreSQL数据、Flowise代码、模型缓存都需要空间网络能正常访问互联网下载Docker镜像和npm包2.2 软件依赖这些是必须安装的Docker Docker Compose- 容器化部署的核心Node.js 18- Flowise是基于Node.js的pnpm- 比npm更快的包管理器Flowise推荐Git- 拉取Flowise代码如果你还没有安装Docker可以用下面这个一键安装脚本# 安装Docker curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh # 安装Docker Compose sudo curl -L https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose sudo chmod x /usr/local/bin/docker-compose # 验证安装 docker --version docker-compose --version2.3 PostgreSQL数据库准备你可以选择两种方式方式一使用现有的PostgreSQL服务如果你公司已经有PostgreSQL数据库直接创建一个新数据库给Flowise用就行。方式二用Docker新起一个PostgreSQL这是我最推荐的方式干净、隔离、好管理。# 创建一个目录存放PostgreSQL数据 mkdir -p ~/flowise-postgres-data # 运行PostgreSQL容器 docker run -d \ --name flowise-postgres \ -e POSTGRES_PASSWORDyour_secure_password \ -e POSTGRES_USERflowise \ -e POSTGRES_DBflowise \ -p 5432:5432 \ -v ~/flowise-postgres-data:/var/lib/postgresql/data \ postgres:15-alpine记住这几个参数后面配置Flowise时会用到数据库名flowise用户名flowise密码your_secure_password请换成你自己的强密码主机如果是本机就是localhost如果是远程就是IP地址端口54323. Flowise部署从源码到服务现在我们来部署Flowise本身。我推荐从源码部署而不是直接用Docker镜像因为这样更容易自定义配置也方便后续升级。3.1 获取Flowise源码# 进入一个工作目录 cd /opt # 克隆Flowise仓库 git clone https://github.com/FlowiseAI/Flowise.git cd Flowise3.2 环境配置关键的一步这是整个部署中最关键的一步。Flowise的配置文件在packages/server/.env我们需要创建并配置它。# 复制示例配置文件 cp packages/server/.env.example packages/server/.env # 编辑配置文件 nano packages/server/.env下面是需要修改的核心配置项# 数据库配置 - 这是持久化的关键 DATABASE_TYPEpostgres DATABASE_HOSTlocalhost # 如果是远程数据库改成对应的IP DATABASE_PORT5432 DATABASE_NAMEflowise DATABASE_USERflowise DATABASE_PASSWORDyour_secure_password # 安全配置 - 生产环境必须设置 SECRETKEYyour_random_secret_key_here # 生成一个随机字符串 TOKEN_ISSUERflowise TOKEN_AUDIENCEflowise # API配置 APIKEY_PATH./api_keys.json EXECUTION_MODElocal # 日志配置 LOG_LEVELinfo LOG_PATH./logs # 其他配置保持默认即可重要提醒SECRETKEY一定要设而且要用强随机字符串。可以用这个命令生成openssl rand -base64 32数据库密码要和你启动PostgreSQL时设置的密码一致如果PostgreSQL和Flowise不在同一台机器DATABASE_HOST要改成PostgreSQL服务器的IP3.3 安装依赖与构建# 安装pnpm如果还没安装 npm install -g pnpm # 安装项目依赖 pnpm install # 构建项目 pnpm build这个过程可能会花点时间特别是第一次运行的时候。pnpm需要下载所有依赖并构建各个包。你可以去泡杯咖啡大概需要5-10分钟。3.4 初始化数据库在启动服务之前我们需要让Flowise创建数据库表结构# 运行数据库迁移 pnpm run migrate你会看到类似这样的输出Running database migrations... Created table: chat_flow Created table: chat_message Created table: credential Created table: tool Created table: assistant Migration completed successfully!这说明数据库表已经创建好了。如果这一步报错通常是数据库连接配置有问题回去检查一下.env文件。3.5 启动Flowise服务现在可以启动服务了# 开发模式启动热重载适合调试 pnpm start # 或者生产模式启动 pnpm start:prod如果一切正常你会看到Flowise server is listening on port 3000 Database connected successfully API endpoints ready打开浏览器访问http://你的服务器IP:3000就能看到Flowise的登录界面了。4. 生产环境优化配置基础的部署完成了但要让Flowise在生产环境稳定运行还需要做一些优化。4.1 使用进程管理器PM2用pnpm start启动的服务一旦终端关闭服务就停了。这显然不适合生产环境。我们需要用PM2来管理进程。# 安装PM2 npm install -g pm2 # 用PM2启动Flowise cd /opt/Flowise pm2 start pnpm start:prod --name flowise # 设置开机自启 pm2 startup pm2 savePM2的好处服务崩溃了会自动重启可以查看日志pm2 logs flowise可以监控资源使用pm2 monit方便管理多个进程4.2 配置反向代理Nginx直接暴露3000端口不太安全也不方便配置HTTPS。我们应该用Nginx做反向代理。# 安装Nginx sudo apt install nginx -y # 创建Flowise的Nginx配置 sudo nano /etc/nginx/sites-available/flowise配置内容server { listen 80; server_name flowise.yourdomain.com; # 改成你的域名 location / { proxy_pass http://localhost:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection upgrade; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; 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_connect_timeout 60s; proxy_send_timeout 60s; proxy_read_timeout 60s; } # 限制上传文件大小Flowise可能会上传文档 client_max_body_size 100M; }启用配置sudo ln -s /etc/nginx/sites-available/flowise /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置 sudo systemctl reload nginx4.3 配置HTTPSLets Encrypt生产环境一定要用HTTPS不然API密钥在网络上裸奔太危险了。# 安装Certbot sudo apt install certbot python3-certbot-nginx -y # 获取SSL证书 sudo certbot --nginx -d flowise.yourdomain.comCertbot会自动修改Nginx配置并设置证书自动续期。现在你的Flowise就有安全的HTTPS访问了。4.4 数据库备份策略数据持久化了但如果不备份服务器硬盘坏了还是全丢。必须设置定期备份。# 创建备份脚本 nano ~/backup-flowise.sh脚本内容#!/bin/bash BACKUP_DIR/backup/flowise DATE$(date %Y%m%d_%H%M%S) DB_NAMEflowise DB_USERflowise DB_PASSyour_secure_password # 创建备份目录 mkdir -p $BACKUP_DIR # 备份PostgreSQL数据库 PGPASSWORD$DB_PASS pg_dump -U $DB_USER -h localhost $DB_NAME $BACKUP_DIR/flowise_db_$DATE.sql # 压缩备份文件 gzip $BACKUP_DIR/flowise_db_$DATE.sql # 删除7天前的备份 find $BACKUP_DIR -name *.gz -mtime 7 -delete echo Backup completed: $BACKUP_DIR/flowise_db_$DATE.sql.gz设置定时任务# 给脚本执行权限 chmod x ~/backup-flowise.sh # 每天凌晨2点自动备份 (crontab -l 2/dev/null; echo 0 2 * * * /root/backup-flowise.sh) | crontab -5. 高级功能与集成基础部署搞定后我们来看看如何让Flowise发挥更大价值。5.1 配置外部AI模型Flowise默认用OpenAI的API但你可能想用本地模型或者其他的AI服务。配置方法很简单登录Flowise后台进入Settings → API Configuration添加新的API配置比如配置本地Ollama{ name: Local Ollama, type: ollama, baseURL: http://localhost:11434, apiKey: ollama # Ollama不需要真正的API密钥 }或者配置Azure OpenAI{ name: Azure OpenAI, type: azure, baseURL: https://your-resource.openai.azure.com, apiKey: your-azure-api-key, apiVersion: 2023-12-01-preview }5.2 使用向量数据库如果你要做RAG检索增强生成就需要向量数据库。Flowise支持多种向量数据库向量数据库适用场景配置复杂度Pinecone云服务简单易用简单Weaviate开源功能强大中等Chroma轻量级本地运行简单Qdrant高性能Rust编写中等以Chroma为例用Docker启动docker run -d \ --name chroma \ -p 8000:8000 \ -v ~/chroma-data:/chroma/chroma \ ghcr.io/chroma-core/chroma:latest然后在Flowise的Vector Store节点里选择Chroma填上地址http://localhost:8000就行了。5.3 导出为APIFlowise最大的价值之一就是可以把可视化搭建的工作流导出为API集成到其他系统里。操作步骤在Flowise画布上搭建好工作流点击右上角的Export选择API复制生成的cURL命令或代码片段比如导出的Python代码import requests url http://your-flowise-domain/api/v1/prediction/your-flow-id payload { question: 你们公司的主要产品是什么 } headers { Authorization: Bearer your-api-key, Content-Type: application/json } response requests.post(url, jsonpayload, headersheaders) print(response.json())这样你的客服系统、OA系统、网站后台都可以调用这个AI工作流了。6. 监控与维护部署好了不是结束还需要持续监控和维护。6.1 监控指标你需要关注这些指标服务可用性Flowise服务是否在运行# 检查服务状态 pm2 status flowise # 或者用健康检查接口 curl http://localhost:3000/api/v1/health数据库连接PostgreSQL是否正常# 检查数据库连接数 docker exec flowise-postgres psql -U flowise -c SELECT count(*) FROM pg_stat_activity;资源使用CPU、内存、磁盘# 查看系统资源 top df -h # 磁盘空间 free -h # 内存使用API性能响应时间、错误率可以在Nginx日志里分析或者用Prometheus Grafana搭建监控6.2 日志管理Flowise的日志默认输出到控制台生产环境应该配置日志文件。修改.env文件LOG_LEVELinfo LOG_PATH/var/log/flowise ENABLE_FILE_LOGtrue然后用logrotate管理日志文件# 创建logrotate配置 sudo nano /etc/logrotate.d/flowise配置内容/var/log/flowise/*.log { daily missingok rotate 30 compress delaycompress notifempty create 644 root root }6.3 定期更新Flowise和PostgreSQL都需要定期更新# 更新Flowise cd /opt/Flowise git pull origin main pnpm install pnpm build pm2 restart flowise # 更新PostgreSQL小心操作先备份 docker stop flowise-postgres docker pull postgres:15-alpine docker run ... # 用新镜像重新运行挂载原来的数据卷重要提醒更新前一定要备份数据库一定要在测试环境先验证7. 常见问题与解决方案我在实际部署中遇到过不少问题这里分享一些常见的和解决方法。7.1 数据库连接失败症状Flowise启动时报数据库连接错误。可能原因PostgreSQL服务没启动防火墙挡住了5432端口数据库密码错了数据库用户没有权限解决方法# 1. 检查PostgreSQL是否在运行 docker ps | grep postgres # 2. 检查端口是否开放 netstat -tlnp | grep 5432 # 3. 测试直接连接 PGPASSWORDyour_password psql -h localhost -U flowise -d flowise # 4. 检查用户权限 docker exec flowise-postgres psql -U postgres -c \du7.2 内存不足症状Flowise运行一段时间后变慢或者直接崩溃。可能原因工作流太复杂内存泄漏向量数据库占内存太多Node.js内存限制解决方法# 1. 给Node.js更多内存 # 修改PM2启动命令 pm2 start node --max-old-space-size4096 packages/server/dist/index.js --name flowise # 2. 监控内存使用 pm2 monit # 3. 定期重启治标不治本但有用 # 在crontab里添加 0 4 * * * pm2 restart flowise # 每天凌晨4点重启7.3 上传文件失败症状上传PDF、Word文档时失败。可能原因Nginx配置的client_max_body_size太小磁盘空间不足文件格式不支持解决方法# 修改Nginx配置增加限制 client_max_body_size 100M; # 检查磁盘空间 df -h /tmp # Flowise上传文件到临时目录 # Flowise支持的文件类型 # - PDF (.pdf) # - Word (.docx) # - Text (.txt) # - Markdown (.md) # - PowerPoint (.pptx) # - Excel (.xlsx)7.4 API调用慢症状导出的API响应很慢。可能原因工作流太复杂节点太多AI模型响应慢网络延迟解决方法优化工作流减少不必要的节点使用缓存节点Cache Node并行处理可以并行的分支优化AI调用// 在Function节点里设置超时 const timeout 30000; // 30秒 const controller new AbortController(); const timeoutId setTimeout(() controller.abort(), timeout); try { const response await fetch(url, { signal: controller.signal }); // ...处理响应 } finally { clearTimeout(timeoutId); }使用更快的模型比如用GPT-3.5-turbo而不是GPT-48. 总结通过今天的分享你应该已经掌握了Flowise生产环境部署的全套技能。让我们回顾一下关键点8.1 核心收获持久化是必须的用PostgreSQL替换默认的SQLite数据才不会丢配置要完整特别是安全相关的配置SECRETKEY、HTTPS监控不能少PM2管理进程日志要归档资源要监控备份是生命线定期备份数据库测试恢复流程优化无止境根据实际使用情况不断调整和优化8.2 部署检查清单在你实际部署时可以用这个清单核对[ ] PostgreSQL数据库已部署并测试连接[ ] Flowise .env 文件配置正确[ ] 数据库迁移成功运行[ ] 服务用PM2管理设置开机自启[ ] Nginx反向代理配置启用HTTPS[ ] 备份脚本已设置定时任务[ ] 监控告警配置完成[ ] 测试工作流创建、保存、重启后恢复8.3 下一步建议如果你已经成功部署可以继续探索多环境部署搭建开发、测试、生产三套环境高可用方案用Docker Swarm或Kubernetes部署多实例自定义节点开发自己的Flowise节点满足特殊业务需求性能优化对高频使用的工作流进行针对性优化安全加固配置IP白名单、API调用限流、审计日志Flowise是一个强大的工具但工具的价值在于如何使用。希望今天的分享能帮你把Flowise稳稳地跑在生产环境真正为你的业务创造价值。记住技术部署只是第一步更重要的是持续迭代你的AI工作流让它们更好地解决实际问题。祝你在AI应用的道路上越走越顺获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。