Skip to Content
Running a ServerSetting up a Waterfall/Bungee Server
⚠️

END OF LIFE SOFTWARE

As of March 26th, 2024, Waterfall has been marked as EOL by the Paper team. More details are available on the PaperMC forums .

Please migrate to Velocity as soon as possible!

VIEW LEGACY DOCUMENTATION

⚠️

Configuring BungeeGuard is essential to secure your backend servers. Read until the end of the article to learn how to configure BungeeGuard!

NOTE: Installing BungeeGuard is strongly recommended to protect your backend servers.

Downloading Waterfall

To get started with Waterfall, you need to download their latest jar from their downloads page .

When you have downloaded their latest jar file, then you can upload it to your waterfall server when it’s created on the next step.

Server split Waterfall server

You can use the free server split feature (see Splitting servers) to create a proxy server. You need to click on one of your servers to be able to see the server split menu on the left side, then create the split there and choose the Waterfall server type.

After you’ve created the waterfall server in your server split, you’ll be able to see the server on your server overview in the panel.

Configure Waterfall

Before you set up this section, make sure your backend servers are not shared publicly, and secure them with BungeeGuard (see the end of this article).

You need to start it one time and shut it down afterwards to generate all the files needed to be able to configure waterfall.

Afterwards the file manager will show the generated Waterfall files, including config.yml.

We’ll configure waterfall in the config.yml file.

This is how a standard waterfall configuration will look like:

connection_throttle: 4000 connection_throttle_limit: 3 timeout: 30000 stats: d06cf9e1-441c-441f-8a5b-60a5c6bdccc0 permissions: default: - bungeecord.command.server - bungeecord.command.list admin: - bungeecord.command.alert - bungeecord.command.end - bungeecord.command.ip - bungeecord.command.reload network_compression_threshold: 256 servers: lobby: motd: '&1Just another Waterfall - Forced Host' address: localhost:25565 restricted: false player_limit: -1 prevent_proxy_connections: false server_connect_timeout: 5000 remote_ping_timeout: 5000 forge_support: true remote_ping_cache: -1 log_commands: false log_pings: true ip_forward: false disabled_commands: - disabledcommandhere groups: md_5: - admin listeners: - host: 0.0.0.0:25565 query_port: 25573 motd: '&1Another Bungee server' max_players: 1 force_default_server: false tab_size: 60 forced_hosts: pvp.md-5.net: pvp tab_list: GLOBAL_PING bind_local_address: true ping_passthrough: false query_enabled: false proxy_protocol: false priorities: - lobby online_mode: true

You need to have 3 servers in total to be able to use a proxy server. 1 proxy server and 2 backend servers.

We need to add the backend servers to under the servers menu and the priorities list in the config.yml file.

If for example, one of your backend servers is a survival server, you’ll need to add this under your server section:

survival: motd: '&1Survival Server' address: 203.0.113.10:25566 restricted: false

Remember to use your backend server’s own IP address and port and replace the example above

Afterwards you’ll need to add the survival server to under priorities.

When you’re done with adding backend servers it might look like the following:

connection_throttle: 4000 connection_throttle_limit: 3 timeout: 30000 stats: d06cf9e1-441c-441f-8a5b-60a5c6bdccc0 permissions: default: - bungeecord.command.server - bungeecord.command.list admin: - bungeecord.command.alert - bungeecord.command.end - bungeecord.command.ip - bungeecord.command.reload network_compression_threshold: 256 servers: lobby: motd: '&1Just another Waterfall - Forced Host' address: 203.0.113.10:25566 restricted: false survival: motd: '&1Survival Server' address: 203.0.113.10:25567 restricted: false skyblock: motd: '&1Skyblock server' address: 203.0.113.10:25568 restricted: false player_limit: -1 prevent_proxy_connections: false server_connect_timeout: 5000 remote_ping_timeout: 5000 forge_support: true remote_ping_cache: -1 log_commands: false log_pings: true ip_forward: true disabled_commands: - disabledcommandhere groups: md_5: - admin listeners: - host: 0.0.0.0:25565 query_port: 25573 motd: '&1Another Bungee server' max_players: 1 force_default_server: false tab_size: 60 forced_hosts: pvp.md-5.net: pvp tab_list: GLOBAL_PING bind_local_address: true ping_passthrough: false query_enabled: false proxy_protocol: false priorities: - lobby - survival - skyblock online_mode: true
⚠️

Make sure ip_forward is set to true in Waterfall config.yml and bungeecord is set to true in spigot.yml on all your backend servers.

Configure backend servers

On the backend server, you’ll need to go into server.properties and set online-mode to false and afterwards go into spigot.yml and change bungeecord to true.

When running your servers behind a proxy like Velocity or Waterfall, it requires them to be set to offline-mode. Normally hosting companies will not provide support for offline mode servers, but in this case it is required for the proxy to function properly. It will act as the gateway to your servers and handle authentication for you.

⚠️

It is recommended that you do not skip this step and complete your setup by configuring BungueeGuard as well!

Setting Up BungeeGuard

What does the plugin do?

BungeeGuard is a plugin used to protect against BungeeCord’s UUID spoof exploit which allows users to join without authenticating through the BungeeCord proxy, allowing them to join as any user.

Usage

Make sure your BungeeCord is on the latest version. Also, make sure to use version 1.2 or later of BungeeGuard as previous versions have an issue.

Download the plugin  then upload the jar into both your BungeeCord and Spigot plugins folder. Restart the servers. If you need help installing plugins, check out this guide.

After you have restarted the servers you installed BungeeGuard on, enter the config.yml file located in your BungeeCord’s BungeeGuard directory and copy the authentication token. Paste this authentication token into the config.yml file within your Spigot servers’ BungeeGuard directory.

Example configuration:

# Allowed authentication tokens. allowed-tokens: - "AUSXEwebkOGVnbihJM8gBS0QUutDzvIG009xoAfo1Huba9pGvhfjrA21r8dWVsa8"

Now, restart all your servers you installed BungeeGuard on and test to see if it’s properly working!

Last updated on