Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Run the server with itzg/minecraft-bedrock-server, accept the EULA with EULA: "TRUE", and mount /data to a host directory or named volume. Manage it with Docker Compose so the world, configuration, upgrades, logs, and rollback steps are reproducible. For Bedrock Dedicated Server (BDS) 1.26.50 and later using the README’s NetherNet example, publish TCP port 19132 and UDP ports 19140–19155, and set SERVER_UDP_PORTS to the Docker host address and range.

What this setup does

The itzg image is a container wrapper around Mojang’s Bedrock Dedicated Server. The Bedrock server software is not packaged inside the Docker image; the container downloads or upgrades it from Mojang when it starts. That means an image update and a Mojang server release are separate events. A newly pulled image does not by itself guarantee a new BDS version, and a restart with the default version setting can install a newer BDS release.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The container’s important state lives under /data. Mounting that path outside the container preserves the world, server properties, allow-list, permissions, and other files when you recreate or upgrade the container. Without a persistent mount, removing the container can remove the server you care about.

Prerequisites and design choices

  • A Docker Engine installation with the Compose plugin (the command is docker compose).
  • A host with enough disk space for the BDS files, world data, logs, and backups. The cited official material does not publish a universal storage or maximum-player figure, so size the host from your own world growth and retention policy.
  • A decision about persistence: a bind mount such as ./data:/data is easy to inspect and copy, while a named volume is managed by Docker but may need ownership preparation for non-root operation.
  • A decision about exposure: publish only the transport ports required by the BDS version and network mode you selected, then enforce additional filtering on the Docker host or upstream firewall.

Build a Compose deployment

Minimal current-style file

Create a directory for the service, then save this as compose.yaml:

#1 Best Overall
Sale
Compressed Air Duster,130000RPM Super Power Cordless Air Duster,Rechargeable Brushless Blower,3 Gear Adjustable Blower with LED Light,Dust Remover for Computer/House/Outdoor/Car
  • Powerful Turbo Fan:CAGIWIRU Electric Air Duster have reached speed up to 130000RPM,Can efficient remove dust and debris.With LED light and Three Adjustable Speed to meet with different cleaning tasks.
  • With Attached USB C Fasting Charging cable.Charing 3 hours,Enjoy up to 240 minutes of use on the lowest setting, For third speed can use for 25mins.with four charging options to meet with your needs.
  • Wide Application: attached 5 different nozzles,making it suitable for a variety of scenes, such as car,pet, pc, keyboards, and other electronic devices. It also serves for office and home clean duster.
  • Handy Design & Portable:Cordless air duster electric nozzle is Light weight and small size, design and comfortable to hold and space saving, convenient to carry around. You can put it in your room or inside the car without taking up space.
  • Economical &Reusable: Built durable materials with a long-lasting battery,our CAGIWIRU air duster it's a sustainable alternative to disposable air cans.
services:
  bds:
    image: itzg/minecraft-bedrock-server
    environment:
      EULA: "TRUE"
      SERVER_UDP_PORTS: "192.168.1.10:19140-19155:19140-19155"
      GAMEMODE: survival
      DIFFICULTY: normal
    ports:
      - "19132:19132/tcp"
      - "19140-19155:19140-19155/udp"
    volumes:
      - ./data:/data
    stdin_open: true
    tty: true

Replace 192.168.1.10 with the Docker host’s LAN address when players connect over your local network, or with the appropriate public address when the host is reached from the internet. The address in SERVER_UDP_PORTS must match the address clients are expected to use; it is not a substitute for router or firewall forwarding.

Start and observe the service

  1. From the directory containing compose.yaml, run docker compose up -d. Compose creates the container and the bind-mounted data directory if necessary.
  2. Follow startup output with docker compose logs -f. Keep watching until the Bedrock process has completed its download and reports that it is ready to accept connections.
  3. Confirm the container remains running with docker compose ps. If it exits, read the complete log before changing settings; an EULA, permission, download, or port error will normally be visible there.

Understand the networking and port requirements

NetherNet in BDS 1.26.50 and later

The official itzg example for BDS 1.26.50 and later uses NetherNet by default. It maps TCP 19132 for the initial connection and UDP 19140 through 19155 for gameplay, and it sets SERVER_UDP_PORTS to the host address and the same range. Keep the protocol suffixes in the Compose file: TCP and UDP are different transports even when a port number looks similar.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

If you run another BDS version or select another transport, follow that version’s transport-specific instructions rather than blindly applying the NetherNet range. A client that can discover the server but cannot join often indicates an incomplete UDP mapping, an incorrect advertised host address, or a firewall/router rule that forwards only TCP.

Host and router controls

  • On a LAN, allow the published TCP and UDP ports through the host firewall and connect to the host’s LAN address.
  • For internet access, forward the selected TCP and UDP ports from the router to the Docker host, then restrict source addresses where practical.
  • Do not expose unrelated container ports. Docker publishing is not a complete firewall or authentication policy.

Configure gameplay and access

Environment variables are translated into Bedrock server properties when the container initializes. Common settings include:

Rank #2
EVEO® Screen Cleaner Spray Kit (Streak-Free) TV Screen Cleaner for Smart TV, Lcd, LEd, Oled | Computer Screen Cleaner Spray and Wipe Microfiber Cloth - TV, Monitor, Laptop, iPad, Car - 6.7oz 1 Pack
  • Screen Cleaner is Your Screen’s New Bestfriend! - EVEO is proud to present a screen cleaner that’s perfectly suited for your TV. Meet your new screen cleaner, computer screen cleaner, laptop cleaner, iPad cleaner, Macbook,tv cleaner or any other electronic device. Our screen cleaner spray and wipe along with the included plush microfiber cloth, easily removes dust, fingerprints & other smudges on the screen’s surface. Clean effectively for a streak-free screen
  • Gentle on your Screens - Our screen cleaner spray and wipes is compatible to be used even for the most sensitive LCD, LED, CRT, and OLED screens in proper use. Be at ease knowing that this product is compatible with all the major brands: LG, SONY, Samsung, Sharp, iPad, iPhone, Android screens, Kindle, PC monitors - we’ve got you covered! Can be used as LCD screen cleaner, tv cleaner, smart tv screen cleaner, and more
  • Premium Super Soft Plush Microfiber Cloth - Included in this efficient screen cleaning kit. This screen cleaner spray and wipe has our signature plush microfiber cloth specially designed to comply with screens and monitors and leave them streak-free. Has been shown to effectively absorbs stubborn stains, zero streaks, and no fiber shedding. Always use this together with our screen cleaner for the best results
  • Easy-to-Use Screen Cleaner Kit + microfiber cleaning cloth - The EVEO Screen Cleaning Kit will easily be your new favorite tool when it comes to taking care of the things you love most, quick and easy solution for a streak-free screen. Simply screw on the sprayer gun on the screen cleaner bottle. Spray the cleaning liquid onto the microfiber cloth, then wipe the screen until desired cleanliness & shine is achieved.
  • Quality Screen Care Kit Worth Purchasing - Enjoy a convenient Screen Cleaner anytime, anywhere you need it. Your satisfaction is our top priority. We stand behind the quality of our products and that’s why, you shouldn’t be worrying at all. We manufacture the Best Screen Cleaner. and can be used for laptop cleaning kit, laptop screen cleaner, tv screen cleaner for smart tv. MacBook screen cleaner, monitor cleaner or screen cleaner spray for electronic devices with microfiber cleaning cloth
Variable Purpose Example
GAMEMODE Default game mode for the server. survival
DIFFICULTY World difficulty. normal
LEVEL_NAME World or level name. family-world
MAX_PLAYERS Configured player limit. 10
ONLINE_MODE Bedrock online-authentication behavior. true or the value supported by the current README
VIEW_DISTANCE Server view distance. Set deliberately for your host’s workload
TICK_DISTANCE Simulation distance around players. Set deliberately for your host’s workload

Use the exact variable names and accepted values documented by the current image README. Put durable choices in Compose rather than editing a running container; a replacement container will not retain ad-hoc changes made inside its writable layer.

Operators, members, visitors, and allow-listing

The image supports identifier lists through OPS, MEMBERS, and VISITORS. For a private server, configure an allow-list with ALLOW_LIST and ALLOW_LIST_USERS, or maintain allowlist.json in the mounted data directory according to the current README. Test the policy with a permitted account and an account that should be rejected before sharing the address publicly.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Send commands without attaching to the process

The image includes send-command. For example:

docker exec CONTAINER_NAME_OR_ID send-command gamerule dofiretick false

The command’s output appears in the container logs. Replace the placeholder with the actual container name or ID shown by docker compose ps. Use Compose environment settings for persistent configuration and in-game commands for state that belongs to the world.

Choose and verify persistent storage

Bind mount

The example’s ./data:/data bind mount keeps files in a directory beside the Compose file. It makes the worlds directory and configuration files easy to inspect, archive, copy to another host, or scan for available space. Ensure the Docker process can read and write the directory.

Rank #3
Sale
BladeHawks RGB Gaming Mouse Pad Extra Large Extended 31.5x12 Inch-Black | LED mouse pad with 14 lighting modes, covers keyboard & mouse, anti-slip rubber base, waterproof surface, USB powered
  • 【Large size】:Measuring 800 x 300 mm/ 31. 5×12 inches, which is wider and taller than others. Large mouse pad can perfectly fit your keyboard and mouse of any size, and there is also ample space for peripherals such as phones, tablets, etc.
  • 【LED backlight mouse pad】:Blade Hawks RGB mouse pad provides 7 static modes and 7 dynamic modes will give you the options you are looking for. Power-off memory function remembers the last lighting mode you selected. The super glow fiber Chroma will give you a colorful gaming setup that you want.
  • 【Anti-slip rubber base】:Made from Natural rubber, this gaming mousepad will firmly grip your desktop, allowing you to enjoy the ultimate precision in the games you are most passionate about. It also comes with a texture that enhances this ability even further.
  • 【Smooth and waterproof surface】: Micro-textured cloth surface, for extremely precise mouse control and a smooth movement. When liquid splashes on the gaming mouse pad, it forms water droplets and slides down. Will not delay your work or gameplay.
  • 【Plug and play】: This mouse and keyboard pad is powered by USB, plug and play, no driver required. One button control light modes. Press one time to change the lighting mode, press twice to change the brightness, press and hold about 3 seconds turn ON/OFF.

Named volume

A named volume keeps data in Docker’s storage area and avoids tying the service to a particular project path. The trade-off is that inspecting and copying files requires Docker volume commands or a temporary helper container. If you run the image as a non-root UID/GID, pre-create the volume and set ownership so the server can write to /data; otherwise startup can fail with permission errors.

What must survive replacement

  • The worlds directory, which contains the playable worlds.
  • server.properties and other generated configuration files.
  • allowlist.json, permission data, and any other files your policy depends on.
  • Any custom packs or server-side content stored under /data.

Back up the Bedrock server correctly

Capture the complete data tree

A useful backup includes the mounted /data tree, not just a single world folder. At minimum, verify that the archive contains worlds, server configuration, allow-list and permission files, and any custom content. Quiesce writes before copying when possible: stop the service with docker compose stop, copy the data, then run docker compose start. If you cannot stop the server, use a method that produces a consistent snapshot and document that consistency assumption.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Use a separate backup component only after checking its policy

The Docker Hub listing identifies kaiede/minecraft-bedrock-backup as a solution for backing up data. Treat it as a separate component, not as an automatic property of the itzg image. Verify its current schedule, destination, retention, permissions, and restore procedure before relying on it. The cited documentation does not establish a complete retention policy, off-host destination, tested recovery time, or disaster-recovery benchmark for that component.

The one explicit package-backup default is PACKAGE_BACKUP_KEEP=2. That setting concerns package backups and should not be presented as a world-backup retention plan. Define how many dated copies you keep, where they are stored away from the Docker host, how long they remain available, and who can read them.

Rank #4
Sale
Vaydeer Wrist Rest for Keyboard and Mouse, Computer Ergonomic Wrist Support Pad, Soft Memory Foam Arm Cushion for Desk, Palm Hand Office Laptop Typing
  • 【Softer and More Comfortable】Vaydeer wrist rest has unique diamond pattern, which is the combination of softness and aesthetics. The materials of wrist rest are improved into higher quality memory foam and covered with silky smooth lycra. The computer wrist rest makes you as comfortable and cushiony as like rest your wrists on clouds.
  • 【Ergonomic Wrist Saver】The wrist rests for keyboard and mouse comes with a 17.32×3.15×0.83 inch keyboard wrist pad and a 5.94×3.15×0.83 inch mouse wrist support. Based on ergonomic design, the unique concave shape is the perfect fit for your wrist joints. The wrist rest pad fits most computer keyboards and laptops, improve hand and wrist posture, release your wrist and arm stress.
  • 【Non-Slip Rubber Bottom】Featuring an anti-skid silicone base on the bottom, this wrist keyboard support stays firmly in place on your desk, preventing the padding from sliding around, ensuring stable and consistent wrist support during extended computer sessions.
  • 【Better Experience & Pain Relief】Our keyboard arm rest is beneficial to alleviate the soreness caused by direct contact and friction between your arm and a hard desk surface, reducing the risk of wrist fatigue or carpal tunnel. The soft texture of memory foam can evenly distribute the pressure around your wrists and provide good support with just enough give.
  • 【Helpful in Multiple Scenarios】Whether you're working, studying, writing, typing, gaming, this keyboard and mouse rest combo is an essential accessory to add comfort and support to your hands and wrists. It’s also a great gift for men, women, family, friend, coworker, gamer, teacher, etc.

Prove that a backup is restorable

  1. Record the BDS version, Compose file, environment values, and the date of the backup.
  2. Copy the backup to a separate test directory or host.
  3. Start a test Compose project using that copy as /data, with network exposure disabled or restricted.
  4. Inspect logs, confirm the expected world appears, and join with a test client if practical.
  5. Only after verification should you treat the backup as a recovery point.

Upgrade, pin, and roll back safely

Control the BDS version

VERSION=LATEST is the default and checks for a newer Bedrock release when the container starts. VERSION=PREVIEW selects the latest preview. You can pin a specific version when reproducibility or temporary avoidance of a newly introduced bug matters. Because the server download occurs at startup, changing the version normally requires a restart rather than rebuilding an image.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended maintenance sequence

  1. Choose whether to keep VERSION=LATEST, use PREVIEW, or pin a specific release.
  2. Take a copy of the complete /data directory and verify that it can be read.
  3. Edit the Compose environment rather than changing files inside an ephemeral container.
  4. Restart through Compose with docker compose up -d (or stop and start it explicitly).
  5. Review docker compose logs -f and test login, world loading, permissions, and gameplay.

With VERSION set to LATEST, restarting the container is the documented upgrade mechanism. If a release causes a problem, restore the prior /data copy and pin the previously working version while you investigate.

Compose versus a one-off docker run command

Concern Compose One-off docker run
Configuration Environment, ports, mounts, and terminal settings stay in a reviewable file. Options are easy to omit or mistype when recreating the container.
Upgrades Change the version or image, then restart the same service and volume. Requires rebuilding a long command and remembering every flag.
Persistence The /data mount is declared beside the service. The mount must be re-entered exactly on every replacement.
Logs and operations docker compose logs, ps, stop, and start share one service name. Commands depend on remembered container names or IDs.
Rollback Restore the data copy and edit one version value. Reconstruct the old command and volume mapping manually.

A one-off command can be useful for a quick experiment, but the project recommends a management layer such as Docker Compose or Kubernetes for long-running servers and incremental reconfiguration.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot the failures that matter most

The container exits immediately

Check docker compose logs. The most common setup error is a missing or incorrectly cased EULA value; it must be EULA: "TRUE". A permissions failure points to ownership on the bind mount or named volume. A download or version error requires checking the selected VERSION and outbound connectivity from the host.

Best Value
Sale
Under Desk Cable Management Tray No Drill, Metal Mesh Cable Management Under Desk with Clamp Mount, 2 Hole Cable Tray with Wire Management and Cord Organizer for Home Office Standing Desk
  • 【No Drill Mounted】Cable management tray can be assembled in as little as 3 minutes or less-simply. Side clips easily clampe the edge of desk, pass through the holes on the sides, and secure excess cables with baskets. Desk cable management supports inward or outward installation to meet your needs in different scenarios, and provides you with great convenience when collecting and organizing wires.
  • 【Rubber Pad Protects Desk】Wire organizer under desk built-in soft rubber pads on the clamp protect your desk from scratches, so you will not damage your furniture or office.
  • 【Sturdy and Beautiful】Cord management under desk is made of high-quality carbon steel and holds about 15 lbs. The wire basket has 2 holes on each side of the tray to enable your cables to pass freely. Cable baskets are suitable for desk thickness use from 0.4" to 2.4".
  • 【Space Saving & Keep Organized】Desk cable management tray holds all your power cords, outlet strips, USB hubs and computer transformers hidden from your feet, and the data cables will not enter the vacuum cleaner to keep your desk clean and tidy. Desk wire organizer is also suitable for use in the kitchen and outdoors.
  • 【Reduce Safety Risks】Cable tray under desk keeps all plugs away from your kids, no more worry about tripping. Using 2 holes wire tray saves extra space, helps you easily cabling and wire protection. The mesh design is not easy to accumulate dust, but avoids safety accidents caused by messy wires.

Players see the server but cannot join

Confirm that TCP 19132 and the required UDP range are both published for NetherNet, that SERVER_UDP_PORTS advertises the correct host address, and that host and router firewalls allow UDP. Verify that the client and server are using a compatible BDS release and transport.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The world disappeared after recreation

Inspect the Compose mount and ensure it still points to the original directory or named volume. If the service was started once without a persistent /data mount, the world may exist only in the discarded container layer; restore it from a verified backup if one exists.

Configuration changes do not stick

Put the setting in Compose or edit the intended file under the mounted /data path, then restart as required. Editing a generated file in a temporary container does not create a durable configuration policy.

Security checklist before sharing the address

  • Enable an allow-list for private communities and review it after player changes.
  • Assign operator, member, and visitor permissions deliberately; do not grant operator access as a substitute for normal membership.
  • Publish only the TCP and UDP ports required by the selected BDS transport.
  • Apply host-firewall and router rules separately; the image does not provide firewalling or a tested internet-hardening profile.
  • Keep backups off the Docker host when protection from disk failure, accidental deletion, or host compromise matters.
  • Test restoration before calling the service resilient.

Operational checklist

  • Persistent data: /data is mounted to a bind directory or prepared named volume.
  • Startup: EULA is exactly TRUE, and logs show a ready server.
  • Networking: TCP 19132 and UDP 19140–19155 are mapped for the BDS 1.26.50-and-later NetherNet example, with the correct advertised host address.
  • Version policy: VERSION is deliberately set to LATEST, PREVIEW, or a pinned release.
  • Backups: the complete data tree is copied, stored separately, retained according to a written policy, and restored in a test.
  • Maintenance: Compose files are the source of truth, and logs are checked after every restart or upgrade.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.