Skip to main content

Supported software

Install the plugin

1

Install the proxy plugins

Download Server Connection from GitHub and place it in the proxy template’s plugins/ folder. Standard SimpleCloud templates already include simplecloud-api; add it through the target’s Plugins setting or the CLI if you use a custom template.
2

Generate the configuration

Start a matching proxy. The plugin creates config.yml, commands.yml, and messages.yml under plugins/simplecloud-connection/.
3

Match your lobby servers

The default connection matches proxy registration names that start with lobby. If your lobby group uses another name, change the lobby connection and keep its name consistent in network-join-targets, fallback, and commands.yml.
4

Keep the configuration in the template

For a group proxy, copy plugins/simplecloud-connection/ from the running proxy to the same path in its template before the proxy stops. See Templates for the complete workflow.
5

Restart and test the proxy

Restart after changing registration or player command settings. Join the network to test the initial route, then run /lobby from another backend to test the generated navigation command. The proxy uses the same connection when it needs a fallback server.
With registration.enabled: true, Server Connection replaces the proxy’s registered server list with SimpleCloud servers. Add every external backend to registration.additional-servers, or set registration to false when another plugin manages the list.

Configuration

config.yml

The main configuration file controls server registration, connections, network join routing, and fallback behavior.

Subdomain routes

The address.routes section selects a connection from the hostname a player uses to join the proxy. Each subdomain must be the complete, exact hostname. For example, use new.example.com, not only new. The target-connection value references a name from the connections list. It does not reference a server directly. The connection’s server-name-matcher then selects an available server.
With this configuration, players joining through play.example.com are sent to an available lobby server. Players joining through new.example.com are sent to the persistent server registered as smp-2026. Point every routed hostname to the proxy with an A, AAAA, or CNAME DNS record. If the proxy does not use Minecraft’s default port, configure an appropriate Minecraft SRV record as well.
Routing behavior
  • Config version: Subdomain routing requires version 2. Let the plugin migrate an existing version 1 file before you add routes because the migration does not retain them.
  • Exact matching: Specify the complete hostname. Wildcard routes such as *.example.com are not supported.
  • Default target: If no route matches, its target connection does not exist, or no matching server is available, the plugin continues with network-join-targets.
  • Connection rules: Subdomain routes do not evaluate connection rules. A permission rule on the target connection does not restrict players joining through that hostname. Use prioritized network-join-targets when routing should depend on a permission.

Matcher operations

The server-name-matcher supports the following operations: Set negate: true to invert any operation. For example, it can match all servers that do not start with lobby.

Connection rules

Connections can have rules that must pass before a player is allowed to use them. If a rule fails, the connection is skipped and the next priority is tried. There are two rule types: Permission rule Checks whether a player has a specific permission.
Environment variable rule Checks a system environment variable against a value using a matcher operation.
Rules are evaluated in order. If any rule fails and no bypass-permission applies, the entire connection is skipped.

Priority and fallback resolution

Both network-join-targets and fallback support multiple target connections with priorities:
  • Target connections are tried highest priority first
  • If multiple targets share the same priority, one is picked randomly among them
  • If a target connection has no available server, the next lower priority is tried automatically
  • The optional from list on fallback targets restricts them to players coming from specific servers

commands.yml

Configures player navigation commands.
Commands follow the same logic as network-join-targets and fallback. Changes to connection matching, rules, join targets, fallback targets, and messages can be loaded with:
Restart the proxy after any change to commands.yml. The reload reads the file, but already registered proxy commands keep their previous settings. Also restart after changing registration.additional-servers or registration name patterns so the proxy rebuilds its registered server list.

Permissions

Troubleshooting

Confirm that network-join-targets.enabled is true, its connection names exist, and each matcher selects at least one registered server. The default matcher expects registration names beginning with lobby.
Restart the proxy after any change to commands.yml. /connection reload reads the file, but it does not update or register the proxy commands that are already running.
Add it under registration.additional-servers and restart. When registration is enabled, Server Connection rebuilds the proxy’s registered server list at startup.
Use the complete hostname in address.routes, point that hostname to the proxy, and confirm that target-connection names an existing connection with an available server. Wildcards and connection rules do not apply to subdomain routes.