Table of Contents
- Network Set-up
- ✔️ Requirements
- 🚩 Installation Goals
- Step 0: Prepare
- Step 1: Install
- Step 2: Create a MySQL Database for Plan
- Step 3: Change Webserver Port
- Step 4: Open Port from Firewall
- Step 5: Check that the address is correct
- Step 6: Try to access the page
- Step 7: Set-up Plan on game servers
- (Recommended) (Optional) Accept GeoLite2 EULA
- (Optional) Protect the Website with a Login Prompt
- Extra (necessary) Set-up Section
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.
- Set up default time zone for MySQL
- or add
&serverTimezone=UTC
toDatabase.MySQL.Launch_options
⚠️ 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
fromDatabase.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 withWebserver.Port
by Plan automatically. Make sure to changeAlternative_IP
totrue
.
💡 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
orERR_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
-
Place Plan.jar to the plugin folder and restart the game server. ⚠️ DON'T COPY
/Plan/ServerInfoFile.yml
BETWEEN SERVERS! -
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 toMySQL
- 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.
- Disable Plan webserver on this server by setting
Webserver.Disable_Webserver
totrue
Webserver:
Disable_Webserver: true
plan reload
to apply changes. Plan should detect proxy-server information in the database.
💡 Tip
You can set a name for the server withServer.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
(Recommended) (Optional) Accept GeoLite2 EULA
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 toBuild Configuration
>Allocation Management
- Click on
Assign Additional Ports
and choose what port(s) you wish to assign to this server. ClickUpdate 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).
- (Optional) It is recommended to increase "tmpfs_size" pterodactyl setting. See https://pterodactyl.io/wings/1.0/configuration.html#other-values, this prevents any "Disk or temporary directory is full" errors when using SQLite.
Documentation
Tutorials
Configuration
- Game server Set-up
- Network Set-up
- Game server Configuration
- Network Configuration
- Login / HTTPS Set-Up
- Commands & Permissions
- Database management
- PlaceholderAPI