Skip to main content
All of these run on the proxy. There are no commands on the backends.

/nexohub status

Empty servers report too, so stale never just means nobody is on it. An old last heard on an idle backend is normal — it only moves when something changes. A failed reload or a version disagreement is printed here too. See troubleshooting.

/nexohub push [server]

Saving a file does this already, so you rarely need it.
Naming a server picks who is told first, not who receives. Everyone gets the same change within seconds. To keep an edit off your live servers use /nexohub stage; to give one backend different files, put them in nexo-data/servers/<name>/.

/nexohub stage <server>

Holds everyone else on the files as they are now, so you can edit against one backend without your players seeing it.
Stage first, then edit — the copy is taken when you run the command. Name several backends if you want: /nexohub stage dev dev2. While it runs, saving files, pushing and rolling back all stop at the staged backends. /nexohub status marks the held ones. Players moving between a held and a staged backend download a pack each way, which is what testing a different pack means. A stage survives a proxy restart, on purpose.

/nexohub promote

If your files do not parse, nothing is promoted and the stage keeps running.

/nexohub discard

Puts nexo-data/ back exactly as the stage found it, deletions included.
The work is not gone — roll back to get it.

/nexohub validate

YAML problems carry the line, JSON problems name the file only.

/nexohub history

The note at the end is why the snapshot was taken. Ids sort the way they read.

/nexohub rollback <id>

Puts a snapshot back and pushes it. The first few characters of the id are enough.
It removes files added since, or it would not undo an added file. The current state is snapshotted first, so you can roll back the rollback.

/nexohub adopt <server>

Takes a backend’s own plugins/Nexo/ folder as the network’s _shared/. For moving an existing network onto the hub, not for day to day use.
A backend with nobody on it is asked on its next poll instead. It needs to know its own name, which on server_name: auto it learns from the first player join — so a brand new install needs someone to join once first. Generated output is left behind. Run /nexohub validate afterwards. The whole process is in moving an existing network.

/nexohub doctor

Runs the checks you would otherwise do by hand. It makes a request out and back, so it takes a moment.
bad lines are counted at the end. note lines are worth knowing but not wrong. The one check you cannot do yourself is whether players can reach your address: on packs.host: proxy doctor fetches it from outside your network.

/nexohub packs

/nexohub packs prune cleans up now rather than waiting. A pack a server is still handing out is never deleted, whatever packs.keep says.

/nexohub contributions

What your backends’ plugins have sent up: BetterHUD’s fonts, ModelEngine’s models, and anything else written into plugins/Nexo/pack/external_packs/.
Each backend keeps its own entries current, so removing one means stopping the plugin that produces it, not deleting folders. /nexohub contributions drop <server> [name] forces it, for a backend that cannot say so itself — decommissioned, on an old bridge, or with contribute: false.
If that backend still generates the folder it publishes it again on the next reload. Stop the plugin, or add it to contribute_exclude.

/nexohub reload

Re-reads config.yml. Use it after changing the port, address, secret, groups, settings or hosting instead of restarting the proxy.
Hosting changes take effect here straight away, but each backend only finds out on its next sync. Follow with /nexohub push.

On the backends

Nothing to run. You can watch it happen in their logs: