Skip to content

Move or copy a site

The Move / copy page of a hosting offers three ways to relocate or duplicate it. All of them build a transfer bundle from the live site (files, a database dump and a manifest), then recreate the hosting from it. Private keys never travel: the new site needs its own certificate.

Option The original Use it to
Move to another node Suspended after the move Rebalance load or retire a node
Copy to a new domain or node Keeps running, untouched Make a staging copy or a duplicate
Export a transfer file Untouched Send the site to a server outside this cluster
  • The site is active. A suspended or trashed site is refused with a message to resume it first.
  • You hold Migrate / clone hostings. Copying also needs Create hostings, so the built-in Customer role cannot copy.
  • For Move and Copy to another node, the master, the source node and the target node run the same agent version. If not, the job stops at once with agent version mismatch — master …, source …, target … and names the node to update. Update it from Nodes and run the job again.
  • The target node has room for the site. Take a backup first if the site matters; see Back up a site and set a schedule.
  1. Open Hostings, open the site and click Move / copy in the left menu (or Move / copy next to Back up now).
  2. Choose Move to another node.
  3. In Target node, choose a node. The master (this node) is offered when the site is on a worker. The target must differ from the source.
  4. Click Move hosting → and confirm Move hosting.
  5. Follow the job on the job page. It checks versions, exports a bundle on the source, pulls it to the master when the source is a worker, imports it on the target, carries the site’s access grants, notes, tags and PHP settings, and then suspends the source.
  6. Finish the cutover:
    1. Point the domain’s DNS at the target node’s IP address.
    2. On the new site, open Domains & SSL and issue the certificate once DNS resolves.
    3. When you have confirmed the moved site works, delete the suspended original from its Danger zone tab. See Delete backups, snapshots and sites.
  1. Choose Copy to a new domain or node on the Move / copy page.
  2. Enter New domain. A pasted address-bar URL such as https://www.example.com/ is cleaned to example.com.
  3. Choose Target node, or keep Same node.
  4. Leave Also answer on the www. address ticked if you want the www. alias. For a main domain such as example.com, or any name typed with www., the copy answers on www. too. A subdomain such as staging.example.com gets none. The copy never takes the source’s own aliases.
  5. Leave Issue a TLS certificate automatically ticked to get a certificate once the copy lands, but only if the new domain’s DNS already points at the target node. If it does not, the copy still succeeds and you can issue later from Domains & SSL.
  6. Click Copy hosting → and confirm Copy hosting.

The copy has its own files and database and its own Linux user. For a WordPress site the URLs are rewritten to the new domain. For WordPress, the restored wp-config.php is pointed at the new database and its Redis object-cache settings are switched off (turn Redis on again for the copy from its own page). The crontab is carried with its paths rewritten to the new site tree, and the job log lists the settings carried.

The panel refuses a new domain that already exists anywhere in the cluster (A hosting for … already exists on …. Pick a different domain.) or that equals the source (Clone domain must differ from the source domain.) before it exports anything.

This works only for sites on the master. For a site on a worker the panel answers Export bundles can be made only for sites on the master… and tells you to use Move.

  1. Choose Export a transfer file and click Create transfer file →.
  2. The result page, Transfer file ready, shows the id, size and BLAKE3 digest, and three ways to use it. The signed token expires after 1 hour; export again for a fresh one.
    • Option 1 · One-click import: on the destination Hyperion panel, open Import, then From another Hyperion node, paste Base URL and Token, and click Import hosting.
    • Option 2 · hctl one-liner: run the shown sudo hctl hosting import-from-url --base-url=… --token=… on the destination node. The token is signed for this one bundle and expires in 1 hour.
    • Option 3 · Direct download: download manifest.json and archive.tar.gz to move them by another channel.
  3. On the destination, point DNS and issue the certificate, then delete the original on the source when the import is confirmed.

On import the destination downloads manifest.json and archive.tar.gz, checks the archive’s BLAKE3 digest against the manifest (a corrupted transfer is refused), provisions a hosting with the source’s domain, aliases, PHP version and database engine, and restores the archive and the database dump. Importing needs Migrate / clone hostings and Create hostings.

  1. The job on Background jobs ends Done. A Move hosting or Copy hosting job can be retried with Retry job from its page if it failed.

  2. The new site is listed under Hostings, on the target node.

  3. Open the new site’s Overview tab. The Database card shows its own database name, and the restored wp-config.php names the same database.

  4. For a move, the original shows suspended.

  5. Test the new site before changing DNS, for example by sending its name to the target’s IP:

    Terminal window
    curl -I --resolve example.com:443:203.0.113.10 https://example.com/

    Expected: an HTTP response from the new node. Until the certificate is issued the browser warns about the certificate.

  • agent version mismatch — master …, source …, target …: update the lagging node from Nodes, then retry.
  • Target node must be different from the source. or Pick a destination node first: choose a different node in Target node.
  • The source hosting could not be found.: the site was deleted or already moved.
  • Copying a site creates a new hosting, which your role cannot do.: ask an Administrator to copy it.
  • Export failed: …, Bundle proxy failed: … or Target import failed: …: the step named failed. The text after the colon is the node’s message. A half-created target hosting is rolled back, so retry is safe.
  • database dump sha mismatch: the dump changed in transit. Export again.
  • both URL and token are required on Import hosting: fill in both fields, and use a token less than 1 hour old.