Skip to content

PrexorCloud vs CloudNet 4

PrexorCloud and CloudNet 4 both orchestrate Minecraft networks across multiple hosts, and at a 30-second glance they overlap heavily — groups, templates, multi-platform support, modules. Where they differ is operating posture. CloudNet 4 has years of production miles behind it and a large community of operators familiar with its module ecosystem. PrexorCloud is younger, was designed from day one around mTLS, signed modules, lease-scoped HA, and a SSE-driven dashboard, and ships a curated set of first-party modules rather than a sprawling catalog. If you need the depth of a community module catalog and a track record measured in years, CloudNet 4 is the safer pick. If you want a production-grade security posture, signed-bundle install, and active-active controllers as v1 features, PrexorCloud is built for that.

Feature matrix

CapabilityPrexorCloudCloudNet 4Notes
LicenseApache 2.0Apache 2.0 (source)Both are permissively licensed OSS.
GovernanceSingle maintainer / small teamCloudNetService organisation, multiple maintainers (source)CloudNet has a longer-running community.
Stable releasev1.0 (2026)4.0.0 series, multiple RCs and stable releases since 2022 (releases)CloudNet has more production miles.
Server platformsPaper, Spigot, FoliaPaper, Bukkit, Sponge, Fabric, Nukkit, Minestom (source)CloudNet covers a wider platform matrix.
Proxy platformsVelocity, BungeeCordVelocity, BungeeCord, WaterDogPE (source)CloudNet adds Bedrock-side WaterDogPE.
Bedrock supportNot in v1Yes (Nukkit, WaterDogPE)Out of scope for PrexorCloud v1.
Static groupsYesYes (tasks, groups)Equivalent concept.
Dynamic / auto-scaling groupsYes — weighted-scoring scheduler with per-group min, max, scaling rules, cooldownsYes — task-based dynamic services with minServiceCount / maxServiceCountDifferent scaling models; both target the same outcome.
Layered templatesYes — chain (base → base-paper → group → user) with SHA-256 versioned snapshotsYes — template storage with multiple template targets per group (REST module)PrexorCloud emphasises versioned snapshots and rollback.
In-browser file editorYesVia third-party web UI (example)CloudNet 4’s official web UI is community-maintained.
Crash classification + loop detectionYes — exit-code analysis, console tail capture, auto-pause on crash loopYes — service crash logs are persistedPrexorCloud’s classifier feeds an explicit loop-detection state machine.
Real-time event streamServer-Sent Events, 22 typed events, replay via Last-Event-IDInternal channel-message system; no documented SSE/WebSocket in the REST module (REST module)Different transports for similar use cases.
REST APIHand-curated OpenAPI 3.1 spec, 151 endpointsProvided by an installable REST module with OpenAPI (source)CloudNet’s REST is opt-in via module install.
Operator authJWT + bcrypt, optional email password reset, 28 RBAC permissionsJWT-based or ticket auth in web-jwt-auth / web-ticket-auth (source)Both support JWT; PrexorCloud has built-in lockout + revocation.
Daemon/wrapper authmTLS with controller-issued certs and per-node revocationWrapper-node auth via shared connection keyPrexorCloud uses certificate-based mutual TLS by default.
Plugin auth (server-side)Per-instance plugin tokens (ptk_*), short TTL, sequence-window replay protectionWrapper-injected service identityPrexorCloud isolates each instance behind its own credential.
Module signingCosign sign-blob bundles + offline Rekor SET, fail-closed in productionModules are not signed by defaultPrexorCloud requires signed bundles in production by default.
Active-active HAYes — lease-scoped work + fencing tokens via Valkey”There can be only one controller running at a time” (source — note: this quote is from SimpleCloud, but CloudNet 4 also documents single-node-controller architecture)PrexorCloud documents active-active in v1; CloudNet 4 is single-controller.
PersistenceMongoDB (durable) + Valkey (coordination)Embedded H2 by default, optional MySQL/MongoDBDifferent storage trade-offs.
DashboardFirst-party Nuxt 4 SPA, SSE-drivenNo first-party web UI in core; community-maintained projects (example)PrexorCloud ships an official dashboard.
CLIprexorctl (Go, single static binary) with cosign-verified releasesBuilt-in console + CLI inside the node processDifferent CLI shapes; both first-party.
Module system (controller-side)PlatformModule SPI, capability registry, REST routes, frontend manifest, Cosign-signedModule SPI with driver, node, wrapper, bridge artifacts on Maven Central (source)Both support modules; different signing posture.
Module system (daemon-side)Daemon modules with instance-lifecycle hooks (onInstanceStarting/Started/Stopping/Stopped)Wrapper-side modules via wrapper-jvm artifactBoth expose host-local extension points.
Plugin SDK (in-server)@CloudPlugin annotation, multi-platform via cloud-plugins-server-paper/spigot/folia, cloud-plugins-proxy-velocity/bungeecloudnet-bridge plus per-platform wrappersDifferent SDK shape; same goal.
Network composition / lobby fallbackFirst-class — proxy plugin walks lobby + fallback chain on connect and on kickBuilt-in via bridge module fallback configurationBoth ship lobby-fallback.
Rolling deploymentsBuilt-in — maxUnavailable, plan-hash, pause/resume/rollbackManual via group templating + restart, no documented first-class rolling-deploy primitive in corePrexorCloud’s deployment is a top-level resource.
Backup / restoreFirst-class — prexorctl backup, manifest-based restore, dry-run validatorOperator-managed via filesystem and database backupsPrexorCloud ships a tested restore tool.
Disaster-recovery drillNightly automated DR drill in CI (drDrill)Operator-managedPrexorCloud encodes DR as a CI gate.
ObservabilityPrometheus /metrics, structured JSON logs, audit log in MongoDBLogs + service metrics through modulesBoth are operator-friendly; PrexorCloud commits to stable label names.
Container per instanceNo — ProcessBuilder per JVM (see ADR 7)No by default; supports JVM wrappersSame trade-off.
Kubernetes / HelmOut of scope, Compose-firstNot first-class in coreBoth prioritise non-K8s deployment.
Community sizeNewer project, smaller community~440 GitHub stars, 30+ releases (source)CloudNet’s community is larger and more established.

Architecture comparison

PrexorCloud:

flowchart TB
  Dashboard["Dashboard (Nuxt SPA)"]
  CLI["prexorctl"]
  Controller["Controller<br/>(REST + gRPC + scheduler<br/>+ module manager + SSE bus)"]
  Daemon1["Daemon (host A)"]
  Daemon2["Daemon (host B)"]
  Mongo[("MongoDB<br/>durable state")]
  Valkey[("Valkey<br/>coordination + leases")]
  Dashboard --> Controller
  CLI --> Controller
  Controller -- mTLS gRPC --> Daemon1
  Controller -- mTLS gRPC --> Daemon2
  Controller --- Mongo
  Controller --- Valkey

CloudNet 4 (as documented in the project README and the REST module):

flowchart TB
  REST["REST module<br/>(optional install)"]
  Console["Built-in console / CLI"]
  Node["Node<br/>(driver + node + scheduler)"]
  Wrapper1["Wrapper (host A)"]
  Wrapper2["Wrapper (host B)"]
  DB[("H2 / MySQL / MongoDB<br/>configurable")]
  REST --> Node
  Console --> Node
  Node -- channel messages --> Wrapper1
  Node -- channel messages --> Wrapper2
  Node --- DB

The two architectures are structurally similar — a central decision-maker plus per-host process supervisors — but the transport, the authentication posture, and the coordination layer differ.

Where PrexorCloud is stronger

  • Mutual TLS by default for daemon traffic. Daemons authenticate with certificates issued by the controller’s internal CA. There is no shared secret; per-node revocation is one REST call. See auth model.
  • Cosign-signed module bundles, fail-closed in production. v1 ships with modules.signing.required: true as the production default and supports offline Rekor SET enforcement so the controller does not need internet access to verify provenance. See module system.
  • Active-active controller HA. Multiple controllers run against the same MongoDB + Valkey, coordinate via lease + fencing token, and recover from controller loss without a leader-election pause. See HA setup.
  • Built-in rolling deployments. Pause / resume / rollback, plan-hash identity, crash-loop auto-pause are first-class primitives, not a module.
  • Disaster-recovery drill in CI. A nightly job in .github/workflows/nightly.yml runs the full backup → wipe → restore cycle end-to-end against a real Mongo + Valkey. See disaster drill.
  • First-party dashboard. Real-time SSE updates, 22 typed event types, console streaming, file editor, all maintained alongside the controller.
  • Daemon-side modules with instance-lifecycle hooks. A DaemonModule can mutate jvmArgs and env before the JVM starts and react to onInstanceStarting/Started/Stopping/Stopped per host.

Where CloudNet 4 is stronger

  • Track record. CloudNet has been shipping since the v3 days and v4 has been through many release candidates. The community of operators who already know its idioms is much larger (releases).
  • Wider platform matrix. Sponge, Fabric, Nukkit, Minestom, and WaterDogPE are all supported in core (source). PrexorCloud v1 covers Paper / Spigot / Folia and Velocity / BungeeCord; Bedrock is out of scope.
  • Module ecosystem maturity. Years of community modules exist for CloudNet — signs, NPCs, prefixes, hub commands, sync, and more. PrexorCloud has a curated first-party set (stats-aggregator, player-journey, webhook-alerts, tablist, protocol-tap) and a published SDK; growing the third-party catalogue is a v2 conversation.
  • Maven Central distribution. CloudNet’s eu.cloudnetservice.cloudnet artifacts are on Maven Central, which makes module / plugin development immediately discoverable. PrexorCloud publishes its module SDK as part of the release artifacts but is not on Maven Central at v1.
  • Storage flexibility. CloudNet supports H2, MySQL, and MongoDB out of the box. PrexorCloud is MongoDB-only by design (see ADR 3) — that suits operators who want one well-documented store but rules out Postgres or H2.
  • Lower friction for very small networks. A single embedded H2 file is enough to run CloudNet 4 in a single-host setup. PrexorCloud always wants a real MongoDB (and a Valkey if you want HA).

Migration

If you operate CloudNet 4 today and want to evaluate PrexorCloud, follow the Migrate from CloudNet 4 recipe. It includes a concept-mapping table (taskgroup, template → template chain, wrapper → daemon, module → platform module), a template-conversion checklist, and a plugin-port checklist for the differences between the CloudNet bridge and PrexorCloud’s @CloudPlugin annotation.

TL;DR

PrexorCloudCloudNet 4
Best fitOperators who want signed modules, mTLS, active-active HA, and rolling deployments built in at v1Operators who want a battle-tested platform with the widest MC platform matrix and a large community module catalogue
Maturityv1.0 (2026)Multi-year track record
Default security posturemTLS + cosign + fail-closedJWT (REST module) + shared keys
HA modelActive-active, lease-scopedSingle controller
First-party dashboardYesNo (community-maintained)
Bedrock supportNoYes