diff --git a/dashboard/src/js/setup.js b/dashboard/src/js/setup.js index 1f1ce116d..c71acc6fd 100644 --- a/dashboard/src/js/setup.js +++ b/dashboard/src/js/setup.js @@ -17,6 +17,7 @@ app.controller('SetupDNSController', ['$scope', '$http', '$timeout', 'Client', f $scope.clipboardDone = false; $scope.search = window.location.search; $scope.setupToken = ''; + $scope.taskMinutesActive = null; $scope.tlsProvider = [ { name: 'Let\'s Encrypt Prod', value: 'letsencrypt-prod' }, @@ -277,7 +278,10 @@ app.controller('SetupDNSController', ['$scope', '$http', '$timeout', 'Client', f return; } - if (!error) $scope.message = status.setup.message; + if (!error) { + $scope.message = status.setup.message; + $scope.taskMinutesActive = (new Date() - new Date(status.setup.startTime)) / 60000; + } setTimeout(waitForDnsSetup, 5000); }); diff --git a/dashboard/src/setup.html b/dashboard/src/setup.html index 34e406632..c19c72988 100644 --- a/dashboard/src/setup.html +++ b/dashboard/src/setup.html @@ -69,9 +69,14 @@

- Please wait while Cloudron is setting up the dashboard at my.{{dnsCredentials.domain}}.
+ Please wait while Cloudron is setting up the dashboard.
You can follow the logs on the server at /home/yellowtent/platformdata/logs/box.log

+
+
+

+ If setup appears stuck, it can be restarted by running systemctl restart box and reloading this page. +

diff --git a/src/provision.js b/src/provision.js index 3e87b6872..6960e51da 100644 --- a/src/provision.js +++ b/src/provision.js @@ -37,12 +37,14 @@ const gStatus = { setup: { active: false, message: '', - errorMessage: null + errorMessage: null, + startTime: null }, restore: { active: false, message: '', - errorMessage: null + errorMessage: null, + startTime: null }, activated: false, adminFqdn: null, @@ -98,7 +100,7 @@ async function setup(domainConfig, ipv4Config, ipv6Config, auditSource) { if (gStatus.setup.active || gStatus.restore.active) throw new BoxError(BoxError.BAD_STATE, 'Already setting up or restoring'); - gStatus.setup = { active: true, errorMessage: '', message: 'Adding domain' }; + gStatus.setup = { active: true, errorMessage: '', message: 'Adding domain', startTime: (new Date()).toISOString() }; try { const activated = await users.isActivated(); @@ -220,7 +222,7 @@ async function restore(backupConfig, remotePath, version, ipv4Config, ipv6Config if (gStatus.setup.active || gStatus.restore.active) throw new BoxError(BoxError.BAD_STATE, 'Already setting up or restoring'); - gStatus.restore = { active: true, errorMessage: '', message: 'Testing backup config' }; + gStatus.restore = { active: true, errorMessage: '', message: 'Testing backup config', startTime: (new Date()).toISOString() }; try { const activated = await users.isActivated();