Solved $scope.configureBackup is undefined
Trying to migrate my cloudron to a new server, I am running into an issue when trying to import the backup configuration into the new server : on the front end, it seems to load without end. Opening the dev-tools, I see that no request is made, and that there is an error in the console
$scope.configureBackup is undefined.
Additionally, it seems I can only get the web interface to work with Firefox and Safari (which gives me a slightly different error for the backup thing :
Error: undefined is not an object (evaluating '$scope.configureBackup.backupFolder'), which actually may give more information).
Chrome gives me a
NET::ERR_CERT_INVALIDerror, and it is weirdly not bypassable: (sorry, the explanation is in french, with a machine translation following)
Un chiffrement est normalement utilisé sur le site XX.XX.XX.XX pour protéger vos informations. Lors de la dernière tentative de connexion de Chrome au site XX.XX.XX.XX, des identifiants inhabituels et incorrects ont été retournés. Il est possible qu'un individu malveillant tente de se faire passer pour XX.XX.XX.XX ou qu'un écran de connexion Wi-Fi ait interrompu la connexion. Vos informations restent sécurisées, car nous avons arrêté la connexion avant l'échange des données. Vous ne pouvez pas consulter le site XX.XX.XX.XX pour le moment, car il a envoyé des identifiants brouillés qui ne peuvent être traités par Chrome. Les erreurs réseau et les attaques sont généralement temporaires. Vous devriez donc pouvoir accéder à cette page ultérieurement.
Encryption is normally used on XX.XX.XX.XX to protect your information. The last time Chrome tried to connect to XX.XX.XX.XX, unusual and incorrect credentials were returned. It is possible that a malicious individual is attempting to impersonate XX.XX.XX.XX or that a Wi-Fi connection screen has interrupted the connection. Your information is still secure because we stopped the connection before the data was exchanged. You cannot view XX.XX.XX.XX at this time, as it has sent scrambled credentials that cannot be processed by Chrome. Network errors and attacks are usually temporary. So you should be able to access this page later.
This is on 7.0.4, with
filesystembackup (and yes, my backup folder is copied onto the new server, at the same location, and owned by the
yellowtentuser). Any way I can trick the backup into finishing? Willing to do it with a curl command or something similar if necessary.
I found this curious trick in https://dblazeski.medium.com/chrome-bypass-net-err-cert-invalid-for-development-daefae43eb12 . It says if you type “badidea” or “thisisunsafe” , it will let you proceed!
On Firefox, I see no error either on the console tab nor on the network tab before the "main" error when I am trying to restore. Yes, this is indeed on the https://IP/restore.html page, not for an app restore
@girish Same error when filling the form manually
@girish Nice trick. Just tried it, i managed to get the page in Chrome. However, I still get the same error :
TypeError: Cannot read properties of undefined (reading 'backupFolder')is the exact wording in Chrome
@mehdi OK, just to rule out the obvious, I tried to backup/restore 7.0.4 install myself and it seems to work. I used Vultr Object Storage.
Not sure what the problem is, do you think you can send the IP to firstname.lastname@example.org ? And maybe the json as well (it doesn't have the secrets, so should be safe).
@girish maybe it's specific to the filesystem backup restore process? I can send you the IP, sure, but to be safe (as I had not seen the new
generate-setup-tokenparameter in the doc ^^) I have
systemctl stop boxfor the time being. Can I enable
generate-setup-tokenafter the initial install, with the CLI ?
I have managed to add a SETUP_TOKEN after the fact (for anyone interested, simply run
openssl rand -hex 10 > /etc/cloudron/SETUP_TOKENas root). I have sent you the IP and token by email.
BTW, I have also tried other backup providers on the interface (with arbitrary data in the form), and they seem to indeed send a web request. So I believe the issue is on the front-end side, and specific to the filesystem backup provider.
backupConfig.backupFolder = $scope.configureBackup.backupFolder;
backupConfig.backupFolder = $scope.backupFolder;
Now getting an error
400 setup token required. The setup token is in the URL, and in the network tab i do see it being sent in the request...
Managed to get the restore working, by fixing the
/home/yellowtent/box/dashboard/dist/js/restore.jsfile manually on the server, with the fix explained above, and removing the
SETUP_TOKENfile. I did not go to the length of looking for the root cause of the setup token thing not working, probably the variable being sent inside an object instead of at the root of the JSON request or something.
Great investigation! I have fixed up that copy and paste error in the restore.js now
@nebulon Thanks ! I'll let you look for the precise fix for the SETUP_TOKEN problem by yourselves though ^^
@mehdi this was indeed a bug in the restore code path. the setupToken, as you guessed, should be sent in the top level object and not as part of the backupConfig . Fixed now.