Signal is a free and open source messaging application developed by the Signal Foundation: it is available on all the major operating systems such as Linux, Windows, Android and iOS, and supports all the major features one can expect, such as encryption, the ability to send files and make group calls. All the infrastructure behind Signal is open source, including the messaging protocol and the server software: the source code is available on github.
In this tutorial we learn how to install the Signal desktop application on the major Linux distributions, using native, snap and flatpak packages.
In this tutorial you will learn:
- How to install the Signal desktop application on Debian from the official Signal repository
- How to install the Signal desktop application as a snap package
- How to install the Signal desktop application as a flatpak

Category | Requirements, Conventions or Software Version Used |
---|---|
System | Distribution independent |
Software | snapd or flatpak (if using the corresponding installation methods) |
Other | None |
Conventions | # – requires given linux-commands to be executed with root privileges either directly as a root user or by use of sudo command $ – requires given linux-commands to be executed as a regular non-privileged user |
Introduction
Installing the Signal desktop application on Linux is not an hard task. On every Linux-based system we can install the application by using one of the two major cross-distribution installation methods: snap and flatpak. Additionally, if we are using a recent version of Debian or a Debian-based distribution, we can choose to install Signal as a native package from the official repository. Let’s see how to proceed.
Installing Signal from the official repository on Debian-based distributions
Installing the native Signal package from the official repository let us achieve the best possible system integration. With this method, the application and its dependencies will be updated and managed together with the other system packages by using the distribution package manager.
The first thing we need to do is to download and import the GPG key used to sign the packages contained in the Signal repository. The key needs to be “dearmored” before being saved on our system, in the
/usr/share/keyrings
directory. We can use the gpg --dearmor
command to accomplish the task:
$ curl -s https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
Once the repository key is in place, we can add the Signal repository to our distribution software sources:
$ 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 > /dev/null
At this point, we can synchronize our system with the new repository and install Signal:
$ sudo apt update && sudo apt install signal-desktop
Installing Signal as a snap package
Snap packages are one of the two main software cross-distribution methods on Linux. Snaps were originally developed by Canonical, the company behind Ubuntu. A snap package contains an application together with its runtime dependencies. On recent versions of Ubuntu (>= 16.04) snapd
, the utility used to manage snap packages, is installed by default; on older Ubuntu versions and on other Linux distributions, we must install it explicitly. To perform the installation on Debian and older versions of Ubuntu, we can run:
$ sudo apt install snapd
On Fedora, instead, we need to run:
$ sudo dnf install snapd
Once snapd
is installed on our system, to install the Signal desktop application, we can run:
$ sudo snap install signal-desktop
For the application launcher to appear in the applications menu, we may need to logout and login again.

Installing Signal as a flatpak
Flatpaks represent another cross-distribution method to install applications on Linux. Some people (like me), prefer them over snap packages, since, among the other things, they can be installed at the user-level, without using privilege escalation. In order to install Signal as a flatpak, we first need to make sure the flatpak
application is installed on our system.
To install it on Debian and Debian-based distributions, we can run:
$ sudo apt install flatpak
To install it of Fedora or Red Hat Enterprise Linux (and its clones):
$ sudo dnf install flatpak
The next thing we need to do, is to add the Flathub remote as a software source:
$ flatpak --user remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
The
--user
option in the command above is used to perform the operation in the user-level context. If you want to add the Flathub remote at the system level, just remove it, and run the command with elevated privileges by prefixing it with sudo
. The same thing is valid for the command used to install the Signal flatpak:
$ flatpak --user install flathub signal
As an alternative, we can search and install the Signal flatpak from a graphical application like gnome-software:

Conclusions
In this tutorial we learned how to install the Signal desktop application on some of the major Linux distributions. We saw how to add the official Signal repository on Debian and Debian-based distributions and perform the installation using native packages, but also how to install Signal as a snap or flathub package.