Hi team,
I’m trying to migrate a few of my Appwrite projects from the cloud to a self-hosted instance. These projects are currently in “archive mode” due to the free plan limit of 2 projects. However, I’ve encountered several issues during the migration process:
When I enter the self-hosted endpoint URL in the Cloud Dashboard and go through: Create Migration → Select Organization → Create New Project, I receive the error:
Invalid region param: Value must be one of (default)
When I try: Create Migration → Select Organization → Existing Project, I get:
Couldn’t load resources. The API key required for the migration may no longer be valid or has expired. Please verify and start the migration again.
I would appreciate guidance on how to successfully migrate archived projects from the cloud to a self-hosted Appwrite instance. Are there any workarounds for projects in archive mode or steps I might be missing to refresh the API key?
Thanks in advance for any help!
Hi, can anyone help?
I think this is probably because the Project is archived. But even if it weren't, Migrations are only officially supported between instances of the same version - and since Cloud is currently on v1.8.0, but the latest Self-hosted release is v1.7.4, you'll probably end up with other issues.
What if i have the same issue? create droplet in DO update to 1.8.0 version but still can't migrate from cloud 1.8.0. "The API key required for the migration may no longer be valid or has expired. Please verify and start migration again." @Support How to diagnose real error?
and the project is not achieved. Just active instance on both sides.
well i tried migration from selfhosted creating from import wizard - "resourceData": [],
"errors": [
{
"code": 400,
"message": "Invalid maximumFileSize param: Value must be a valid range between 1 and 30,000,000"
},
{
"code": 404,
"message": "Storage bucket with the requested ID could not be found."
},
{
"code": 404,
"message": "Storage bucket with the requested ID could not be found."
}
]
} - now see errors that something already
on my selfhosted instance - see env - _APP_STORAGE_LIMIT=30000000 _APP_STORAGE_PREVIEW_LIMIT=20000000
ok. on cloud instance value for max size was 50mb on self-hosted 30mb. i think should be changed in env default values to 30mb or 50 everywhere. Now different errors
Database 1 Table 1 Columns 6
"status": "failed",
"stage": "finished",
"source": "Appwrite",
"destination": "Appwrite",
"resources": [
"user",
"team",
"membership",
"database",
"table",
"column",
"row",
"function",
"environment-variable",
"deployment",
"bucket",
"file"
],
"resourceId": "",
"statusCounters": {
"database": {
"pending": 0,
"success": 0,
"error": 1,
"skip": 0,
"processing": 0,
"warning": 0
},
"table": {
"pending": 0,
"success": 0,
"error": 1,
"skip": 0,
"processing": 0,
"warning": 0
},
"column": {
"pending": 0,
"success": 0,
"error": 6,
"skip": 0,
"processing": 0,
"warning": 0
},
"bucket": {
"pending": 0,
"success": 1,
"error": 0,
"skip": 0,
"processing": 0,
"warning": 0
},
"file": {
"pending": 0,
"success": 1,
"error": 0,
"skip": 0,
"processing": 0,
"warning": 0
}
},
"resourceData": [],
"errors": [
{
"code": 23000,
"message": "Document already exists"
},
{
"code": 23000,
"message": "Document already exists"
},
{
"code": 0,
"message": "Attribute already exists"
},
{
"code": 0,
"message": "Attribute already exists"
},
{
"code": 0,
"message": "Attribute already exists"
},
{
"code": 0,
"message": "Attribute already exists"
},
{
"code": 0,
"message": "Attribute already exists"
},
{
"code": 0,
"message": "Attribute already exists"
}
]
}
ok now i see table migration succeed even shows not success "status": "failed",
"stage": "finished",
"source": "Appwrite",
"destination": "Appwrite",
"resources": [
"user",
"team",
"membership",
"database",
"table",
"column",
"row",
"function",
"environment-variable",
"deployment",
"bucket",
"file"
],
"resourceId": "",
"statusCounters": {
"database": {
"pending": 0,
"success": 0,
"error": 1,
"skip": 0,
"processing": 0,
"warning": 0
},
"table": {
"pending": 0,
"success": 1,
"error": 0,
"skip": 0,
"processing": 0,
"warning": 0
},
"column": {
"pending": 0,
"success": 6,
"error": 0,
"skip": 0,
"processing": 0,
"warning": 0
},
"row": {
"pending": 0,
"success": 5,
"error": 0,
"skip": 0,
"processing": 0,
"warning": 0
},
"bucket": {
"pending": 0,
"success": 0,
"error": 0,
"skip": 1,
"processing": 0,
"warning": 0
},
"file": {
"pending": 0,
"success": 0,
"error": 0,
"skip": 1,
"processing": 0,
"warning": 0
}
},
"resourceData": [],
"errors": [
{
"code": 23000,
"message": "Document already exists"
}
]
} - what problem i see here there is no information about which document or entity failed migration (no name, no id). can be improved logining here
in final (from cloud host migration can't work using export wizard, but import from self-hosted was working). I was using incognito browser mode to prevent browser extensions from negatively impacting the data migration process):
- Auth - Auth methods not migrated from cloud instance to self-hosted. Checkboxes have different stage on both sides
- on cloud instance value for max size was 50mb on self-hosted 30mb. i think should be changed in env default values to 30mb or 50 everywhere.
- Logging about object that failed migration can be extended. Because now from log you can's understand which object failed (db or bucket or something else - what name, what id object). Poor logining
Everything else on small data looks like working. Migration don't override objects just created what do not exist, but if both instances have same name of object will not be recreated but just failed in migration. i can see like improvement kinda checkbox "override everything" - like delete objects and created from migration instance but it more dangerous way let's say for a regular user
Recommended threads
- Auth broken after update from 1.8.0 to 1...
So ive been having issues creating, deleting or updating users on my appwrite instance after i updated from 1.8.0 to version 1.9.0. When trying to create a user...
- User Blocked - False Positive
Today I tried to log in to my cloud console and it said the user is blocked and I didn't even receive any email regarding this like what kind of violation is my...
- Realtime not processing messages
When subscribing to realtime events of database, the client's websocket receives the messages in the websocket feed, but doesn't call the specific message handl...