Articles on: Minecraft
This article is also available in:

How to setup and use BungeeCord

🎥 Video Guide 🎥

🤔 What is BungeeCord? 🤔

BungeeCord is a software used to allow users to easily create a network of servers. You can learn more about it here:

To setup bungeecord, you must have a minimum of three servers with us at WitherHosting. One server is the bungeecord server itself, your second server is your "hub" server, for example, and your last server is your "smp" server, for example. You can setup the bungeecord server to allow players to easily switch between the hub and smp server.

Continuing into this article, let's call the bungeecord server as a proxy server, and let's call the hub and smp as backend servers.
Theoretically, it is possible to setup bungeecord with only 2 servers, one the bungeecord, and the other server being hub. But, the point of using bungeecord ( which is switching between servers in a network ) renders pointless.
Prerequisites to setting up the BungeeCord server - You will need to know your non-bungee server IPs and ports.

⚙️ How to setup the BungeeCord server ⚙️

A bungeecord server requires very little RAM compared to other servers. A bungeecord server is not accessible in-game, because it redirects the user to the secondary and tertiary servers you have.

Note that it may require more RAM if you're supporting GeyserMC players, in which case, add 1gb of ram for every 10 players you assume will play on bedrock!

First, you need to go to your config.yml file in the root folder of your proxy server. We will explain line by line, what each bit means. We will not talk about a few values in the config.yml, as they are not necessary to be edited to set it up.

forge_support - Set to true if you want to allow players with forge clients to join
player_limit - Global player limit for your BungeeCord instance. If set to 0 or below, this will allow an unlimited amount of users to join.
online_mode - Set to true to not allow cracked players to join, set to false to allow cracked players to join.

🤖 Servers 🤖

This is the most important section. In this, you will be listing all your backend servers that the proxy server should be listening to. Here is an example of a server -

    motd: '&1Just another BungeeCord - Forced Host'
    address: localhost:25565
    restricted: false

lobby would be the name of your server.
motd would be your motd of the backend server you've specified.
address would be your backend server's ip address, along with the port.
restricted restricted prevents players from joining the server unless they have the bungeecord.server.[servername] permission.

You can proceed to add as many servers as you'd like, in our case, we will add the hub and smp.

    motd: 'My hub server!'
    address: localhost:20001
    restricted: false
    motd: 'My smp server!'
    address: localhost:20002
    restricted: false

➕ Other Config Options ➕

Now, let's continue with the other components of your bungeecord's config.yml file -

motd - Is used to set your message of the day for the proxy server. Since your players will be connecting to the proxy server first, the MOTD you set here is what players will see in their server list!
prioirites - When a player connects for the first time or if forcedefaultserveris enabled then BungeeCord goes through this list of servers from top to bottom and tries to forward the connection to each of them. So if you would like to support multiple client versions, simply specify at least one server per version and BungeeCord will do the matching for you. Here is an example -

- hub
- smp

host - In this section, put your server IP followed by your port. For example, 123.45.678.9:12345
max_players - The max player limit shown in the minecraft client's multiplayer menu. Note that this limit is fake, you can set it to 0, players will still be able to join. Look at player_limit above for a "real" player limit.
ip_forward - Whether to allow IP or UUID forwarding. Recommended to set to true for online mode servers.

These are the settings you can tweak for your bungeecord server. Once you've adjusted the values according to your preference, save the file, and restart the server. Now we will set up the backend servers.

🚪 Setting up the backend servers 🚪

Setting up backend servers are rather simpler compared to the proxy setup. The following values need to be set, and your backend servers will be configured to work with the proxy.

online-mode must be set to false for your backend servers in file.
connection-throttle must be set to -1 for your backend servers in bukkit.yml file.
bungeecord must be set to true for your backend servers in spigot.yml file.

Once these have been configured, you can just restart your servers and everything should be setup! When in-game, all you need to do to switch between servers is by using the command /server followed by the server name you want to go to!

Make sure you're a server operator while performing this command!

🛡️ Protecting your BungeeCord proxy from unsafe authentication 🛡️

It is possible that malicious users might want to bypass your proxy connection and go to your backend server unauthenticated, which let's them login as any username, and potentially cause damage. To stop this, setup a plugin like BungeeGuard . This is highly recommended.

🚫 Common Errors 🚫

In the event the proxy doesn't work, check these points for fixing the common issues people face while setting it up.

If you get an Ip forwarding error while connecting, set ip_forward to true in config.yml of your proxy server.
If you've connected, but cannot switch to other servers with the error of "Could not connect to a default or fallback server", then ensure that your backend server is turned on and running!
if you can't ping your proxy server in the server list, be sure to check that the host ip address in config.yml is configured properly, and that your connection throttles and timeout time is altered accordingly!

Updated on: 08/03/2023

Was this article helpful?

Share your feedback


Thank you!