Skip to content
BasaltSoftware
Bedrock 1.26.60

Site colour

Discord
Esc

    ↑↓ moveEnter openEsc close

    Keyboard shortcuts
    Ctrl K
    Search the whole site, from any page
    /
    Jump to the sidebar search, or search the whole site where there isn't one
    Enter
    Open the top search result
    Esc
    Clear the search, or close this panel
    ?
    Show these shortcuts
    Docs

    Installation

    Build Basalt from source, start it and let players in.

    Basalt is built from source with Cargo, Rust’s build tool. There is nothing else to install: the first start creates every file and folder Basalt needs.

    • A recent stable Rust toolchain: Rust 1.92 or newer. Some of Basalt’s dependencies need that version.
    • Git and an internet connection for the first build, which downloads dependencies.
    • An internet connection when Basalt starts with online_mode on (the default), so it can fetch the keys used to check players’ Xbox sign-ins.

    From the root of the Basalt repository:

    Terminal window
    cargo run --release -p basalt-server

    The release build is heavily optimised, so the first build takes a while. Later starts reuse it. The compiled program is target/release/basalt, and you can run it directly once it is built:

    Terminal window
    ./target/release/basalt

    To see more detail in the log, set RUST_LOG:

    Terminal window
    RUST_LOG=info,basalt=debug cargo run --release -p basalt-server

    Basalt listens on two ports. Open both in your firewall and forward both on your router if players join from outside your network.

    Port Protocol Setting Used for
    19132 TCP signaling_port Clients start their connection here
    19133 UDP media_port Game traffic

    If the machine is behind NAT, list its public address in advertised_addresses in basalt.toml so clients are told where to send game traffic:

    advertised_addresses = ["203.0.113.10"]
    Path What it is
    basalt.toml Every setting, with a comment above each. See Configuration.
    identity.pem The key that identifies this installation to clients.
    worlds/ World folders. The one named by world in basalt.toml is created if it does not exist.
    plugins/ Plugins, plus the TypeScript typings and a tsconfig.json for writing them.
    resource_packs/ Packs sent to players as they join.
    structures/ .mcstructure files plugins can place.
    allowlist.json, banned-players.json, banned-ips.json The allowlist and the ban lists.
    permissions.json, players.json Operators and permission levels, and everyone who has joined.

    The terminal Basalt runs in is also its console. Type any command there, with or without the leading slash, and it runs with every permission:

    Terminal window
    op Steve
    list
    status

    See Commands for the full list.

    Type stop in the terminal or press Ctrl+C. Either way Basalt disconnects players, saves them and the world, and exits. Players and the world are also saved on a timer while it runs (autosave_ticks).

    If you press Ctrl+C a second time while Basalt is still saving, it exits at once and anything not yet saved is lost.

    Pull the new source and build again. When a new version adds settings, Basalt appends them to your existing basalt.toml with their comments and defaults the next time it starts; what you wrote is left as it is.