Flowise生产环境:PostgreSQL持久化部署最佳实践
1. 引言:为什么你的Flowise需要持久化?
想象一下这个场景:你花了整整一个下午,在Flowise上精心搭建了一个智能客服工作流,连接了公司的知识库,调试好了所有的提示词和逻辑分支。然后,你关掉了浏览器,去吃了个晚饭。第二天回来,打开Flowise——傻眼了,昨天搭建的所有工作流全都不见了。
这就是Flowise默认使用内存数据库(SQLite)的痛点。所有数据都保存在内存里,服务一重启,数据就清零。对于个人玩玩还行,但如果你想在公司里用起来,或者想长期维护一个AI助手,这种“失忆症”是绝对不能接受的。
今天,我就来手把手教你,如何给Flowise换上“钢铁般的记忆”——用PostgreSQL实现数据持久化。这不是简单的配置修改,而是经过实战检验的生产级部署方案。我会告诉你每一步该怎么做,为什么要这么做,以及如何避免那些我踩过的坑。
2. 准备工作:环境与工具清单
在开始之前,我们先看看需要准备什么。别担心,东西不多,大部分你可能已经有了。
2.1 硬件与系统要求
- 服务器:任何能跑Docker的Linux服务器(Ubuntu 20.04+ / CentOS 7+ 都行)
- 内存:至少4GB(Flowise本身不占多少,主要是给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_PASSWORD=your_secure_password \ -e POSTGRES_USER=flowise \ -e POSTGRES_DB=flowise \ -p 5432:5432 \ -v ~/flowise-postgres-data:/var/lib/postgresql/data \ postgres:15-alpine记住这几个参数,后面配置Flowise时会用到:
- 数据库名:
flowise - 用户名:
flowise - 密码:
your_secure_password(请换成你自己的强密码) - 主机:如果是本机就是
localhost,如果是远程就是IP地址 - 端口:
5432
3. 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_TYPE=postgres DATABASE_HOST=localhost # 如果是远程数据库,改成对应的IP DATABASE_PORT=5432 DATABASE_NAME=flowise DATABASE_USER=flowise DATABASE_PASSWORD=your_secure_password # 安全配置 - 生产环境必须设置! SECRETKEY=your_random_secret_key_here # 生成一个随机字符串 TOKEN_ISSUER=flowise TOKEN_AUDIENCE=flowise # API配置 APIKEY_PATH=./api_keys.json EXECUTION_MODE=local # 日志配置 LOG_LEVEL=info LOG_PATH=./logs # 其他配置保持默认即可重要提醒:
SECRETKEY一定要设,而且要用强随机字符串。可以用这个命令生成:openssl rand -base64 32- 数据库密码要和你启动PostgreSQL时设置的密码一致
- 如果PostgreSQL和Flowise不在同一台机器,
DATABASE_HOST要改成PostgreSQL服务器的IP
3.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 配置HTTPS(Let's 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_NAME="flowise" DB_USER="flowise" DB_PASS="your_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 导出为API
Flowise最大的价值之一,就是可以把可视化搭建的工作流导出为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, json=payload, headers=headers) 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_LEVEL=info LOG_PATH=/var/log/flowise ENABLE_FILE_LOG=true然后用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. 测试直接连接 PGPASSWORD=your_password psql -h localhost -U flowise -d flowise # 4. 检查用户权限 docker exec flowise-postgres psql -U postgres -c "\du"7.2 内存不足
症状:Flowise运行一段时间后变慢,或者直接崩溃。
可能原因:
- 工作流太复杂,内存泄漏
- 向量数据库占内存太多
- Node.js内存限制
解决方法:
# 1. 给Node.js更多内存 # 修改PM2启动命令 pm2 start "node --max-old-space-size=4096 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-4
8. 总结
通过今天的分享,你应该已经掌握了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星图镜像广场,提供丰富的预置镜像,覆盖大模型推理、图像生成、视频生成、模型微调等多个领域,支持一键部署。