BeamMP Run On Linux Guide 2025

This is probably a very bad idea, but I wrote this script to download and trust the Root CA on Arch Linux.

It’s VERY IMPORTANT that you read and understand scripts online before copy/pasting and executing them on your own machine. This script grabs the Root CA Certificate for backend.beammp.com and installs it as a Trusted Root CA on your machine.

What does this mean? It means if anyone malicious has access to that Root CA, they can generate SSL certificates and trick your machine into thinking the site is trustworthy when its actually not.

Use this at your own risk!

EXPAND: Shell Script

To use it, throw it in a file (in my case, I named it ~/bin/trust-beammp) and give it execute permissions:

chmod +x ~/bin/trust-beammp

Then run it as follows:

~/bin/trust-beammp

You only ever have to run this once and then you never have to run it again!

#!/usr/bin/env bash
set -euo pipefail

DOMAIN="backend.beammp.com"
PORT="443"

# Create workspace
TMPDIR=$(mktemp -d)
trap 'rm -rf "$TMPDIR"' EXIT

CHAIN="$TMPDIR/chain.pem"
ROOT="$TMPDIR/root-ca.pem"

# Fetch the full chain
openssl s_client \
	-showcerts \
	-servername "$DOMAIN" \
	-connect "${DOMAIN}:${PORT}" \
	</dev/null \
	> "$CHAIN" 2>/dev/null

# Count how many certificate blocks there are
BLOCKS=$(grep -c -- "-----BEGIN CERTIFICATE-----" "$CHAIN")

# Extract only the last one
awk -v target="$BLOCKS" '
	/-----BEGIN CERTIFICATE-----/ { ++n; capture = (n==target) }
	capture           { print }
' "$CHAIN" > "$ROOT"

# Sanity-check it's really a CA
if ! openssl x509 -noout -text -in "$ROOT" \
		| grep -q "CA:TRUE"; then
	echo "Warning: extracted cert does not claim CA:TRUE" >&2
fi

# Install into trust anchors
sudo cp "$ROOT" /etc/ca-certificates/trust-source/anchors/"${DOMAIN}.pem"

# Rebuild the system bundles
sudo trust extract-compat

echo "Root CA for ${DOMAIN}:${PORT} installed and trusted."

I’m following the guide on Fedora 41 but I’m running into problems. First with the installation of the development tools, the command sudo dnf groupinstall "Development Tools" didn’t work, but I looked at another forum and found this command sudo dnf group install development-tools which worked. However I’m stuck with this command cmake -DCMAKE_BUILD_TYPE=Release . -B bin -DCMAKE_TOOLCHAIN_FILE="~/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-linux

Output:

– Running vcpkg install
Detecting compiler hash for triplet x64-linux…
error: while detecting compiler information:
The log file content at “/home/fred/vcpkg/buildtrees/detect_compiler/stdout-x64-linux.log” is:
– Configuring x64-linux-rel
CMake Error at scripts/cmake/vcpkg_execute_required_process.cmake:127 (message):
Command failed: /usr/bin/cmake /home/fred/vcpkg/scripts/detect_compiler -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/fred/vcpkg/packages/detect_compiler_x64-linux -DVCPKG_COMPILER_CACHE_FILE=/home/fred/BeamMP-Launcher/bin/vcpkg_installed/vcpkg/compiler-file-hash-cache.json -DCMAKE_MAKE_PROGRAM=/home/fred/vcpkg/downloads/tools/ninja/1.12.1-linux/ninja -DCMAKE_SYSTEM_NAME=Linux -DBUILD_SHARED_LIBS=OFF -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=/home/fred/vcpkg/scripts/toolchains/linux.cmake -DVCPKG_TARGET_TRIPLET=x64-linux -DVCPKG_SET_CHARSET_FLAG=ON -DVCPKG_PLATFORM_TOOLSET=external -DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON -DCMAKE_FIND_PACKAGE_NO_SYSTEM_PACKAGE_REGISTRY=ON -DCMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP=TRUE -DCMAKE_VERBOSE_MAKEFILE=ON -DVCPKG_APPLOCAL_DEPS=OFF -DCMAKE_TOOLCHAIN_FILE=/home/fred/vcpkg/scripts/buildsystems/vcpkg.cmake -DCMAKE_ERROR_ON_ABSOLUTE_INSTALL_DESTINATION=ON -DVCPKG_CXX_FLAGS= -DVCPKG_CXX_FLAGS_RELEASE= -DVCPKG_CXX_FLAGS_DEBUG= -DVCPKG_C_FLAGS= -DVCPKG_C_FLAGS_RELEASE= -DVCPKG_C_FLAGS_DEBUG= -DVCPKG_CRT_LINKAGE=dynamic -DVCPKG_LINKER_FLAGS= -DVCPKG_LINKER_FLAGS_RELEASE= -DVCPKG_LINKER_FLAGS_DEBUG= -DVCPKG_TARGET_ARCHITECTURE=x64 -DCMAKE_INSTALL_LIBDIR:STRING=lib -DCMAKE_INSTALL_BINDIR:STRING=bin -D_VCPKG_ROOT_DIR=/home/fred/vcpkg -DZ_VCPKG_ROOT_DIR=/home/fred/vcpkg -D_VCPKG_INSTALLED_DIR=/home/fred/BeamMP-Launcher/bin/vcpkg_installed -DVCPKG_MANIFEST_INSTALL=OFF
Working Directory: /home/fred/vcpkg/buildtrees/detect_compiler/x64-linux-rel
Error code: 1
See logs for more information:
/home/fred/vcpkg/buildtrees/detect_compiler/config-x64-linux-rel-CMakeCache.txt.log
/home/fred/vcpkg/buildtrees/detect_compiler/config-x64-linux-rel-out.log
/home/fred/vcpkg/buildtrees/detect_compiler/config-x64-linux-rel-err.log

Call Stack (most recent call first):
scripts/cmake/vcpkg_configure_cmake.cmake:346 (vcpkg_execute_required_process)
scripts/detect_compiler/portfile.cmake:18 (vcpkg_configure_cmake)
scripts/ports.cmake:206 (include)

error: vcpkg was unable to detect the active compiler’s information. See above for the CMake failure output.
– Running vcpkg install - failed
CMake Error at /home/fred/vcpkg/scripts/buildsystems/vcpkg.cmake:941 (message):
vcpkg install failed. See logs for more information:
/home/fred/BeamMP-Launcher/bin/vcpkg-manifest-install.log
Call Stack (most recent call first):
/usr/share/cmake/Modules/CMakeDetermineSystem.cmake:146 (include)
CMakeLists.txt:3 (project)

CMake Error: CMake was unable to find a build program corresponding to “Unix Makefiles”. CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
– Configuring incomplete, errors occurred!

Is there anything I’m missing or did wrong in the process? I copied/pasted all the commands listed except for the development tools mentioned earlier.

Thanks

yep, it’s actually

sudo dnf group install development-tools

or

sudo dnf install @development-tools

that “groupinstall” is some legacy ■■■■ right there

anyway, i have a guide (gosh, im such a ■■■■■■■ nerd) which should fix the stupid cmake error (spoiler alert: you need to clone it):

Yes, it’s very likely a mistake. I don’t have Fedora so I was relying purely on the internet for that info.

I followed your guide, and I updated the working directory to Downloads, but the command cmake . -B bin -DCMAKE_TOOLCHAIN_FILE=~/Downloads/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-linux threw the same error as the one I mentioned earlier. Not sure what to do.

uh, what.

do you have gcc, cmake and make installed as packages? are you SURE you installed those development-tools? (aka base-devel)

did you update your system? update regularly, haha…

when you are git clone’ing vcpkg, are there any errors? does it download all the compilation tools successfully?

next, what is the architecture of your CPU? is it x86_64-linux or aarch64-linux, or maybe something else?

thats pretty much it. theres nothing else anyone can do… i mean, okay, there is one thing left… which includes opening linux.cmake and vcpkg.cmake files and checking for their CMAKE_C_COMPILER and CMAKE_CXX_COMPILER references to yoink the hardcoded paths, if they are, indeed, hardcoded… ■■■■■■■ micro$oft

In order; yes to all the packages and dev tools, it’s a fresh install (more info later on), no errors when cloning, it downloads all the compilation tools without issues, CPU architecture is x86_64. My main system is Bazzite 42 (immutable), so I’m running a container with Fedora 41 (the latest image available in Distroshelf) to execute the commands. The container’s home directory is shared with my home directory. I’m thinking doing this in a container might be a cause to the problem, but I’m not 100% sure.

hmmmmmmmmmmmmmm okay…? oh ■■■■, i forgot bazzite is immutable. tell you what. im gonna try this right now via podman and see for myself what’s going on. because i am, too, playing beamMP via fedora in a container, and i have no issues. though, i have compiled the launcher on my host machine (nixOS, which is FHS non-compliant, so i also have to do funny things to get other things working). okay, time for me to compile it in a container…

Can someone explain why the official docs has this command?

cmake . -B bin -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-linux

When the launcher was first publicly released (and when this guide was made), the command was this

cmake -DCMAKE_BUILD_TYPE=Release . -B bin -DCMAKE_TOOLCHAIN_FILE="~/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-linux

Now lets break down what I’ve been through. With the original command BeamMP launches the game but the “Multiplayer” button doesn’t show up and there are no mods in my “Repository.”

Trying the second command won’t even compile, just spitting the following error

CMake Error at /usr/share/cmake/Modules/CMakeDetermineSystem.cmake:152 (message):
  Could not find toolchain file: /scripts/buildsystems/vcpkg.cmake
Call Stack (most recent call first):
  CMakeLists.txt:3 (project)


CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

I’m on Arch/X11 (up-to-date), please someone clarify what’s going on. Also please expand on the git checkout command (perhaps an example command) because I can’t find anything in the (git) docs for specifying the version.

Launcher log

[10/7/2025 13:29:31] [DEBUG] Launcher was invoked as: '/home/userx/vcpkg/BeamMP-Launcher/bin/BeamMP-Launcher'
[10/7/2025 13:29:31] [INFO] BeamMP Launcher v2.3.2
[10/7/2025 13:29:31] [ERROR] GET to https://backend.beammp.com/sha/launcher?branch=&pk= failed: SSL peer certificate or SSH remote key was not OK
[10/7/2025 13:29:31] [ERROR] GET to https://backend.beammp.com/version/launcher?branch=&pk= failed: SSL peer certificate or SSH remote key was not OK
[10/7/2025 13:29:31] [INFO] Launcher update found!
[10/7/2025 13:29:31] [ERROR] Auto update is NOT implemented for the Linux version. Please update manually ASAP as updates contain security patches.
[10/7/2025 13:29:31] [INFO] IMPORTANT: You MUST keep this window open to play BeamMP!
[10/7/2025 13:29:31] [DEBUG] HTTP Proxy listening on port 53721
[10/7/2025 13:29:31] [INFO] Game Version : 0.36.4.0
[10/7/2025 13:29:31] [INFO] Game user path: /home/userx/.local/share/BeamNG.drive/0.36/
[10/7/2025 13:29:32] [ERROR] GET to https://backend.beammp.com/sha/mod?branch=&pk= failed: SSL peer certificate or SSH remote key was not OK
[10/7/2025 13:29:32] [DEBUG] Core Network on start! port: 4444

It now uses $VCPKG_ROOT so vcpkg can be installed anywhere without the user having to specify it in the build command.
And:
image



Make sure the $VCPKG_ROOT is set. Install and use packages with CMake | Microsoft Learn



BeamMP uses cloudflare for protection and for it’s certificates, but cloudflare’s root certificate is no longer trusted by the mozilla trust store, causing the mod download to fail. Error on Arch Linux after update? - #5 by dekadentor



There this on the docs:
image
You can find the latest tags without going to the github repository as well. First update your repo locally using git fetch and then run git tag for the complete list of versions.

Sorry, my comment was completely numb of any braincells, nothing is wrong with the docs I was just a lazy ■■■. I didn’t think git checkout vx was the full command and didn’t before now bother to check.

It’s still baffling though that VCPKG_ROOT wasn’t an environment variable, because I set it a while ago and build the launcher several time on this PC in the past (although that’s beyond the scope of this post).

I did skim over comment 64 by sapphic420, but initially didn’t read it properly. seeing “2007” mentioned I just thought it was rant about getting rid of some legacy protocols, but now realize the comment was further driven because of an actual issue that cropped up.

Basically, I need to read or as some like to put it RTFM :skull:

Sorry guys

1 Like

scrollcaps, i may “rant”, incoherently so, but im spitting them facts, whether one likes it or not

FredTheFeline, sorry, i was on a long suburban stroll while my account was apparently “suspended” for “toxic behaviour” (hilarious, i know :joy_cat:), but um, anyway, uh, a couple of things that i want to point out:

distrobox create --name fedora --init --image fedora:latest

sometimes may download a faulty, broken init, which will spit an error:

Firing up init system... 
Error: could not set up init system, no init found! 
Consider using an image that ships with an init system, 
or add it with "--additional-packages" during creation.!

that’s annoying. but there is a solution. so, two things:

  1. forget the --init flag. dont worry about it.
  2. because fedora:stable is not a real tag, which can be seen here, use fedora:41 instead (the one that you’re using).
distrobox create --name fedora --image fedora:41

it may still scream with:

Image fedora:41 not found.
Do you want to pull the image now? [Y/n]: y

ignore it. it is an alias. it will still pull the correct image.

so, that’s how you fix this issue, if anyone’s wondering.

remember, you can always wipe your containers and start again with:

podman system reset

anyway, now that we (well, just me, actually, because nixOS is a tad bit wacky sometimes) got this out of the way, i had a look at your problem… but first, i had to do everything again from scratch. here i am with a fresh, new fedora 41, wanting to compile and play beamMP… but i got the same error as you!

CMake Error at /home/user/Downloads/vcpkg/scripts/buildsystems/vcpkg.cmake:941 (message):
  vcpkg install failed.  See logs for more information:
  /home/user/Downloads/BeamMP-Launcher/bin/vcpkg-manifest-install.log
Call Stack (most recent call first):
  /usr/share/cmake/Modules/CMakeDetermineSystem.cmake:146 (include)
  CMakeLists.txt:3 (project)


CMake Error: CMake was unable to find a build program corresponding to "Unix Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error: CMAKE_CXX_COMPILER not set, after EnableLanguage
-- Configuring incomplete, errors occurred!

but then i looked closer. openssl (as a dependancy of BeamMP-Launcher) wanted linux-headers, which fedora in this container doesnt have. but there is no such package named linux-headers in fedora, however, there is a kernel-devel package… but then, there were other hints, such as missing perl-IPC-Cmd and perl-FindBin. i was getting closer, the error kept changing. how about i download the whole perl metapackage (~200 packages)? and it ■■■■■■■ worked, mate! NO variable setting required! here’s how to reproduce:

sudo dnf install @development-tools git cmake g++ perl openssl

(shortly after this the full list of dependancies for fedora was added here)

cd Downloads
git clone https://github.com/microsoft/vcpkg.git
cd vcpkg
export VCPKG_FORCE_SYSTEM_BINARIES=1

(this variable may not be required… but i was testing things… set this before bootstrapping)

./bootstrap-vcpkg.sh --disableMetrics
cd ..
git clone https://github.com/BeamMP/BeamMP-Launcher.git
cd BeamMP-Launcher
cmake -DCMAKE_BUILD_TYPE=Release . -B bin -DCMAKE_TOOLCHAIN_FILE="~/Downloads/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-linux

(once again, we are using a -DCMAKE_TOOLCHAIN_FILE= because it just works and is reproducible. if you want to use an absolute path to your system’s compiler - go ahead)

cmake --build bin --parallel --config Release
cd bin
strip BeamMP-Launcher

(you can also get gamemode (Github) to launch with improved performance)

and that’s it! i was THIS close to giving up. it was INSANE. i was about to spam the devs that their CMakeLists.txt is ■■■■■■ or something

also i have no ■■■■■■■ clue why it needs perl, perhaps because it also downloads C related dependancies?

…next time, please, just use another ■■■■■■■ distro, alright? :nerd_face:

:heart:

tl;dr:

sudo dnf install @development-tools git glibc cmake make gcc g++ kernel-devel perl openssl nss

(just to be safe, there is everything!)
(these are ONLY to COMPILE the BeamMP-Launcher! NOT to LAUNCH the BeamNG.drive.x64 game binary! for the game’s dependancies, see this comment.)

TODO: edit my previous “tutorials”… for anyone reading, i am, too, just a learner. im not big into computers. if anything, i hate digitalisation. so lower your expectations from me :blush:

no idea about what yall talking about… but hey… its linux after all.

(EXTREMELY OFF TOPIC!) your’re just an cat

1 Like

I ran all the steps but the cmake command threw the same error again. However I have a solution.

I changed cmake -DCMAKE_BUILD_TYPE=Release . -B bin -DCMAKE_TOOLCHAIN_FILE="~/Downloads/vcpkg/scripts/buildsystems/vcpkg.cmake" -DVCPKG_TARGET_TRIPLET=x64-linux to require sudo privileges, and change the directory to be the absolute directory (/home/USER/Downloads/…)

Also require sudo privileges for cmake --build bin --parallel as well. And then I needed to take ownership of the BeamMP-Launcher folder before running strip BeamMP-Launcher, by running sudo chown -R USER /home/USER/Downloads/BeamMP-Launcher

The game launches and I can connect to a server just fine, but the game crashes a few seconds after loading. I’ll look around for a solution to fix the problem

Thanks sapphic420 for the updated guide

1 Like

huh… is your container rootless? i didnt have to elevate anything.

the game crashing is most likely just a yet another cache issue, just remove the ~/.local/share/BeamNG.drive/0.36/temp folder (or its contents), which is exactly what “deep cache clearing” does. unless it’s a modded server and some shaders crash on linux… so that would be a vulkan issue, blah blah blah.

i really dont know. but yeah. assume privilege elevation where needed…

but just for a sanity check, does the end result, BeamMP-Launcher binary, belong to you? is it an ELF 64-bit LSB executable, of owner USER:users ? or its owner is root:root ?

cos that sounds like a misconfigured container. how did you set it up again? i hope youre not launching binaries via root, haha! thatd be pretty goofy! haha!

The container is rootless, I verified that I own the directory via the GUI and it is set for user and group, recursively.

Clearing the temp folder didn’t help with the game crashing, and to verify that it’s a BeamMP problem, I ran BeamNG both with and without Vulkan and the game didn’t crash. Running it with BeamMP makes it crash right after the map loads in.

Photo of the permissions for the folder

okay, interesting, are there any logs, e.g. ~/.local/share/BeamNG.drive/0.36/beamng.log ? all the clues are there. you could be still missing packages, blah blah blah.

BY THE WAY (1), remember to also clear the Resources folder where beamMP stores its downloaded mods. because they could be corrupted. do this every time you are deep cleaning the cache.

by the way (2), are you ALSO ALSO launching beamNG in the container? so beamMP + beamNG in a fedora 41 container? because you SHOULD. it is safer, and it is native. there is no reason NOT to do it.

as for the ownership… i dont use much GUI, is it fred:fred or fred:users im looking at here? cos it needs to be in the users user group.

also, i might have a clue. on some modded maps downloaded via beamMP, my game kept crashing either in the loading screen or shortly after i have loaded. i fixed it by setting texture quality from lowest to LOW or higher (if you have to/want to play on potato graphics), and it helped me. no idea why, but this happens on, for example, on the ks_nord Nordschleife map. this has been happening since 0.35, when they “optimised” some .dae files and how textures are precached/allocated or whatever. which could be a vulkan exclusive issue. so try that!

but also check that your bazzite doesnt kill the process for whatever reason - when reaching high 100% CPU/GPU/memory loads and being frozen/idling too long in the loading screen. …now, this never happened to me, but there are some “handy” “lifehacky” daemons that automatically terminate “zombie” processes for you or something.

Heya, I’m a friend helping Fred with his transition to Linux and have been trying to work this out. I can answer some questions.

There are, as of yesterday, multiple log files - we looked into one and I didn’t see anything useful (steam error, but steam was running just fine) but we will have another look.

We have not cleared the Resources folder, but the only server we have tried is one of mine, and the two small mods appeared to work in the few seconds before the crash. They work flawlessly when playing through windows.

No, we are launching MP on the host machine, as that is where steam and NG is installed. The purpose of the container is only to get past the immutable system that refuses to run cmake without elevated permissions. Distrobox is rootless in this environment but it still lets us perform sudo commands that the host doesn’t, so we compile thru the container, chown in the container to his container user, edit the permissions for the directory via the gui of the host (same username) to ensure that he owns the dir and recursive items, then run.

If I remember right, there is no users group for this install, the username is also the group, but we can verify. I’m used to standard systems so this is my first try at an immutable. Bazzite is really nice when it works, but this has been a headache and a half.

He is running on high/ultra settings @ 1080, so it sounds like that’s not an issue. VK works with the exception of a black screen every few seconds, during NG. MP crashes after a couple seconds, of course.

The game loads fully, map is visible, etc but then it dies with the crash reporter ~3 seconds after. But I’ll have him run the system monitor alongside and check. Running an AMD 7600 with a Radeon 6700 XT so I don’t think system resource utilization is the problem.

If you want to talk on discord or something (I don’t want to derail this thread with this… unique problem) you can message me on discord, same username as here, and I’ll set up a group chat.

I’m old hat at Linux, nearly 20 years, but besides servers I never stuck to it, always falling back to windows. So I/we appreciate the guidance and suggestions. :slight_smile:

will reply tmrw maybe, sry dont use discord =( it is ok, lets document running beamMP in a container publicly