First Server Run
What happens on first start
On startup, VoiceCraft looks for ServerProperties.json in the current directory and subdirectories.
If the file is not found, the server automatically creates:
config/config/ServerProperties.json
This file becomes the main persistent source of truth for server behavior.
Default ports and endpoints
By default the generated config is aligned like this:
- VoiceCraft UDP:
9050 McHttp:http://127.0.0.1:9050/McWss:ws://127.0.0.1:9051/McTcp:127.0.0.1:9050
Notes:
- UDP voice traffic and some transport defaults share
9050 McWssis separated by default on9051McTcpis especially relevant forGeyserVoice
Startup arguments
VoiceCraft server supports these root arguments:
--exit-on-invalid-propertiesExit ifServerProperties.jsoncannot be parsed.--language <culture>Override server log language for the current run.--transport-mode <mode>Enable a subset of Minecraft transports for the current run.--transport-host <host>Override the configured Minecraft transport host.--transport-port <port>Override the configured Minecraft transport port.--server-key <token>Override the shared Minecraft-side login token for the current run.
Short aliases also exist in code:
-eip-l-tm-th-tp-sk
Examples
Run with a startup language override
./VoiceCraft.Server --language en-US
Exit if config is invalid
./VoiceCraft.Server --exit-on-invalid-properties
Run only McTcp for a Java bridge
./VoiceCraft.Server --transport-mode tcp --transport-host 0.0.0.0 --transport-port 9050
Run only McHttp
./VoiceCraft.Server --transport-mode http --transport-host 0.0.0.0 --transport-port 9050
Override token without editing JSON
./VoiceCraft.Server --server-key "replace-with-secure-token"
How transport overrides behave
Runtime overrides do not permanently rewrite ServerProperties.json.
They apply only to the current process and are useful when:
- running multiple environments from one image
- using panels or systemd drop-ins
- testing direct vs proxy topologies
- letting another tool such as
GeyserVoicelaunch the runtime with generated values
First-run checklist
- Change all generated login tokens.
- Confirm which transport you actually need:
McHttpfor BDSMcWssfor local worldsMcTcpforGeyserVoice
- Verify host bindings.
- Open only the ports you need.
- Confirm
PositioningTypewith your clients. - Test client connection before connecting Minecraft automation.
Common first-run mistakes
- leaving generated tokens unchanged
- exposing
127.0.0.1endpoints to remote nodes - forgetting that
McTcpmay be required by Java-side bridges - enabling every transport in production without actually needing them
For the full config reference, see ServerProperties.json.