Files
GeyserWebsite/HOSTING_PROVIDERS.md
T

175 lines
10 KiB
Markdown
Raw Normal View History

# Listing Your Hosting Service in the Geyser Setup Guide
This page is for hosting providers that want to add or update their entry in the [Geyser setup guide](https://geysermc.org/wiki/geyser/setup/).
The setup guide system works by using properties instructing users what to do. These are steps users will see:
downloading Geyser, the exact config changes, and what to enter in Minecraft: Bedrock Edition to connect.
Whenever possible, please use the pre-configured strings at the top of `providers.ts`! This makes it possible for us to
translate the guide with the help of our translators. You can add your own guide with images if you'd like, but please
ensure that the info provided to us is enough to get Geyser running.
Entries are found in [`src/data/providers.ts`](src/data/providers.ts), in alphabetical order. The fields are documented in [`src/types/providers.ts`](src/types/providers.ts).
## How to Submit Changes
- Open a [pull request](https://github.com/GeyserMC/GeyserWebsite/pulls) that edits your entry, or
- Contact us on [Discord](https://discord.gg/geysermc) with the details below if you're unsure about details.
## What We Need to Know
Bedrock Edition connects over NetherNet, which needs:
- a **UDP** port for gameplay (WebRTC), and
- a **TCP** port for signaling, which is how players find the server. Geyser can run signaling itself ("built-in signaling"),
or use an external signaling service ([Warden](https://warden.cloud) by default), which needs no TCP port.
The Java server's port cannot be used for built-in signaling, because the Java server already uses it over TCP.
If your servers can only use the Java server's port, Geyser falls back to external signaling.
These questions may help you:
1. **Do you install and configure Geyser for your customers?** For example, a toggle in your panel, or Geyser set up on every server by default.
2. **If not, how does a customer get a port for Geyser?** For example, the customer adds one in the panel, picks one from ports already assigned to the server, or asks support.
3. **Is that port open for both TCP and UDP?** Pterodactyl allocations usually are.
4. **Do you run your own NXS-compatible signaling service or have a reverse-proxy set up?**
5. **Which links should we show?** These can be your own Geyser article, your support page and your Discord server.
If you have further specific instructions that you can't fit into the guide, please reach out to us on Discord so we can discuss them!
## Use the Pre-Configured Strings
Every sentence in an entry is sent to translators for every language the website supports. So we ask hosts to use the pre-configured
strings at the top of `providers.ts` wherever they fit, and to write their own text only for steps that are specific to their panel.
| Situation | Use |
|---------------------------------------------------------------------|-------------------------------------------------------------------|
| The customer adds a port in your panel | `udp: ports.assign` |
| The customer picks one of the ports already assigned to the server | `udp: ports.allocated` |
| The customer asks support for a port | `udp: ports.askHost` |
| You configure Geyser, and show customers their Bedrock port | `config: { preconfigured: true, port: ports.fromHost }` |
| You use the same port for every server | a number, e.g. `port: 19132` |
| Geyser is installed through your plugin or mod list | `install: customInstallLocations.plugin_list` |
| Geyser is installed and configured on every server | `install: infos.installed_by_default` |
| An "Enable Bedrock crossplay?" option when changing server software | `install: customInstallLocations.enable_bedrock_crossplay_option` |
| Players use a different address than the Java server's | `config.notes: [javaAddressInstruction]` |
| You only serve one region | `notices: { info: onlyServesRegion('Australia') }` |
`ports.newPort` is for hosts we have no details on yet. Please replace it with one of the options above.
### What the Guide Already Covers
Do not add text for these. The guide generates them for you:
- downloading Geyser and placing the jar,
- the `bedrock` section of the config, including `port`, `webrtc-port`, `transport` and the signaling mode,
- which config option to set your port as,
- turning off `clone-remote-port`, which many hosts used to preset,
- what players enter to connect: the Java server's address and the Bedrock port.
### Writing Your Own Text
When a pre-configured string does not fit, add a `translate({ id, message })`:
- **Write full sentences.** Translators see each string on its own, so do not split a sentence across strings or values.
- **Name the place in your panel**, e.g. "Open an additional port in the Network tab."
- **Do not link to images or screenshots.** If your panel needs pictures to explain, put them in your own Geyser article and link it as `links.article`.
- **Do not link to order or pricing pages.** Links are limited to your article, support and Discord.
- **Use an id in the form `providers.provider.<your_host>.<field>`**, e.g. `providers.provider.example_host.install`.
When you change the text of an existing string, give it a new id, so translations of the old text are not shown for the new one.
## Which Fields Go Where
The setup guide shows an entry in this order:
| Field | Shown as |
|---------------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
| `links` | Buttons at the top: `article` (your Geyser guide), `support`, `discord` |
| `install` | Step 1, instead of the download steps |
| `config` | Step 2: your ports, and what to change in the Geyser config |
| `extra_step` | Step 3, e.g. a panel option the customer has to turn on |
| `connect` | Step 4, instead of the generated connect instructions. Only set this if players connect differently, e.g. through a lobby with `/join` |
| `notices.info` / `notices.warn` | Notes next to the guide |
| `notices.unsupported` | Replaces the guide, for hosts Geyser does not work on |
| `proxies_banned` | Hides the Velocity, BungeeCord, Standalone and ViaProxy guides |
Set `updated` to the date you add or change the entry, as `'YYYY-MM-DD'`. The guide shows it as "Instructions last updated on".
## Confirming Your Entry
Most entries were reported by the community, and have `confirmed: false`. The guide then shows a warning that the steps
have not been checked for NetherNet, and points players to the "Not listed" guide.
Once you have tested the steps on your service, remove `confirmed: false`. Only do this for steps you have tested.
## Configuring Geyser for Your Customers
If you set up Geyser for your customers, you can do it without editing their config by using [system properties](https://geysermc.org/wiki/geyser/geyser-command-line-arguments-and-system-properties#nethernet-system-properties) in the start command, for example:
```sh
java -DgeyserTransport=nethernet -DgeyserUdpPort=19132 -jar server.jar
```
Please see our [documentation](https://geysermc.org/wiki/geyser/geyser-command-line-arguments-and-system-properties) for more information.
Built-in signaling uses plain HTTP by default, which makes Minecraft show a "Trust on First Use?" prompt. See [HTTPS for NetherNet](https://geysermc.org/wiki/geyser/nethernet-https) to avoid it.
Then use `config: { preconfigured: true, port }` in your entry, and describe how customers turn Geyser on in `install`.
## Examples
A host whose customers add a port in the panel, open for TCP and UDP:
```ts
{
name: 'Example Host',
url: 'https://example.com/',
updated: '2026-10-16',
links: { article: 'https://example.com/docs/geyser', discord: 'https://discord.gg/example' },
install: customInstallLocations.plugin_list,
config: {
udp: {
obtain: translate({
id: 'providers.provider.example_host.port',
message: "Open an additional port in the Network tab of your panel."
})
},
builtin_signaling: 'same_as_udp'
}
},
```
A host that configures Geyser itself:
```ts
{
name: 'Example Host',
url: 'https://example.com/',
updated: '2026-10-16',
links: { support: 'https://example.com/support' },
install: translate({
id: 'providers.provider.example_host.install',
message: "Turn on 'Bedrock crossplay' in the Software tab of your panel, and restart the server."
}),
config: { preconfigured: true, port: ports.fromHost }
},
```
A host where customers ask support for a port, and only get one with a dedicated IP address:
```ts
{
name: 'Example Host',
url: 'https://example.com/',
updated: '2026-10-16',
config: {
udp: ports.askHost,
builtin_signaling: 'same_as_udp',
notes: [otherInstructions.dedicatedIp]
}
},
```
## Supporting Geyser
Hosts that support Geyser's development through [Open Collaboration](https://opencollaboration.dev) get an `open_collaboration` entry with their
`tier` (`bronze`, `silver` or `gold`), and are highlighted in the setup guide. Silver and gold hosts can add a `logo` (placed in `static/img/hosts`) and a short `description`.