Hosting a server
Server on Linux
The Linux build runs on x64 with glibc 2.38 or newer: Ubuntu 24.04, Debian 13 and their peers. On an older system, run the Docker image.
Download and unpack
Section titled “Download and unpack”sudo mkdir -p /opt/nodemp && sudo chown "$USER" /opt/nodempcd /opt/nodempurl=https://github.com/NodeMP-BeamNG/releases/releases/download/server-v1.12.0curl -LO "$url/Node-Server-1.12.0-linux-x64.tar.gz"curl -LO "$url/Node-Server-1.12.0-linux-x64.tar.gz.sha256"sha256sum -c Node-Server-1.12.0-linux-x64.tar.gz.sha256tar -xzf Node-Server-1.12.0-linux-x64.tar.gzsha256sum should say OK. The folder now holds Node-Server, tools/, modules/ and
examples/.
Install Lua 5.1
Section titled “Install Lua 5.1”The server obfuscates the client scripts of plugins before it sends them to players. The obfuscator is written in Lua and runs on Lua 5.1, which the Linux archive doesn’t include:
sudo apt install -y lua5.1The server finds it through the NODE_LUA variable. Without Lua the server still runs; it sends
client scripts as they are and says so at start.
Start it
Section titled “Start it”NODE_LUA=/usr/bin/lua5.1 ./Node-ServerThe server writes server.toml, logs/ and content/ into the current folder. Ctrl+C or stop
stops it.
Open the port
Section titled “Open the port”With ufw:
sudo ufw allow 30814/tcpsudo ufw allow 30814/udpA VPS provider often has a firewall of its own in its control panel; open the port there too.
A systemd service
Section titled “A systemd service”This starts the server with the system and brings it back after a crash. Give the server a user and the folder:
sudo useradd -r -s /usr/sbin/nologin -d /opt/nodemp nodempsudo chown -R nodemp:nodemp /opt/nodempCreate /etc/systemd/system/nodemp.service:
[Unit]Description=NodeMP serverAfter=network-online.targetWants=network-online.target
[Service]User=nodempWorkingDirectory=/opt/nodempEnvironment=NODE_LUA=/usr/bin/lua5.1EnvironmentFile=-/etc/nodemp.envExecStart=/opt/nodemp/Node-ServerRestart=alwaysRestartSec=5
[Install]WantedBy=multi-user.targetEnable and start it, then follow the log:
sudo systemctl daemon-reloadsudo systemctl enable --now nodempjournalctl -u nodemp -f/etc/nodemp.env is a good place for secrets such as the server key: one NAME=value per line,
without quotes. Environment variables win over server.toml, so the secret never ends up in a file
you might paste into a support chat one day. Get listed has an example.
A service has no terminal, so the server’s console is off. [server] console makes it read
standard input anyway, but a service rarely needs that.