Why migrate between regions
- Different data centers are located in different geographic areas. You may want your site close to your users for improved performance.
- You may want to move to a region with a lower environmental impact.
1. Plan the migration
Before starting the migration process, you need to plan for it:- Plan a time frame in which to handle the migration. Your code shouldn’t change during this time to ensure all changes are copied to the new project. Prepare for a brief site outage when you migrate, just as with a relaunch of a site.
- Set your DNS Time-to-Live as low as possible. This ensures the switch to the new site propagates as quickly as possible.
2. Create a new project
In the target region, create a new project from scratch. If you plan to test for long, start with the least amount of resources on the project and then upsize it before switching the DNS.3. Add code and environments
- Without a source integration
- With a source integration
- Clone your existing project with Git.
-
In the new clone, add a remote for the project:
Select your newly created blank project.
-
Push the code for your production branch:
-
(Optional) Checkout other branches and then push their code:
4. Copy files
If you have files in a mount, first download them:5. Copy data from services
For services with generated data such as Solr and Redis, you don’t need to copy data directly. Just rebuild the data in the new project. To download data from persistent services such as databases, see how to export and then import data for each service:6. Migrate variables and project settings
Make sure anything else connected to your old project is moved to your new project:- If you have project or environment variables defined on your old project, add them to your new project.
Get a list of all variables set outside of code by running
upsun variables. - Add any users to your new project that you want to continue to have access.
- Add any existing integrations.
7. Test the site
Verify that the new site is working as desired before continuing. You can leave the two projects running for as long as you need. After you have finished all your testing, sync all your data (code, files, database) for the last time.8. Switch to the new site
Now that you know the new project works, switch public traffic to that site:- Make sure your new project has the necessary resources.
- If possible, put your site into read-only mode or maintenance mode.
- Add your domain names to your new project and remove them from the old project.
- (Optional) Add any custom SSL certificates you have.
- Update your DNS provider’s records to point to the new site. See more on setting custom domains.
9. Remove the old project
Once the new project is running and the DNS has fully propagated, delete the old project.Alternative process
We have open-sourced the Upsun cloning tool, which allows you to clone a project from one region to another. This cloning tool helps you migrate most of your project assets from one region to another with some remaining manual steps like moving your domain names from one region to the other (or at the CDN level) and update your DNS records. We also have the Upsun converting tool, which allows you to change existing configuration files to another format. It converts details from files likeservices.yaml and routes.yaml, and generates a new config.yaml file. This streamlines the conversion process by significantly reducing the manual effort required to adapt your app’s infrastructure setup.
To learn more about the converter tool and how it works, read the converting projects page.