[Linux] Basic headless server binaries

Post Reply
User avatar
ROllerozxa
Member
Posts: 194
Joined: Sun Apr 25, 2021 12:25
GitHub: ROllerozxa
IRC: ROllerozxa
In-game: ROllerozxa
Location: Sweden
Contact:

[Linux] Basic headless server binaries

by ROllerozxa » Post

The headless server binary is a special build of the engine with less dependencies that is useful for running a Luanti server on headless Linux systems such as VPSes. For server owners it may be complicated to obtain an up to date server binary as most distros you would run on a server such as Debian offer way too old versions of the server in the package repositories. The solution is of course to build from source, but can be a daunting task to someone who just wants to be able to download a server binary and get it running. These builds are for you.

The builds are not built with any additional database backends other than SQLite, but the dependencies they have are few and should only depend on evergreen libraries that will almost certainly exist on your server. They are currently built on Debian 11 Bullseye and should also work on any newer glibc-based distribution.

To clarify: The builds work on anything equivalent to Debian 11 and newer. If a distribution has a glibc that is newer than the version 2.31 that Debian 11 uses (which is 5 years old at this point), then it will work. Glibc versions are backwards compatible, but not forwards compatible, so building on an older distribution is standard practice for Linux binary distribution and improves the range of compatibility.

The latest version of LuaJIT that exists at the time is built with the server, and the interactive ncurses terminal is enabled. The builds also patch core.get_player_information to provide version information about clients, which is normally only available in debug builds in upstream, but other than that they are verbatim built from the corresponding Luanti version.

Debug symbols are also provided as a separate download with each build, with which you can use to make segfault stacktraces more human readable for assisting with debugging when reporting engine crashes to the core developers.

I dogfood these builds for running my own Voxelmanip Classic server, so I hope they should also work for whatever server you may want to run.

Download

Stable versions are likely what you want, but development builds are sometimes made for testing purposes.

Technical details

The builds are made using some scripts in Github Actions and the repository can be found here. For more details on how the builds are made see the README. You can also fork the repository to make your own server builds with different compile options if you want to e.g. add a database backend you want to use.
Last edited by ROllerozxa on Thu Jan 30, 2025 12:24, edited 3 times in total.
ContentDB Editor | Website | ContentDB

User avatar
ROllerozxa
Member
Posts: 194
Joined: Sun Apr 25, 2021 12:25
GitHub: ROllerozxa
IRC: ROllerozxa
In-game: ROllerozxa
Location: Sweden
Contact:

Re: [Linux] Basic headless server binaries

by ROllerozxa » Post

A new server build for the newly released 5.10.0 is now available.

As usual, see the OP for up to date download links.
ContentDB Editor | Website | ContentDB

Mathieu_77
New member
Posts: 2
Joined: Wed Jan 29, 2025 10:18
GitHub: MathieuRigard

Re: [Linux] Basic headless server binaries

by Mathieu_77 » Post

Hi,
is it possible to put here a little howto ?
Where di I put your build_server.sh ?
What do I do next ?

Thanks

Mathieu

VPS OVH
Debian GNU/Linux 12 (bookworm)
Luanti stable 5

User avatar
ROllerozxa
Member
Posts: 194
Joined: Sun Apr 25, 2021 12:25
GitHub: ROllerozxa
IRC: ROllerozxa
In-game: ROllerozxa
Location: Sweden
Contact:

Re: [Linux] Basic headless server binaries

by ROllerozxa » Post

Mathieu_77 wrote:
Wed Jan 29, 2025 10:26
Hi,
is it possible to put here a little howto ?
Where di I put your build_server.sh ?
What do I do next ?
Obtaining the server binary is just one part of setting up a server. If you want to use the prebuilt binaries you don't need to do anything with the scripts in the repository, just download the .tar.gz archive linked in the initial forum post. You can do this conveniently when SSH'd into the server by copying the link and download with wget and then tar -xf to extract it.

For running the server once you have downloaded and extracted the server binary you should follow this section and onward in the documentation for setting up a Luanti server.
ContentDB Editor | Website | ContentDB

Mathieu_77
New member
Posts: 2
Joined: Wed Jan 29, 2025 10:18
GitHub: MathieuRigard

Re: [Linux] Basic headless server binaries

by Mathieu_77 » Post

Thank you very much for this answer.

ok, I think I understood where my misunderstanding came from... Your script is used to launch the server in headless mode. I thought it was used to launch the compilation for optimization of a headless server...

But I don't think there are any precompiled binaries for Debian 12.
I thought I could use your code to compile a headless server on my VPS dedicated to education...
My bad.

I will continue to search the simplest and most efficient method to set up a Luanti server ;o)
Last edited by Mathieu_77 on Thu Jan 30, 2025 12:19, edited 1 time in total.

User avatar
ROllerozxa
Member
Posts: 194
Joined: Sun Apr 25, 2021 12:25
GitHub: ROllerozxa
IRC: ROllerozxa
In-game: ROllerozxa
Location: Sweden
Contact:

Re: [Linux] Basic headless server binaries

by ROllerozxa » Post

Mathieu_77 wrote:
Thu Jan 30, 2025 12:08
But I don't think there are any precompiled binaries for Debian 12.
I thought I could use your code to compile a headless server on my VPS dedicated to education...
The binaries work on anything glibc-based which is equivalent to Debian 11 and newer, which includes Debian 12. When building Linux binaries for distribution you want to build on a slightly older distribution which allows for a wider range of runtime compatibility since glibc is backwards compatible, but not forward compatible. So it will work on Debian 11, Debian 12 the upcoming Debian 13, the corresponding Ubuntu versions, recent versions of Fedora, etc.
Your script is used to launch the server in headless mode. I thought it was used to launch the compilation for optimization of a headless server...
Unless you're talking about the run_server.sh example script in the Setting up a server page (which I wrote), no. build_server.sh is the script that is used to build the server in CI, and you can see the steps it takes to prepare the environment before it is run in the workflow file. But it is not necessary if you do not wish to customise the build configuration of the server since the prebuilt binaries will work on the Linux distribution you have on your server.
ContentDB Editor | Website | ContentDB

Post Reply