Aller au contenu principal
Version: latest - a1.37.x ⚖️

Server Configuration

All you need to know to Configure your server!

Server Configuration File

The server Configuration file Config.toml is generated automatically when the server is launched for the first time. This file will always be overridden with the proper pattern after the server is loaded.


nanos world Config files use TOML (Tom’s Obvious, Minimal Language), please refer to for more information and syntax.


Settings Detailed

nameName of the Server
descriptionDescription of the Server
max_playersMax amount of players allowed to join
passwordPassword to be able to connect
ipServer IP. We recommend leaving it blank
portServer main Port and HTTP Port (UDP/TCP)
query_portServer query Port (UDP)
announceWhether to announce or not in the Server List
tick_rateServer Tick in ms. We recommend leaving it 33
log_levelWhich Log level to output
game_modegame-mode package to load - you can only load one game-mode at once.
loading_screenloading-screen package to load - you can only load one loading-screen at once.
packagesscript packages to load
assetsAdditional assets to force to load
mapWhich map to load
tokenServer Token used for authorize downloads through CLI
banned_idsList of banned nanos account IDs

Logo Image

It is possible to have a custom image to be displayed in the server list. For that, add a file called Server.jpg besides the server executable with the logo you wish. The recommended size is 300x150.


You can pass a JPG image URL to --logo parameter to automatically download it as the Server.jpg image!

Map & Level

The Map (or Level) is defined in the Server’s config file, this level will be loaded when the player joins the server and the Path is supposed for be or a built-in asset or an asset which is located at Assets/ folder.

nanos world counts on (for now) 4 built-in maps: nanos-world::BlankMap, nanos-world::EmptyMap, nanos-world::OceanMap and nanos-world::TestingMap which can be used in your server without needing to download any Asset Pack.

Server Console

Built-in Commands

chat <message>Sends a chat message
kick <player_d> <reason>Sends a chat message
map <map_path>Changes the Map, reloads all Packages and reconnect all Players
stopStops the server
playerslists all players connected
package run <package_name> <lua_code>Runs a code in a package
package reload <package_name>Reloads a package
package hotreload <package_name>Hot-reloads a package (reloads all files but keeps the memory as is)
package reload allReloads all packages and restarts the Lua Virtual Machine
package unload <package_name>Unloads a package
package load <package_name>Loads a package

Custom Commands

All (non built-in) commands will be sent into an event to the scripting/server-side:

Server.Subscribe("Console", function(my_input)
Console.Log("Console command received: " .. my_input)

Command Line Parameters

It is possible to override the Server Configuration with Command Line Parameters. Note: this will not write to the Config file.

ParameterValue TypeDescription
--namestringServer name
--descriptionstringServer description
--logostringServer Logo (downloads the image locally as a Server.jpg file)
--passwordstringServer password
--ipstringServer IP
--mapstringMap to load
--portnumberServer port
--query_portnumberServer Query port
--announce0 or 1If announce in master list
--game_modestringServer game-mode
--loading_screenstringServer loading-screen
--packagesstring listServer packages
--assetsstring listServer assets
--tokenstringServer authorization token
--max_playersnumberMax allowed players
--dedicated_server0 or 1If to start as a Dedicated Server or P2P
--async_log0 or 1If to use async or sync logs (async provides better performance) - default is 1
--log_level1, 2 or 3If to use Normal, Debug or Verbose logs
--custom_settingsstringA list of Custom Settings to be passed to scripting
--compression0-9Sets the compression level to use in some networking operations - 0 disables it, 1 is the fastest and 9 is the slower but highest compression ratio
--saveflagIf to save the parameters in Config.toml
--profilingflagEnables Performance Profiling Logs for debugging
--auto_downloadflagAutomatically downloads Packages and Assets from Vault if needed
--log_show_threadflagShows the current running thread of each outputted log

Flag Value Types don't require any argument, just pass the parameter like --parameter.

One-liner Server Configuration

With Command Line Parameters and Command Line Interface (CLI), it is also possible to automate the full server installation, here's an example:

# Installs/Updates the server through SteamCMD
steamcmd +force_install_dir /home/nanos-world-server +login anonymous +app_update "1936830 -beta bleeding-edge" validate +quit

# Installs all needed Packages (this will install needed Assets as well)
./ --cli install package sandbox battlefield-kill-ui ts-fireworks-tools

# Starts the server with all configs set
./ --name "nanos world Amazing Sandbox" --description "Awesome Sandbox Server" --map "nanos-world::TestingMap" --gamemode "sandbox" --packages "battlefield-kill-ui,ts-fireworks-tools" --port 7777 --query_port 7778 --max_players 32 --logo ""

Another shorter example:

# Starts the server with all configs set and auto downloads the packages and assets if needed
./ --name "nanos world Amazing Sandbox" --description "Awesome Sandbox Server" --map "nanos-world::TestingMap" --gamemode "sandbox" --packages "battlefield-kill-ui,ts-fireworks-tools" --port 7777 --query_port 7778 --max_players 32 --auto_download 1 --logo ""

Common Console Messages and Errors

Server Tick too/extreme high! Verify the server performance! Server got stuck for Xms...

It means the server got stuck for X milliseconds. The warning (yellow) is not something to worry about, but too many messages in red) could mean your server infrastructure is not that good or your scripting code is not that optimized.

Usually the server runs at 33 ticks per second (or the value configured at Config.toml), the server runs in an infinite loop in that frequency, and inside that loop all server operations are executed, such as receiving and sending network packets, triggering lua events, executing functions or callbacks, and so on.

If a single tick takes more than 33 milliseconds, this warning will appear up.


In some shared VPS, this warning may appear up more frequently due how the VPS handles the scaling of it's machines, sometimes the provider may think your VPS is "idle" (due nanos world server using extremely low CPU) and may decrease your processing power, causing this warning show up as well.

Assertion Failed: [...] problem (5002) We don't have cert, and self-signed certs not allowed...

This is an internal problem from Steam Library when you attempt to connect to a server too fast (when it has just started). The server automatically fixes it by retrying the connection, there is nothing to worry about.

Lua Stack Error: Should be X, is Y...

This is an internal error and should not supposed to happen. Those are guards set around our Lua Scripting implementation to prevent bad things from happening. If this error appears it means a implementation bug happened. Please communicate immediately with the devs, and if possible how to reproduce that!