在 Hostinger VPS 环境之间传输你的 n8n 工作流、凭据和设置。
本文说明如何将 n8n 工作流、凭据和系统设置迁移到运行在 Hostinger VPS 上的新实例。安全地移动 n8n 配置可确保你的工作流数据、数据库配置和环境变量保持完整。你可以使用完整数据卷传输或命令行界面(CLI)导出来执行此迁移。
开始之前
迁移前,请核验源实例与目标实例之间的系统配置、数据库类型和版本兼容性。
检查 n8n 版本兼容性
目标 n8n 版本必须等于或高于源版本。不要将较新 n8n 版本中的工作流导入到较旧版本中,因为工作流数据结构、凭据架构和节点行为不向后兼容。
| 源版本 | 目标版本 | 兼容 |
|---|---|---|
| 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 目录布局部署在 Hostinger VPS 上时,使用此方法。此方法复制持久化的 Docker 卷,保留你的工作流、用户账户、执行历史和凭据配置。
步骤 1 – 停止两个 n8n 容器
为防止数据损坏或不完整的文件复制,请停止源和目标两个 n8n 容器。
- 登录 hPanel 并导航到 VPS ❯ Docker Manager(Docker 管理器)。
- 找到源 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 -delete
tar -xzf /root/n8n-backup.tar.gz -C /var/lib/docker/volumes/n8n-YYYY_n8n_data/_data/
步骤 5 – 启动目标容器并验证
- 在 hPanel 中,导航到目标项目的 VPS ❯ Docker Manager(Docker 管理器)。
- 点击 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.json
docker 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.json
docker 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.json
docker 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(环境变量) 添加它们。
要测试每个工作流:
- 通过 hPanel ❯ VPS ❯ Docker Manager ❯ n8n 容器 ❯ Open(打开) 打开目标 n8n UI。
- 打开已导入的工作流,检查所有节点是否有凭据警告或缺失分配。
- 点击 Execute workflow(执行工作流) 触发手动测试运行。
- 检查每个节点的执行输出是否有错误。导入后常见的失败包括 Credential not found(找不到凭据) 和 Webhook URL mismatch(Webhook URL 不匹配)。根据需要重新输入凭据,或在连接的第三方服务中更新 webhook 目标 URL。
- 重新运行工作流,确认执行日志显示所有节点成功状态。
- 仅在干净的手动测试运行之后,才将工作流开关设为 Active(启用)。
注意
- 不要批量激活工作流。逐个启用,并监控每个工作流的执行日志。
停用源实例或回滚
完成迁移后,至少保留源 VPS 24 至 48 小时。
如果遇到意外问题要回滚:
- 在目标 VPS 上导航到 VPS ❯ Docker Manager(Docker 管理器)。
- 打开 n8n UI,在每个活跃工作流上,将开关设为 Inactive(停用)。
- 在 hPanel 中,进入你的源 VPS ❯ Docker Manager。
- 打开你原始的 n8n 项目,点击 ⋮,选择 Start(启动)。
- 点击 Open(打开) 并登录,确认源实例可访问。
- 更新任何第三方服务或 webhook 端点,使其指回你原始的域名或 IP 地址。
成功迁移后要停用:
- 通过 hPanel ❯ VPS ❯ Docker Manager ❯ 点击 ⋮ ❯ Stop(停止) 停止源 n8n 容器。
- 根据你选择的迁移方法,从两台 VPS 机器上删除临时备份文件。
- 一旦确认迁移完成,从 Docker Manager 中移除源 n8n Docker 项目。
你的 n8n 工作流和配置现在在新的 Hostinger VPS 上完全可用。
附加资源
- n8n 官方 CLI 命令文档
- n8n 官方凭据导出指南
- Hostinger VPS:如何管理你的 Docker 项目
- 如何使用 Hostinger VPS 浏览器终端
来源:Hostinger 官方帮助文档