https://mullvad.net/en/help/install-mullvad-app-linux
Trying to install VPN and these are the instructions Mullvad is giving me. This is ridiculous. There must be a more simple way. I know how to follow the instructions but I have no idea what I’m doing here. Can’t I just download a file and install it? I’m on Ubuntu.
It’s less complicated than it looks like. The text is just a poorly written mess, full of options (Fedora vs. Ubuntu, repo vs. no repo, stable vs. beta), and they’re explaining how to do this through the terminal alone because the interface that you have might be different from what they expect. And because copy-pasting commands is faster.
Can’t I just download a file and install it? I’m on Ubuntu.
Yes, you can! In fact, the instructions include this option; it’s under “Installing the app without the Mullvad repository”. It’s a bad idea though; then you don’t get automatic updates.
A better way to do this is to tell your system “I want software from this repository”, so each time that they make a new version of the program, yours get updated.
but I have no idea what I’m doing here.
I’ll copy-paste their commands to do so, and explain what each does.
sudo curl -fsSLo /usr/share/keyrings/mullvad-keyring.asc https://repository.mullvad.net/deb/mullvad-keyring.asc echo "deb [signed-by=/usr/share/keyrings/mullvad-keyring.asc arch=$( dpkg --print-architecture )] https://repository.mullvad.net/deb/stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/mullvad.list sudo apt update sudo apt install mullvad-vpn
The first command boils down to “download this keyring from the internet”. The keyring is a necessary file to know if you’re actually getting your software from Mullvad instead of PoopySoxHaxxor69. If you wanted, you could do it manually, and then move to the /usr/share/keyrings directory, but… it’s more work, come on.
The second command tells your system that you want software from repository.mullvad.net. I don’t use Ubuntu but there’s probably some GUI to do it for you.
The third command boils down to “hey, Ubuntu, update the list of packages for me”.
The fourth one installs the software.
This is a great explanation. And really well written. Thank you for taking the time to put it together
Thanks for the explanation. However trying to run the first command gives me sudo: curl: command not found
So I’m stuck right there in the first step lol
I would have guessed that Ubuntu would install it by default since its a very common way to get stuff from the internet (when in the terminal), but apparently not (the other option is
wget
which is most likely installed, but that uses a different way to get the stuff).You should be able to install curl with
sudo apt install curl
Wow, interesting. You may be able to install curl to fix that like this:
sudo apt-get update sudo apt-get install curl
Can’t hurt to try
That should be easily solved with:
sudo apt install curl
curl is a good tool to have in general, you can install it with sudo apt install curl
You have two options: install
curl
(check @TrickDacy@lemmy.world’s comment) or do it manually. Installing curl is the easiest.If you want to do it the hard way (without the terminal), here’s how:
- Download the file
https://repository.mullvad.net/deb/mullvad-keyring.asc
from your web browser. - Open your file browser as administrator. There’s probably some link for that in the Menu.
- Move the file that you just downloaded to the directory
/usr/share/keyrings/
Really appreciate your replies dude. So many are being a bit of an jerks here, but you (and few other) have been really helpful.
You’re welcome.
I think that people being jerks take for granted how confusing this might be, if you’re new; we (people in general) tend to take vocab that we already know for granted, as well as solutions for small problems. …except that it doesn’t work when you’re starting out, and we all need to start out somewhere, right.
Yeah, once you work in Linux for so long seeing someone ask about curl missing is really easy to take for granted that we all started there, we’ve all been fresh on Linux. A lot of people take pride in their experience, but they shouldn’t lord it over those who are learning to advance themselves. It’s completely counter to why Linux even exists.
- Download the file
sudo apt install curl
Hmm… ProtonVPN team solved this in better way. They put the repo configuration stuff into DEB file, so it’s just a matter of double clicking it and clicking install on Debian-based and Ubuntu-based (I know Ubuntu is Debian-based) distros and then installing the ProtonVPN client through either GUI or CLI package manager, whichever you wish to use. More newbie-friendly.
Unfortunately, I also just learned they dropped support for Arch Linux :(
We’d love to support the new app for arch Linux but honestly we’re understaffed and don’t have the bandwidth to be supporting the same distros that we did before with the previous client (4 packages before vs 10 packages now). If anyone from the community is willing to make AUR packages for themselves and publish/maintain them we’re totally fine with that, as long as people keep in mind that it would be an unofficial version because we currently don’t support arch Linux with the new v4 app.
Also if anyone’s interested: https://boards.eu.greenhouse.io/proton/jobs/4140067101
I love this community because of responses like this.
to be fair all of that should be a flatpak you click once to install
Frankly in this case even a simple bash script would do the trick. Have it check your distro, version, and architecture; if you got curl and stuff like this; then ask you if you want the stable or beta version of the software. Then based on this info it adds Mullvad to your repositories and automatically install it.
nowadays they always come across as lazy to me, when a bunch of options are available to make installing software on linux painless.
I like them, even for software installation. Partially because they’re lazy - it takes almost no effort to write a bash script that will solve a problem like this.
That said a flatpak (like you proposed) would look far more polished, indeed.
oh i meant devs who provide packages but don’t bother with install scripts.
bash scripts are fine when they exist.
Any instructions that say sudo curl should be thrown out immediately.
Agreed it’s not best practice. But when somebody is saying the individual step-by-step is too complicated, you want to give them the simplest command possible. Even if it is more risky. It’s a trade off of accessibility versus complexity
So usually people do install Linux software from trusted software repositories. Linux practically invented the idea of the app store a full ten years before the first iPhone came out and popularized the term “app.”
The problem with the Mullvad VPN is that their app is not in the trusted software repositories of most Linux distributions. So you are required to go through a few extra steps to first trust the Mullvad software repositories, and then install their VPN app the usual way using
apt install
or from the software center.You could just download the “.deb” file and double click on it, but you will have to download and install all software security updates by hand. By going through the extra steps to add Mullvad to your trusted software repository list, you will get software security updates automatically whenever you install all other software updates on your computer.
Most Linux distros don’t bother to make it easy for you to add other trusted software repositories because it can be a major security risk if you trust the wrong people. So I suppose it is for the best that the easiest way to install third-party software is to follow the steps you saw on the website.
This is one of the hardest walls for people to jump over mentally, from scavenging the internet for binaries to using a package manager.
I think ideally one should understand what they’re doing, I think that if you did you would realise it’s not hard, just different from what you’re used to. Usually you install things using the graphical package manager, of which there are a lot, since I don’t know which one you are using nor have I used any of them in a long while, I’ll use the terminal as an example (same reason the site uses terminal commands), but all of this is almost assuredly possible via GUI.
To install things you usually do
sudo apt install
, this is a huge advantage on Linux, it works similar to your phone in that everything gets updated together but also it installs dependencies separately, which means that instead of having 10 copies of the same library for 10 programs that use it (like on Windows) you get a single one, which is part of the reason binaries are smaller on Linux.The problem with this approach is that some programs are NOT listed there, the only programs there are the ones the maintainers of your distro (Ubuntu in this case) can review and approve. So you can have a lot of different solutions for this:
The first and most obvious for Windows users is to download the .deb from the website and just run that like you would a binary on windows, i.e. double-clicking it, or from the terminal you can run
sudo dpkg -i
. This works, but you lose the advantages of a package installed via your package manager, i.e. you would get the same experience as on windows, so it’s not ideal.The second way is the one they’re describing, essentially you’re adding a new repository to the package manager, that the people who wrote the program are maintaining (instead of Ubuntu guys), this is a two step process,
sudo curl -fsSLo /usr/share/keyrings/mullvad-keyring.asc https://repository.mullvad.net/deb/mullvad-keyring.asc
that command is downloading the filehttps://repository.mullvad.net/deb/mullvad-keyring.asc
and putting it in/usr/share/keyrings/mullvad-keyring.asc
, this is needed because repositories are not trusted by default, that would be a security nightmare, you can do this via GUI if your problem is with the terminal , just download the file and copy it to that location, it’s just harder to explain than giving you a command. Then it’s adding the repository to the repository list, the command isecho "deb [signed-by=/usr/share/keyrings/mullvad-keyring.asc arch=$( dpkg --print-architecture )] https://repository.mullvad.net/deb/stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/mullvad.list
that command has a lot to unwrap, in essence it’s editing the file/etc/apt/sources.list.d/mullvad.list
and writing a line likedeb [signed-by=/usr/share/keyrings/mullvad-keyring.asc arch=amd64] https://repository.mullvad.net/deb/stable focal main"
there, but because the guy who wrote this doesn’t know your architecture (e.g. amd64) nor your version (e.g. focal) he wrote a command that gets that information from your system, you can instead write the file yourself if you know those. Then install via package manager as normal.There’s a third way which is more recent which is install via snap/flatpak which is similar to install via package manager, except you don’t add new repos.
There’s a fourth way which is manually, usually when you compile stuff you install them manually.
I know it’s a lot to take in, but I’m of the opinion that if you understand what’s happening it makes things easier.
The problem is that for most users, when their setup is completed they won’t need to play with it for a while so after that any time they need to install something new through the terminal it means losing time to find instructions again.
Nothing is learned, to the eyes of a casual users it’s just meaningless entries getting copy/pasted and it’s information getting repeated again and again and again just with slightly different entries for each program. Meanwhile “how to install a program on Windows” would basically require one page on the whole internet to cover 99% of situations: “Download the install file, double click it, follow the on screen instructions to automatically install the program”.
The instructions on that page make it so that every time you run a system update, mullvad automatically updates as well. If you’re happy doing the updating yourself, you can download the
deb
file from here: https://github.com/mullvad/mullvadvpn-app/releasesThat’s even more confusing.
I just don’t get why on windows and mac I can download the app from their site, install it and it just works but on Linux I have to do everything thru terminal. It’s not that I can’t get it done but it just seems insane to me that it has to be this difficult.
You don’t have to do everything through terminal. You can use synaptic for example. What you have to do is to learn new concepts. If you want to do everything like in windows, use windows.
I’m giving Linux a chance because people here recommended that I do and now you’re telling me to use Windows.
Learning about package management, and repositories, is part of the Linux experience. It’s worthwhile to dive into the documentation and figure it out.
There is a learning curve, but the rewards are more software independence.
I don’t recommend using anything new to you unless you are ready to learn it. If you are, welcome aboard!
I think a better way for the other user to have stated this, is learning Linux, while difficult at times, should be a fun and rewarding experience. I’m about a year in, and this is all easy stuff to me. One year ago? I would have been as frustrated as you are. But I persevered, I learned, and I got a sense of accomplishment out of becoming competent. I don’t really need to ask too many questions now, because the more I figure things out, the easier it gets to figure things out.
If you’re not into that, Linux might not be for you. But I hope it is, I hope you persevere and keep learning and find the same satisfaction from it that I have.
Look at it like this.
When you got your first smart phone, be it android or iOS, you didn’t know where anything was, so there was a learning curve.
But, in the same way as phones, there are built in “stores”. Those stores are called repositories, and they’re accessible in more than one way. You don’t actually have to use the terminal, it’s just usually faster since you really don’t type much more than you would entering a search in whatever GUI interface comes with your distro. Indeed, you can actually set up the commands in a notepad, change the package name each time, and copy/paste the commands, and you’re only a couple of seconds slower than opening the package manager, searching, scrolling to find what you want, clicking to install… See what I’m getting at?
Windows isn’t really faster than that. You have to go to a site, download, find the exe or msi in your download folder, then click in the various pop-up windows. And you can find .deb files that do the same thing as an exe or msi, just not for every program, because they’re an unnecessary pain in the ass. It’s extra steps.
I promise you, comparing the way Linux works now, and the learning curve it takes to the learning curve on windows back when it was a new experience (and I’m talking windows 95, the previous msdos shells were worse than that), Linux is way easier. And don’t even get me started on how shitty a user experience DOS was. Jfc, I’m dyslexic, and it was a nightmare. Windows 95 wasn’t a big jump better in dyslexia land, but it was at least better than DOS.
If you were used to something like mac only, and had never used windows, the transition would be similarly annoying. And, for me at least, dealing with installs on windows is more of a pain in the ass now that I’m used to package managers.
I did a clean install of Windows 7 on my media PC (and yes, you valiant security friends, it’s air gapped) maybe two years ago. From start to finish, including programs, took me about five hours.
My laptop that I run Linux mint on? An hour, start to finish. The only differences in the programs installed are in specifics, not in types. I plugged in my live drive, hit install, and was ready to start installing programs in maybe twenty minutes. My media pc is an old gaming PC, btw. Tons of ram, ssd, etc. The laptop is an old thinkpad. So it wasn’t like the laptop was better hardware lol.
Which seems tangential, but it’s pointing to the underlying ease of use once you’re used to the system. I’ve being doing windows installs since the nineties (and a little before, but only in classes), so it isn’t like I’m not experienced. I’ve only been doing Linux installs since about 2015.
Hell, my very first Linux install was Ubuntu on my dad’s old computer just to make sure I didn’t screw a box up that was in use. Even that, going from Ubuntu being ready to go, and having the programs set up to use was only maybe two hours, and that was mostly looking up the very process that’s been described by others in this thread and copy/pasting things in for each program.
So don’t get discouraged. If you end up really not liking it once you get past the learning curve, that’s okay, windows will still be there. You can go back to it. But, if you’re like me at all, once that learning curve is past, you won’t enjoy the extra hassles windows puts in the way.
IF you want it to work like windows. It’s up to you, people here are giving you the options to choose whichever suits you.
You should try Linux because you want to and find it interesting to learn. If you are doing it because other people told you to, you are going to have a bad time.
Linux isn’t Windows with different branding. Things work differently, and if you take the time to understand why you’ll usually see the logic eventually, even if you may not to agree with it. I think folks are bristling a bit at your implication that things are hard on purpose somehow. Many experienced users find the terminal easier to use and more efficient; it shouldn’t shock anyone (including you) that it’s going to feel awkward when you don’t understand it yet.
Howtos tend to use the terminal because it’s likely to work the same for everyone regardless of what other choices they’ve made with desktop environment, etc.
You can do nearly everything with a GUI if you choose.
I don’t know about Mac, but on Windows the Mullvad app doesn’t auto update. If you want to do it Windows style you can look for deb files (which are like installers) or AppImages (which are like standalone executables).
Most pieces of software give terminal instructions for Linux because different people might use different package manager frontends, but literally every Linux user has a terminal. It might seem daunting at first, but giving users commands to run in their terminal is a lot more simple than trying to walk them through repo management through the GUI, or just telling them to figure it out themselves.
On Mac it doesn’t autoupdate, but prompts you to Download the new version when it’s available
On windows you can use Winget to install update
winget install -e --id MullvadVPN.MullvadVPN
I just don’t get why on windows and mac I can download the app from their site, install it and it just works
That’s what the instructions are guiding you to do.
If you hate the terminal then maybe Linux simply isn’t for you? That’s completely okay you know. Use the tool that’s right for you.
Same reason you don’t download installers for your phone, why don’t you think it’s confusing there?
You can, it’s up to the software vendor to make it simple.
Most of the software are FOSS and can be installed directly from your package manager. That works like the iOS app store/Android Play Store except it existed 10 years before mobile stores.
Google Chrome is an example of proprietary software (so not in distributions repos) that is as easy to install on Linux than Windows. Because Google managed to get a deb that will also update your repos.
Bottom line, most of the time it’s way easier to install software on Linux than Windows (as easy as on iOS) but occasionally it’s slightly more complex.
One reason is that different distributions of linux do things slightly different. Would it be better if there was only one linux os? For some devs of third party software, probably, but diversity and freedom to fork software has been good to linux, and no one could decide what everyone else should use anyway.
So, each distribution takes the available software and package it to fit their distro specifics, and those packages go into their repositories. The benefit of using official repositories is that someone has gone through the trouble of making sure it will work on your system safely. There’s accountability and hopefully a bug tracker etc. When you download from a random website you have to trust them instead. Then… you have companies working outside of this model, usually they provide a flatpak or their own third-party repositories. Then you get all these extra steps, but it’s not how most distros prefer to handle software.
Yes, it is. You can achieve the same usung GUI of course, but this would be more difficult to describe because there are multiple GUIs and they change with new distro versions.
This is more convenient than “downloading and intalling” a file because you don’t have to track updates manually, the package manager will do this for you. You have to read something about what package manager is and how does it work. It is the main concept of all linux distros except LFS.
This wiki article contains the information you need. It can seem too long, but I highly recommend to read it.
As others have already pointed out, a lot of Linux software is installed from repositories in a standard way, and once you do that, it updates automatically.
However, as you’ve already discovered, there’s more than one way to install Linux software. Repositories are still the most common way, but installing single .deb’s (Debian based distributions) or .rpms (RedHat packaging format) is still there and there are more like Snap, Flatpak and Appimage. You can also often just download the source and compile it yourself. It’s a very diverse ecosystem, not like the controlled worlds of WIndows and Mac.
In this case you can download the .deb file, and pretty sure you can even install it through the file manager, just like in Windows (I don’t use Ubuntu, but I think it will just start GUI installation if you double-click on a .deb file).
But lot of things in Linux are still done through the terminal, like changing configurations and, yes, installing things.
Getting used to it takes a while, especially if you’re not used to modern Windows administration through PowerShell.
The important part is trying to figure out what each of the commands do and that the output actually means. Software that supports Linux normally has very clear instructions (like in this case), but it does require willingness to change habits, technical curiosity and some trial and error (patience). It’s not quite as polished experience as the commercial OS’s. There’s still a lot of rough edges for the user.
Good luck on your Linux journey!
You can just install wireguard from your distros built in repository. Then use the mullvad wireguard conf downloader.
One time setup, and your wireguard gets updated by your distro update. No need to add a new repository.
As others have mentionned downloading the .deb and running it will also work, but I feel nobody gave your a tldr of why you may want to follow those instructions instead, so here it is:
Those instructions configure your package manager (apt) with a new repository for this application.
The upside to that is that anytime you will look for updates, this app will also get updated.
It’s a bit more work up front, but it can pay off when you have dozens of app updating as part of normal system operations.
Imagine a world where windows updates would also update all your software, that’s what this is.
Also, no, this is not an ideal way to do this. Ideally every package you want is in your distro’s repos so you’d just need to do “apt install [package]”.
The reason this one isn’t is because mullvad wants to make sure you use their tested, secure, and updated version and they don’t want to maintain that for every distro. So they have you configure your package manager to use their repos.
This is relatively uncommon to come across in Debian. You’ll normally only find it in security applications or very niche ones. The Debian repos aren’t the most comprehensive but they’ll contain the vast majority of common softwares.
While lvxferre’s instructions are the ideal, there’s a simpler option
Download the mullvad.deb file.
Doubleclick on it from your file manager and it should automatically instsll
Every time you start mullvad it will check if the version is current and prompt you (with a link to click on) to upgrade if it’s not.
Note that works on mint, should work on ubuntu unless they’ve disabled dpkg
If you go to: https://mullvad.net/en/download/vpn/linux
And click the “download .deb” button (It says underneath “Works on Ubuntu 20.04+, Debian 11+ (64bit only)”. As long as your Ubuntu is up-to-date, this will work fine)
you get a file (“MullvadVPN-2023.6_amd64.deb”) you can run just like on Windows (similar to MullvadVPN-2023.6.exe)
opening the file should open a GUI for installing the file
Keep in mind, to update Mullvad VPN, you would need to download a newer .deb file (after an update is released). It shows the latest version above the download buttons, below the “Mullvad VPN for Linux text” This is the same as how it is on Windows
Normally you’d just run
sudo apt install ...
but in this case you are adding a new repository so you have to follow the extra steps of adding the signing key and so on first.Download the .deb and double click it. https://mullvad.net/en/download/app/deb/latest
People seem to be making this a more difficult job than it needs to be. Yeah I get we’re powerusers but can’t we drop that for 2 minutes while giving advice so a new user can actually get a job done quickly? Windows EXEs don’t automatically update either. Sure it might not be the best way to do it but it’s fast and not confusing. (EDIT: Apparently this specific program actually has it’s own auto updater)
Things take time to learn. Throwing all of the existing knowledge of repo management at a new user at once does not work.
Asking why something is the way it is makes you more of a “Linux user” than many.
You make a valid criticism; there’s definitely a learning curve to installing software if you choose to do it that way (since it’s not similar to other OSs), and it’s not automatically explained to new users by using the OS.
Here’s the understanding of it I’ve come to, if you’re interested:
Like others have said, the
.deb
file would be the equivalent of an.exe
file on Windows. Like many.exe
files, unless they include an auto-updater, they won’t automatically update.A key difference I would like to point out is that Linux package managers often update and manage parts of the OS in addition to extra software. Windows and macOS both update their OS separately.
“Ubuntu Software Center” is similar to the “Microsoft Store” on Windows and the “App Store” on macOS. Like those, it’s user friendly and provides automatic updates, but it also doesn’t have every app. You can ensure those apps are safe because the company behind the OS verifies them.
“apt-get” is the default package manager for Ubuntu. That is the tool doing the heavy lifting underneath, and what those commands Mullvad gave are for.
Mullvad could have provided a script to download and run that executes those commands for you, but then you wouldn’t know what it’s doing, especially with it needing admin permission. With how security-oriented Mullvad’s brand is, I think that’s one potential reason they explain the steps and have the user do it instead.
the .deb file would be the equivalent of an .exe file on Windows
Not
.exe
. If you want to find an equivalent,.msi
is the closest.
“I have no idea what I’m doing here” <- Happens in the beginning. How about you start by trying to know what exactly you are doing? Let me give you a fasttrack…
-
The first command you get in the instructions is
curl
. It is generally used to download stuff from a networked server.1.1. To understand the
-fsSLo
in the command, I strongly advise you to check out the manual ofcurl
usingman curl
in a terminal. -
The second command in the instructions is
echo "something" | sudo tee some/file
2.1 Here you see 3 commands
echo
,sudo
andtee
. 2.1.1 Again, you can useman command-name
to check the manual pages for these commands 2.2 There is a|
symbol over here. It is called the “pipe symbol”, which is what you can use to search for it. It is usually difficult to search for the symbol itself and I haven’t found a man page for it, but openman bash
and look for “Pipelines” and you’ll know what it is about. Use Link, Link and Link to help yourself understand this. -
The commands in “Install the package” use the
apt
program. This is a Package Manager. Its job is to read package information that package developers have made and try to not let the system become unusable.- e.g. If you have a program called Xorg from 5 years ago, and a program called mesa from 5 years ago and Xorg depends upon mesa to work. Here, if you replace your mesa with a new, recent mesa yourself, there is a good chance Xorg will not work. The Package Manager prevents that from happening.
-
The gist of what the instructions are making you do is, telling the Package Manager that there is another place from where you want it to look for packages.
To understand man pages better, check out this link.
Don’t think too badly of people dissing you in the comments. They are tired and fed up of help vampires. Hopefully, you can try not to become one.
- Try and build your own process of understanding the commands you see on the internet before entering them into the terminal.
- The comments telling you to just follow the instructions, are coming from the perspective that you don’t have the patience and determination to understand them yourself, which, a lot of people don’t. I will leave it upto you to determine which one you decide to be. It is, however, a bad idea to follow instructions on any website, just because it “seems legit”. You can’t really say you “trust” the site until you have the ability to find out for yourself whether you want to trust it.
-
Many, perhaps even most, installation guides for software use commands because the graphical alternatives can vary wildly between desktops and distributions. So using commands in guides is usually the more likely to work.
That said, what Mullvad does is stupid. The downloadable deb and rpm files should just initialize the update repository. That is what Google does with their Chrome download. Basically download the file, double click on it, confirm installation. That’s it. Users don’t need to do that manually for Chrome.
Luckily, there are only a few cases remain for this type of installation. Most regular things should be either in your distribution’s regular repository or on Flathub.