Panelica-to-Panelica migration is the most mature and fully automated migration path. It uses the External API (Port 3002) with HMAC authentication to securely transfer all data between two Panelica servers — no direct database access required.
- User accounts — System users with home directories, UID/GID, cgroup slices
- Domains — Full 9-step provisioning on target (Nginx, PHP-FPM, DNS, SSL, logs, cgroup)
- Files — Entire home directories via rsync with real-time progress (overall %, speed, ETA)
- MySQL databases — Databases with user hash preservation (CMS configs like wp-config.php and .env remain unchanged — passwords just work)
- Email accounts — Maildir synchronization
- SSL certificates — Let's Encrypt re-issue or self-signed generation
- Cloudflare credentials — Encrypted API keys decrypted via API and re-encrypted on target
- DNS records — Zone file recreation
The migration uses Panelica's External API — all metadata is retrieved via secure HMAC-SHA256 authenticated API calls. No direct SSH database commands are executed on the source server.
11-Step Automated Pipeline:
- Connect & Detect — SSH into source server, auto-detect Panelica installation and version
- Health Check — Verify disk space, MySQL availability, database status
- Site Discovery — Query External API: GET /v1/migration/sites/export (all domains, databases, email accounts)
- Credential Discovery — Query External API: GET /v1/migration/mysql-credentials (MySQL root password from panelica.conf)
- User Creation — Create matching Linux users on the target server with proper UID, home directory, and cgroup slice
- Domain Creation — Run 9-step domain provisioning for each discovered site
- File Transfer — rsync entire /home/username/domain/ directories with cumulative progress tracking
- Database Import — SHOW CREATE USER + mysqldump on source, replay on target (password hashes preserved)
- Email Import — Maildir synchronization via rsync
- SSL Setup — Let's Encrypt certificate provisioning or self-signed fallback
- Verification — Health check on all migrated sites with automatic rollback on failure
- real-time live log — Stream the entire migration process to your browser in real-time
- Phase tracking — Current step displayed with percentage completion
- rsync progress — Overall cumulative progress (not per-file) showing real percentage, transfer speed, and ETA
- Checkpoint system — If migration fails, resume from the last successful step instead of starting over
- Error reporting — Immediate error display with context and suggested fixes
- API-first — No direct psql/mysql commands on source server. All data retrieved via authenticated API
- Password preservation — MySQL user hashes transferred directly. CMS config files (wp-config.php, .env, database.php) remain unchanged
- Zero downtime migration — Source server continues running during transfer
- Cloudflare transfer — API keys securely migrated (decrypted on source, re-encrypted on target)
- Full directory transfer — Not just public_html, but logs, tmp, config files — everything under /home/user/domain/
- Both servers must be running Panelica
- SSH access from target to source server
- External API must be enabled on the source server (Port 3002)
- Sufficient disk space on the target server
- HMAC API key configured on the source server
After migration completes:
- Update DNS records to point to the new server IP (manual or via Cloudflare sync)
- SSL certificates are automatically provisioned for all migrated domains
- All services are configured and running on the target server
- Users can log in immediately with their existing credentials
Migration is a ROOT-only operation — only the server administrator can initiate and manage migrations.
If you encounter any issues with this feature, please open a report in the Bug Reports forum.
---
For issues with this feature, please report in the Bug Reports forum.
Last edited: