Hi @lucianpascu!
I’m seeing a lot of errors in your Local Logs that indicate other problems might be preventing the Local Backup functions from working normally.
{"class":"BackupService","error":"Command failed: %%resourcesPath%%/bin/rclone/linux/rclone copy googleDrive:LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b/ /tmp/metadata-K37kkhOFl-4ea4a152-abe6-4083-8e32-f78619e2eb1b-111941624453527003528\n2026/05/12 16:51:49 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:51:49 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 16:51:50 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:51:50 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 16:51:50 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:51:50 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 16:51:50 NOTICE: Failed to copy: directory not found\n","level":"warn","message":"Failed to copy metadata from remote","repoId":"4ea4a152-abe6-4083-8e32-f78619e2eb1b","thread":"main","timestamp":"2026-05-12T13:51:50.692Z"}
{"class":"BackupService","error":"Command failed: %%resourcesPath%%/bin/rclone/linux/rclone copy googleDrive:LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b/ /tmp/metadata-K37kkhOFl-4ea4a152-abe6-4083-8e32-f78619e2eb1b-111941624453527003528\n2026/05/12 16:52:25 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:52:25 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 16:52:26 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:52:26 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 16:52:26 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:52:26 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 16:52:26 NOTICE: Failed to copy: directory not found\n","level":"warn","message":"Failed to copy metadata from remote","repoId":"4ea4a152-abe6-4083-8e32-f78619e2eb1b","thread":"main","timestamp":"2026-05-12T13:52:26.451Z"}
{"class":"BackupService","error":"Command failed: %%resourcesPath%%/bin/rclone/linux/rclone copy googleDrive:LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b/ /tmp/metadata-K37kkhOFl-4ea4a152-abe6-4083-8e32-f78619e2eb1b-111941624453527003528\n2026/05/12 16:55:03 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:55:03 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 16:55:03 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:55:03 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 16:55:03 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:55:03 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 16:55:03 NOTICE: Failed to copy: directory not found\n","level":"warn","message":"Failed to copy metadata from remote","repoId":"4ea4a152-abe6-4083-8e32-f78619e2eb1b","thread":"main","timestamp":"2026-05-12T13:55:03.586Z"}
{"class":"BackupService","error":"Command failed: %%resourcesPath%%/bin/rclone/linux/rclone copy googleDrive:LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b/ /tmp/metadata-K37kkhOFl-4ea4a152-abe6-4083-8e32-f78619e2eb1b-111941624453527003528\n2026/05/12 16:57:04 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:57:04 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 16:57:04 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:57:04 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 16:57:04 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:57:04 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 16:57:04 NOTICE: Failed to copy: directory not found\n","level":"warn","message":"Failed to copy metadata from remote","repoId":"4ea4a152-abe6-4083-8e32-f78619e2eb1b","thread":"main","timestamp":"2026-05-12T13:57:04.622Z"}
{"class":"BackupService","error":"Command failed: %%resourcesPath%%/bin/rclone/linux/rclone copy googleDrive:LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b/ /tmp/metadata-K37kkhOFl-4ea4a152-abe6-4083-8e32-f78619e2eb1b-111941624453527003528\n2026/05/12 16:58:41 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:58:41 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 16:58:41 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:58:41 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 16:58:41 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:58:41 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 16:58:41 NOTICE: Failed to copy: directory not found\n","level":"warn","message":"Failed to copy metadata from remote","repoId":"4ea4a152-abe6-4083-8e32-f78619e2eb1b","thread":"main","timestamp":"2026-05-12T13:58:41.863Z"}
{"class":"BackupService","error":"Command failed: %%resourcesPath%%/bin/rclone/linux/rclone copy googleDrive:LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b/ /tmp/metadata-K37kkhOFl-4ea4a152-abe6-4083-8e32-f78619e2eb1b-111941624453527003528\n2026/05/12 16:59:28 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:59:28 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 16:59:28 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:59:28 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 16:59:29 ERROR : Google drive root 'LocalBackups/metadata/4ea4a152-abe6-4083-8e32-f78619e2eb1b': error reading source root directory: directory not found\n2026/05/12 16:59:29 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 16:59:29 NOTICE: Failed to copy: directory not found\n","level":"warn","message":"Failed to copy metadata from remote","repoId":"4ea4a152-abe6-4083-8e32-f78619e2eb1b","thread":"main","timestamp":"2026-05-12T13:59:29.214Z"}
{"class":"BackupService","error":{"code":3,"name":"ExecError","stderr":"2026/05/12 17:01:05 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:05 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:05 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:05 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:06 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:06 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:06 NOTICE: Failed to copy: directory not found\n","stdout":""},"level":"warn","message":"Failed to fetch metadata for provider googleDrive, account 111941624453527003528","thread":"main","timestamp":"2026-05-12T14:01:06.228Z"}
{"class":"BackupService","error":{"code":3,"name":"ExecError","stderr":"2026/05/12 17:01:07 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:07 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:08 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:08 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:08 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:08 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:08 NOTICE: Failed to copy: directory not found\n","stdout":""},"level":"warn","message":"Failed to fetch metadata for provider googleDrive, account 111941624453527003528","thread":"main","timestamp":"2026-05-12T14:01:08.804Z"}
{"class":"BackupService","error":{"code":3,"name":"ExecError","stderr":"2026/05/12 17:01:15 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:15 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:16 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:16 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:16 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:16 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:16 NOTICE: Failed to copy: directory not found\n","stdout":""},"level":"warn","message":"Failed to fetch metadata for provider googleDrive, account 111941624453527003528","thread":"main","timestamp":"2026-05-12T14:01:16.536Z"}
{"class":"BackupService","error":{"code":3,"name":"ExecError","stderr":"2026/05/12 17:01:18 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:18 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:18 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:18 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:18 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:18 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:18 NOTICE: Failed to copy: directory not found\n","stdout":""},"level":"warn","message":"Failed to fetch metadata for provider googleDrive, account 111941624453527003528","thread":"main","timestamp":"2026-05-12T14:01:18.845Z"}
{"class":"BackupService","error":{"code":3,"name":"ExecError","stderr":"2026/05/12 17:01:20 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:20 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:20 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:20 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:21 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:21 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:21 NOTICE: Failed to copy: directory not found\n","stdout":""},"level":"warn","message":"Failed to fetch metadata for provider googleDrive, account 111941624453527003528","thread":"main","timestamp":"2026-05-12T14:01:21.298Z"}
{"class":"BackupService","error":{"code":3,"name":"ExecError","stderr":"2026/05/12 17:01:22 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:22 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:23 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:23 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:23 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:23 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:23 NOTICE: Failed to copy: directory not found\n","stdout":""},"level":"warn","message":"Failed to fetch metadata for provider googleDrive, account 111941624453527003528","thread":"main","timestamp":"2026-05-12T14:01:23.483Z"}
{"class":"BackupService","error":{"code":3,"name":"ExecError","stderr":"2026/05/12 17:01:24 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:24 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:25 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:25 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:25 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:01:25 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 17:01:25 NOTICE: Failed to copy: directory not found\n","stdout":""},"level":"warn","message":"Failed to fetch metadata for provider googleDrive, account 111941624453527003528","thread":"main","timestamp":"2026-05-12T14:01:25.544Z"}
{"class":"OAuthLoopbackServer","level":"error","message":"Failed to start OAuth loopback session OAuth callback timeout","stack":"Error: OAuth callback timeout\n at Timeout.<anonymous> (%%appPath%%/main/oauth/loopbackServer/index.js:199:57)\n at listOnTimeout (node:internal/timers:588:17)\n at process.processTimers (node:internal/timers:523:7)","thread":"main","timestamp":"2026-05-12T14:04:06.236Z"}
{"class":"GoogleDriveOAuthHandler","level":"error","message":"Google Drive OAuth authentication failed OAuth callback timeout","stack":"Error: OAuth callback timeout\n at Timeout.<anonymous> (%%appPath%%/main/oauth/loopbackServer/index.js:199:57)\n at listOnTimeout (node:internal/timers:588:17)\n at process.processTimers (node:internal/timers:523:7)","thread":"main","timestamp":"2026-05-12T14:04:06.239Z"}
{"class":"GoogleDriveService","level":"error","message":"Google Drive authentication failed OAuth callback timeout","stack":"Error: OAuth callback timeout\n at Timeout.<anonymous> (%%appPath%%/main/oauth/loopbackServer/index.js:199:57)\n at listOnTimeout (node:internal/timers:588:17)\n at process.processTimers (node:internal/timers:523:7)","thread":"main","timestamp":"2026-05-12T14:04:06.239Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:enabled-providers","stringifiedCallback":"(siteId) => __awaiter(this, void 0, void 0, function* () {\n try {\n return (0, createIpcAsyncResponse_1.createIpcAsyncResult)(yield (0, hubQueries_1.getEnabledBackupProviders)(), siteId);\n }\n catch (error) {\n logger.error(`Error - IPCASYNC_EVENTS.CLONE_BACKUP: ${error.toString()}`);\n return (0, createIpcAsyncResponse_1.createIpcAsyncError)(error, siteId);\n }\n })","thread":"main","timestamp":"2026-05-12T14:05:16.487Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:backup-site","stringifiedCallback":"(siteId, provider, description) => __awaiter(this, void 0, void 0, function* () {\n try {\n const siteJSON = LocalMain.SiteData.getSite(siteId);\n const site = new Local.Site(siteJSON);\n return (0, createIpcAsyncResponse_1.createIpcAsyncResult)(yield (0, backupService_1.createBackup)(site, provider, description), siteId);\n }\n catch (error) {\n logger.error(`Error - IPCASYNC_EVENTS.IPCASYNC_EVENTS: ${error.toString()}`);\n return (0, createIpcAsyncResponse_1.createIpcAsyncError)(error, siteId);\n }\n })","thread":"main","timestamp":"2026-05-12T14:05:16.487Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:provider-snapshots","stringifiedCallback":"(siteId, provider, pageOffset) => __awaiter(this, void 0, void 0, function* () {\n try {\n const site = (0, utils_1.getSiteDataFromDisk)(siteId);\n const backupRepo = (yield (0, hubQueries_1.getBackupReposByProviderID)(provider)).find(({ hash }) => hash === site.localBackupRepoID);\n if (!backupRepo) {\n return [];\n }\n const result = yield (0, hubQueries_1.getBackupSnapshotsByRepo)(backupRepo.id, SNAPSHOTS_PAGE_LIMIT, pageOffset);\n // Hub returns the \"config\" data as a single string, so we need to convert back to object\n result.snapshots.forEach((snapshot) => {\n snapshot.configObject = JSON.parse(snapshot.config);\n snapshot.siteId = siteId;\n });\n return (0, createIpcAsyncResponse_1.createIpcAsyncResult)(result, siteId);\n }\n catch (error) {\n logger.error(`Error - IPCASYNC_EVENTS.GET_SITE_PROVIDER_BACKUPS: ${error.toString()}`);\n return (0, createIpcAsyncResponse_1.createIpcAsyncError)(error, siteId);\n }\n })","thread":"main","timestamp":"2026-05-12T14:05:16.487Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:restore-backup","stringifiedCallback":"(siteId, provider, snapshotID) => __awaiter(this, void 0, void 0, function* () {\n try {\n const site = (0, utils_1.getSiteDataFromDisk)(siteId);\n return (0, createIpcAsyncResponse_1.createIpcAsyncResult)(yield (0, restoreService_1.restoreFromBackup)({ site, provider, snapshotID }), siteId);\n }\n catch (error) {\n logger.error(`Error - IPCASYNC_EVENTS.RESTORE_BACKUP: ${error.toString()}`);\n return (0, createIpcAsyncResponse_1.createIpcAsyncError)(error, siteId);\n }\n })","thread":"main","timestamp":"2026-05-12T14:05:16.487Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:restore-site-clone","stringifiedCallback":"(baseSite, newSiteName, provider, snapshotHash) => __awaiter(this, void 0, void 0, function* () {\n try {\n return (0, createIpcAsyncResponse_1.createIpcAsyncResult)(yield (0, cloneFromBackupService_1.cloneFromBackup)({ baseSite, newSiteName, provider, snapshotHash }), baseSite.id);\n }\n catch (error) {\n logger.error(`Error - IPCASYNC_EVENTS.CLONE_BACKUP: ${error.toString()}`);\n return (0, createIpcAsyncResponse_1.createIpcAsyncError)(error, baseSite.id);\n }\n })","thread":"main","timestamp":"2026-05-12T14:05:16.488Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:check-for-duplicate-sitename","stringifiedCallback":"(siteName) => __awaiter(this, void 0, void 0, function* () { return yield (0, checkForDuplicateSiteName_1.checkForDuplicateSiteName)(siteName); })","thread":"main","timestamp":"2026-05-12T14:05:16.488Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:edit-backup-description","stringifiedCallback":"(_a) => __awaiter(this, [_a], void 0, function* ({ metaData, snapshot, siteId }) {\n try {\n const result = yield (0, hubQueries_1.updateBackupSnapshot)({\n metaData,\n snapshotID: snapshot.id,\n resticSnapshotHash: snapshot.hash,\n status: 'complete',\n });\n return (0, createIpcAsyncResponse_1.createIpcAsyncResult)(Object.assign(Object.assign({}, result), { metaData }), siteId);\n }\n catch (error) {\n logger.error(`Error - IPCASYNC_EVENTS.EDIT_BACKUP_DESCRIPTON: ${error.toString()}`);\n return (0, createIpcAsyncResponse_1.createIpcAsyncError)(error, siteId);\n }\n })","thread":"main","timestamp":"2026-05-12T14:05:16.488Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:get-all-sites-for-user","stringifiedCallback":"() => __awaiter(this, void 0, void 0, function* () {\n // get available providers\n const providers = yield (0, hubQueries_1.getEnabledBackupProviders)();\n // get all repos for each active provider\n const repos = yield Promise.all(providers.map((provider) => __awaiter(this, void 0, void 0, function* () { return yield (0, hubQueries_1.getBackupReposByProviderID)(provider.id); })));\n // flatten array\n const allRepos = repos.reduce((acc, curVal) => acc.concat(curVal), []);\n // get all sites for all repos\n const backupSites = yield Promise.all(allRepos.map((repo) => __awaiter(this, void 0, void 0, function* () { return yield (0, hubQueries_1.getBackupSitesByRepoID)(repo.hash); })));\n // flatten array\n const allBackupSites = backupSites.reduce((acc, curVal) => acc.concat(curVal), []);\n return allBackupSites;\n })","thread":"main","timestamp":"2026-05-12T14:05:16.488Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:get-repos-by-site-id","stringifiedCallback":"(siteID) => __awaiter(this, void 0, void 0, function* () { return yield (0, hubQueries_1.getBackupReposBySiteID)(siteID); })","thread":"main","timestamp":"2026-05-12T14:05:16.488Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:get-enabled-providers-multi-machine","stringifiedCallback":"() => __awaiter(this, void 0, void 0, function* () {\n try {\n return yield (0, hubQueries_1.getEnabledBackupProviders)();\n }\n catch (error) {\n logger.error(`Error - IPCASYNC_EVENTS.MULTI_MACHINE_GET_AVAILABLE_PROVIDERS: ${error.toString()}`);\n return error;\n }\n })","thread":"main","timestamp":"2026-05-12T14:05:16.488Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:get-all-snapshots-for-site","stringifiedCallback":"(siteUUID, provider, requestedPage) => __awaiter(this, void 0, void 0, function* () {\n const repos = yield (0, hubQueries_1.getBackupReposByProviderID)(provider);\n const paginationNumber = requestedPage !== null && requestedPage !== void 0 ? requestedPage : 0;\n let repoID;\n // check all repos for the given provider\n // find the repo that matches the siteUUID\n // set the repoID so we can query snapshots by repo\n repos.forEach((repo) => {\n if (repo.hash === siteUUID) {\n repoID = repo.id;\n }\n });\n if (repoID) {\n const snapshots = yield (0, hubQueries_1.getBackupSnapshotsByRepo)(repoID, SNAPSHOTS_PAGE_LIMIT, paginationNumber);\n // Hub returns the \"config\" data as a single string, so we need to convert back to object\n snapshots.snapshots.forEach((snapshot) => {\n snapshot.configObject = JSON.parse(snapshot.config);\n });\n return snapshots;\n }\n return [];\n })","thread":"main","timestamp":"2026-05-12T14:05:16.489Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:should-load-promo-banner","stringifiedCallback":"() => __awaiter(this, void 0, void 0, function* () {\n try {\n return yield LocalMain.UserData.get(constants_1.SHOW_CLOUD_BACKUPS_PROMO_BANNER);\n }\n catch (e) {\n // noop\n }\n })","thread":"main","timestamp":"2026-05-12T14:05:16.489Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:remove-promo-banner","stringifiedCallback":"() => __awaiter(this, void 0, void 0, function* () { return yield LocalMain.UserData.remove(constants_1.SHOW_CLOUD_BACKUPS_PROMO_BANNER); })","thread":"main","timestamp":"2026-05-12T14:05:16.489Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:open-file-at-path","stringifiedCallback":"(path) => __awaiter(this, void 0, void 0, function* () { return yield electron_1.shell.openPath(path); })","thread":"main","timestamp":"2026-05-12T14:05:16.489Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:uninstall-addon","stringifiedCallback":"(addonSlug) => __awaiter(this, void 0, void 0, function* () {\n try {\n const addon = addonLoader.loadedAddons.find(a => a.slug === addonSlug);\n logger.info(`Uninstalling addon: ${addonSlug}`);\n if (!addon) {\n throw new Error(`Addon ${addonSlug} not found`);\n }\n LocalMain.sendIPCEvent('addonInstallerService:uninstall', addon);\n return (0, createIpcAsyncResponse_1.createIpcAsyncResult)({ success: true }, null);\n }\n catch (error) {\n logger.error(`Error - IPCASYNC_EVENTS.UNINSTALL_ADDON: ${error.toString()}`);\n return (0, createIpcAsyncResponse_1.createIpcAsyncError)(error, null);\n }\n })","thread":"main","timestamp":"2026-05-12T14:05:16.489Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:migrate-start","stringifiedCallback":"() => __awaiter(this, void 0, void 0, function* () {\n try {\n if ((0, migrationService_1.isMigrationInProgress)()) {\n throw new Error('Migration is already running');\n }\n logger.info('Starting backup migration...');\n const result = yield (0, migrationService_1.migrateBackups)();\n return (0, createIpcAsyncResponse_1.createIpcAsyncResult)(result, null);\n }\n catch (error) {\n logger.error(`Error - IPCASYNC_EVENTS.MIGRATE_BACKUPS_START: ${error.toString()}`);\n return (0, createIpcAsyncResponse_1.createIpcAsyncError)(error, null);\n }\n })","thread":"main","timestamp":"2026-05-12T14:05:16.489Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:migrate-status","stringifiedCallback":"() => __awaiter(this, void 0, void 0, function* () {\n try {\n const migrated = yield (0, migrationService_1.hasMigrationCompleted)();\n return (0, createIpcAsyncResponse_1.createIpcAsyncResult)({ migrated }, null);\n }\n catch (error) {\n logger.error(`Error - IPCASYNC_EVENTS.MIGRATE_BACKUPS_STATUS: ${error.toString()}`);\n return (0, createIpcAsyncResponse_1.createIpcAsyncError)(error, null);\n }\n })","thread":"main","timestamp":"2026-05-12T14:05:16.490Z"}
{"class":"addIpcAsyncListener","level":"warn","message":"Duplicate callback appears to be getting added to backups:migrate-cancel","stringifiedCallback":"() => __awaiter(this, void 0, void 0, function* () {\n try {\n logger.info('Migration cancel requested');\n yield (0, migrationService_1.cancelMigration)();\n return (0, createIpcAsyncResponse_1.createIpcAsyncResult)({ cancelled: true }, null);\n }\n catch (error) {\n logger.error(`Error - IPCASYNC_EVENTS.MIGRATE_BACKUPS_CANCEL: ${error.toString()}`);\n return (0, createIpcAsyncResponse_1.createIpcAsyncError)(error, null);\n }\n })","thread":"main","timestamp":"2026-05-12T14:05:16.490Z"}
{"class":"SiteProvisionerService","level":"error","message":"Unable to provision site.","stack":"Error: Command failed: %%userDataPath%%/lightning-services/mysql-8.4.0/bin/linux/bin/mysqld --defaults-file=%%site.runData%%/conf/mysql/my.cnf --initialize-insecure\n%%userDataPath%%/lightning-services/mysql-8.4.0/bin/linux/bin/mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory\n\n at genericNodeError (node:internal/errors:983:15)\n at wrappedFn (node:internal/errors:537:14)\n at ChildProcess.exithandler (node:child_process:417:12)\n at ChildProcess.emit (node:events:519:28)\n at maybeClose (node:internal/child_process:1101:16)\n at Socket.<anonymous> (node:internal/child_process:456:11)\n at Socket.emit (node:events:519:28)\n at Pipe.<anonymous> (node:net:346:12)","thread":"main","timestamp":"2026-05-12T14:05:16.576Z"}
{"eventId":"7d086378f20b41a195d89d370ce7c31d","level":"warn","message":"Unhandled Rejection.","p":{},"reason":{"cmd":"%%userDataPath%%/lightning-services/mysql-8.4.0/bin/linux/bin/mysqld --defaults-file=%%site.runData%%/conf/mysql/my.cnf --initialize-insecure","code":127,"killed":false,"signal":null},"thread":"main","timestamp":"2026-05-12T14:06:48.313Z"}
{"class":"BackupService","error":{"code":3,"name":"ExecError","stderr":"2026/05/12 17:07:00 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:07:00 ERROR : Attempt 1/3 failed with 1 errors and: directory not found\n2026/05/12 17:07:00 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:07:00 ERROR : Attempt 2/3 failed with 1 errors and: directory not found\n2026/05/12 17:07:01 ERROR : Google drive root 'LocalBackups/metadata': error reading source root directory: directory not found\n2026/05/12 17:07:01 ERROR : Attempt 3/3 failed with 1 errors and: directory not found\n2026/05/12 17:07:01 NOTICE: Failed to copy: directory not found\n","stdout":""},"level":"warn","message":"Failed to fetch metadata for provider googleDrive, account 111941624453527003528","thread":"main","timestamp":"2026-05-12T14:07:01.129Z"}
{"eventId":"c12187e2e60e4ede9f4010ee798b0942","level":"warn","message":"Unhandled Rejection.","p":{},"reason":{},"thread":"main","timestamp":"2026-05-12T14:08:22.909Z"}
{"level":"warn","linuxEdition":{"codename":"zara","dist":"Linux Mint","os":"linux","release":"22.2"},"localChannel":"stable","localVersion":"10.1.0+6912","message":"Electron Event ready","osArch":"x64","osPlatform":"linux","osRelease":"6.17.0-23-generic","timestamp":"2026-05-12T14:08:23.041Z","windowsEdition":null}
{"class":"Process","level":"warn","message":"2026-05-12T14:09:33.968701Z 0 [System] [MY-015015] [Server] MySQL Server - start.","process":"mysql","thread":"main","timestamp":"2026-05-12T14:09:34.084Z"}
{"class":"Process","level":"warn","message":"2026-05-12T14:09:34.082164Z 0 [System] [MY-010116] [Server] %%userDataPath%%/lightning-services/mysql-8.4.0/bin/linux/bin/mysqld (mysqld 8.4.0) starting as process 54134","process":"mysql","thread":"main","timestamp":"2026-05-12T14:09:34.084Z"}
{"class":"Process","level":"warn","message":"2026-05-12T14:09:34.083240Z 0 [Warning] [MY-013243] [Server] --character-set-server: The character set UTF8MB3 is deprecated and will be removed in a future release. Please consider using UTF8MB4 instead.","process":"mysql","thread":"main","timestamp":"2026-05-12T14:09:34.084Z"}
{"class":"Process","level":"warn","message":"2026-05-12T14:09:34.088344Z 0 [Warning] [MY-013907] [InnoDB] Deprecated configuration parameters innodb_log_file_size and/or innodb_log_files_in_group have been used to compute innodb_redo_log_capacity=201326592. Please use innodb_redo_log_capacity instead.","process":"mysql","thread":"main","timestamp":"2026-05-12T14:09:34.088Z"}
{"class":"Process","level":"warn","message":"2026-05-12T14:09:34.089200Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.","process":"mysql","thread":"main","timestamp":"2026-05-12T14:09:34.089Z"}
{"class":"Process","level":"warn","message":"2026-05-12T14:09:34.274219Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.","process":"mysql","thread":"main","timestamp":"2026-05-12T14:09:34.274Z"}
{"class":"Process","level":"warn","message":"2026-05-12T14:09:34.574816Z 0 [Warning] [MY-010068] [Server] CA certificate ca.pem is self signed.","process":"mysql","thread":"main","timestamp":"2026-05-12T14:09:34.576Z"}
{"class":"Process","level":"warn","message":"2026-05-12T14:09:34.574948Z 0 [System] [MY-013602] [Server] Channel mysql_main configured to support TLS. Encrypted connections are now supported for this channel.","process":"mysql","thread":"main","timestamp":"2026-05-12T14:09:34.577Z"}
{"class":"Process","level":"warn","message":"2026-05-12T14:09:34.620759Z 0 [System] [MY-010931] [Server] %%userDataPath%%/lightning-services/mysql-8.4.0/bin/linux/bin/mysqld: ready for connections. Version: '8.4.0' socket: '%%site.runData%%/mysql/mysqld.sock' port: 10003 MySQL Community Server - GPL.","process":"mysql","thread":"main","timestamp":"2026-05-12T14:09:34.621Z"}
{"level":"error","message":"Error setting up MySQL user","service":"mysql","serviceBinVersion":"8.4.0","stack":"Error: Command failed: %%userDataPath%%/lightning-services/mysql-8.4.0/bin/linux/bin/mysql --password= -e ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';\n%%userDataPath%%/lightning-services/mysql-8.4.0/bin/linux/bin/mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory\n\n at genericNodeError (node:internal/errors:983:15)\n at wrappedFn (node:internal/errors:537:14)\n at ChildProcess.exithandler (node:child_process:417:12)\n at ChildProcess.emit (node:events:519:28)\n at maybeClose (node:internal/child_process:1101:16)\n at Socket.<anonymous> (node:internal/child_process:456:11)\n at Socket.emit (node:events:519:28)\n at Pipe.<anonymous> (node:net:346:12)","thread":"main","timestamp":"2026-05-12T14:09:35.337Z"}
{"level":"error","message":"Error creating database.","service":"mysql","serviceBinVersion":"8.4.0","stack":"Error: Command failed: %%userDataPath%%/lightning-services/mysql-8.4.0/bin/linux/bin/mysql -e CREATE DATABASE local;\n%%userDataPath%%/lightning-services/mysql-8.4.0/bin/linux/bin/mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory\n\n at genericNodeError (node:internal/errors:983:15)\n at wrappedFn (node:internal/errors:537:14)\n at ChildProcess.exithandler (node:child_process:417:12)\n at ChildProcess.emit (node:events:519:28)\n at maybeClose (node:internal/child_process:1101:16)\n at Socket.<anonymous> (node:internal/child_process:456:11)\n at Socket.emit (node:events:519:28)\n at Pipe.<anonymous> (node:net:346:12)","thread":"main","timestamp":"2026-05-12T14:09:35.345Z"}
{"class":"SiteProvisionerService","level":"error","message":"Unable to provision site.","stack":"Error: Command failed: %%userDataPath%%/lightning-services/mysql-8.4.0/bin/linux/bin/mysql -e CREATE DATABASE local;\n%%userDataPath%%/lightning-services/mysql-8.4.0/bin/linux/bin/mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory\n\n at genericNodeError (node:internal/errors:983:15)\n at wrappedFn (node:internal/errors:537:14)\n at ChildProcess.exithandler (node:child_process:417:12)\n at ChildProcess.emit (node:events:519:28)\n at maybeClose (node:internal/child_process:1101:16)\n at Socket.<anonymous> (node:internal/child_process:456:11)\n at Socket.emit (node:events:519:28)\n at Pipe.<anonymous> (node:net:346:12)","thread":"main","timestamp":"2026-05-12T14:09:35.371Z"}
LocalWP can’t find critical libraries:
libaio.so.1: cannot open shared object file
libncurses.so.5: cannot open shared object file
These are needed for MySQL to run properly. Even though you’re on Linux Mint 22.2, these libraries might be missing or outdated.
Step 1: Install Missing Libraries
Run these commands in your terminal:
# Update package manager
sudo apt update
# Install missing libraries
sudo apt install libaio1 libncurses5
# Verify installation
ldconfig -p | grep libaio
ldconfig -p | grep libncurses
Google Drive OAuth Timeouts
Your logs show repeated failures:
Google Drive OAuth authentication failed - OAuth callback timeout
Failed to fetch metadata for provider googleDrive
Try re-authenticating your Google Drive:
- In LocalWP, go to Backups
- Find your Google Drive provider and click the settings/gear icon
- Sign out completely
- Sign back in and grant LocalWP full Drive access
There might be some other investigation and troubleshooting necessary after this but we’ll start with those and go from there!