diff --git a/src/cloudron.js b/src/cloudron.js index e51f39688..2be01d49b 100644 --- a/src/cloudron.js +++ b/src/cloudron.js @@ -111,31 +111,49 @@ function notifyUpdate(callback) { // each of these tasks can fail. we will add some routes to fix/re-run them function runStartupTasks() { - // stop all the systemd tasks - platform.stopAllTasks(NOOP_CALLBACK); + const tasks = [ + // stop all the systemd tasks + platform.stopAllTasks, - // this configures collectd to collect backup storage metrics if filesystem is used. This is also triggerd when the settings change with the rest api - settings.getBackupConfig(function (error, backupConfig) { - if (error) return debug('runStartupTasks: failed to get backup config.', error); - backups.configureCollectd(backupConfig, NOOP_CALLBACK); - }); + // this configures collectd to collect backup storage metrics if filesystem is used. This is also triggerd when the settings change with the rest api + function (callback) { + settings.getBackupConfig(function (error, backupConfig) { + if (error) return callback(error); - // always generate webadmin config since we have no versioning mechanism for the ejs - if (settings.adminDomain()) reverseProxy.writeAdminConfig(settings.adminDomain(), NOOP_CALLBACK); + backups.configureCollectd(backupConfig, callback); + }); + }, - // check activation state and start the platform - users.isActivated(function (error, activated) { - if (error) return debug(error); + // always generate webadmin config since we have no versioning mechanism for the ejs + function (callback) { + if (!settings.adminDomain()) return callback(); - // configure nginx to be reachable by IP when not activated. for the moment, the IP based redirect exists even after domain is setup - // just in case user forgot or some network error happenned in the middle (then browser refresh takes you to activation page) - // we remove the config as a simple security measure to not expose IP <-> domain - if (!activated) { - debug('runStartupTasks: not activated. generating IP based redirection config'); - return reverseProxy.writeDefaultConfig(NOOP_CALLBACK); + reverseProxy.writeAdminConfig(settings.adminDomain(), callback); + }, + + // check activation state and start the platform + function (callback) { + users.isActivated(function (error, activated) { + if (error) return callback(error); + + // configure nginx to be reachable by IP when not activated. for the moment, the IP based redirect exists even after domain is setup + // just in case user forgot or some network error happenned in the middle (then browser refresh takes you to activation page) + // we remove the config as a simple security measure to not expose IP <-> domain + if (!activated) { + debug('runStartupTasks: not activated. generating IP based redirection config'); + return reverseProxy.writeDefaultConfig(callback); + } + + onActivated(callback); + }); } + ]; - onActivated(NOOP_CALLBACK); + // we used to run tasks in parallel but simultaneous nginx reloads was causing issues + async.series(async.reflectAll(tasks), function (error, results) { + results.forEach((result, idx) => { + if (result.error) debug(`Startup task at index ${idx} failed: ${result.error.message}`); + }); }); }