Setting Up a Minecraft Server Network with BungeeCord

20 min readUpdated May 23, 2026

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

Open it.

Empty myservers directory listing

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

Open the server folder over SSH.

bash
cd myservers
Switching to the myservers directory in SSH

Use this command to create a new Screen window:

bash
screen -S bungeecord

The window is ready.

Empty terminal inside a new Screen window

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

bash
java -Xms512M -Xmx2048M -jar BungeeCord.jar nogui
  • - 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

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

Open it. Done!

Empty survival directory listing

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

Done!

paper-1.17-71.jar file in the directory

Create a new Screen window for this server:

bash
screen -S survival
Empty terminal in the myservers directory

Switch to the server directory:

bash
cd myservers/survival
Switching to myservers/survival

Use the SH script or run the server manually:

bash
java -Xms512M -Xmx2048M -jar paper-1.17-71.jar nogui

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

Paper telling us to accept the EULA

The server is up.

Paper server startup log

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:

bash
mkdir myservers && cd myservers

Download the BungeeCord core.

bash
wget https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/BungeeCord.jar

Done.

Downloading BungeeCord.jar with wget

Create a new Screen window for the server:

bash
screen -S bungeecord
Empty terminal inside the bungeecord Screen window

Start the server:

bash
java -Xms512M -Xmx2048M -jar BungeeCord.jar nogui

The server is running.

BungeeCord startup log on port 25577

Leave the window with .

detached from bungeecord message

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

bash
mkdir survival && cd survival

Download the latest Paper 1.17 build.

bash
wget https://papermc.io/api/v2/projects/paper/versions/1.17/builds/71/downloads/paper-1.17-71.jar

The core is downloaded.

Downloading paper-1.17-71.jar with wget

Create another Screen window for the new server.

bash
screen -S survival
Empty terminal inside the survival Screen window

Start the server.

bash
java -Xms512M -Xmx2048M -jar paper-1.17-71.jar nogui

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

Paper startup log after accepting the EULA

Press to leave the window.

detached from survival message

#Linking the servers

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

Default BungeeCord config.yml content
  • 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

We also set the priority server.

priorities block inside config.yml

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

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

File listing of the survival server folder

Open and set .

online-mode=false in server.properties

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:

bash
screen -x bungeecord

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

bash
java -Xms512M -Xmx2048M -jar BungeeCord.jar nogui

The server is running.

BungeeCord log after restart

Leave the window with .

detached from bungeecord message

Reattach the Survival window:

bash
screen -x survival

We see the console of the running server.

Survival server log

Use to shut it down.

Stopping the survival server log

Start it again:

bash
java -Xms512M -Xmx2048M -jar paper-1.17-71.jar nogui

The server is up.

Survival startup log

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

SpaceCore BungeeCord entry in the Minecraft server list

Try to join.

Player in-game on Survival 1.17

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

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

Your SpaceCore team.

Did not find the answer? We are online 24/7.Contact support