Moving to a new server
Oct 15, 2026
Moving an installation is straightforward if you keep the same .env (APP_KEY) and move the license. This checklist assumes a short downtime.
Before you start
- Lower the DNS TTL of the domain a day ahead (for example to 300 seconds).
- Make sure the new server meets the requirements and has the same PHP major version.
- Note the old server's IP: your license is bound to the domain and the IP.
1. Prepare the new server
- Create the site, database and database user. See Installing on cPanel or Installing on CloudPanel and nginx.
- Test it under a temporary hostname or with your computer's hosts file. Do not change DNS yet.
2. Freeze the old site
- Put the old site in maintenance mode (General Settings > General) so no new orders or payments are written.
- Wait a minute for running jobs to finish.
3. Copy everything
-
Database: dump on the old server and import on the new one.
mysqldump --single-transaction -u USER -p OLD_DB | gzip > whbmp.sql.gz gunzip < whbmp.sql.gz | mysql -u USER -p NEW_DB -
Files: copy the whole application folder, including
.env,storage/app/private(it holds the license data and attachments),public/cms-uploads,public/branding-uploadsand any File Storage folders. -
Edit
.envon the new server: change onlyDB_HOST,DB_DATABASE,DB_USERNAME,DB_PASSWORDand, if the address changes,APP_URL. Keep the sameAPP_KEY. -
Fix ownership and permissions of
storageandbootstrap/cache. -
Run
php artisan optimize:clear.
4. Move the license
- On the old installation open System > License and press Deactivate (Move Server).
- On the new installation open System > License and activate the key. It now binds to the new IP.
5. Check before switching
- Sign in at the temporary address and open System > System Health.
- Count a few tables (clients, invoices) and compare with the old server.
6. Switch
- Point the domain's A record at the new IP and wait for DNS to update. Install the SSL certificate.
- Add the cron job on the new server only.
- Remove the cron job from the old server and leave the old site down (maintenance mode). Two servers running the same scheduler would send everything twice.
- Allow the new IP in your registrar, hosting servers' firewalls and payment gateway settings, and update any webhooks that call WHBMP.
7. After the move
- Press Check Now on the License page and confirm it shows Active.
- Send a test email and place a test order.
- Watch the logs for a day.
- Keep the old server for a week as a fallback, then delete the data on it.
Rollback
If the new server misbehaves, switch the DNS back, run php artisan up on the old server, and activate the license there again.