Move every site at once
One migration per server, one switch-over for all its sites. Leave a site behind and Kiln switches the rest by DNS instead.
Nothing changes on your old server until you press Switch over.
Each site's Forge deploy script is rewritten for release-based deploys. You see the old one beside the new one, and every edit you make is kept so the converter keeps getting better.
How conversion works →cd /home/forge/example.com git pull origin $FORGE_SITE_BRANCH $FORGE_COMPOSER install --no-dev npm ci npm run build ( flock -w 10 9 || exit 1 sudo -S service $FORGE_PHP_FPM reload ) 9>/tmp/fpmlock $FORGE_PHP craft up
$CREATE_RELEASE() cd $FORGE_RELEASE_DIRECTORY $FORGE_COMPOSER install --no-dev npm ci || npm install npm run build $FORGE_PHP craft up $ACTIVATE_RELEASE() $RESTART_QUEUES()
One migration per server, one switch-over for all its sites. Leave a site behind and Kiln switches the rest by DNS instead.
Load max_input_vars, memory limits and FPM pool sizes for Craft, Commerce or Laravel from a preset, then tweak per server.
Firewall rules and DigitalOcean cloud firewalls carry over, and Kiln opens a temporary SSH path only for the copy.
Required two-factor login, database passwords never written to Forge command history, and temporary access removed when you finish.