1. 项目概述
最近在帮客户做n8n工作流平台的服务器迁移工作,把原本运行在本地虚拟机的n8n完整迁移到云服务器上。这个过程中遇到了不少权限和路径相关的问题,今天就把完整的迁移步骤和踩坑经验分享给大家。
n8n是一个开源的自动化工作流工具,类似Zapier但更灵活。它所有的配置和数据都存储在本地,包括工作流(workflow)、数据表(datatable)、凭证(credential)等重要信息。迁移时需要特别注意这些数据的完整性,以及文件读写权限的正确设置。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 迁移前的准备工作
2.1 环境检查
在开始迁移前,我们需要确认几个关键点:
- 源环境:本地虚拟机上的n8n运行状态和目录结构
- 目标环境:云服务器的目录结构和Docker环境
- 数据完整性:确保所有重要数据都会被迁移
建议先在本地虚拟机执行以下命令检查n8n的运行状态:
bash复制docker ps | grep n8n
2.2 目录结构分析
典型的n8n项目目录结构如下:
code复制/home/flexus/n8n-dev
├── docker-compose.yml
├── .env
├── n8n_data/ # 核心数据目录
├── images/ # 自定义映射目录
├── drafts/ # 自定义映射目录
└── n8n_latest.tar # 本地Docker镜像备份
3. 本地虚拟机操作步骤
3.1 停止n8n服务
这是最关键的第一步,必须在数据打包前完成:
bash复制cd /home/flexus/n8n-dev
docker-compose down
注意:如果不先停止服务就直接打包,可能会导致数据不一致或损坏。我就曾经因为跳过这一步,导致迁移后workflow出现异常。
3.2 打包整个项目目录
不是只打包n8n_data目录,而是整个项目目录:
bash复制cd /home/flexus
tar -czvf n8n-dev.tar.gz n8n-dev
这里使用tar命令的-z参数启用gzip压缩,可以显著减少传输文件的大小。对于大型项目,压缩可能需要几分钟时间。
