signalapp / Signal-Desktop

A private messenger for Windows, macOS, and Linux.
https://signal.org/download
GNU Affero General Public License v3.0
14.68k stars 2.68k forks source link

Migrating the user profile to another computer by copying ~/.config/Signal doesn't work anymore #7060

Closed sgmihai closed 1 month ago

sgmihai commented 1 month ago

Using a supported version?

Overall summary

I used to be able to move my signal profile when switching laptops by simply copying the signal folder from .config and it would work. Now i get a "Database startup error:

Error: Error while decrypting the ciphertext provided to safeStorage.decryptString. at getSQLKey ([REDACTED]/app/main.js:1274:39) at initializeSQL ([REDACTED]/app/main.js:1323:11) at App. ([REDACTED]/app/main.js:1545:20)

App Version: 7.29.0 OS: linux"

I use kdeplasma and I have "safeStorageBackend": "kwallet6" in config.json

I have googled and found out it's some recent change in signal encryption key storage, but couldn't figure out how to fix it. Already wasted 1.5 hours on this. I have my own disk encryption, this kwallet nonsense is driving me nuts, from all the times I had trouble migrating stuff.

Please tell me how to migrate profile, so I can nuke the old install. Maybe write an official guide for this that easily googleable. Thanks.

Steps to reproduce

copy Signal folder from ~/.config to another computer and start Signal

Expected result

To work

Actual result

Doesn't work

Screenshots

No response

Signal version

7.29.0

Operating system

Archlinux

Version of Signal on your phone

No response

Link to debug log

No response

minosimo commented 1 month ago

You need to migrate the database decryption key as well. Check in the keystore, which I believe is called kwallet on KDE, for a password called "Chromium Safe Storage" and with the attribute "application Signal". There is a chance it doesn't say "Signal" when you click on it, but through process of elimination it should be possible to find the right key.

You can either copy over just that entry, or you can migrate your entire keystore by copying the files in ~/.local/share/keyrings/, just if you go that route be careful you're not overwriting anything you need on the new machine.

sgmihai commented 1 month ago

Thank you, that worked. It says "Chromium Safe Storage" and that's it, no mention of anything about Signal. I just copied the key over the old one there, and it worked. Would have been solved without opening an issue if I knew that was signal's, since I also happen to have chromium installed.

jamiebuilds-signal commented 1 month ago

I'm not sure why it's being labeled Chromium Safe Storage, but glad it worked. Otherwise we don't officially support manually copying data directories from one device to another, my only guidance would be to never use the original device/data directory again