BeamMP Run On Linux Guide 2025

This is what the most recent log file looks like.

its a silly idea to screenshot logs that other people in the future cannot search by keywords, because a screenshot is not text and cant be queried in a search engine… even IF discourse (this forum) doesnt allow to attach files.

please use a text pasting service, e.g. https://pastebin.com/ to paste the LATEST beamNG log called beamng.log, NOT beamng.123.log, in its ENTIRETY. you can set it to be temporary or hidden. then, paste the link to it here. the most important information is most likely just before the crash.

if nothing interesting is in the game logs, well, check dmesg and journalctl, just to be really sure its not a hardware issue. look for big scary red walls of text. and i dont mean |E|Steam| Could not initialize - Error code 1 - this can be completely ignored, because we are (most likely) launching a native binary, which is outside of steam play features. i have it too!

that is a bit of a conundrum. well, unfortunately, because i am on a FHS non-compliant AND kinda immutable but atomic system myself (non-FHS in a sense that it is a container by itself, so - double entropy, and immutable in a way that it just allows for rollbacks… long story short, i DO have sudo and write permissions on the filesystem :crazy_face:), i am unable to just simply “execute a binary”, so i have to do everything in another container. sort of a similar situation, but we both have to use container images sometimes. because of this, i have no experience of launching binaries outside of podman and i cant help you with this, im sorry. i recommend you should stick to compiling AND launching beamMP AND beamNG via podman + distrobox, which works for me.

just to be clear, i mean dynamically linked binaries. of course, i can still run linux native games outside of a container, but not literal binaries or executable files. just a quick reminder: steam is an FHS, which could give a few clues: perhaps it doesnt crash when BeamMP-Launcher is run via steam-run?

i suppose since you are compiling beamMP for native use, does that mean that you are also running beamNG natively too? so, does BeamMP-Launcher run BeamNG.drive.x64? NOT PROTON? NOT WINE? just to double check. beamMP should launch the native binary by default anyway…

yeah… perhaps i should edit my “tutorial”, somewhere up there, to remove bazzite from the list. ive only heard of it as a nice steamOS alternative suitable for handhelds. i didnt know they literally copy the immutability of steamOS, but oh, well…

(optional) - so, about permissions. DISCLAIMER: i have no idea how UID mapping or user namespacing works, nor how permissions in a container work… but please check who is the UID/GID of ~/.local/share/containers AND ~/.local/share/containers/storage/volumes/<volume> folders. are the folders inside volumes of 100000:100000? then, compare them to /etc/subuid AND /etc/subgid. they should at least have the same GID… you may skip this whole paragraph anyway.

remember, you can always wipe/reset (destructively) your containers with podman system reset, if using podman, that is. or… get fedora:latest. or try another distro, maybe? as in both as a container image and as a host? possibly NON-immutable?

yeah that is something that im familiar with. for me it was texture quality that kept crashing my steam deck. exactly a few seconds after loading the map. which CAN be reproduced in singleplayer. so, maybe its the shaders? try clearing the vulkan shaders. untick and tick the shader caching in steam’s settings.

anyway, no clue, SORRY. im also on a bit of a break from beamMP (i have been playing non stop and havent found anyone who can impress me so i was bored out of gaming at this time). please send logs and please try launching native beamMP and beamNG in a container… because i was unable to replicate this behaviour in my container, even though im not even playing anymore. beamMP on fedora:41 works via podman + distrobox for me… :nerd_face:

P.S. this reminds me when i was distrohopping out of cachyOS (arch). when everything was broken and i couldnt play beamMP. it was alright, for a rolling release. but i was still using windows just to play there. but one day beammp on win10 kept constantly crashing (and BSOD’ing!) with a 100% chance. i even made posts about that vulkan is better, faster and more stable ONLY on linux nowadays. dunno if anyone reads these. but now windows is completely useless and should be disregarded, so is arch, btw. arch has long lost its culture. nowadays the big talk is about nixOS. just a little fun story, idk

hey it gave me on linux mint gave me ths error
Make Error at /usr/share/cmake-3.28/Modules/CMakeDetermineSystem.cmake:176 (message):
Could not find toolchain file: ~/vcpkg/scripts/buildsystems/vcpkg.cmake
Call Stack (most recent call first):
CMakeLists.txt:3 (project)
please respond asp

Did you install and properly set up vcpkg?

I have the same issue, did you ever find a solution? I am also on Mint so this may be a LM22 issue.

Ye I used playitt for the tunnel connection

I am unfamiliar with “playitt”, how can I run it and what does it do?

I managed to get BeamMP running, I posted my solution here:CMake Errors on Linux Mint - #4 by MintCondition

so, my previous “tutorial” for nixOS is “deprecated” (its old), there is now a BeamMP-Launcher binary in nixpkgs which can launch BeamNG.drive.x64 for us natively, yay.

the only problem is the certificates (it is still a cringy problem on beamMP’s side). well, one could either look at this PR:

so we get the certs:

curl -w %{certs} https://auth.beammp.com/userlogin -k

we copy each one of these walls of random text (atm there are 3 of these certs) separately into one config option which adds additional trusted certs so that our nixOS doesnt freak out on “untrustworthy” beamMP here like this:

configuration.nix (or in another .nix module):

  security.pki.certificates = [
    ''
      -----BEGIN CERTIFICATE-----
      ITS+RANDOM+EVERY+EXPIRATION+DATE
      -----END CERTIFICATE-----
    ''
    ''
      -----BEGIN CERTIFICATE-----
      ITS+RANDOM+EVERY+EXPIRATION+DATE
      -----END CERTIFICATE-----
    ''
    ''
      -----BEGIN CERTIFICATE-----
      ITS+RANDOM+EVERY+EXPIRATION+DATE
      -----END CERTIFICATE-----
    ''
  ];

or you could use the security.pki.certificateFiles option but i am lazy. there is probably a better automated way.

then you update, and there you go. its epic.

also DONT BE CONFUSED the -----END CERTIFICATE----- is NOT missing two additional dashes, END is shorter by 2 letters than BEGIN

P.S. by the way, huge thanks to you nerds for actually playing beamMP on nixOS, i thought i was the only crazy one ^_^ playing this unpolished mp mod of an unpolished racing sim (i only write this now, as i was in the middle of writing my other silly tutorials, so i couldnt mention that i use nixos btw months ago before this derivation was added, because this forum apparently deletes my previous drafts for no reason! anyway im glad to know that im not alone, so i can ask for help if even i dont know the solution). i wanted to package beamMP myself, but i never got to do it. adhd. so shoutouts to the nixos gaming crew, you rock. hope to see yall on servers :3

OH HECK YEAH This is a huge deal.

This is quite a piece of ■■■■ but it works for me so I think I can share it :slight_smile:

I use this script to install and auto-update BeamMP launcher on Linux Mint. I have it saved as /home/username/Games/Beammp/beammpUpdate.sh and have a Launcher for it on my desktop with Run in terminal enabled so every time I click the Launcher it checks for updates and launches Beammp.

It is based on the Linux install instructions of BeamMP. It uses apt to install packages needed for BeamMP and checking for updates, clones the BeamMP-Launcher and vcpkg repos and builds the latest version. If the latest version is already built it just runs the Launcher.

It should™ work with Linux Mint if you put it in an empty folder as a .sh file and run it. Compatibility with other distros is not tested. Sudo will ask for your password for installing the apt packages. If it doesn’t work you can ask me for help. Feel free to modify it for your own use :slight_smile:

I did originally use chatgpt to create it but I have heavily modified it myself and understand it completely. As I’m a beginner in scripts it was easier to modify it than write it from the beginning.

The script can be found here: BeamMP Update Script by Wulfric - Pastebin.com

Wulfric

someone needs to make a simple file to just install beammp going through all the steps in the tutorials. either that or actual step by step instructions.

how do you run it tho?

cant get past step ‘cmake . -B bin -DCMAKE_TOOLCHAIN_FILE=$VCPKG_ROOT/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-linux’ on the official guide any help?

what is the error message you get?

On the steam deck you should probably also tweak your graphic settings, with the servers now being able to handle more players. Of course, it all depends if you have the LCD or OLED model.

im a moron- i didnt realize you had to run ‘git checkout v2.x.x’ INSIDE the beammp-launcher directory, although the official guide isnt clear about that

Hey guys. Not seen anyone else with the error I’m encountering… I got the build files all generated but the freakin’ compilation fails with an error:

/home/lettuce/Downloads/BeamMP-Launcher/src/Network/Http.cpp: In function ‘void WriteHttpDebug(const httplib::Client&, const std::string&, const std::string&, const httplib::Result&)’:
/home/lettuce/Downloads/BeamMP-Launcher/src/Network/Http.cpp:41:64: error: ‘const class httplib::Client’ has no member named ‘get_openssl_verify_result’; did you mean ‘get_verify_result’?
   41 |                              { "openssl_verify_result", client.get_openssl_verify_result() },
      |                                                                ^~~~~~~~~~~~~~~~~~~~~~~~~
      |                                                                get_verify_result
/home/lettuce/Downloads/BeamMP-Launcher/src/Network/Http.cpp:47:5: error: no matching function for call to ‘nlohmann::json_abi_v3_12_0::basic_json<>::basic_json(<brace-enclosed initializer list>)’
   47 |     };
      |     ^

This seems to be the error that is causing my issue. I feel like there’s something I’m missing here. Any help would be appreciated.
OS: Ubuntu 25:10

Could you try this?

1 Like

That worked! Thanks!
I wonder why it failed without that addition…
Well, that’s a problem for a developer. I appreciate your help!