在 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 容器。

  1. 登录 hPanel 并导航到 VPSDocker Manager(Docker 管理器)
  2. 找到源 n8n 项目,点击 Manage(管理),选择 Stop(停止)
  3. 对目标 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 – 启动目标容器并验证

  1. 在 hPanel 中,导航到目标项目的 VPSDocker Manager(Docker 管理器)
  2. 点击 Manage(管理) 并选择 Start(启动)
  3. 上线后,点击 Open(打开) 访问 n8n 界面。
  4. 使用你原始的源凭据登录。
  5. 查看你的工作流和凭据,确认一切传输正确。

注意

  • 在彻底测试目标实例之前,请保持源容器停止。
  • 迁移成功后,通过运行 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。通过 VPSDocker ManagerManage(管理)Environment variables(环境变量) 添加它们。

要测试每个工作流:

  1. 通过 hPanel ❯ VPSDocker Managern8n 容器Open(打开) 打开目标 n8n UI。
  2. 打开已导入的工作流,检查所有节点是否有凭据警告或缺失分配。
  3. 点击 Execute workflow(执行工作流) 触发手动测试运行。
  4. 检查每个节点的执行输出是否有错误。导入后常见的失败包括 Credential not found(找不到凭据)Webhook URL mismatch(Webhook URL 不匹配)。根据需要重新输入凭据,或在连接的第三方服务中更新 webhook 目标 URL。
  5. 重新运行工作流,确认执行日志显示所有节点成功状态。
  6. 仅在干净的手动测试运行之后,才将工作流开关设为 Active(启用)

注意

  • 不要批量激活工作流。逐个启用,并监控每个工作流的执行日志。

停用源实例或回滚

完成迁移后,至少保留源 VPS 24 至 48 小时。

如果遇到意外问题要回滚:

  1. 在目标 VPS 上导航到 VPSDocker Manager(Docker 管理器)
  2. 打开 n8n UI,在每个活跃工作流上,将开关设为 Inactive(停用)
  3. 在 hPanel 中,进入你的源 VPSDocker Manager
  4. 打开你原始的 n8n 项目,点击 ,选择 Start(启动)
  5. 点击 Open(打开) 并登录,确认源实例可访问。
  6. 更新任何第三方服务或 webhook 端点,使其指回你原始的域名或 IP 地址。

成功迁移后要停用:

  1. 通过 hPanel ❯ VPSDocker Manager点击 ⋮Stop(停止) 停止源 n8n 容器。
  2. 根据你选择的迁移方法,从两台 VPS 机器上删除临时备份文件。
  3. 一旦确认迁移完成,从 Docker Manager 中移除源 n8n Docker 项目。

你的 n8n 工作流和配置现在在新的 Hostinger VPS 上完全可用。

附加资源

来源:Hostinger 官方帮助文档