{
  "id": 6381501,
  "title": "I made a decentralised Minecraft server where the host can change between players",
  "url": "https://urgent.news/2026/09/09/i-made-a-decentralised-minecraft-server-where-the-host-can-change",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-09T04:43:48.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/walnut_icecream_7168313d0/i-made-a-decentralised-minecraft-server-where-the-host-can-change-between-players-26ib"
  },
  "original_language": "en",
  "account": "Our friend who once hosted our Minecraft server on his PC lost interest and stopped playing, along with the server. We were left without a host for a full week until I devised a solution called Nomad. Nomad automatically launches the server on my PC when I'm the first to connect, and redirects other players to join the hosted server. If a host is already online, players can join their world directly. When the host shuts down the world, the save is synced to cloud storage, either on a personal server or Cloudflare R2 bucket, which is free up to 10GB with a generous amount of upload/download operations per month. Beyond the free limit, Nomad charges a minimal fee. The idea is that the world is no longer tied to a single individual, allowing anyone online to host it and others to join. Nomad is still in development, and I welcome feedback. The project is open-source and can be found on GitHub at https://github.com/WalnutIcecream/Nomad.git. Technical details include a decentralized architecture with each world having two objects in the storage backend: worlds//lease.json and worlds//world.tar.gz. Lease.json contains the current host, address, status, and expiry time, with a compare-and-swap operation using conditional writes from the storage backend. If two players attempt to host simultaneously, only one can acquire the lease. The host renews the lease every 20 seconds, lasting 5 minutes. If the host stops renewing it, another player can take over after expiration. The world is uploaded before the lease is released to prevent another host from pulling the world while the previous one is still uploading. The host lifecycle consists of acquiring, pulling, booting, renewing, stopping, uploading, and releasing. If the host crashes, the lease expires automatically without needing a separate recovery process. The launcher uses a WorldStoreProtocol, making storage independent from the rest of the application. Storage backends include Cloudflare R2, Git, and self-hosted S3-compatible storage like MinIO. The server itself is vanilla Minecraft, and Nomad handles server lifecycle, world synchronization, Java runtime, configuration, and hosting lease. The project is written in Python 3.11+ and requires Java 21.",
  "summary": "A while back our friend who hosted our Minecraft server on his PC had his exams, so he stopped playing and along with that stopped hosting our server too. We couldn't play for a whole week, so I made this fun little project called Nomad to solve that. It automatically starts the server on my PC if I'm the first guy online and redirects everyone else onto my hosted server, and if someone is…",
  "key_points": [
    "Nomad automatically launches Minecraft server on host PC when first player connects",
    "Server state synced to cloud storage via Cloudflare R2 or Git",
    "Lease.json manages host, status, and expiration time in storage backend"
  ],
  "editors_take": "This development unties Minecraft server hosting from a single individual, allowing any online player to host and others to join, and shifting the burden of maintenance from one person to the group.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}