Skip to content

Server Configuration

SteelMC is configured through a TOML configuration file located at config/config.toml. This page documents all server options.

World settings are documented in World Configuration.

OptionTypeDefaultDescription
server.server_portu1625565The port the server listens on
server.max_playersu3220Maximum players allowed simultaneously
server.allow_extended_view_distanceboolfalseAllow view_distance above vanilla’s 32-chunk cap, up to Steel’s 127-chunk cap
server.view_distanceu810Maximum view distance in chunks. Normally 1-32, or 1-127 with extended opt-in
server.simulation_distanceu810Maximum simulation distance in chunks. Must be less than or equal to view range
server.motdString"A Steel Server"Message displayed in the server list

Optional worker counts for server thread pools. 0 or omitted uses each pool’s automatic default.

OptionTypeDefaultDescription
server.threads.main_runtimeusize0Worker threads for the primary Tokio runtime. 0 or omitted for default/auto.
server.threads.chunk_runtimeusize0Worker threads for the chunk Tokio runtime.
server.threads.chunk_generationusize0Worker threads for the Rayon chunk generation pool.

These settings are only useful when you want to balance CPU use manually, for example to leave capacity for other processes on the same machine.

OptionTypeDefaultDescription
server.online_modebooltrueUse Mojang authentication for player verification
server.auth_serverStringomittedOptional hasJoined endpoint for online mode. Omit to use Mojang
server.profile_serverStringomittedOptional name-to-profile lookup endpoint. Omit to use Mojang’s profile service
server.encryptionbooltrueEnable encryption for client-server communication
server.allow_flightboolfalseAllow unauthorized client flight in vanilla movement checks
server.enforce_secure_chatboolfalseEnforce secure chat. Requires online_mode = true and encryption = true

For debugging and bots it’s recommended to disable encryption (only for testing!)

OptionTypeDefaultDescription
server.chat_spam_threshold_secondsi3210Vanilla chat spam threshold window in seconds. Values <= 0 disable throttling
server.command_spam_threshold_secondsi3210Vanilla command spam threshold window in seconds. Values <= 0 disable throttling
OptionTypeDefaultDescription
server.use_faviconbooltrueWhether to use a custom favicon
server.faviconString"config/favicon.png"Path to favicon file (64x64 PNG)

Network compression reduces bandwidth usage at the cost of CPU.

OptionTypeDefaultValid RangeDescription
server.compression.thresholdu32256>=256Packet size threshold for compression
server.compression.leveli3241-9Compression level (1=fast, 9=best)

The [server.compression] table is optional. If it is omitted, compression is disabled.

Server links are displayed in the multiplayer menu.

OptionTypeDefaultDescription
server.server_links.enablebooltrueEnable server links feature
server.server_links.linksArray4 linksList of links to display

See Server Links Guide for detailed configuration.

OptionTypeDefaultDescription
log.log_pathString"./.logs"Directory for log files and command history
log.log_levelString"info"Log level: error, warn, info, debug, or trace
log.timeString"uptime"Time format: none, date, or uptime
log.module_pathboolfalseWhether the module path should be displayed
log.extraboolfalseWhether extra log data should be displayed
log.log_filebooltrueWhether logs should also be written to files
log.rotation_timeString"daily"File rotation: none, hourly, daily, weekly, or monthly
log.max_historyusize50Number of console commands saved in history
/config/config.toml
[server]
server_port = 25565
max_players = 50
allow_extended_view_distance = false
view_distance = 12
simulation_distance = 10
online_mode = true
# auth_server = "https://sessionserver.mojang.com/session/minecraft/hasJoined"
# profile_server = "https://api.minecraftservices.com/minecraft/profile/lookup/name"
encryption = true
allow_flight = false
motd = "Welcome to my Steel server!"
use_favicon = true
favicon = "config/favicon.png"
enforce_secure_chat = false
chat_spam_threshold_seconds = 10
command_spam_threshold_seconds = 10
[server.threads]
main_runtime = 0
chunk_runtime = 0
chunk_generation = 0
[server.compression]
threshold = 256
level = 4
[server.server_links]
enable = true
[[server.server_links.links]]
label = "bug_report"
url = "https://github.com/4lve/SteelMC/issues"
[log]
log_path = "./.logs"
log_level = "info"
time = "uptime"
module_path = false
extra = false
log_file = true
rotation_time = "daily"
max_history = 50

The server validates configuration on startup:

  • unknown fields are rejected
  • server.view_distance must be between 1 and 32, or between 1 and 127 when server.allow_extended_view_distance is true
  • server.simulation_distance must be less than or equal to server.view_distance
  • server.auth_server, when set, must be an absolute http or https URL
  • server.profile_server, when set, must be an absolute http or https URL
  • server.compression.threshold must be at least 256
  • server.compression.level must be between 1 and 9
  • if server.enforce_secure_chat is true, both server.online_mode and server.encryption must be true
  • log.log_level, log.time, and log.rotation_time must use one of their listed values

If validation fails, the server will exit with an error message.

SteelMC logo by colonthreeing.