_shared/ lands in plugins/Nexo/ on every backend. Anything in
servers/<name>/ lands only on that backend and overrides the shared copy of the same
file.
The server name is whatever you called it in your proxy’s server list: velocity.toml,
or BungeeCord’s config.yml.
Making one server different
Drop the file you want to change intoservers/<name>/, matching the path it has in
_shared/. Only that one file is overridden, everything else still comes from
_shared/.
This is for a difference you mean to keep. To try a change on one server before the rest
of the network gets it, use
/nexohub stage
instead, which holds every other backend on the files they already have.Groups
If four servers want the same override, putting the same file in fourservers/
folders means changing it in four places. A group is the layer in between.
Name the group and list its backends in the proxy’s config.yml:
nexo-data/groups/survival/, laid out exactly as _shared/ is.
The order is _shared/, then the groups a server belongs to, then servers/<name>/.
Each wins over the one before it, so a one-off override still beats its group:
config.yml lists them, so the last one named wins.
The same three layers also carry
settings, not just files. Anything you
write beside servers: in a group applies to those backends:
/nexohub status names the layers each server actually received, which is the quickest
way to check a group is doing what you think:
Editing
groups: is a config change, so follow it with /nexohub reload. A group that
lists no backends is ignored with a warning, and /nexohub doctor points out group
members that are not in your proxy’s server list.Sharing other plugins’ configs
Plugins other than Nexo can be managed the same way. Put them under_plugins/:
A pack you downloaded
A pack you bought or downloaded, from MCModels or anywhere else, goes in_shared/pack/external_packs/, either unpacked into a folder of its own or left as the
zip you downloaded:
.json and
.mcmeta in it checked before anything is pushed, and one malformed file in a bought
pack blocks the whole push until you fix it. Unpack it if you want to edit what is
inside, and keep the zip if you do not.
It lands in plugins/Nexo/pack/external_packs/ on every backend and Nexo folds it into
the pack. Deleting the folder on the proxy removes it from every backend on the next
push, and so does deleting a single file inside it, as long as that backend still has
prune on.
This is the opposite of what BetterHUD and friends write into
external_packs/ on every
boot, as a folder or as a zip depending on their pack-type. Those are never yours to
place or the hub’s to remove, and NexoHub tells them apart from your packs by reading
where each plugin says it builds. See plugin packs.Settings that stay local
Some settings belong to the individual server and must survive a push. By default NexoHub protects Nexo’s pack server settings, which is what points that backend at the hub in the first place:Files you never want pushed
/ excludes a whole folder.
You will rarely need this. Anything your other plugins generate at runtime is already
safe, and so is a PackSquash executable in pack/packsquash/.
Reach for exclude when a file NexoHub does manage has to survive a push anyway, or when
an outdated copy of generated content has ended up in nexo-data/ by accident, for
example after copying a whole plugins/Nexo/ folder up to the proxy.
What gets skipped automatically
Hidden files, editor backups ending in~, and anything over 64 MB are never sent.
Partial uploads ending in .tmp or .swp do not trigger a reload, so uploading a large
folder over SFTP results in one reload after it finishes rather than one per file.
Before anything is sent
Every.yml, .yaml, .json and .mcmeta is checked first, and if any of them have a
mistake in them, nothing is sent. A copy of your files is kept every time they change, so
an edit can be undone. See
not breaking your network.