I learned more about Signal at the HOPE conference in New York City and wanted it on my Fedora laptop.
Signal does not publish a Fedora RPM. Its official Linux packages target Debian-based distributions, and its newer AppImage does not fit how I manage desktop software. I chose Distrobox instead.
This is the system I set it up for:
Fedora Linux 44 KDE Plasma Desktop Edition
KDE Plasma on Wayland
x86-64
DNF5 5.4.2.1
Distrobox 1.8.2.5
Distrobox gives me Signal’s official Debian package without adding an unsupported RPM repository to Fedora. Signal still appears in the KDE application launcher like any other desktop app.
Why I chose Distrobox
I wanted four things from this setup:
- Signal’s official APT repository
- normal KDE Plasma desktop integration
- no third-party Signal RPM repository on Fedora
- a separate home directory for Signal’s container
Distrobox checks those boxes. It uses Podman on Fedora, starts an Ubuntu user space, and exports the installed application back to the host desktop.
The container is closely integrated with Fedora. It uses the host display, audio, network, and user session. I do not treat it as a security boundary.
Check Fedora and the CPU architecture
Signal Desktop supports x86-64 Linux. Confirm the operating system and architecture:
cat /etc/fedora-release
uname -m
My laptop reports:
Fedora Linux release 44 (Forty Four)
x86_64
Signal Desktop also needs an existing Signal account on Android or iPhone. Finish the phone setup before linking the laptop.
Install Distrobox and Podman
Fedora 44 uses DNF5:
sudo dnf install distrobox podman
Check both tools:
distrobox --version
podman --version
Run Distrobox as your normal user. Do not put sudo before distrobox. Rootless Podman gives the container fewer host privileges.
Give Signal its own container home
Distrobox shares your normal home directory by default. Signal does not need access to every document, SSH file, and browser profile in my account, so I gave this box a separate home.
mkdir -p ~/.local/share/distrobox-homes/signal-box
Create an Ubuntu 24.04 container with the new home:
distrobox create \
--name signal-box \
--image ubuntu:24.04 \
--home ~/.local/share/distrobox-homes/signal-box
Enter it:
distrobox enter signal-box
The first entry takes longer. Distrobox installs the packages needed for host integration before opening the shell.
Add Signal’s official APT repository
Run the commands in this section inside signal-box.
Install the tools needed for the repository setup:
sudo apt update
sudo apt install curl gnupg
Download Signal’s signing key and install it for APT:
curl https://updates.signal.org/desktop/apt/keys.asc \
| gpg --dearmor \
> signal-desktop-keyring.gpg
sudo install \
-o root \
-g root \
-m 0644 \
signal-desktop-keyring.gpg \
/usr/share/keyrings/signal-desktop-keyring.gpg
Signal now publishes a deb822 repository file. Download it instead of copying an old xenial repository line from another guide:
curl -o signal-desktop.sources \
https://updates.signal.org/static/desktop/apt/signal-desktop.sources
sudo install \
-o root \
-g root \
-m 0644 \
signal-desktop.sources \
/etc/apt/sources.list.d/signal-desktop.sources
Install Signal Desktop:
sudo apt update
sudo apt install signal-desktop
Confirm which repository supplies the package:
apt policy signal-desktop
The candidate package should come from updates.signal.org.
Test and export Signal
Start Signal once from the container shell:
signal-desktop
Close the window after confirming it opens. Export its desktop entry while still inside signal-box:
distrobox-export --app signal-desktop
Leave the container:
exit
Open KDE Plasma’s application launcher and search for Signal. The exported shortcut starts the Ubuntu package through Distrobox.
Link Signal to the phone
Signal displays a QR code on first launch.
On the phone, open Signal Settings, select Linked devices, and add a new device. Scan the QR code from the Fedora laptop and confirm the device name.
The phone remains the primary Signal device. The Fedora installation works as a linked desktop.
Update Signal
Update the entire container from Fedora:
distrobox upgrade signal-box
Update only Signal through APT:
distrobox enter signal-box -- \
sudo apt update
distrobox enter signal-box -- \
sudo apt install --only-upgrade signal-desktop
I use the full Distrobox upgrade so Ubuntu’s security updates do not get ignored.
Troubleshoot the Distrobox setup
Signal does not appear in the KDE menu
Run the export again from inside the box:
distrobox enter signal-box
distrobox-export --app signal-desktop
exit
Log out and back in if Plasma still shows a stale application menu.
Signal opens as a blank window
Start it from a terminal and disable GPU acceleration for one test:
distrobox enter signal-box -- \
signal-desktop --disable-gpu
If the window works, the problem involves Electron’s graphics path. Keep the terminal output for troubleshooting before making a permanent launcher change.
Older guides suggest this command:
xhost +local:
I would not run it on this system. It broadens local access to the X server, and my Fedora 44 desktop uses Wayland. Distrobox already handles display integration. A blank Electron window does not prove an X authorization problem.
APT rejects the Signal repository
Check the installed files:
ls -l /usr/share/keyrings/signal-desktop-keyring.gpg
ls -l /etc/apt/sources.list.d/signal-desktop.sources
Download both files again from Signal’s Linux page if either one is missing. Do not disable signature checks to force the installation.
Remove and rebuild the box
Delete the exported shortcut first:
distrobox enter signal-box
distrobox-export --app signal-desktop --delete
exit
Remove the container:
distrobox rm signal-box
The separate home remains here:
~/.local/share/distrobox-homes/signal-box/
Keep it until you are sure no local Signal data is needed. Removing and relinking Signal Desktop does not guarantee the return of every old message.
Flatpak is easier, but I did not choose it
Flatpak is a good desktop package format. Fedora integrates it with the application menu and graphical software tools. Flatpak also provides shared runtimes, centralized updates, permission controls, and clean removal.
The Signal package on Flathub is an unverified community redistribution. Signal Foundation does not maintain or support it. For private messaging software, I prefer Signal’s official package inside Distrobox.
Install the Flatpak with:
flatpak install flathub org.signal.Signal
Launch and verify it:
flatpak run org.signal.Signal
flatpak list | grep org.signal.Signal
Electron permissions
Some guides suggest full home-directory access when Signal crashes:
flatpak override --user \
--filesystem=home \
org.signal.Signal
This weakens the sandbox. Signal then sees documents, downloads, SSH files, browser profiles, and other data under your home directory. Try the app without this override first.
If Signal only needs a folder for saved attachments, expose one directory instead:
mkdir -p ~/Signal-Attachments
flatpak override --user \
--filesystem=~/Signal-Attachments:create \
org.signal.Signal
Remove the broad home permission with:
flatpak override --user \
--nofilesystem=home \
org.signal.Signal
The Flathub maintainers also list GPU acceleration as a source of Electron startup failures:
flatpak override --user \
--env=SIGNAL_DISABLE_GPU=1 \
org.signal.Signal
Plain-text database key
The current Flathub launcher defaults to Electron’s basic password store. It writes the local Signal database key as plain text in config.json.
Flathub supports KWallet 6 on this KDE Plasma system:
flatpak override --user \
--env=SIGNAL_PASSWORD_STORE=kwallet6 \
org.signal.Signal
Set the backend before linking Signal. Switching between basic, GNOME libsecret, KWallet 5, and KWallet 6 after profile creation has caused startup failures. Current Signal releases lack a general migration path between every Linux storage backend.
The KWallet entry and Signal profile belong together. Losing either one leaves the local database unreadable. Full-disk encryption still matters because Signal attachments and other local data need protection too.
Why I do not use the AppImage
Signal publishes an official signed AppImage for x86-64 Linux. It remains an option, but I do not want it as my normal installation.
AppImages feel disconnected from the rest of the system:
- Fedora’s package manager does not own the application.
- desktop-menu integration needs manual work or another tool.
- update behavior differs between applications.
- bundled libraries duplicate storage.
- moving the file breaks launchers with a fixed path.
- Signal’s AppImage lacks operating-system authentication prompts for some optional features.
- signature verification needs separate key, signature, and application downloads.
An AppImage makes sense for a portable test. I find it clumsy for software I use every day.