67 Bungee Set Up
Aurora Lahtela edited this page 2023-05-25 07:30:38 +03:00

Plan Header

Network Set-up

This is the set-up tutorial for proxy platforms; BungeeCord & Velocity based servers.

If you have a single game server, use this tutorial: Server Set-up

These icons are used to aid during installation

💭 Question about possible issues (Someone has had these before)
📢 Important note about the settings being changed
🚧 Additional steps for some users
💡 Extra stuff


✔️ Requirements

  • An unused open port for Plan webserver on your Minecraft server machine
  • MySQL Database
  • Java 11 (If one of the servers doesn't meet this requirement install older version 5.4 build 1722)

💭 I'm using a host, how do I get an open port?

Some hosts offer a port range that contains open ports, while others need you to contact them to have a port opened.
If you have access to the firewall, you can open the port from there directly.

Opening port on a firewall is explained in this tutorial.

💭 I don't have an open port, what now?

You can try using an existing webserver on the same machine. Please note that the support for this is limited.


🚩 Installation Goals

Here are the goals the tutorial aims to guide you through.
At the end of this tutorial you will have

  • .. MySQL Database for Plan
  • .. access to the webserver of Plan (Running on the plugin)
    • .. an open port for the Plan webserver.
  • .. connected other Plan instances on game servers to the same database and disabled their webserver.

Additionally you might have

  • .. Accepted GeoLite2 EULA
  • .. if using Pterodactyl Panel, allocated a port for Plan
  • .. if using Azure or similar, enabled port forwarding

After installing, it is also possible to

  • .. set up Login and HTTPS on Plan webserver

Step 0: Prepare

Download Plan.jar - If you don't have one get one from Releases

🚧 Pterodactyl Panel Users

Port needs to be allocated before it can be used, see this section to do so.

Step 1: Install

Place Plan.jar to the plugin directory (/plugins/) and restart the server.

Plan/config.yml should appear in the plugin directory.

Set Server.IP setting in the Plan config to an IP or address that points to the machine your server is on:

Server:
    IP: play.exampleserver.com

📢 Important

Plan does not enable completely at this point. Server.IP setting and MySQL are required.

💡 Multiple proxy servers?

You can install Plan on multiple proxy servers. After completing all steps, you can follow Step 7 to install 2nd proxy.

Step 2: Create a MySQL Database for Plan

Plan does not create a new database automatically, so you need to either create or use an existing one.

  • Open your MySQL client or panel and connect to the MySQL.
  • Find 'Execute SQL' or similar, where you can execute SQL statements.
  • Create a new database with CREATE DATABASE <db_name> CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
  • Give the MySQL user privileges to the table with a GRANT statement. How to grant privileges

💭 Should I give all privileges?

MySQL: Privilege-Granting Guidelines

If you don't want to give all privileges, Plan needs at least the following: ALTER, CREATE, CREATE_TEMPORARY_TABLES, CREATE_VIEW, DELETE, DROP, INDEX, INSERT, LOCK_TABLES, REFERENCES, SELECT, SHOW_VIEW, UPDATE

  • Set Database.MySQL settings appropriately in the Plan config:
Database:
  MySQL:
    Address: localhost
    Port: 3306
    User: <user>
    Password: <password>
    Database: <db_name>
    Launch_options: "?rewriteBatchedStatements=true&useSSL=false"
  • Reload the plugin with planproxy reload

💡 Tip

Once Plan has partially enabled you can reload it with planproxy reload without restarting the server. (Note that replacing Plan.jar requires a restart.)

⚠️ If you get MySQL time zone error on start-up

Example of the error: Failed to initialize pool: The server time zone value 'unknown' is unrecognized or represents more than one time zone.

⚠️ Public key retrieval not allowed error on start-up

Example of the error: Failed to initialize pool: Public Key Retrieval is not allowed

  • Remove &useSSL=false from Database.MySQL.Launch_options so that the public key is not retrieved publicly.

Step 3: Change Webserver Port

💡 Tip

Plan has a built in webserver.
Extra web-hosting is not required if you have an open port.

Default Webserver Port is 8804.
If 8804 is not available or you want to use another port, change Webserver.Port to another value in the Plan config:

Webserver:
  Port: 8804

Reload the plugin after changing the port with /planproxy reload to apply changes.

💭 Failed to bind port, what now?

The port is likely in use by another program, try using another port.

Step 4: Open Port from Firewall

Open the port you chose in Step 3 by using your firewall software. If your host has given you an open port you can skip this step.

💡 Tip

You can use this tool to test if the port is open:
https://www.yougetsignal.com/tools/open-ports/

🚧 Azure Users

Make sure to enable port forwarding on Azure

Step 5: Check that the address is correct

Now Plan should have enabled.
Find the address in the Plan enable log on the console.

[INFO]: [Plan] Webserver running on PORT #### (<Address is here>)

You can change the address with Webserver.Alternative_IP settings.

Point the address to your server:

Webserver:
    Alternative_IP: true
        Address: "play.address.net:%port%"

📢 Important

Don't replace %port% in the address with any port, it is replaced with Webserver.Port by Plan automatically. Make sure to change Alternative_IP to true.

💡 Advanced Tip

If you don't want to have :PORT at the end of the address, you can use a reverse-proxy like Nginx or Apache.

Step 6: Try to access the page

If you didn't reload Plan after the last step, do so now with planproxy reload.

Find the address in the Plan enable log on the console like in the previous step, and try to access it with your browser.

💭 Why can't I access the page?

There can be multiple different causes depending on the error the browser gives you.

  • ERR_CONNECTION_REFUSED or ERR_TIMED_OUT: The browser could not connect to the address or port. Make sure you got the address right and check that the port is open (Redo steps 3 and 4 if necessary).
  • ERR_NAME_NOT_RESOLVED: The address could not be resolved, this is a problem with DNS. Set up DNS A-record to point to your server machine or change the address to something else (Step 4)
  • ERR_DNS_PROBE_FINISHED_NXDOMAIN: The DNS might not have not updated the A-record yet
  • See Access issues flowchart

If these steps do not solve the issue, you can ask for support on Discord

Step 7: Set-up Plan on game servers

  1. Place Plan.jar to the plugin folder and restart the game server. ⚠️ DON'T COPY /Plan/ServerInfoFile.yml BETWEEN SERVERS!

  2. Set the Database settings in the Plan config on that server (Make sure to also change Database.Type)

Database:
  Type: MySQL
  MySQL:
    Address: localhost
    Port: 3306
    User: <user>
    Password: <password>
    Database: <db_name>
    Launch_options: "?rewriteBatchedStatements=true&useSSL=false"

📢 Important

  • Note that on game servers Database.Type has to be set to MySQL
  • If copying config folder, don't copy ServerInfoFile.yml between two servers - That might lead to two servers identifying as the same server!
  • The MySQL user might need privileges for external access if it is located on a different machine.
  1. Disable Plan webserver on this server by setting Webserver.Disable_Webserver to true
Webserver:
  Disable_Webserver: true
  1. plan reload to apply changes. Plan should detect proxy-server information in the database.

💡 Tip
You can set a name for the server with Server.Name setting.


Now you should have Plan gathering lots of useful data and be able to access all servers through the Plan webserver on Bungee / Velocity.

Next section is about additional set-up


So that Plan can download Geolocation database you need to accept GeoLite2 EULA in the Plan config under Data_gathering.Accept_GeoLite2_EULA.

You will need to do this for all servers, and this can be done via files in /plugins/Plan/serverConfiguration

(Optional) Protect the Website with a Login Prompt

In order to enable user authentication, HTTPS set up is required. This requires a Certificate to be installed:

How to create users is also covered by the linked tutorial.

💭 I set this up correctly, why can't I access the page?

Make sure that the address has https:// in front of it.
Plan doesn't upgrade http traffic to https because it only has one port.


Extra (necessary) Set-up Section

Pterodactyl Panel

On Pterodactyl the port Plan runs on needs to be allocated.

  • Go to node category of your panel (http(s)://panel.domain.com/admin/nodes) & create a new node if you don't have one.
  • Navigate to The node > Allocation
  • On the right side in Assign New Allocations, put your IP Address (Alias is not necessary) & fill in the port(s) you wish to reserve.
  • Next, Choose a server from http(s)://panel.domain.fr/admin/servers & navigate to Build Configuration > Allocation Management
  • Click on Assign Additional Ports and choose what port(s) you wish to assign to this server. Click Update Build Configuration to save changes.
  • Restart docker container to apply changes to the build config

After the steps change Alternative_IP settings in Plan config to point to the machine Pterodactyl is running on (in step 4).

Back to step 0