> For the complete documentation index, see [llms.txt](https://spacecore.gitbook.io/wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://spacecore.gitbook.io/wiki/en/minecraft/how-to-install-bungeecord-server.md).

# Installing the BungeeCord server

Many people have a question: "How do you create your own bundle of servers?". Let's figure it out!

## Information

This guide provides an example of installing a **BungeeCord server** on **Minecraft version 1.17.**

We will show 2 installation options using **sFTP** or **SSH** only.

## Installing servers

After installing all the necessary software, let's start downloading the server.

### sFTP

Creating a new directory with any name.

<figure><img src="/files/elvEEMSerSD5LXuYVpKS" alt=""><figcaption></figcaption></figure>

We go into it.

<figure><img src="/files/WnOoABS8kSzszTrzOlCs" alt=""><figcaption></figcaption></figure>

Next, we need to upload the **BungeeCord** core to this folder (or you can create a separate one for each server). To download the latest version of **BungeeCord**, we will use the official website: [clik](https://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/BungeeCord.jar).

After downloading, we send the **file** to our catalog.

<figure><img src="/files/83VYMcULuzDmda4lqA1Y" alt=""><figcaption></figcaption></figure>

We go to the folder of our server via **SSH**.

```
cd myservers
```

<figure><img src="/files/jAN2xQurJ3GCHE1UNd1E" alt=""><figcaption></figcaption></figure>

Use the command to create a new **Screen** window:

```
screen -S bungeecord
```

The window has been created.

<figure><img src="/files/gZSeTktWw0gWwQSJ4UAu" alt=""><figcaption></figcaption></figure>

Now let's start the server itself. You can do this using an **SH script**, or manually run it through **Java** arguments.

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

{% hint style="info" %}
**-Xms512M** — the minimum amount of **RAM** allocated for the game server.

**-Xmx2048M** — the maximum amount of **RAM** that will be available to the server during operation.

**-jar** — the type of file to run.

**ядро.jar** — the name of the core of the game server itself.

**nogui** — an argument for canceling the launch of the GUI, since we don't need it.
{% endhint %}

The server started successfully on port 25577:

<figure><img src="/files/VLdtFwKfgyZnlj8LkrbA" alt=""><figcaption></figcaption></figure>

Use the keyboard shortcut **Ctrl + a + d** to exit the Screen window.

Great, let's create a new folder for the game server where users can play:

<figure><img src="/files/wBUO8e47H5irsQTKUCsP" alt=""><figcaption></figcaption></figure>

We go into it. Great!

<figure><img src="/files/TBdaIblCUugESnMwejN6" alt=""><figcaption></figcaption></figure>

Next, let's download the latest build of the **Paper 1.17** core:[ clik](https://papermc.io/api/v2/projects/paper/versions/1.17/builds/71/downloads/paper-1.17-71.jar).

Uploading the kernel to our new directory:

<figure><img src="/files/H3plBsyxPvrVmq9foSfi" alt=""><figcaption></figcaption></figure>

Great!

<figure><img src="/files/OnYzbKDj4IMlvZz0ZT92" alt=""><figcaption></figcaption></figure>

Let's create a new **Screen** window for this server:

```
screen -S survival
```

<figure><img src="/files/PZeYZ09vvdtNYNnC1XwF" alt=""><figcaption></figcaption></figure>

Go to the server directory:

```
cd myservers/survival
```

<figure><img src="/files/MMNvMSPk14MB0gy8UG8T" alt=""><figcaption></figcaption></figure>

We also use the **SH** script or command to manually start the server:

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

As usual, we confirm eula by specifying «**eula=true**» in the file «**eula.txt**», and start the server again:

<figure><img src="/files/dHXaCyEBv29dfPhnIIs6" alt=""><figcaption></figcaption></figure>

The server has been successfully started.

<figure><img src="/files/4nY1DZqbPR96agb4pcp4" alt=""><figcaption></figcaption></figure>

### SSH

Now let's consider the option of installing servers entirely through the **SSH** console. Create a directory in the root folder for our servers, and then go to it:

```
mkdir myservers && cd myservers
```

Download the **BungeeCord** kernel.

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

Done.

<figure><img src="/files/HjU4Voe1bKGZQ2OSigmF" alt=""><figcaption></figcaption></figure>

Creating a new **Screen** window to start the server:

```
screen -S bungeecord
```

<figure><img src="/files/ZAp4vKlo8Eva1QTmmytM" alt=""><figcaption></figcaption></figure>

Starting the server:

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

The server is running.

<figure><img src="/files/ihpkEknA0ISp0krESfsc" alt=""><figcaption></figcaption></figure>

Exit the window using the keyboard shortcut **Ctrl + a + d.**

<figure><img src="/files/4k1lrlpUHAmoN2BKbPqk" alt=""><figcaption></figcaption></figure>

Let's create a new directory for the game server on which users can play, go to it:

```
mkdir survival && cd survival
```

Download the latest build of the **Paper 1.17** core.

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

The kernel is loaded.

<figure><img src="/files/fLxy1iuO6EeSLd7Djam8" alt=""><figcaption></figcaption></figure>

Creating another **Screen** window for the new server.

```
screen -S survival
```

<figure><img src="/files/4MiUZYSCSTzzjwJfGWXM" alt=""><figcaption></figcaption></figure>

Starting the server.

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

As usual, we confirm eula by specifying «‎**eula=true**» in the file «**‎eula.txt**», and start the server again:

<figure><img src="/files/F7vLV33Guo3ffoDNrSLP" alt=""><figcaption></figcaption></figure>

Use the key combination **Ctrl + a + d** to exit the window.

<figure><img src="/files/k5AWDQsyVnb2TAMAwO5N" alt=""><figcaption></figcaption></figure>

## Server connection

First, let’s look at the «‎**config**.**yml**» file in the **BungeeCord** folder.

### config.yml

<figure><img src="/files/FZ1VwCsEbMH3uWHsFbfX" alt=""><figcaption></figcaption></figure>

* server\_connect\_timeout

This parameter is responsible for the time during which the player must join the server, otherwise the user will be disconnected.

* remote\_ping\_cache

Allows you to set the time in milliseconds during which **BungeeCord** will cache the number of players on the server, this option is disabled by default.

* forge\_support

Responsible for the operation of **Forge** on **BungeeCord** servers.

* player\_limit

The current number of slots on the **BungeeCord server**. The standard value «‎-1» is infinite.

* permissions

Approves standard rights for various groups on servers.

* timeout

How long should the **BungeeCord** server be unresponsive before disabling all players.

* log\_commands

If the setting is enabled, then when the player uses the **BungeeCord** command, the action will be displayed in the console.

* network\_compression\_threshold

Adjusts the network compression threshold, usually configured if the hosting is located far from the central audience of the server.

* online\_mode

Responsible for the ability to connect via the licensed version of the game. Disable it if you want to make the server pirated.

* disabled\_commands

Here you can specify **forbidden commands**.

* servers

In this category, servers that interact with **BungeeCord** are configured, we will look at this in more detail later.

{% hint style="info" %}
If the **restricted** option is enabled, only players who have the bungeecord.server permission will be able to connect to the **server.\[server name].**
{% endhint %}

* query\_port

Allows you to specify the port that can be used to receive information about the server.

* motd

The description of the server is in the main list.

* tab\_list

{% hint style="info" %}
Configuring the **TAB** menu on the server allows you to select several values:

**GLOBAL\_PING**: Displays all players in the tab, updating their ping.

**GLOBAL**: It also shows the players, but without ping checking.

**SERVER**: Shows local players on the server.
{% endhint %}

* query\_enabled

Activates the **GameSpy4** service, which allows you to get information about the server. The port is configured for use in the **query.port** line.

* proxy\_protocol

Activates the **HAProxy PROXY** protocol for all connected players.

* forced\_hosts

Redirects subdomains to **BungeeCord** game servers.

* ping\_passthrough

Allows query connections to receive **MOTD** and the number of players on the server.

* priorities

Allows you to specify priority servers for connecting players.

* bind\_local\_address

Will the **IPv4** address used point to the localhost server? This feature is useless if your server does not have multiple **IP addresses.**

* host

The host of the server, taking into account the port. The local address is usually set.

* max\_players

This is a «fake» number of slots on the server. That is, if you leave the value **0** as it is now, or set any other number of slots, players will be able to log in anyway.

* tab\_size

The maximum number of players that can be displayed in the server **TAB**.

* force\_default\_server

Related to the **priorities** setting. If set to true, the player will connect to priority servers. If false, the player will be returned to the last server.

* ip\_forward

Setting up redirection of players from the real server address to the **Proxy**.

* remote\_ping\_timeout

How long should the **BungeeCord** server not respond to query requests before disconnecting the connection.

* prevent\_proxy\_connections

If this option is enabled, players will not be able to connect to the server using a **Proxy**.

* groups

Allows you to specify the players and the group that will be assigned by default.

* connection\_throttle

The amount of time in milliseconds that must pass before the player can connect to the server again.

* stats

Randomly generated code for checking statistics on the[ MCStats](https://mcstats.org/) website. Do not change this value to avoid losing statistics.

* connection\_throttle\_limit

The number of server logins that a player can make during the time specified in the **connection\_throttle** parameter.

* log\_pings

Sends information about server pings by users to the console.

### Configuring servers

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

<figure><img src="/files/vk8c7TgiquXZ7n9qKLPK" alt=""><figcaption></figcaption></figure>

We also specify the priority server.

<figure><img src="/files/F05SVWvpt4YmgTZimaXT" alt=""><figcaption></figcaption></figure>

That's all we need for an ordinary connection.

We save the file and send it to the server

<figure><img src="/files/P2T9ZtQ9P3gYhuAjDyY0" alt=""><figcaption></figcaption></figure>

OK, now go to the folder with our server for players (**survival**).

<figure><img src="/files/zRQJpTAhnLIUPvemdas8" alt=""><figcaption></figcaption></figure>

Open the file «server.properties» and set the value of «online-mode=false».

<figure><img src="/files/mTegl0CNy6BXLT5vYA7U" alt=""><figcaption></figcaption></figure>

{% hint style="warning" %}
Please note that this particular setting does not affect the connection to the server using a license or a pirated version of the game. In our case, this parameter is used to properly connect to BungeeCord.

The connection via the license is configured in the BungeeCord config "config.yml".
{% endhint %}

We save and send the file to the directory.

## Starting the servers

Let's go back to our **Bungeecord** window using the command

```
screen -x bungeecord
```

We returned to the **BungeeCord** console.

<figure><img src="/files/KxhQ7yoSes4w9a5TVFLY" alt=""><figcaption></figcaption></figure>

Stop server with «**end**» command and start again:

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

The server is running.

<figure><img src="/files/gKqlwJgkaIWEjlyFqdpX" alt=""><figcaption></figcaption></figure>

Exit the window using the combination Ctrl + a + d.

<figure><img src="/files/her675cjoSpWVpdytkS4" alt=""><figcaption></figcaption></figure>

We use the command to connect to the **Survival** server window:

```
screen -x survival
```

We also see the console of the running server.

<figure><img src="/files/lqnfj42DErKxMH1suHHb" alt=""><figcaption></figcaption></figure>

We use the command «stop» to stop.

The server is turned off.

<figure><img src="/files/6VSqi7h9r0v7jQNSgYc0" alt=""><figcaption></figcaption></figure>

Launching it again:

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

We have started the server.

<figure><img src="/files/TNVEem46pQPmQn5Bi4LH" alt=""><figcaption></figcaption></figure>

Let's check out how BungeeCord works. Adding a standard address with port 25577 (which is used by default in BungeeCord).

The server is displayed in the list.

<figure><img src="/files/0AP6x1NpGloNiLtH2nTg" alt=""><figcaption></figcaption></figure>

We're trying to get in.

Great, we've connected to our new server on **Minecraft** version **1.17**!

<figure><img src="/files/Le1M6EdDlkRSZr5nlBOS" alt=""><figcaption></figcaption></figure>

The **BungeeCord** console displays the moment of server ping through the **Minecraft** network list, the process of connecting to **BungeeCord** itself and redirecting to the Survival server.

<figure><img src="/files/y03297YFO5bACnEBgIUr" alt=""><figcaption></figcaption></figure>

Thank you for reading our article. This way you can add an unlimited number of servers to the **BungeeCord** bundle.

🚀 Your SpaceCore team <3
