Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Excerpt
hiddentrue

Pterodactyl is the open-source game server management panel built with PHP7, Nodejs, and Go. Designed with security in mind, Pterodactyl runs all game servers in isolated Docker containers while exposing a beautiful and intuitive UI to administrators and users. Stop wasting time fiddling with other systems — make game servers a first class citizen on your platform.


Table of Contents
Table of Contents
maxLevel4
minLevel2
outlinetrue
classtoc

About Pterodactyl

Pterodactyl is an open source game hosting control panel. Learn more about Pterodactyl their website at https://pterodactyl.io/.

Supported Features

CreateCancelSuspendUnsuspendManagementConfig Options
Status
colourGreen
titleYes
Status
colourGreen
titleYes
Status
colourGreen
titleYes
Status
colourGreen
titleYes
Status
colourGreen
titleYes

Status
colourGreen
titleYES

Management Features

This module supports the following management features within the client area:

  • SSO Control Panel Login
  • Start, Stop, Restart Server

...

Enter the details for your Pterodactyl server.

Field NameDescription
Server LabelEnter a label for this Pterodactyl server, it can be anything you like.
HostnameEnter the FQDN hostname for your Pterodactyl server, ie "server1.domain.com".
Account API Key

Enter your Pterodactyl API Key from your Pterodactyl Panel. (Under "

Account

API Credentials")

Your username > API Credentials

Click screenshot for full version:

Image Added

Application API Key

Enter your Pterodactyl API Key from your Pterodactyl Panel. (Under "Admin Control Panel" > "Application API"). Select "Read & Write" for all permissions. Click screenshot for full version:
Image Added

Use SSL when connecting to the API (recommended)Whether to use SSL when connecting to the Pterodactyl Panel's API. Recommended.

After filling out these options, click "Add Server" to add your Pterodactyl server.

...

To add a server group, from the Pterodactyl overview at  [Settings] > [Company] > [Modules] > Pterodactyl, click "Add Server Group", then enter the details.


OptionDetails
Group Name

Enter the name for this server group.

Add OrderChoose how servers in this group will be selected for provisioning. Currently, first non-full server is the only add order.
Assigned ServersSelect servers under "Available Servers" and click to move them to the left column to add them to the group.

Creating Packages

Configurable Options Overview

Configurable Options for Pterodactyl are dynamic. Availability of Configurable Options will depend on the game (Nest) and egg that will be used. To find the name of the configurable options for the Nest and Egg that you'd like to deploy, visit Servers Packages define the pricing, welcome email, module and more. Packages can be assigned to Package Groups, and added to Order Forms. To create a Package, visit [Packages] > Browse, and click the "Create Server" button. Select your Nest and Egg, and observe the "Service Variables" listed at the bottom of the page.

Image Added

The above screenshot references the variables that are available to use for config options for the Source Engine Nest, and Team Fortress 2 Egg. This example would allow config options with the names: SRCDS_GAME, SERVER_PORT, and SRCDS_MAP to be used. The variables available will vary depending the Nest and Egg selected, so it's important to check in Pterodactyl Panel first.

Configurable Options that Override Package Options

As of version 1.7.1 of the module, or Blesta 5.1.0, the following options are available to override their Package option counterparts.

Option NamePossible ValuesRecommended Field TypeDescription
location_idinteger >= 0DropdownSets the location where the server will be deployed.
egg_idinteger >= 0DropdownSets the ID of the egg the server will use.
memoryinteger >= 1Quantity, DropdownSets the amount of memory to be assigned to the server in MB.
cpuinteger >= 1Quantity, Dropdown

Sets the amount of CPU to be assigned to the server in %. 100% is equivalent to one core.

diskinteger >= 1Quantity, DropdownSets the amount of disk space to be assigned to the server in MB.
iointeger >= 10Quantity, Dropdown

Sets the IO weight of the server. Within a range from 10 to 1000.

startupstringTextSets the custom startup command to assign to the server.
imagestringText, DropdownSets the Docker image to be deployed to the server.
databasesinteger >= 1Quantity, DropdownSets the total amount of databases the user can create for the server.
allocationsinteger >= 1Quantity, DropdownSets the total amount of allocations the user can create for the server
backupsinteger >= 1Quantity, DropdownSets the total amount of backups the user is allowed to create for the server.
nest_idinteger >= 0DropdownSets the ID of the nest the server will use.
port_rangestringTextSets the port range that will be allocated to the server separated by comma. e.g. 25565-25570,25580-25590 
pack_idinteger >= 0DropdownSets the ID of the pack that will be installed in the server.
swapinteger >= 0Quantity, DropdownSets the amount of SWAP memory to be assigned to the server in MB.

Creating Packages

Packages define the pricing, welcome email, module and more. Packages can be assigned to Package Groups, and added to Order Forms. To create a Package, visit [Packages] > Browse, and click the "Create Package" button. Package" button.

Creating a Package consists of several sections:

...

The Basic section consists of the following options:

Field NameDescription
Package NameEnter the name of this Package, it will be visible wherever services are listed and on any order forms.
Status"Active" is the default, "Inactive", and "Restricted" are also available.
Quantity AvailableIf this Package has a limited quantity available, enter the quantity, or leave it as "Unlimited".
Use renewal prices for package upgradesWhen enabled, upgrading to this package will use renewal prices if they are set. The same will apply to any configurable options that are altered in the upgrade. The regular price will be used if this setting is disabled.
DescriptionEnter a Description for this Package. HTML is allowed, and descriptions appear on order forms.
Configurable OptionsA Configurable Option Group may be selected if previously created, but this module does not support configurable options during provisioning.
ModuleSelect "Pterodactyl" for the module.

Module Options

The Module Options section consists of the following options, which are specific to APNSCPPterodactyl:

Field NameDescription
Server GroupSelect "Any" if you wish to specify a specific server, or select the Server Group to provision from. Selecting a group means that accounts will be provisioned from the group. Selecting a group is recommended.
Location

Select the Location as configured in Pterodactyl.

NestSelect the Nest as configured in Pterodactyl.
Egg IDSelect the Egg ID as configured in Pterodactyl. (In Pterodactyl click Nests, then the Game to see a list of Egg's and their ID's.)
Dedicated IP (optional)Check the box to use a dedicated IP address.
Pack ID (optional)
Memory (MB)Enter the amount of memory in MB for this server. e.g. 1024
SwapEnter the amount of swap in MB for this server. e.g. 512
CPU Limit (%)Enter the CPU limit for this server.
Disk Space (MB)Enter the amount of disk space in MB for this server. e.g. 2048

Block IO Weign

Enter the block IO weight for this server, with a value of 10-1000. e.g. 100
Startup (optional)

Enter an optional startup command.

Image (optional)Enter an optional custom docker image.
Database Limit (optional)Enter an optional limit to the total number of databases a user can create.
Allocation Limit (optional)Enter an optional allocation limit for a user.
Server Jar File (EGG DEPENDENT)The name of the server jarfile to run the server with. Check to allow clients to modify this value during service add/edit. Leave unchecked if you plan to use a configurable option for this field. Defaults to
"server.jar".
"server.jar".  The variable is dependent on the egg. For Vanilla Minecraft it is SERVER_JARFILE
Server Version (EGG DEPENDENT)The version of Minecraft Vanilla to install. Use "latest" to install the latest version. Check to allow clients to modify this value during service add/edit. Leave unchecked if you plan to use a configurable option for this field. Defaults to "latest".

Pricing

Field NameDescription
TermEnter the term for the desired pricing option. For example, if you wish to create a 3 month pricing option, enter 3 here.
PeriodSelect the period for this pricing option. "Day", "Week", "Month", "Year", and "One time" are options. The client will be invoiced every "term period", for example every 3 months if 3 is entered for term, and Month is selected for period.
CurrencySelect the currency this pricing option is available for.
PriceEnter the price for this pricing option.
Setup FeeIf there is a setup fee, enter it here.
Cancellation FeeIf there is a fee to cancel early, enter it here.

Click the "Add Additional Price" to add more pricing options. It's common for people to create 1 Month, 3 Month, 6 Month, and 1 Year price options. There are many possible combinations.

...

No Format
Thank you for ordering your Minecraft Server!

Server Name: {service.server_name}
Server IP and Port: {service.server_ip}:{service.server_port}

Log into your account to start and manage your Minecraft Server! Be sure to start your Minecraft server for the first time from within Pterodactyl Panel so that you can agree to the Mojang EULA.

When creating or editing a package that uses this module, the following tags will be available:

Tags
DescriptionNotes
{module.host_name}The host name of the server that the service was provisioned one.g. "pterodactyl-panel.domain.com"
{module.server_name}The name of this game server

e.g. "Hostmaster's Minecraft Server"

{package.location_id}The ID of the location in Pterodactyl Panel.e.g. "1"
{package.nest_id}The ID of the Nest as configured in Pterodactyl Panel.e.g. "2"
{package.egg_id}The ID of the Egg as configured in Pterodactyl Panel.e.g. "5"
{package.image}The Docker image of the game server.e.g. "quay.io/pterodactyl/core:java-glibc"
{service.server_name}The name of the server as defined in the module within Blesta
DescriptionNotes{module.host_name}The host name of the server that the service was provisioned one.g. "pterodactyl-panel.domain.com"{module.server_name}The name of this game server

e.g. "Hostmaster's Minecraft Server"

{package.location_id}The ID of the location in Pterodactyl Panel
.e.g. "Pterodactyl 1"
{
package
service.
nest
server_
id
ip}The
ID
IP address of the
Nest as configured in Pterodactyl Panel
game server.e.g. "
2
192.168.0.23"
{
package
service.
egg
server_
id
port}The
ID of the Egg as configured in Pterodactyl Panel
port this game server is running on at the above IP.e.g. "
5
25535"
{
package
service.
image}
server_username}The username for the Pterodactyl panel.Added in version 4.11 of Blesta, version 1.4.1 of Pterodactyl
{service.server_
name
password}The
name of the server as defined in the module within Blesta.e.g. "Pterodactyl 1"
password for the Pterodactyl panel.Added in version 4.11 of Blesta, version 1.4.1 of Pterodactyl


Expand
titleAdditional Tags

Due to the nature of tag objects containing several fields, many of which are likely irrelevant for use in email templates, but may be useful to you in certain circumstances, a dump of the tags are shown below.

Code Block
languagephp
titleThe {module} object
collapsetrue
stdClass Object
        (
            [host_name] => pterodactyl-dev.blesta.com
            [server_name] => Pterodactyl 1
        )


Code Block
languagephp
titleThe {package} object
collapsetrue
stdClass Object
        (
            [id] => 1
            [id_format] => {num}
            [id_value] => 1
            [id_code] => 1
            [module_id] => 2
            [name] => Minecraft
            [description] => 
            [description_html] => 
            [qty] => 
            [module_row] => 0
            [module_group] => 1
            [taxable] => 0
            [single_term] => 0
            [status] => active
            [company_id] => 1
            [prorata_day] => 
            [prorata_cutoff] => 
            [upgrades_use_renewal] => 1
            [email_content] => Array
                (
                    [0] => stdClass Object
                        (
                            [lang] => en_us
                            [html] => <p>Thank you for ordering your Minecraft Server!</p>

<p>Server Name: {service.server_name}</p>

<p>Log into your account to start and manage your Minecraft Server!</p>

<p> </p>

<p>debug</p>

<p>{% debug %}</p>

                            [text] => Thank you for ordering your Minecraft Server!

Server Name: {service.server_name}

Log into your account to start and manage your Minecraft Server!



                        )

                )

            [pricing] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 1
                            [pricing_id] => 1
                            [package_id] => 1
                            [term] => 1
                            [period] => month
                            [price] => 5.0000
                            [price_renews] => 5.0000
                            [setup_fee] => 0.0000
                            [cancel_fee] => 0.0000
                            [currency] => USD
                        )

                    [1] => stdClass Object
                        (
                            [id] => 2
                            [pricing_id] => 2
                            [package_id] => 1
                            [term] => 1
                            [period] => year
                            [price] => 50.0000
                            [price_renews] => 50.0000
                            [setup_fee] => 0.0000
                            [cancel_fee] => 0.0000
                            [currency] => USD
                        )

                )

            [meta] => stdClass Object
                (
                    [allocations] => 
                    [cpu] => 100
                    [databases] => 
                    [dedicated_ip] => 0
                    [disk] => 1024
                    [egg_id] => 5
                    [image] => 
                    [io] => 100
                    [location_id] => 1
                    [memory] => 1024
                    [nest_id] => 1
                    [pack_id] => 
                    [port_range] => 25565-25595
                    [server_jarfile] => server.jar
                    [startup] => 
                    [swap] => 512
                    [vanilla_version] => latest
                )

            [groups] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => 2
                            [type] => standard
                            [name] => Minecraft Servers
                            [description] => 
                            [company_id] => 1
                            [allow_upgrades] => 1
                            [names] => Array
                                (
                                    [0] => stdClass Object
                                        (
                                            [lang] => en_us
                                            [name] => Minecraft Servers
                                        )

                                )

                            [descriptions] => Array
                                (
                                )

                        )

                )

            [option_groups] => Array
                (
                )

            [plugins] => Array
                (
                )

            [names] => Array
                (
                    [0] => stdClass Object
                        (
                            [lang] => en_us
                            [name] => Minecraft
                        )

                )

            [descriptions] => Array
                (
                    [0] => stdClass Object
                        (
                            [lang] => en_us
                            [html] => 
                            [text] => 
                        )

                )

            [allocations] => 
            [cpu] => 100
            [databases] => 
            [dedicated_ip] => 0
            [disk] => 1024
            [egg_id] => 5
            [image] => 
            [io] => 100
            [location_id] => 1
            [memory] => 1024
            [nest_id] => 1
            [pack_id] => 
            [port_range] => 25565-25595
            [server_jarfile] => server.jar
            [startup] => 
            [swap] => 512
            [vanilla_version] => latest
        )


Code Block
languagephp
titleThe {service} object
collapsetrue
stdClass Object
        (
            [id] => 1
            [parent_service_id] => 
            [package_group_id] => 2
            [id_format] => {num}
            [id_value] => 1
            [pricing_id] => 1
            [client_id] => 1
            [module_row_id] => 1
            [coupon_id] => 
            [qty] => 1
            [override_price] => 
            [override_currency] => 
            [status] => active
            [suspension_reason] => 
            [date_added] => 2019-12-20 21:41:02
            [date_renews] => 2020-01-20 21:41:02
            [date_last_renewed] => 
            [date_suspended] => 
            [date_canceled] => 
            [id_code] => 1
            [fields] => Array
                (
                    [0] => stdClass Object
                        (
                            [key] => server_description
                            [value] => 
                            [serialized] => 0
                            [encrypted] => 0
                        )

                    [1] => stdClass Object
                        (
                            [key] => server_id
                            [value] => 30
                            [serialized] => 0
                            [encrypted] => 0
                        )

                    [2] => stdClass Object
                        (
                            [key] => server_jarfile
                            [value] => server.jar
                            [serialized] => 0
                            [encrypted] => 0
                        )

                    [3] => stdClass Object
                        (
                            [key] => server_name
                            [value] => Hostmaster's MC Server
                            [serialized] => 0
                            [encrypted] => 0
                        )

                    [4] => stdClass Object
                        (
                            [key] => vanilla_version
                            [value] => latest
                            [serialized] => 0
                            [encrypted] => 0
                        )

                )

            [options] => Array
                (
                )

            [package_pricing] => stdClass Object
                (
                    [id] => 1
                    [package_id] => 1
                    [pricing_id] => 1
                    [term] => 1
                    [period] => Month
                    [price] => 5.0000
                    [price_renews] => 5.0000
                    [setup_fee] => 0.0000
                    [cancel_fee] => 0.0000
                    [currency] => USD
                )

            [package] => stdClass Object
                (
                    [id] => 1
                    [id_format] => {num}
                    [id_value] => 1
                    [id_code] => 1
                    [module_id] => 2
                    [name] => Minecraft
                    [description] => 
                    [description_html] => 
                    [qty] => 
                    [module_row] => 0
                    [module_group] => 1
                    [taxable] => 0
                    [single_term] => 0
                    [status] => active
                    [company_id] => 1
                    [prorata_day] => 
                    [prorata_cutoff] => 
                    [upgrades_use_renewal] => 1
                    [email_content] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [lang] => en_us
                                    [html] => <p>Thank you for ordering your Minecraft Server!</p>

<p>Server Name: {service.server_name}</p>

<p>Log into your account to start and manage your Minecraft Server!</p>

<p> </p>

<p>debug</p>

<p>{% debug %}</p>

                                    [text] => Thank you for ordering your Minecraft Server!

Server Name: {service.server_name}

Log into your account to start and manage your Minecraft Server!


debug

{% debug %}
                                )

                        )

                    [pricing] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [id] => 1
                                    [pricing_id] => 1
                                    [package_id] => 1
                                    [term] => 1
                                    [period] => month
                                    [price] => 5.0000
                                    [price_renews] => 5.0000
                                    [setup_fee] => 0.0000
                                    [cancel_fee] => 0.0000
                                    [currency] => USD
                                )

                            [1] => stdClass Object
                                (
                                    [id] => 2
                                    [pricing_id] => 2
                                    [package_id] => 1
                                    [term] => 1
                                    [period] => year
                                    [price] => 50.0000
                                    [price_renews] => 50.0000
                                    [setup_fee] => 0.0000
                                    [cancel_fee] => 0.0000
                                    [currency] => USD
                                )

                        )

                    [meta] => stdClass Object
                        (
                            [allocations] => 
                            [cpu] => 100
                            [databases] => 
                            [dedicated_ip] => 0
                            [disk] => 1024
                            [egg_id] => 5
                            [image] => 
                            [io] => 100
                            [location_id] => 1
                            [memory] => 1024
                            [nest_id] => 1
                            [pack_id] => 
                            [port_range] => 25565-25595
                            [server_jarfile] => server.jar
                            [startup] => 
                            [swap] => 512
                            [vanilla_version] => latest
                        )

                    [groups] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [id] => 2
                                    [type] => standard
                                    [name] => Minecraft Servers
                                    [description] => 
                                    [company_id] => 1
                                    [allow_upgrades] => 1
                                    [names] => Array
                                        (
                                            [0] => stdClass Object
                                                (
                                                    [lang] => en_us
                                                    [name] => Minecraft Servers
                                                )

                                        )

                                    [descriptions] => Array
                                        (
                                        )

                                )

                        )

                    [option_groups] => Array
                        (
                        )

                    [plugins] => Array
                        (
                        )

                    [names] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [lang] => en_us
                                    [name] => Minecraft
                                )

                        )

                    [descriptions] => Array
                        (
                            [0] => stdClass Object
                                (
                                    [lang] => en_us
                                    [html] => 
                                    [text] => 
                                )

                        )

                )

            [name] => Hostmaster's MC Server
            [server_description] => 
            [server_id] => 30
            [server_jarfile] => server.jar
            [server_name] => Hostmaster's MC Server
            [vanilla_version] => latest
        )


...

When finished, click "Create Package" to create this package.

Notes

Additional Eggs for Pterodactyl Panel can be downloaded from https://github.com/parkervcp/eggs

Final Steps

The only thing left to do is to add this Package Group to an order form so clients may place orders for your Pterodactyl servers. See Creating an Order Form for more details.

Common Problems

  • There is a conflict in the custom egg for the game OpenRA because of it's use of the variable SERVER_NAME.
    • This must be renamed in the egg in order to work with Blesta.
  • When creating a Package, the locations dropdown is empty.
    • Make sure you have created a location in your Pterodactyl panel at /admin/locations and that you have set a Description. If no description is set, the location will not appear.