Please double-check the instructions and continue at your own peril, but the following steps were verified to work by me on Debian GNU/Linux 9 “Stretch”, at the date of this post. (Edit, 2020-06-21: Confirmed to work with Debian GNU/Linux 10 “Buster”, too.) Feel free to point out any errors or potential security risks in the comments. (Also, remember that it is generally considered a bad idea to copy-paste to terminal.
1. Install Signal-Desktop.
2. Install signal-cli. The command line instructions to do so are:
export VERSION="X.X.X"
wget https://github.com/AsamK/signal-cli/releases/download/v"${VERSION}"/signal-cli-"${VERSION}".tar.gz
sudo tar xf signal-cli-"${VERSION}".tar.gz -C /opt
sudo ln -sf /opt/signal-cli-"${VERSION}"/bin/signal-cli /usr/local/bin/
The first command might be hard to interpret. What it means is: open the list of versions and check out what the latest one is. Replace the text within the quotation marks, on the first line above, with the version number. Currently, that means the command should be export VERSION="0.8.1"
3. Launch Signal
4. Take a screenshot of the QR code. Crop it, and upload it to a QR decoder. I used ZXing. Copy the code it gives you (should be something starting with tsdevice:/?
5. Time to register your phone of choice. In Terminal, enter:
signal-cli -u USERNAME register
Replace USERNAME with your phone number, in its international format (starting with a + sign). There’s also a way to register with a voice call, more information can be found on the signal-cli pages on GitHub.
At this point, and especially if you are on a VPN, you might get an error message saying “Captcha required for verification (null)”. If so (following the instructions on the signal-cli Github):
- Go to this rather anonymous looking website. It should show a blank, white page, with a Google captcha challenge to complete. (If not, try reloading it in incognito mode.)
- Open your browser’s Developer tools (F12 if you’re using Firefox), and switch to the Console tab, then complete the captcha.
- After successfully completing it, scroll to the top of the yellow Console tab. There should be a message there saying
Prevented navigation to “signalcaptcha://CAPTCHANUMBER" due to an unknown protocol
. - Copy the long number (not the “signalcaptcha://” bit, just the number).
- In terminal, enter
signal-cli -u USERNAME register --captcha CAPTCHANUMBER
Again, replacing USERNAME with your phone number and CAPTCHANUMBER with the long code from the console tab. It should now register. Remember that the captcha has to be pretty fresh, so be rather quick here. If too much time has elapsed, you will get an error message, and can retry.
6. You should get a text message with a verification code. Use this to verify your phone number: signal-cli -u USERNAME verify xxx-xxx
Again, replacing USERNAME with your phone number, and the x’s with the verification code you just received.
7. In order to link your phone number with the Signal-Desktop app, replace the word CODE with the code you got in step 5, and, again, USERNAME with your phone number in the following command: signal-cli -u USERNAME addDevice --uri "CODE"
8. That’s it, Signal-Desktop should now launch. If you want to, you can clear the variable attribute you set by running the command export -n VERSION
Notes:
- Signal-Desktop might ask you to “relink” your phone after a certain time. If that happens, just go through the steps 4-8 again.
- Sometimes, in my experience, the text message verification will take a few hours to send. When you eventually get it, you might have to go through steps 4-8 again (restarting Signal), as the QR code will need to be regenerated.
- If you’ve sent an erroneous/outdated QR code as a result of waiting too long for the text verification and not generating a new one, you might get a
NotFoundException: Not found
error. Once you generate a new QR code, you might, in turn, get a “Rate limit exceeded: 413” error – but just trying once more should solve that.