Get a VPS server with a 15% discount
Sale ends in
00Days
:
00Hours
:
00Minutes
:
00Seconds

Setting Up a Minecraft Server Network with BungeeCord

Many people wonder: "How do I actually build my own server network?". Let's figure it out!

Before installing the server we recommend reading these articles:

This guide demonstrates how to install a BungeeCord server on Minecraft 1.17. We will show 2 installation options - via sFTP or purely through SSH.

Installing the servers

Once all the required software is in place, let's start uploading the server.

sFTP

Create a new directory with any name you like.

Create directory dialog for myservers in an sFTP client
Creating the /root/myservers directory.

Open it.

Empty myservers directory listing
The directory is empty and ready for uploads.

Next we need to upload the BungeeCord core into this folder (or create a dedicated folder per server). To get the latest BungeeCord build we will use the official site. After downloading, send the file to our directory.

BungeeCord.jar uploaded into myservers
The BungeeCord core has been uploaded.

Open the server folder over SSH.

Switching to the myservers directory in SSH
Current directory - myservers.

Use this command to create a new Screen window:

The window is ready.

Empty terminal inside a new Screen window
A new Screen window named bungeecord is open.

Now let's start the server itself. You can do it via an SH script or by launching Java with arguments manually.

  • - minimum amount of RAM allocated to the game server.
  • - maximum amount of RAM available to the server at runtime.
  • - the type of file to launch.
  • - the name of the game server core itself.
  • - argument that disables the graphical interface, which we do not need.

The server started successfully on port 25577.

BungeeCord startup log on port 25577
BungeeCord is listening on port 25577.

Press to leave the Screen window.

Now let's create a new folder for the game server where users will actually play:

Create directory dialog for survival
Creating the /root/myservers/survival directory.

Open it. Done!

Empty survival directory listing
The survival directory is empty.

Next, download the latest Paper 1.17 build. Upload the core into the new directory:

Uploading paper-1.17-71.jar into the survival directory
paper-1.17-71.jar is being uploaded.

Done!

paper-1.17-71.jar file in the directory
Paper 1.17 build 71 sits in the directory.

Create a new Screen window for this server:

Empty terminal in the myservers directory
A Screen window named survival is open.

Switch to the server directory:

Switching to myservers/survival
Current directory - myservers/survival.

Use the SH script or run the server manually:

As usual, accept the EULA by setting inside , then start the server again:

Paper telling us to accept the EULA
Paper stops and asks to confirm the EULA.

The server is up.

Paper server startup log
The survival server is running on port 25565.

Press to hide the window.

SSH

Now let's look at installing the servers entirely through the SSH console. Create a directory in the root folder for our servers and switch to it:

Download the BungeeCord core.

Done.

Downloading BungeeCord.jar with wget
BungeeCord.jar saved into myservers.

Create a new Screen window for the server:

Empty terminal inside the bungeecord Screen window
Screen window named bungeecord is open.

Start the server:

The server is running.

BungeeCord startup log on port 25577
BungeeCord is listening on port 25577.

Leave the window with .

detached from bungeecord message
We detached from the Screen window.

Create a new directory for the game server players will join, then switch to it:

Download the latest Paper 1.17 build.

The core is downloaded.

Downloading paper-1.17-71.jar with wget
paper-1.17-71.jar saved into survival.

Create another Screen window for the new server.

Empty terminal inside the survival Screen window
Screen window named survival is open.

Start the server.

As usual, accept the EULA by setting inside , then start the server one more time:

Paper startup log after accepting the EULA
The survival server is running on port 25565.

Press to leave the window.

detached from survival message
We detached from the Screen window.

Linking the servers

First, let's review the file in the BungeeCord folder.

Default BungeeCord config.yml content
Default content of config.yml.
  • server_connect_timeout - how long a player has to join the server before being disconnected.
  • remote_ping_cache - sets, in milliseconds, how long BungeeCord caches the player count. Disabled by default.
  • forge_support - controls Forge support on BungeeCord servers.
  • player_limit - the real slot count on the BungeeCord proxy. Default -1 - unlimited.
  • permissions - declares default permissions for the various groups on the servers.
  • timeout - how long BungeeCord may stay unresponsive before disconnecting all players.
  • log_commands - when enabled, every BungeeCord command used by a player is shown in the console.
  • network_compression_threshold - sets the network compression threshold, usually tuned when the hosting is far from the main audience.
  • online_mode - controls whether players must use a licensed copy of the game. Disable it to make the server cracked.
  • disabled_commands - here you can list commands that should be blocked.
  • servers - this section configures the servers BungeeCord talks to, we will cover it in more detail below. If is enabled, only players with the permission can connect.
  • query_port - the port used to fetch server information via query.
  • motd - the server description shown in the master list.
  • tab_list - configures the in-game TAB list, supports several modes:
    • - shows all players in the tab and updates their ping.
    • - also shows players but without ping updates.
    • - shows only the local players on the current server.
  • query_enabled - enables the GameSpy4 service that exposes server info. The port is configured in .
  • proxy_protocol - enables the HAProxy PROXY protocol for all incoming connections.
  • forced_hosts - redirects specific subdomains to game servers behind BungeeCord.
  • ping_passthrough - lets query connections receive the MOTD and player count from the backend server.
  • priorities - sets the priority servers players connect to.
  • bind_local_address - whether the IPv4 address should point to a localhost backend. Useless unless the server has multiple IPs.
  • host - the server host with port. Usually a local address.
  • max_players - the "fake" slot count on the server. Even with 0 here, players can still join.
  • tab_size - maximum number of players that may appear in the TAB list.
  • force_default_server - related to . If true, the player is always connected to the priority servers. If false, the player returns to the last server.
  • ip_forward - forwards the real player address through the proxy.
  • remote_ping_timeout - how long BungeeCord may ignore query requests before dropping the connection.
  • prevent_proxy_connections - when enabled, players cannot connect through a proxy.
  • groups - assigns players and the group they receive by default.
  • connection_throttle - time in milliseconds a player must wait before reconnecting.
  • stats - a randomly generated code for MCStats statistics. Do not change it to avoid losing your stats.
  • connection_throttle_limit - how many logins a player may attempt within the window.
  • log_pings - prints information about player pings to the console.

Configuring the servers

In the config we specify the server name, description and address with port.

servers block inside config.yml
The servers block lists the name, MOTD and address with port.

We also set the priority server.

priorities block inside config.yml
The priorities block points to survival.

This is optional if you only have one server. That is everything we need for a basic link-up.

Save the file and push it back to the server.

sFTP dialog offering to re-upload the file
The sFTP client offers to upload the modified config.yml.

Now switch to the folder of our player-facing server (survival).

File listing of the survival server folder
The survival directory contains server.properties.

Open and set .

online-mode=false in server.properties
server.properties now has online-mode=false.

Note that this setting does not affect connecting via a licensed or cracked client. We disable it here purely to wire the server correctly to BungeeCord. License checks for the proxy are configured in the BungeeCord .

Save the file and upload it back to the directory.

Starting the servers

Let's return to the BungeeCord window with this command:

We are back in the BungeeCord console. Stop the server with and start it again:

The server is running.

BungeeCord log after restart
BungeeCord is listening on port 25577 again.

Leave the window with .

detached from bungeecord message
We detached from the Screen window.

Reattach the Survival window:

We see the console of the running server.

Survival server log
The survival window shows the log of the already running server.

Use to shut it down.

Stopping the survival server log
The server has been shut down.

Start it again:

The server is up.

Survival startup log
The survival server is back online.

Let's test BungeeCord. Add the default address with port 25577 (which BungeeCord uses by default).

SpaceCore BungeeCord entry in the Minecraft server list
The server appears in the list.

Try to join.

Player in-game on Survival 1.17
Excellent, we are connected to our brand new Minecraft 1.17 server!

The BungeeCord console shows the moment the server is pinged via the Minecraft network list, the connection process to BungeeCord itself and the redirect to the Survival server.

BungeeCord log with InitialHandler and ServerConnector
BungeeCord logs the ping, connection and redirect to survival.

Thank you for reading the article. This way you can add an unlimited number of servers to a BungeeCord network.

Your SpaceCore team.