Skip to content
LevelDreadnought edited this page Feb 2, 2026 · 4 revisions

Introduction

Welcome to the Kyber dedicated server set-up and management guide. This is a supplement to the already excellent official kyber docs on dedicated servers and will include a few additional steps and tips to help you host a dedicated server on the Kyber platform. This guide is a work in progress and will be updated with new information regularly.

Credits
LevelDreadnought - this guide
Official Kyber Docs - Kyber Staff/Developers

Initial Setup

Before going further in this guide, please read and follow the steps in the official Kyber documentation on how to set up a dedicated server. They are located here: https://docs.kyber.gg/g/hosting/dedicated-servers

Plugin Setup

This section will discuss how to set up plugins for your dedicated server and how to update to the latest Kyber.dll file.

Before getting into how to set up and manage plugins, I would highly encourage you to update the Kyber.dll file to the latest version that includes support for many additional plugin features. There are three methods to do this; either automatically via setting an additional environment variable when the container is created, using my custom kyber-updater cli tool, or manually via docker commands. Note: if you are using a custom Kyber.dll, or one you compiled from source yourself, or wish to update the Kyber.dll of an existing docker container, you must update the container’s dll using the manual or cli tool method.

Automatic Update Method (does not work currently)

To pull the newest Kyber.dll module from the official source directly, set an environment variable in your docker run command as follows: KYBER_MODULE_CHANNEL=ver/beta10 . This will automatically update the Kyber.dll module when creating a new server container.

If setting the environment variable doesn’t work properly, an alternative method is to get the Kyber.dll file from the Kyber client. Follow the steps below to do this:

  1. In the Kyber launcher, go to Settings -> Accounts & Updates -> Release Channel
  2. Set the Target Service to kyber-module and Release Channel to ver/beta10
kyber release channel

  1. To get the module to download, just join any server and the new Kyber.dll will be automatically pulled
  2. Locate the new Kyber.dll file in C:\ProgramData\Kyber\Module and transfer it to your server host

Kyber-Updater CLI Tool Method

You can use the kyber-updater cli tool I made to automatically update the Kyber.dll module in your server. It either automatically downloads and installs the latest Kyber.dll file or installs a Kyber.dll file you provide yourself (this is essentially an automated version of the manual update method below). The tool and detailed usage instructions (as well as examples) can be found on my GitHub here.

Manual Update Method

For a custom Kyber.dll module, or one you compiled yourself, or to manually update the Kyber.dll in an existing server, this is the method to use. One you have the new file, the process to add it to a server is as follows:

  1. Create a new docker container or use an existing one and make sure it is running
  2. You then want to get a bash shell inside the running container by using the following docker command: docker exec -it container_name bash (you can also use the container id in the container_name spot if you'd like)
  3. If you don’t already have it, to get both the container name and ID, run the docker ps command to show currently running containers or docker ps -a to show all containers running or stopped
  4. After getting the shell, navigate to the following directory where the Kyber.dll and other modules are located via the command cd /root/.local/share/kyber/module/
  5. You then want to rename/backup the old Kyber.dll just in case instead of deleting it by using the command mv Kyber.dll Kyber.dll.old (this may cause server instability before we reboot in a later step)
  6. Next, exit the docker container shell via the exit command and shut down the server via the docker stop container_name command
  7. Now make sure the new Kyber.dll is in the directory you are currently in, then run the following docker command to move it into the container docker cp Kyber.dll container_name:/root/.local/share/kyber/module/Kyber.dll
  8. The new Kyber.dll should now be in the correct directory inside the container and isn't overwriting the old one as it was renamed in a previous step via the mv command
  9. Finally, restart the docker container via docker start container_name and everything should be good to go
  10. As a sanity check, you can optionally open a bash shell in the running container if you and navigate to the root directory from above to check that all the files are in order. Among other files, there should be Kyber.dll (the file you just copied into the container) and Kyber.dll.old the original file we renamed/backed up

Note: this guide assumes you are running as root, if you are running as a standard user, a sudo command must be placed before every docker command.

Creating and Loading a Plugin

Kyber server plugins are files added to the server that look like example.kbplugin

The file extension .kbplugin is really just a renamed .zip file and thus can be opened by any program that can handle zip files (I personally recommend the program 7-Zip for this task). The structure of a .kbplugin is as follows:

example-plugin/
├── common/
├── server/
└── plugin.json

This is an example of what the plugin.json file should look like:

{
    "name": "MyPlugin",
    "author": "LevelDreadnought"
}

The name field should match the file name of the plugin and the author can be anything you want. The server folder contains a file with a manditory filename __init__.lua which is the main lua script the server will run and is required. It is the only .lua file required in the plugin. Other lua files referenced by __init__.lua can also be placed in this directory. The common folder holds additional lua libraries that can be refrenced by the main __init__.lua script.

To load a plugin on your server, you first want to create a new directory where that plugin will be placed and then transfer the plugin (i.e. example.kbplugin) to that directory. In order have your server detect and load plugins, the following environment variables must be set when creating your server with the docker run command:

-e KYBER_SERVER_PLUGINS_PATH="/mnt/battlefront/plugins"
-v "/path/to/your/pluginfolder/:/mnt/battlefront/plugins"

After those variables are set and you run your server, you should see an entry both in the console and in the server log indicating your plugin loaded successfully.

Dedicated Server Logs

For additional troubleshooting, dedicated server logs are located at the following directory inside the docker container: /root/.local/share/maxima/wine/prefix/drive_c/users/root/AppData/Roaming/ArmchairDevelopers/Kyber/Logs/

Console Output

When you first create a new docker container, your shell will be automatically attached to it allowing you to view the console/log output in real time. To get the console/log output of the docker container after restarting it or closing your terminal, use the command docker attach container_name to attach to a running container. For a stopped container, use the command docker start -ai container_name to start attached to the container. This will give you the same output just as if you created a new one with the docker run command.