Hostinger VPS 之间迁移 n8n 工作流的完整教程
要在 Hostinger VPS 实例之间迁移 n8n 工作流,可以传输完整的 n8n 数据卷,或者使用命令行界面(CLI)导出你的工作流和凭据。这两种方法都能将你的工作流数据、数据库配置和环境变量完整地保留到新实例上。
迁移前的准备工作
在迁移之前,请先核实源实例和目标实例的系统配置、数据库类型以及版本兼容性。
检查 n8n 版本兼容性
目标实例的 n8n 版本必须等于或高于源实例的版本。请勿将较新 n8n 版本的工作流导入较旧版本,因为工作流数据结构、凭据模式(schema)和节点行为都不向后兼容。
| 源版本 | 目标版本 | 是否兼容 |
| 1.x | 1.x(相同或更高) | 是 |
| 1.x | 0.x(更旧) | 否 |
| 0.x | 1.x | 是 |
注意
- 要查看你的 n8n 版本,请在源 VPS 的网页控制台中运行
docker exec -u node -it <container-name> n8n --version。
检查数据库和存储
n8n 将工作流、用户账户和执行数据存储在已连接的数据库中。自定义配置和二进制数据则存放在本地文件系统目录中(容器内的 /home/node/.n8n)。
| 数据库类型 | 存储位置 | 迁移方式 |
| SQLite(默认) | n8n 数据目录 | 方法 1 的数据卷复制可完全覆盖。 |
| PostgreSQL | 外部或独立容器 | 除文件传输外,还需要独立进行 pg_dump 备份和恢复。 |
注意
- 要检查源实例是否使用 PostgreSQL,请在源 VPS 的网页控制台中运行
docker inspect <container-name> | grep -E "DB_TYPE|DB_POSTGRESDB"。如果输出显示DB_TYPE=postgresdb,请单独备份并恢复 PostgreSQL 数据库。
处理加密密钥
n8n 使用通过 N8N_ENCRYPTION_KEY 环境变量设置的加密字符串来保护存储的凭据。除非手动定义,否则该密钥会在首次启动时自动生成。
注意
- 只有当目标实例使用完全相同的
N8N_ENCRYPTION_KEY值时,加密凭据的导入才会成功。 - 如果目标实例使用不同的加密密钥,请使用方法 2 中的解密导出方式。
- 要检查源实例是否设置了显式加密密钥,请在源 VPS 的网页控制台中运行
docker inspect <container-name> | grep N8N_ENCRYPTION_KEY。
方法 1 – 传输完整数据卷
当源和目标 n8n 实例都按照 Hostinger Docker 应用目录(catalog)的标准部署结构部署在 Hostinger VPS 上时,请使用此方法。此方法会复制持久化 Docker 卷,从而保留你的工作流、用户账户、执行历史记录和凭据配置。
步骤 1 – 停止两个 n8n 容器
为防止数据损坏或文件复制不完整,请停止源和目标两个 n8n 容器。
- 登录 Hostinger 控制面板,进入 VPS ❯ Docker Manager。
- 找到源 n8n 项目,点击 Manage,然后选择 Stop。
- 对目标 n8n 项目重复上述操作。
步骤 2 – 在源 VPS 上创建备份归档
通过 SSH 连接到源 VPS。为持久化的 n8n 卷数据目录创建压缩归档。请将 n8n-XXXX_n8n_data 替换为你实际的源卷名称:
tar -czf /root/n8n-backup.tar.gz -C /var/lib/docker/volumes/n8n-XXXX_n8n_data/_data .步骤 3 – 将归档传输到目标 VPS
在源 VPS 的网页控制台中,将归档安全地复制到目标服务器。请将 185.185.185.185 替换为目标 Hostinger VPS 的 IP 地址:
scp /root/n8n-backup.tar.gz root@185.185.185.185:/root/n8n-backup.tar.gz步骤 4 – 在目标 VPS 上恢复归档
通过 SSH 连接到目标 VPS。在解包归档之前,请彻底清空目标卷路径,以避免残留配置引发冲突。请将 n8n-YYYY_n8n_data 替换为你的目标卷名称:
find /var/lib/docker/volumes/n8n-YYYY_n8n_data/_data/ -mindepth 1 -deletetar -xzf /root/n8n-backup.tar.gz -C /var/lib/docker/volumes/n8n-YYYY_n8n_data/_data/步骤 5 – 启动目标容器并进行验证
- 在 Hostinger 控制面板中,进入目标项目的 VPS ❯ Docker Manager。
- 点击 Manage 并选择 Start。
- 上线后,点击 Open 访问 n8n 界面。
- 使用原来的源实例凭据登录。
- 检查你的工作流和凭据,确认所有内容都已正确迁移。
注意
- 在你充分测试目标实例之前,请保持源容器处于停止状态。
- 迁移成功后,运行
rm /root/n8n-backup.tar.gz删除临时备份文件。
方法 2 – 通过 CLI 迁移工作流和凭据
当从其他自管部署环境或无法直接共享数据卷的其他主机服务商迁移时,请使用此方法。
步骤 1 – 从源实例导出工作流
通过 SSH 连接到源服务器。请将 <source-container-name> 替换为你正在使用的源容器名称:
docker exec -u node -it <source-container-name> n8n export:workflow --all --output=/home/node/workflows.jsondocker cp <source-container-name>:/home/node/workflows.json /root/workflows.json步骤 2 – 从源实例导出凭据
请选择与你的目标环境相匹配的选项。
选项 A – 导出加密凭据
如果目标实例使用相同的 N8N_ENCRYPTION_KEY 值,请使用此选项:
docker exec -u node -it <source-container-name> n8n export:credentials --all --output=/home/node/credentials.jsondocker cp <source-container-name>:/home/node/credentials.json /root/credentials.json选项 B – 导出解密凭据
如果目标实例使用不同的加密密钥,请使用此选项:
docker exec -u node -it <source-container-name> n8n export:credentials --all --decrypted --output=/home/node/credentials-decrypted.jsondocker cp <source-container-name>:/home/node/credentials-decrypted.json /root/credentials-decrypted.json注意
- 解密导出的文件包含明文机密信息。请安全地处理这些数据,避免通过开放网络传输,并在使用后立即删除。
步骤 3 – 将文件传输到目标 VPS
请将 185.185.185.185 替换为目标 Hostinger VPS 的 IP 地址。
传输工作流:
scp /root/workflows.json root@185.185.185.185:/root/workflows.json传输凭据 – 运行与你的导出选项相匹配的命令。
选项 A(加密):
scp /root/credentials.json root@185.185.185.185:/root/credentials.json选项 B(解密):
scp /root/credentials-decrypted.json root@185.185.185.185:/root/credentials-decrypted.json步骤 4 – 将导出文件复制到目标容器中
通过 SSH 连接到目标 VPS。请将 <destination-container-name> 替换为你的目标容器名称。
复制工作流:
docker cp /root/workflows.json <destination-container-name>:/home/node/workflows.json复制凭据 – 运行与你的导出选项相匹配的命令。
选项 A(加密):
docker cp /root/credentials.json <destination-container-name>:/home/node/credentials.json选项 B(解密):
docker cp /root/credentials-decrypted.json <destination-container-name>:/home/node/credentials-decrypted.json步骤 5 – 导入凭据和工作流
请先导入凭据,这样随后导入的工作流才能自动映射到现有的凭据 ID。
选项 A(加密):
docker exec -u node -it <destination-container-name> n8n import:credentials --input=/home/node/credentials.json选项 B(解密):
docker exec -u node -it <destination-container-name> n8n import:credentials --input=/home/node/credentials-decrypted.json然后导入工作流:
docker exec -u node -it <destination-container-name> n8n import:workflow --input=/home/node/workflows.json映射环境变量并测试工作流
完成方法 2 后,请将工作流所使用的系统级环境变量映射到目标 VPS。通过 VPS ❯ Docker Manager ❯ Manage ❯ Environment variables 添加它们。
要测试每个工作流:
- 通过 Hostinger 控制面板 ❯ VPS ❯ Docker Manager ❯ n8n 容器 ❯ Open 打开目标 n8n 界面。
- 打开一个已导入的工作流,检查所有节点是否存在凭据警告或凭据分配缺失的情况。
- 点击 Execute workflow 触发一次手动测试运行。
- 检查每个节点的执行输出是否有错误。导入后常见的失败包括 Credential not found 和 Webhook URL mismatch。请根据需要重新输入凭据,或更新所连接的第三方服务中的 Webhook 目标 URL。
- 重新运行工作流,并确认执行日志中所有节点均显示成功状态。
- 只有在手动测试顺利通过后,才将工作流开关设置为 Active。
注意
- 不要批量激活工作流。请逐一启用,并监控每个工作流的执行日志。
停用源实例或回滚
完成迁移后,请将源 VPS 至少保留 24 到 48 小时。
如遇意外问题需要回滚:
- 在目标 VPS 上进入 VPS ❯ Docker Manager。
- 打开 n8n 界面,将每个处于活动状态的工作流开关设置为 Inactive。
- 在 Hostinger 控制面板中,进入源 VPS ❯ Docker Manager。
- 打开你原来的 n8n 项目,点击 ⋮,然后选择 Start。
- 点击 Open 并登录,确认源实例可以访问。
- 将所有第三方服务或 Webhook 端点更新为指回原来的域名或 IP 地址。
迁移成功后停用源实例:
- 通过 Hostinger 控制面板 ❯ VPS ❯ Docker Manager ❯ 点击 ⋮ ❯ Stop 停止源 n8n 容器。
- 根据你选择的迁移方法,从两台 VPS 上删除临时备份文件。
- 确认迁移完成后,从 Docker Manager 中移除源 n8n Docker 项目。
你的 n8n 工作流和配置现在已在新 Hostinger VPS 上完全正常运行。
其他资源