Home›Java›Mods›SiriusCloud-MC
SiriusCloud-MC
ModsJava

SiriusCloud-MC

Java mod listed for Minecraft 1.21–26.x. Download on the author's site.

⬇ Download on Spigot
SiriusCloud
A Minecraft server cloud that tells you what it is doing
https://discord.gg/HdFytG8Qcz
icon-primary.png

Autoscaling · Velocity proxy · Parties, friends, bans & queues · Ranks · Databases · Prometheus · Discord alerts · REST API · Web panel
Linux and Windows · Paper, Purpur, Folia, Fabric and Velocity · any version their projects publish​

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

What it is
SiriusCloud is a control plane for Minecraft servers. You describe a group once ("Lobby: 1024MB, keep 2 online, max 8, Paper latest") and the cloud keeps that true: it starts servers when you are below the minimum, adds more when they fill up, restarts them when they die, hands each one a free port, and registers it with your proxy the moment it is actually ready.

Three pieces:

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Features

Servers follow your players
Code (Text):
edit BedWars scaleup 75       start another server at 75% full
edit BedWars maxuptime 720    replace servers after 12 hours
rollout BedWars               rolling restart, right now
Your velocity.toml lists no servers at all

Modern forwarding is configured for you, on both ends
Backends run online-mode=false so the proxy can authenticate for them. On its own that would let anyone who reaches a backend port connect as any player, so the node generates a forwarding secret and the wrapper writes it into the proxy's forwarding.secret and every backend's config. Nothing to copy by hand, and nothing left open by accident. Fabric servers get FabricProxy-Lite installed and configured for the same.

Slots follow the servers
show-max-players is a fixed number, which is wrong the moment a cloud scales. The proxy answers each ping with the sum of what its registered servers actually hold:
Code (Text):
1 lobby  (50 slots each)  ->  max=50
2 lobbies                 ->  max=100
back to 1 lobby           ->  max=50
Everything a network needs, built in
These run on the node as modules. Their commands work on every server with nothing installed there, and every feature can be switched off in its config, or removed by deleting its jar, if you already run your own plugin for it.

Ranks, without a second permissions plugin
Code (Text):
/perms group admin set prefix &cAdmin &8| &c
/perms user JavaRenamed addgroup admin
Your data, in a real database

Any server software, without waiting for an update

Isolation and backups

Updates that migrate your files for you
Updating is: stop, replace the jars, start. On startup the node and every wrapper bring your files up to date with the new version before reading them, back up everything they change, and tell you exactly what that was. A migration that fails is undone. An older version refuses to start on files a newer one has migrated, so a downgrade cannot silently drop your settings.
Code (Text):
[Migration] Updating this install's files: 1 migration(s), from version 0 to 1
[Migration]   1. Give the starter admin group its new 'Admin | Name' prefix
[Migration]        admin: prefix '&c[Admin] ' -> '&cAdmin &8| &c'
Consoles you can actually read

One player API across every proxy
The node keeps a cloud-wide registry of who is online and where. A plugin on one lobby can move, message or kick a player who is on a different server behind a different proxy, without knowing that any of that is true.
Code (Text):
CloudDriver cloud = CloudDriver.instance();
cloud.players().connectToGroup(uuid, "BedWars");
cloud.services().setState(ServiceProperties.STATE_INGAME);   // matchmaking stops sending players
cloud.store().set("event:double-xp", "on", Duration.ofHours(2));
cloud.players().profile("Notch").thenAccept(profile -> ...);
A proxy sends a snapshot of everyone connected right after it handshakes, so restarting the node under a busy cloud does not lose track of the players who stayed online.

REST API and web panel

Modules, not forks
Features load from node/modules/ as jars with their own class loader and lifecycle. Every network feature above is one, and they use nothing but the public API, which keeps that API honest: anything they can do, your own module can too. Modules can register network-wide commands, check logins, and control the MOTD and tab list.

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Requirements
These are genuinely different Java requirements, so the wrapper does not run servers on its own JVM. It finds a qualifying JDK on the machine at startup and refuses to start services with install instructions if there is not one, rather than spawning servers that exit instantly.

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Setup
There is no JSON to hand-edit. Both halves ask you what they need on first start.

1. Start the node.
Code (Text):
cd dist && ./start-node.sh
It asks for a name, how much RAM it may use (suggested from your actual machine), a port, and offers to create a first Lobby group and a Velocity proxy group, including which server software to run. Enter accepts every default. It prints a wrapper secret when it is done.

2. Start the wrapper.
Code (Text):
cd dist && ./start-wrapper.sh
It asks for the node address and that secret, how much RAM this machine may commit, and which installed JVM to run servers on, listing the ones it actually found, so it is a choice rather than a guess.

3. That is it. The provisioning loop sees the Lobby group below its minimum and starts one. Point your players at the proxy port.

Updating later: stop both, replace the jars, start them again. Your files are migrated on startup.

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Commands
Node console
Code (Text):
help                           Lists every command
setup [group|node]             Configures a group, or the node, by question
services / ls                  Every known service with state, address, uptime
groups                         Configured groups and how many are online
start <group> [count]          Starts services
stop <service|group|all>       Graceful stop; --force kills
restart <service>              Stops it and starts a replacement
edit <group> <field> <value>   Changes a group setting, no JSON editing
rollout [<group> [cancel]]     Rolling restart of a group
backup <service>               Backs up a running service now
maintenance <group> [on|off]   Pauses one group; without a group, the network
players [service]              Everyone online, across every proxy
player <name> ...              Info, or send / msg / kick
broadcast <message>            Message every player on every proxy
exec <service> <command>       Runs one command inside a service
attach <service>               Opens that service's console
versions [software]            Versions for paper, purpur, folia, fabric, velocity
modules                        Lists loaded modules
migrate                        Data version, migration history and backups
info                           Node status and connected wrappers
shutdown                       Stops everything, then the node
In game
Code (Text):
/party  /friend  /msg  /r  /seen  /playtime  /play  /leavequeue     everyone
/ban  /unban  /mute  /unmute  /kick  /staffchat  /find  /jump        staff
/maintenance  /perms  /cloud                                          admins
Every command's permission is listed in the documentation on GitHub.

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Honest status
I would rather you knew this before downloading than after.
This is early software that is honest about being early. If you want a cloud you can read the source of and understand, that is exactly what it is built to be.

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Source, issues and full documentation on GitHub
Bug reports and feature requests belong in GitHub issues rather than the review section, where I can actually reply to them.
https://discord.gg/HdFytG8Qcz​
Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

SiriusCloud-MC is a free Minecraft Java mod. Compatible with Minecraft 1.21, 26.1, 26.2, 26.3. Downloaded 85 times (via Spigot). Download it and open it directly in the game.

Explore more