Imports a CyberPanel website backup into VinzaPanel, in two phases: analyze, then run.
Make the backup in CyberPanel (Backup → Create Backup, or cyberpanel createBackup --domainName <domain>), one per website, and copy it to this server (SFTP/SCP), or let the plugin fetch it: over SSH (key or password; the host key fingerprint is shown and must be confirmed, then it is pinned) it downloads an existing backup or, logged in as root, makes a fresh one with cyberpanel createBackup first. Credentials are written only to root-only files on this server for the download and deleted afterwards. Bulk import queues several backups, or several websites of the old server, into one owner and migrates them one after another, with a status per website; one that fails does not stop the others. Analysis takes the archive's absolute path, or an already-extracted backup directory. The archive is never streamed through the panel: the agent extracts it server-side into a staging directory and reads meta.xml there. Parsing is read-only and produces a preview: the website and its child domains with their PHP versions, databases and their users, mail accounts, DNS records and sizes, with any warnings.
Starting a migration queues a run for a chosen target owner with per-category toggles, applied step by step by the panel's worker. Websites are provisioned through the normal website service within the owner's quota; files are copied out of the backup (child domains, which CyberPanel keeps inside the master's public_html, become sites of their own); databases are created and their dumps imported, with the original users recreated from their password hashes, for every host they had; mail accounts keep their passwords (CyberPanel's Dovecot hashes are used as they are); DNS records are imported into the panel's DNS.
The limits are deliberate. SOA, NS and A/AAAA records are not imported (they point at the old server), nor the old server's SPF and DKIM records. A CyberPanel backup does not contain cron jobs, email forwarders or the panel login, so they are not migrated; mail messages are not moved (use imapsync). Domain aliases are listed but not provisioned. Existing websites, databases and domains of another account are never overwritten. The plugin is admin-only; website owners get no actions.
SSL: a CyberPanel backup contains no certificates (they stay in /etc/letsencrypt on the old server), so none are imported; issue Let's Encrypt certificates for the websites once their DNS points to this server.
Use VinzaPanel's REST API to download and install this app programmatically.
POST /plugins/api/download/cyberpanel-migration/ Content-Type: application/json { "panel_version": "1.0.0" }
{
"success": true,
"plugin_id": "cyberpanel-migration",
"version": "1.0.2",
"download_url": "..."
}