What is Mozilla VPN
Mozilla VPN is a VPN client developed by Mozilla. It is open source and uses WireGuard. It is available for Linux, Windows, Mac, Android, and iOS. To use it, you need to buy a subscription from Mozilla.
Building from source
As usual, Linux binaries are only provided for Debian-based systems. If you want to run Mozilla’s VPN client on e.g., Gentoo, you might want to build from source.
So cloning the repository is the first step:
git clone https://github.com/mozilla-mobile/mozilla-vpn-client
It uses git submodules, so we have to do
git submodule init git submodule update
The project uses
cmake, so it should be easy enough. In theory!
If you do not have
rust installed yet, that is the time!
Get the toolchain installer and run
rustup default stable to get everything set up.
Also, you need
wireguard and its
Qt is currently too old (
Qt6 is required by the vpn client) and even with the qt overlay and after unmasking a bunch of hard-masked stuff I was not able to produce a successful build.
So I figured that I had to compile
Qt6 from source first.
I was delighted when I found out that in the repository of the vpn client a script is provided for that exact purpose!
How nice! So downloading and unpacking the
qt6 sources and running
scripts/utils/qt6_compile.sh path/to/qt-everywhere-src-6.2.4 path/to/destination
should be all that is needed for that.
However, I learned that my cmake was not built with zstd support and I did not find a quick way to resolve that in Gentoo. So, I added the line
CMakeLists.txt of the
qt6 sources and then everything was fine.
Building Mozilla VPN Client
First, we need to install the python dependencies:
pip install -r requirements.txt --user
Now we can use the compiled
qt6 to configure the project:
mkdir build && cmake -S . -B build -DCMAKE_PREFIX_PATH=path/to/qt6/lib/cmake
If everything went well, we compile the vpn client:
cmake --build build -j$(nproc)
sudo cmake --install build
installs everything to
/usr/local including a
.desktop file in
/usr/local/share/applications, so you can start the tool conveniently.