diff --git a/migrations/20250724102340-backupTargets-create-table.js b/migrations/20250724102340-backupTargets-create-table.js index eb5a484a9..db9e39db7 100644 --- a/migrations/20250724102340-backupTargets-create-table.js +++ b/migrations/20250724102340-backupTargets-create-table.js @@ -25,6 +25,7 @@ exports.up = async function (db) { await db.runSql(cmd); const results = await db.runSql('SELECT name, value FROM settings WHERE name=? OR name=? OR name=?', [ 'backup_storage', 'backup_limits', 'backup_policy' ]); + if (results.length === 0) return; const name = 'Default', main = true; let config = null, limits = null, encryption = null, format = null, provider = null; diff --git a/src/backuptargets.js b/src/backuptargets.js index 0a3f0e26a..40376e281 100644 --- a/src/backuptargets.js +++ b/src/backuptargets.js @@ -5,6 +5,7 @@ exports = module.exports = { getPrimary, list, add, + addDefault, del, setConfig, @@ -485,6 +486,16 @@ async function add(data, auditSource) { return id; } +async function addDefault() { + return await add({ + name: 'Default', + provider: 'filesystem', + config: { backupDir: paths.DEFAULT_BACKUP_DIR }, + retention: { keepWithinSecs: 2 * 24 * 60 * 60 }, + schedule: '00 00 23 * * *' + }); +} + // creates a backup target object that is not in the database async function createPseudo(data) { assert.strictEqual(typeof data, 'object'); diff --git a/src/provision.js b/src/provision.js index 9263b85a7..ccf727c08 100644 --- a/src/provision.js +++ b/src/provision.js @@ -86,6 +86,7 @@ async function setupTask(domain, auditSource) { await reverseProxy.ensureCertificate(location, {}, auditSource); await ensureDhparams(); await dashboard.setupLocation(constants.DASHBOARD_SUBDOMAIN, domain, auditSource); + await backupTargets.addDefault(); setProgress('setup', 'Done'), await eventlog.add(eventlog.ACTION_PROVISION, auditSource, {}); } catch (error) {