> For the complete documentation index, see [llms.txt](https://minehut-basics.gitbook.io/home/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://minehut-basics.gitbook.io/home/customize-your-server/proxies/external-proxies.md).

# External Proxies

## Minehut External Servers (Velocity)

[Official Document (Minehut External Server Rules and Set Up)](https://docs.google.com/document/d/1H2wfr3-n7hg9XhZM9caXtH1kZXNiicDdXpgtOsO5TGg) **READ THE RULES!** But preferably, read it fully

### Requirements

* Have PaperMC (or forks) servers not hosted on Minehut (!) Minehut is hosted in New York, get your servers close to this location for better ping
* One server on Minehut (not on free plan) that will be used as the proxy

### Useful links

* [Minehut dashboard](https://minehut.com/dashboard/home)
* [Paper](https://papermc.io/downloads), [Purpur](https://purpurmc.org/downloads)
* [Original external\_servers.json example](https://gist.github.com/CoreyShupeSLG/259e373e7e8b65cccec014f1299cbac8)
* [Password generator](https://bitwarden.com/password-generator/)

### Steps

#### Steps for the Minehut server

Here we will create a Velocity proxy and tell it which servers we have, and how to handle the players

1. Select type `Velocity (Proxy) (Unstable)`
2. Reset/Restart the server to generate the files
3. Create a file called `external_servers.json`
4. Paste the following example json inside

```
{
	"secret": "<YOUR SECRET>",
	"forwarding": "MODERN",
	"try": [
		"hub",
		"server1"
	],
	"servers": {
		"hub": "example.com:25565",
		"server1": "example.com:25566",
		"server2": "1.202.33.404:25567"
	}
}
```

5. Use a \[password] generator to create a random string of text (like `z9Hawx6MdowP4qx4aExeEEJibdhotRHh`) that will be used as the secret (=DON'T SHOW IT TO ANYONE)\
   Replace `<YOUR SECRET>` with the generated string\
   Save the secret somewhere, we will need it later
6. Configure the try-list and servers to how you need them. The try list specifies which servers (in order) Velocity should try to connect players to when joining, or getting kicked.
7. Save the file and restart the proxy

#### Steps for the External servers

Now we will set up our backend server to accept connections from the Velocity server on Minehut

1. In server.properties, disable online-mode (`online-mode=false`)
2. Go to `paper.yml` or `/config/paper-global.yml` if you are on 1.19+
3. Find the "proxies" -> "velocity" configuration section
4. Set "enabled" and "online-mode" to true
5. Paste the secret you generated earlier next to the "secret" option
6. Save your edits and start the server

* Repeat this on all the backend servers you want to connect
* Double-check that you can't directly connect to your backend servers

### Troubleshooting

Error: "If you wish to use IP forwarding, please enable it in your BungeeCord config as well!"\
Fix: Disable "bungeecord" in spigot.yml

Error: "Unable to authenticate - no data was forwarded by the proxy."\
Fix: Uninstall BungeeGuard

Error: "This server requires you to connect with Velocity."\
Fix:

* If you're trying to directly connect to a backend server, this is intentionally not possible, you have to connect using the proxy.
* If you ARE using the proxy to connect, make sure the secret in external\_servers.json of the proxy matches the one in config/paper-global.yml of your backend server

Error: "Unable to read/load/save your velocity.toml. The server will shut down."\
Possible Fix: Make sure the json of your external\_servers.json is formatted correctly, a common mistake is leaving comments in the file (//), use a json parser tool if you're unsure

glhf

`Made by MrTibo#9659`


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://minehut-basics.gitbook.io/home/customize-your-server/proxies/external-proxies.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
