4.2 KiB
DeerFlow 后台离线镜像部署简明指南
本文档只部署后台 Docker 镜像,不包含前端。
1. 部署前准备
目标服务器需要已安装并启动 Docker:
docker --version
docker info
将交付目录 deerflow-backend 放到服务器任意位置。以下统一以 /data/deerflow-backend 为例:
DEPLOY_DIR=/data/deerflow-backend
cd "$DEPLOY_DIR"
chmod +x start-backend-docker.sh
如果交付的是压缩包,解压后确保目录中能看到以下文件:
dist/deerflow-backend-offline.tar
start-backend-docker.sh
config.yaml
2. 导入镜像并启动
首次部署执行一次镜像导入:
cd "$DEPLOY_DIR"
docker load -i dist/deerflow-backend-offline.tar
启动后台,默认端口为 8001:
./start-backend-docker.sh 8001
例如使用 9001 端口:
./start-backend-docker.sh 9001
以后重启只需要再次执行同一条启动命令。脚本会自动删除旧容器并创建新容器:
./start-backend-docker.sh 8001
查看运行状态和日志:
docker ps --filter name=deerflow-backend
docker logs -f deerflow-backend
健康检查:
curl http://127.0.0.1:8001/health
3. 必须知道的文件位置
首次启动后,实际生效的配置和数据均在 docker-data 中。不要只修改部署根目录的模板文件。
$DEPLOY_DIR/docker-data/config/config.yaml # 主配置
$DEPLOY_DIR/docker-data/config/.env # 密码、地址等环境变量
$DEPLOY_DIR/docker-data/config/extensions_config.json # MCP/扩展配置
$DEPLOY_DIR/docker-data/.deer-flow/agents # 智能体及每个 SOUL.md
$DEPLOY_DIR/docker-data/skills # 技能目录
$DEPLOY_DIR/docker-data/.deer-flow/data # SQLite 数据
修改 config.yaml、.env、智能体或技能后,重新执行启动命令即可生效:
cd "$DEPLOY_DIR"
./start-backend-docker.sh 8001
4. 配置 MySQL
本部署支持 MySQL 保存业务数据,同时 SQLite 保留聊天/checkpointer 数据,不使用 PostgreSQL。
先在 MySQL 中创建数据库:
CREATE DATABASE deerflow CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
编辑 $DEPLOY_DIR/docker-data/config/config.yaml,将数据库部分改为:
database:
backend: mysql
mysql_url: $MYSQL_DATABASE_URL
pool_size: 20
max_overflow: 20
pool_timeout: 30
echo_sql: false
checkpointer:
type: sqlite
connection_string: .deer-flow/data/deerflow.db
再编辑 $DEPLOY_DIR/docker-data/config/.env,填写 MySQL 地址:
MYSQL_DATABASE_URL=mysql+asyncmy://deerflow:数据库密码@192.168.1.10:3306/deerflow?charset=utf8mb4
字段说明:
deerflow MySQL 用户名
数据库密码 MySQL 密码
192.168.1.10 MySQL 服务器地址
3306 MySQL 端口
deerflow MySQL 数据库名
若 MySQL 安装在 Docker 宿主机上,可把地址写为 host.docker.internal:
MYSQL_DATABASE_URL=mysql+asyncmy://deerflow:数据库密码@host.docker.internal:3306/deerflow?charset=utf8mb4
密码中有特殊字符时必须进行 URL 编码,例如:@ 写为 %40,# 写为 %23,% 写为 %25。
配置完成后启动:
cd "$DEPLOY_DIR"
./start-backend-docker.sh 8001
5. 导入智能体和技能
停止服务后复制文件,复制完成再启动。智能体目录中每个智能体必须同时保留 config.yaml 和 SOUL.md。
docker rm -f deerflow-backend
cp -a /path/to/agents/. "$DEPLOY_DIR/docker-data/.deer-flow/agents/"
cp -a /path/to/skills/. "$DEPLOY_DIR/docker-data/skills/"
cd "$DEPLOY_DIR"
./start-backend-docker.sh 8001
复制时使用 源目录/. 的形式,避免产生 agents/智能体ID/智能体ID/SOUL.md 的多一层目录问题。
6. SQLite 聊天数据
聊天和 checkpointer 的 SQLite 文件位于:
$DEPLOY_DIR/docker-data/.deer-flow/data/deerflow.db
替换 SQLite 数据库前必须先停止容器,并同时复制 deerflow.db、deerflow.db-wal、deerflow.db-shm(存在时)。替换后再执行启动命令。