Updated Bungee Set Up (markdown)

Risto Lahtela 2019-12-12 19:24:43 +02:00
parent c3723c7629
commit 725bfbad13

@ -1,99 +1,279 @@
![Plan Header](http://puu.sh/AXSg7/5f2f78c06c.jpg) ![Plan Header](https://puu.sh/AXSg7/5f2f78c06c.jpg)
# Bungee/Velocity Set-Up
This is the Set-Up tutorial for Networks. If you're installing the plugin on a single server refer to [[Bukkit Set-Up]] # Network Set-up
## Steps This is the set-up tutorial for proxy platforms; **BungeeCord** & **Velocity** based servers.
1. Create a MySQL Database for Plan If you have a single game server, use this tutorial: [Server Set-up](https://github.com/plan-player-analytics/Plan/wiki/Bukkit-Set-Up)
2. Install Plan on the Bungee server
3. Install Plan on the Bukkit servers
## 1. Create a MySQL Database for Plan These icons are used to aid during installation
Create a new database in your MySQL with `CREATE DATABASE _dbname_`
Make sure to `GRANT PRIVILEGES` to the MySQL user for the new database. 💭 Question about possible issues (Someone has had these before)
📢 Important note about the settings being changed
🚧 Additional steps for some users
💡 Extra stuff
> Plan uses a plan_ prefix on all table names, so you can use an existing database. ----
## 2. Install Plan on the Bungee server ## ✔️ Requirements
Place the .jar in the plugins folder and restart the server - An unused open port for Plan webserver on your Minecraft server machine
- MySQL Database
### 2.1 Change the config settings: > 💭 **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.
#### 2.1.1 Server.IP > 💭 **I don't have an open port, what now?**
>
> You can try [using an existing webserver](https://github.com/plan-player-analytics/Plan/wiki/External-WebServer-Use) on the same machine. Please note that the support for this is limited.
Change this to the Address or IP used to connect to your bungee server directly (Without port) - For example `play.exampleserver.com` or `123.123.4.5` ----
![1](http://puu.sh/zu9tA/15410504a1.png)
#### 2.1.2 Database Settings ## 🚩 Installation Goals
Change these to the settings of the Database you just created. Here are the goals the tutorial aims to guide you through.
![2](http://puu.sh/zu9x5/9ccfb5428b.png) At the end of this tutorial you will have
In case Plan starts with MySQL-error about unrecognized timezone, [set up your default timezone for MySQL](https://stackoverflow.com/questions/26515700/mysql-jdbc-driver-5-1-33-time-zone-issue/44720416#44720416) - .. 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.
#### 2.1.3 WebServer.Port Additionally you might have
Plan has a built in webserver - **extra web hosting provider is not required** if you have an open port on your server. On Bungee/Velocity only one webserver is required. - .. if using Pterodactyl Panel, allocated a port for Plan
- .. if using Azure or similar, enabled port forwarding
Change to a suitable port and open the port in the firewall. After installing, it is also possible to
![3](http://puu.sh/zu9yT/40433d2af6.png)
- [How to open a port on the firewall](https://github.com/Rsl1122/Plan-PlayerAnalytics/wiki/Bukkit-Set-Up#step-3-open-port-from-firewall) - .. set up Login and HTTPS on Plan webserver
> **Pterodactyl users** ----
> The port must be allocated to be accessible, see [Possible Additional Setup section](https://github.com/plan-player-analytics/Plan/wiki/Bungee-Set-Up#pterodactyl-users)
### 2.2 Reload the plugin ## Step 0: Prepare
`/planbungee reload` Download `Plan.jar` - If you don't have one get one from [Releases](https://github.com/plan-player-analytics/Plan/releases)
> /planbungee reload is available even if plugin fails to enable so that you can change the config settings easily. ## Step 1: Install
## 3. Install Plan on the Bukkit/Sponge servers Place Plan.jar to the plugin directory (`/plugins/`) and restart the server.
**NOTE: Do not copy-paste ServerInfoFile.yml**: This file stores ServerUUID which differentiates servers from each other. Same ServerUUID will lead to Bungee sending same config settings to two servers! `Plan/config.yml` should appear in the plugin directory.
1. Place the .jar to the plugins folder and restart the bukkit server. Set `Server.IP` setting in the Plan config to point to your server machine:
2. Set the Database settings to the same MySQL Bungee is using (Also change `Database.Type` to `MYSQL`) ```yml
3. Disable the Plan webserver on this server with `Webserver.Disable_Webserver` setting Server:
4. `plan reload` on the server IP: play.exampleserver.com
```
In case of a set-up difficulties you can join discord for support: > 📢 **Important**
[Discord Support](https://discord.gg/yXKmjzT) >
> Plan does not enable completely at this point. `Server.IP` setting and MySQL are required.
## 4. (Optional) Protect the Website with a Login Prompt ## 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.
> 💭 **Should I give all privileges?**
>
> [MySQL: Privilege-Granting Guidelines](https://dev.mysql.com/doc/refman/5.6/en/privileges-provided.html#privileges-provided-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:
```yml
Database:
MySQL:
Address: localhost
Port: 3306
User: <user>
Password: <password>
Database: <db_name>
Launch_options: "?rewriteBatchedStatements=true&useSSL=false"
```
- Reload the plugin with `planbungee/planvelocity reload`
> 💡 **Tip**
>
> Once Plan has partially enabled you can reload it with `planbungee reload` or `planvelocity 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.`
- Set up [default time zone for MySQL](https://stackoverflow.com/questions/26515700/mysql-jdbc-driver-5-1-33-time-zone-issue/44720416#44720416)
- or add `&serverTimezone=UTC` to `Database.MySQL.Launch_options`
## 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:
```yml
Webserver:
Port: 8804
```
Reload the plugin after changing the port with `/planbungee reload` to apply changes.
> 🚧 **Pterodactyl Panel Users**
>
> Port needs to be allocated before it can be used, see [this section](https://github.com/plan-player-analytics/Plan/wiki/Bungee-Set-Up#pterodactyl-panel) to do so.
> 💭 **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.
- [Windows Server 2012](https://support.rackspace.com/how-to/managing-the-windows-server-2012-firewall/)
- [Windows 10](http://www.tomshardware.co.uk/faq/id-3114787/open-firewall-ports-windows.html)
- [Linux/Debian iptables](https://wiki.debian.org/iptables)
- [Linux/Debian/Ubuntu uwf](https://wiki.debian.org/Uncomplicated%20Firewall%20%28ufw%29)
> 💡 **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](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/nsg-quickstart-portal)
## Step 5: Check that the address is correct
Now Plan should have enabled.
Find the address in the Plan enable log on the console.
```log
[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:
```yml
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](https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/) or [Apache](https://httpd.apache.org/docs/2.4/howto/reverse_proxy.html).
## Step 6: Try to access the page
If you didn't reload Plan after the last step, do so now with `/plan 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 4 and 5 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 5)
>
> If these steps do not solve the issue, you can [ask for support on Discord](http://support.playeranalytics.net)
## Step 7: Set-up Plan on game servers
1. Place Plan.jar to the plugin folder and restart the game server (Bukkit / Sponge / Nukkit)
2. Set the Database settings in the Plan config on that server to match the proxy (Bungee / Velocity)
```yml
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`
> 📢 **Important**
>
> The MySQL user might need privileges for external access if it is located on a different machine.
3. Disable Plan webserver on this server by setting `Webserver.Disable_Webserver` to `true`
```yml
Webserver:
Disable_Webserver: true
```
4. `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
----
## (Optional) Protect the Website with a Login Prompt
In order to enable user authentication, HTTPS set up is required. In order to enable user authentication, HTTPS set up is required.
This requires a Certificate to be installed in a Java Keystore: This requires a Certificate to be installed:
- [[How to set up SSL Certificate|SSL Certificate (HTTPS) Set-Up]] - [How to set up SSL Certificate](https://github.com/plan-player-analytics/Plan/wiki/SSL-Certificate-%28HTTPS%29-Set-Up)
You can use the same Keystore on all servers. How to create users is also covered by the linked tutorial.
### For further configuration refer to: > 💭 **I set this up correctly, why can't I access the page?**
- [[Bungee Configuration]] >
- [[Bukkit Configuration]] > Make sure that the address has `https://` in front of it.
- [Commands & Permissions](https://github.com/Rsl1122/Plan-PlayerAnalytics/wiki/Commands-%26-Permissions) > Plan doesn't upgrade http traffic to https because it only has one port.
## Possible additional Set up ----
### Pterodactyl users # Extra (necessary) Set-up Section
## Pterodactyl Panel
On Pterodactyl the port Plan runs on needs to be allocated. 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. - 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` - 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 (for all servers). - 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` - 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. - Click on `Assign Additional Ports` and choose what port(s) you wish to assign to this server. Click `Update Build Configuration` to save changes.
After the steps change `Alternative_IP` settings in Plan config to point to the machine Pterodactyl is running on. After the steps change `Alternative_IP` settings in Plan config to point to the machine Pterodactyl is running on (in step 4).
Only Bungee WebServer needs to be accessible from outside the machine. [Back to step 3](https://github.com/plan-player-analytics/Plan/wiki/Bungee-Set-Up#step-3-change-webserver-port)
### Azure or similar service
Make sure to [enable port forwarding on Azure](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/nsg-quickstart-portal)