There is no ‘right way’ as it can be done in so many ways. I can share what I did as it might be useful.
From CentOS 8:
Backup all virtual domains via Virtualmin with all options/features enabled.
Backup using Webmin filesystem backup my /etc, /var (specific folders), /opt (specific folders). Specific folders are for me apps and other services I have installed outside Virtualmin e.g. Rocket.Chat, OpenFire, Minecraft etc.
Backup Webmin modules etc using built in backup option.
Backup manually apache/php configs.
On new server:
Restore virtual domains using Virtualmin but selective restore leaving out server configs etc. If you restore that it will overwrite your new server configs and most likely mess up.
Restore files/folders as above from old server and re apply as needed for the individual app.
Make sure you dont overwrite dns, postfix and other core services on new server.
I did not restore apache configs etc. I used old files as a guide but applied changes manually e.g. php-fpm settings and so forth.