Import sites over SSH or in place
This route lets a Hyperion node read the source panel itself. Use it when the source panel is installed on the same server as a Hyperion node (in place), or when you can give a node an SSH key for the source. Without a key to hand over, use Import sites with one command.
Before you start
Section titled “Before you start”- You hold the Import from another panel permission (Owner and Administrator roles).
- For Remote, you have a private key for a root or sudo user on the source. The key is used only for this import, written to a mode 0600 file on the node and deleted afterwards. It is never stored.
- For In-place, the source panel is installed on the node that will run the import.
- The node that runs the import has room for every site and database. A node whose disk fills stops the batch.
- Open Import in the sidebar and click Over SSH or in place.
- In 1 · Source choose Source panel: CloudPanel or HestiaCP.
- Choose Mode: In-place — panel is on this node or Remote — connect over SSH.
- Choose Run on node, the Hyperion node that performs the import.
- For Remote, enter SSH host (for example
203.0.113.10), SSH user (root), SSH port (22) and paste the key into Private key. - Click Preview (dry-run). Nothing is written yet.
- Read 2 · Plan. Each row shows an Action, the Domain, PHP now (what the source runs), Import on (a PHP version picker), DBs and Notes:
- create: the site will be created.
- skip: already imported (
already imported (idempotent re-run)). - conflict:
domain … already exists on this node; it is left untouched. - unsupported: reverse-proxy sites (
reverse-proxy sites are not imported in v1 (planned for P1)).
- For each create row, check the PHP version in Import on. It is preselected with the nearest version Hyperion carries and marked changed when it differs from the source’s. Versions with no security fixes are labelled — no security fixes. You know whether the site’s code survives the jump; choose accordingly.
- Read the lines under the table, such as
mail not imported — …. Mail and DNS are reported, never imported. - Click Apply import and confirm. The source is not changed. The import runs as an Import from another panel job, and you can close the tab while it runs.
What is created and what is not imported is the same as in Import sites with one command, except that a rename, profile or billing date cannot be set here.
Check that it worked
Section titled “Check that it worked”- The job ends Done, and Result shows
imported N site(s), skipped Mwith✓ <domain> (N database(s))lines and the skipped reasons. - Click View hostings and open the new sites. Test before moving DNS.
- Re-run Preview (dry-run): imported sites now show skip.
From the command line
Section titled “From the command line”sudo hctl hosting import-panel --source cloudpanel --dry-runsudo hctl hosting import-panel --source hestiacp --mode remote --ssh-host 203.0.113.7 --ssh-key ~/.ssh/id_ed25519If it fails
Section titled “If it fails”SSH to <user>@<host>:<port> failed — …: the text after the dash is the real SSH error (authentication, refused connection, timeout, key format). Correct the host, port, user or key.connected to <host> over SSH, but no <panel> install was found there.: the panel is not installed there, or the SSH user cannot read its data files. Use root or a user with sudo access.no <panel> install detected on this node (in-place mode): the panel is not on the node you chose in Run on node.extract failed: …: the source’s panel data could not be read. The message names what.No importable sites found on the source.: nothing to import.ran out of disk: imported N site(s), then stopped with M not imported.: free space and apply again.