HowTo: Install MullvadVPN & Browser on Fedora Atomic Desktops

MullvadVPN is a VPN service that advertizes with good privacy. They accept crypto or cash payments and have opensource and audited VPN clients, also for Fedora.

They maintain a Fedora Repository but of course have no instructions on how to install it on Fedora Atomic Desktops.

I made this repo with a ton of tips for general Linux but also Fedora Atomic

Enjoy!

Here are some more tips

4. Control the VPN

Tray icon

The VPN uses a tray icon, on Silverblue you can use this GNOME extension instead or restore tray icons with this one

CLI

You can also control it via the terminal.

mullvad -h

Split tunneling

Example: spawn a flatpak app without using the VPN

mullvad-exclude flatpak run org.localsend.localsend_app

You can create a desktop entry (the icon with text in your app menu), so that the app will always be spawned in split tunneling mode:

1. Copy the system desktop entry to the editable user location

cp /var/lib/flatpak/exports/share/applications/org.localsend.localsend_app.desktop ~/.local/share/applications/

2. Manipulate the Start command

sed -i 's/Exec=/Exec=mullvad-exclude /g' ~/.local/share/applications/org.localsend.localsend_app.desktop

This app entry will be shown instead of the original one (as they have the same name) and your app will now work in your local network!

other example, Syncthing: flatpak search syncthing --columns=application

3 Likes

Hello. Thank you for this guide. I’m having a small issue. I’m on Fedora 40 Kinoite. When I run the command curl -SsL https://repository.mullvad.net/rpm/stable/mullvad.repo | pkexec tee > /etc/yum.repos.d/mullvad.repo I get the output bash: /etc/yum.repos.d/mullvad.repo: Permission denied

Perhaps I must use sudo after all?

I got it working by running the first command in a root terminal (sudo didn’t do the trick). Please note that I’m very new to atomic desktops and not very experienced with Linux in general. :sweat_smile:

1 Like

Like in the other thread, pkexec tee > /etc/yum.repos.d/mullvad.repo, the pkexec command is applied to tee but not to the redirection. So the correct command is simply

curl -SsL https://repository.mullvad.net/rpm/stable/mullvad.repo | pkexec tee /etc/yum.repos.d/mullvad.repo

It is a bit complicated for me to explain why you get Permission denied. In short, it is because the redirection (>, >>, etc.) is not executed with elevated permissions (sudo or pkexec), but the redirection is actually executed by the current user’s shell. Or in other words, e.g in sudo baz > /foo/bar, the redirection part ( > /foo/bar) is not part of the sudo baz command.

1 Like

Thanks! I think your “improved” command was the same, you probably meant to remove the redirect symbol.

I will check to do this in the future :slight_smile:

Indeed. Sorry[1]. I just edited the command.


  1. damned copy&paste :slight_smile: ↩︎

Thanks for showing how we can add a repo in Atomic desktops. It really helps extend the utility of them. May I please ask, would any repos that were added like this require extra steps between major releases like RPM Fusion does?

In their case, the repos have to be removed and re-installed all over again. Here, the app developer seems to have added the repo without a specific version of Fedora in mind. Does that mean apps with similar repos also don’t require RPM Fusion type extra steps?

The rpmfusion problem is the same as on traditional Fedora, that an external repo needs to follow the versions dynamically, or if the version is fixed, the repo needs to be changed before the update can be done.

On traditional systems this is extremely messy, as you change the system to the new one, while using the old one. So you change the repo, and download the new package, while using the old package, and swap them on the same system. It is a mess, and I personally got stuck in weird “states in between” quite a lot.

Rpmfusion bypasses that issue by using packages you install, rather than repo files you add manually. These packages will auto-update on upgrades afaik. See their official docs.

MullvadVPN may just use a dynamic RPM version with $(rpm -E %fedora)

I see. Then, I imagine the situation to be similar with the Tailscale example from the official documentation.

Side note, I actually used your instructions to install Mullvad Browser instead. I noticed that Mullvad instructions for both the VPN and browser added the same repo in their instructions, so once I added the repo, all I needed was to run:

rpm-ostree install mullvad-browser

I thought you could mention that functionality in your post, in case someone misses it down here.

1 Like

Added mullvadvpn

Nice find! I forgot about MullvadBrowser or didnt know they had an RPM repo.

I moved a lot from here to my Github repo that contains more tips and some scripts.

Hi all, Silverblue newbie here :mask:

I attempted to use SB earlier this year, but couldn’t get Mullvad VPN working. Can’t live without that, so went back to Fedora workstation.

Now that I discovered this thread I’ve given it another go. Mullvad installed no prob!

@boredsquirrel I noticed the commands here and on your github page are different. I don’t understand the difference, so I used the command from your github. Worked first time, thank you!

Once Mullvad was installed, I used its app interface to set my preferences.

Many thanks for taking the time to post your work!!! :+1:t3:

1 Like

You are welcome

No idea what commands you mean, there should be no duplicated ones.

If you are not sure, quote one and ask what it does. Or use a free Chatbot and ask it what that does.