Unofficial Flatpak for the Mullvad VPN desktop client on Linux.
STATUS: ❌ - The Flatpak version of Mullvad VPN doesn’t work because the Mullvad system daemon performs strict ownership and permission checks that require direct access to the host system. Flatpak’s sandboxing model blocks the app from interacting with the system-level components the daemon expects, so the client cannot work properly.
This package provides the official Mullvad VPN desktop application (GUI + CLI) running inside a Flatpak sandbox. To establish a VPN tunnel it requires a Mullvad VPN daemon running on the host system (outside Flatpak).
Important: This project is not affiliated with or endorsed by Mullvad. It only repackages the official Mullvad binaries into a Flatpak manifest. Please do not report Flatpak-specific issues to Mullvad; use this repository’s issue tracker instead.
- Runs the official Mullvad VPN desktop GUI (Electron) in a Flatpak sandbox.
- Includes the
mullvadCLI inside the sandbox. - Integrates with:
- Wayland/X11
- System tray (
org.kde.StatusNotifierWatcher) org.freedesktop.NetworkManagerandorg.freedesktop.secretsover the system D-Bus
- Relies on Flatpak’s sandbox; the Chromium SUID helper (
chrome-sandbox) is removed.
- Flatpak installed and configured with Flathub.
- Runtimes:
org.freedesktop.Platform//25.08org.freedesktop.Sdk//25.08(for building)
- Mullvad VPN daemon running on the host and exposing its RPC socket under
/run/mullvad-vpn.
Without the daemon, the Flatpak will start, but it will not be able to establish a VPN tunnel and will show errors such as:
- “No connection established to daemon”
- “Failed to connect to daemon before the deadline”
First install flatpak-builder with your package manager.
Then build and install for your user:
flatpak-builder --force-clean --user --install-deps-from=flathub \
--repo=repo --install builddir net.mullvad.mullvadvpn.yamlAfter installation, run the app with:
flatpak run net.mullvad.mullvadvpnOn Arch Linux, you can install Mullvad VPN (daemon + native GUI) from AUR:
yay -S mullvad-vpnEnable and start the daemon:
sudo systemctl enable --now mullvad-daemon.service
systemctl status mullvad-daemon.serviceEnsure the RPC socket directory exists:
ls -l /run/mullvad-vpn /var/run/mullvad-vpn 2>/dev/nullIf you need to force the socket path to /run/mullvad-vpn, create a systemd override:
sudo systemctl edit mullvad-daemon.serviceAdd:
[Service]
Environment=MULLVAD_RPC_SOCKET_PATH=/run/mullvad-vpnThen reload and restart:
sudo systemctl daemon-reload
sudo systemctl restart mullvad-daemon.service
ls -l /run/mullvad-vpnOnce the daemon and socket are available, start the Flatpak:
flatpak run net.mullvad.mullvadvpnThe GUI should now be able to connect to the daemon and control the VPN tunnel.
Contributions are welcome! Feel free to open issues and pull requests for:
- Manifest improvements
- Runtime/runtime-version updates
- Packaging fixes for new Mullvad releases