Minecraft Field guide

Importing a Bedrock World to a Linux Dedicated Server: .mcworld Archives, LevelDB, and server.properties

Importing an existing Bedrock world into a Linux Bedrock Dedicated Server: extracting .mcworld archives, staging LevelDB structures, configuring level-name in server.properties, and permissions.

Importing a Bedrock World to a Linux Dedicated Server: .mcworld Archives, LevelDB, and server.properties

Starting a local cooperative world on a mobile phone, tablet, or Windows client in Minecraft Bedrock Edition inevitably reaches hardware limits: whenever the world creator closes their app, friends lose connection. Migrating that established world to a 24/7 Linux Bedrock Dedicated Server (BDS) removes host constraints while preserving builds, redstone contraptions, and player inventories.

In this practical walkthrough, we cover exporting .mcworld archives, properly unpacking LevelDB storage onto Linux filesystems, configuring the level-name property in server.properties, and validating directory permissions.

Minecraft Bedrock World Architecture: .mcworld and LevelDB#

Unlike Java Edition, which stores world chunks in .mca Anvil region files, Minecraft Bedrock utilizes a customized LevelDB key-value database engine.

The .mcworld file exported from a Bedrock client is simply a renamed ZIP archive containing:

  • level.dat and level.dat_old — global world state metadata (seed, tick timers, world spawn coordinates).
  • levelname.txt — plain text representation of the map title.
  • db/ — the core LevelDB data directory holding chunk payloads, entities, and player inventories.
  • behavior_packs/ and resource_packs/ — active add-on packages (if installed).

Extracting the Archive and Validating Directory Structure#

Transfer your exported .mcworld file to a temporary staging folder on your Linux host via SFTP or SCP:

bash
mkdir -p /tmp/bds_import && cd /tmp/bds_import
unzip -q ~/my_bedrock_world.mcworld -d ./extracted_world
ls -la ./extracted_world

Verify that level.dat and the db/ folder reside directly inside ./extracted_world, without unwanted nested directories.

Copy the staged world folder into the BDS worlds directory (typically /opt/bedrock-server/worlds/) using an alphanumeric name without spaces:

bash
sudo cp -r ./extracted_world /opt/bedrock-server/worlds/CustomSurvival
sudo chown -R bedrock:bedrock /opt/bedrock-server/worlds/CustomSurvival
sudo chmod -R 755 /opt/bedrock-server/worlds/CustomSurvival

Ensuring that the bedrock service user owns the entire LevelDB tree prevents runtime database lock exceptions upon player join.

Configuring the level-name Directive in server.properties#

The server's primary configuration file, server.properties, specifies which subfolder under worlds/ should be loaded into memory.

Update the active level pointer:

bash
sed -i 's/^level-name=.*/level-name=CustomSurvival/' /opt/bedrock-server/server.properties
grep "^level-name=" /opt/bedrock-server/server.properties

Linux file systems are strictly case-sensitive: if the directory is named CustomSurvival, setting level-name=customsurvival causes BDS to ignore your files and generate a new blank world.

Launching the Service and Validating World Integrity#

Restart the Bedrock server service:

bash
sudo systemctl restart bedrock-server && sudo journalctl -u bedrock-server -n 25 --no-pager

Inspect the systemd journal for runtime startup confirmation:

text
IPv4 supported, port: 19132
Server started.
Level Name: CustomSurvival

Connect using a Bedrock client: your character will spawn at your established base coordinates, container inventories will remain intact, and mob farms will resume operation 24/7.

If you are looking for always-online Minecraft Bedrock hosting with browser-based .mcworld world imports, automated hourly snapshots, and built-in DDoS mitigation, dependable Minecraft server hosting delivers optimized cloud performance for cross-platform multiplayer.

References#