Skip to main content

Installing Signal on the Raspberry Pi

Linux (Debian-based) Install Instructions

The following instructions for installing the Signal client on Linux are copied verbatim from signal.org. These instructions are formatted so they may be used directly as a bash shell script.

# NOTE: These instructions only work for 64-bit Debian-based
# Linux distributions such as Ubuntu, Mint etc.

# 1. Install our official public software signing key:
wget -O- https://updates.signal.org/desktop/apt/keys.asc \
  | gpg --dearmor > signal-desktop-keyring.gpg
cat signal-desktop-keyring.gpg \
  | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null

# 2. Add our repository to your list of repositories:
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg]\
  https://updates.signal.org/desktop/apt xenial main' \
  | sudo tee /etc/apt/sources.list.d/signal-xenial.list

# 3. Update your package database and install Signal:
sudo apt update && sudo apt install signal-desktop
  
Figure: bash script to install Signal desktop client under Linux

Unfortunately, that procedure described by Signal for use with Debian Linux only works for the amd64 build of Linux — the Raspberry Pi 3b+ has an ARM processor (ARM7, iirc), and so requires an ARM build, which signal.org does not seem to have.

Furthermore, it seems this is not an unheard of problem. We are not the first kitteh to try to load Signal desktop on a Raspberry Pi, it seems: Issue 3410 at GitHup talks about it, there is a Raspberry Pi Forums Post about it, as well.

Git has another thread about this issue here: Issue 3410. In the comment Issue Comment 556153784 author rj45jack writes about compling Signal Desktop for arm64 architechture.

git clone https://github.com/signalapp.git # I used ssh, not https, but ymmv
git checkout v1.28.0 # or whatever version
# curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - # install nodejs & npm if you do it on a chromebook
# sudo apt-get install -y nodejs
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash # install nvm
# (restart shell)
sudo npm i -g npm nvm yarn # install nvm, update npm
npm config delete prefix # make it stop complaining
# cd into cloned repo
nvm use # switch node version to be compatible
yarn install --frozen-lockfile # Install and build dependencies (this will take a while)
yarn grunt                     # Generate final JS and CSS assets
yarn icon-gen                  # Generate full set of icons for Electron
SIGNAL_ENV=production yarn build --linux --arm64 # cross-compile a .deb file
Figure: Build Signal Desktop for Debian arm64 Architecture

A Signal Alternative

snapcraft.io has a Signal alternative called "Axolotl": Install Axolotl - A crossplatform signal client on Raspberry Pi

Unfortunately, AXolotl is a snaps app, and since snaps is a yet-another-package-management-utlity that we probably won't need because all it seems to add to the paradigm is "support for IoT" - the insidious creeping commercialism, we're going to pass on this one for now.

Beekeeper's ARM Build Support

There is a Quick Guide to Building Electon Apps For ARM Linux and the Raspberry Pi hosted by Beekeeper Studio but note that the publication date on the Guide is 2020 — almost 3 years ago, as of this writing. Why is there not an apt package for arm64 yet? Something seems fishy with this.

The other interesting tidbit of information that came out of all that reading about building Signal for ARM was that Signal is "writen in Javascript" –– for whatever that's worth…

Comments

Popular posts from this blog

CSS Animation and Movement Effects

List of documentation with examples from w3schools.com: CSS 3 transition Property The transition property is a shorthand property for: transition-property transition-duration transition-timing-function transition-delay Note:  Always specify the transition-duration property, otherwise the duration is 0s , and the transition will have no effect. CSS Animations tutorial from W3 Schools

YouTube Video: Building products with NetBSD: Thin-clients by Stephen Borrill

Build a thin client using NetBSD