# 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FpmJdigzt4XuEOZ3DlWoV%2Fimage.png?alt=media&#x26;token=dac22f42-be6c-4be3-aee1-9e66f9752c15" alt=""><figcaption></figcaption></figure>

We go into it.

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FT3se0GobTN8j2OKXf35h%2Fimage.png?alt=media&#x26;token=cd19c6f6-0d15-418f-ab8b-e003ee4d12d9" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FN7RAzgVLo5DBV2USz0b8%2Fimage.png?alt=media&#x26;token=61e74eb4-3004-404f-bcd9-063cba76f19f" alt=""><figcaption></figcaption></figure>

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

```
cd myservers
```

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FbwD4H73qhkmfkpOd2g1F%2Fimage.png?alt=media&#x26;token=29f2abe8-fd32-4b17-9880-53ad1b2e7721" alt=""><figcaption></figcaption></figure>

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

```
screen -S bungeecord
```

The window has been created.

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FcqN8mco6VDMjzGlpURE4%2Fimage.png?alt=media&#x26;token=09670d38-a824-4ea0-b42f-85cb4956c4db" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2Fc4YAmRr5bWeyslCDrJAl%2Fimage.png?alt=media&#x26;token=62e75b85-fe16-40f2-8d05-4a0f72562412" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2Fv5MOtLPC9gHHyV6XaoIR%2Fimage.png?alt=media&#x26;token=39b7ca39-32d6-49dd-82a8-9c407b452365" alt=""><figcaption></figcaption></figure>

We go into it. Great!

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FBvZojcQMaHGbwzjWXkui%2Fimage.png?alt=media&#x26;token=30ab3bb9-5a49-4d8b-92ef-7fc22945b0ca" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FXxmZk2Knma2GLGPGoce7%2Fimage.png?alt=media&#x26;token=f974f2b6-924f-4be2-9aa5-48705e0f2765" alt=""><figcaption></figcaption></figure>

Great!

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FgNlSMO2O0dvmDIZNxK8f%2Fimage.png?alt=media&#x26;token=5a27b927-48b7-42c7-90ae-192cc14e0fe2" alt=""><figcaption></figcaption></figure>

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

```
screen -S survival
```

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FiCMkFgJrgEZKSdRlBoOw%2Fimage.png?alt=media&#x26;token=054cb8e8-a96a-45bc-b2a3-dccbb2bee446" alt=""><figcaption></figcaption></figure>

Go to the server directory:

```
cd myservers/survival
```

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FF11QUK3x1anJqIytVYpf%2Fimage.png?alt=media&#x26;token=b0753509-a476-4c2a-ac1e-49872b5dfe18" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FrSBJIFqMz00CWyXT5urg%2Fimage.png?alt=media&#x26;token=465e8a8a-9e3f-44cf-977e-46252130f647" alt=""><figcaption></figcaption></figure>

The server has been successfully started.

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FFBWDvU6ymq6arJUK3Cu0%2Fimage.png?alt=media&#x26;token=e085f656-2583-4a8c-86ff-169a584748e1" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FrEnsYHs0JOxE6HdE265f%2Fimage.png?alt=media&#x26;token=57029b11-e85c-4f1d-bedc-db0ea1b29b82" alt=""><figcaption></figcaption></figure>

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

```
screen -S bungeecord
```

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FmAqlRquhdA9oX6r74a1T%2Fimage.png?alt=media&#x26;token=e501e4a5-8a22-498b-b17b-b244430ddef7" alt=""><figcaption></figcaption></figure>

Starting the server:

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

The server is running.

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FKIx3JPN5x3avEZ1eowfx%2Fimage.png?alt=media&#x26;token=a1251124-38cf-480b-8c1b-863ea8fb8016" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FNgsJcf9lKbj8AKlygGKM%2Fimage.png?alt=media&#x26;token=8385fa36-66ab-43bc-ae7b-c4a49517a7e8" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2F8qXowhpY6dQuw0E9Qbjy%2Fimage.png?alt=media&#x26;token=5d0aee37-40c6-47e4-86eb-07007036e306" alt=""><figcaption></figcaption></figure>

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

```
screen -S survival
```

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FG0WyOEOGzXRY0E3BZDJ3%2Fimage.png?alt=media&#x26;token=9ef1b832-17b5-4a02-9423-97cb4305caa6" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FwRT372fv0VdclU78AFWB%2Fimage.png?alt=media&#x26;token=3e29938c-3dd9-4cf4-84fc-133e6fc0c14f" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2F5kCacz4Xe0vJ65oW3mok%2Fimage.png?alt=media&#x26;token=9e6013af-c272-42b8-9acf-ca4880e762bf" alt=""><figcaption></figcaption></figure>

## Server connection

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

### config.yml

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FOxUrdf0llOu8cTOiGXWQ%2Fimage.png?alt=media&#x26;token=f9706ce3-5236-441c-aa99-ecbf832701d5" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FamNYRtTh0PYrshCXZq6Y%2Fimage.png?alt=media&#x26;token=dbb7bd66-12c2-482c-9056-5b67634a78ef" alt=""><figcaption></figcaption></figure>

We also specify the priority server.

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FMYJyNcC6S9hkYBGXaf1H%2Fimage.png?alt=media&#x26;token=890c86d4-4ed5-4d2d-87e2-8b9c941d103f" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FG7VO8yJdxoD8hqqdniqi%2Fimage.png?alt=media&#x26;token=3e8fe360-cd5b-47ae-a39a-a09908e16209" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2Fs7SzxjcBQe8rbjWV5d20%2Fimage.png?alt=media&#x26;token=b8d72eba-63d1-4236-80d5-f99946145a6e" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FNqv2vKBqrf7yb0hOHMT1%2Fimage.png?alt=media&#x26;token=0d1c25e5-184e-48cf-8ce9-db081bf460d5" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FaAnHUzBTdcJOx8OqBVuV%2Fimage.png?alt=media&#x26;token=a592ae3e-c238-4d4d-8b16-16a03313b809" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2Flf9ej4VijsN9uJp2niRc%2Fimage.png?alt=media&#x26;token=f9b608c9-d2ec-40c2-95d6-07b5b7768d38" alt=""><figcaption></figcaption></figure>

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

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FC65ZMMN861qAqoXjYJUK%2Fimage.png?alt=media&#x26;token=f250ca77-e5c1-4c33-8e85-b05637f08c7a" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2F6YEFeknJhfoUvGlXg0C6%2Fimage.png?alt=media&#x26;token=a53c0b8b-4c19-42d3-8f1a-8703700219a2" alt=""><figcaption></figcaption></figure>

We use the command «stop» to stop.

The server is turned off.

<figure><img src="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2Fo6i6dYM9wVWsC1H5si9X%2Fimage.png?alt=media&#x26;token=cea0470c-a65a-4e58-8d66-804661b6ce95" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FXMxGtau6DwMbhAkwDUrB%2Fimage.png?alt=media&#x26;token=adb1b61a-79e2-4766-bd47-ae9639b2f3dc" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2F8oGTlluudosq0FiF2sHv%2Fimage.png?alt=media&#x26;token=c8e15345-48d2-41f5-9165-48648c9f6c73" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FYjEHKjrgwbyBjqCNaGoi%2Fimage.png?alt=media&#x26;token=bbb62842-a27e-441d-b85f-7ce77c7e7cce" 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="https://287241268-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FyXvdNIxNLIOcexv7AfU2%2Fuploads%2FWIkEr7VJ83eJCIcR03ys%2Fimage.png?alt=media&#x26;token=633eb8fe-0565-4479-b2ba-6bd9edc349b4" 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
