SeaCogs/.docs/pterodactyl/setup.md
SeaswimmerTheFsh b75bacb811
All checks were successful
Actions / Lint Code (Ruff & Pylint) (pull_request) Successful in 19s
Actions / Build Documentation (MkDocs) (pull_request) Successful in 23s
docs(pterodactyl): restarting is not a server power status type
2024-03-01 15:45:54 -05:00

6.2 KiB

Setup

This page will go over the steps required to setup the Pterodactyl cog.

/// admonition | Screenshots may be visually distinct type: info For the purpose of this guide, I'll be using Bloom Host's Pterodactyl fork.
The steps should be basically identical for other panels, but screenshots will look visually different.
If in doubt, contact your host's support. ///

Creating a sub-user

This is optional, but highly recommended, for security reasons.

Navigate to your Users page, and click the New User button.
Type in an email address, and press Select all permissions.
The bot doesn't need all of the permissions you just gave it to function, we'll deal with that in a moment.

image

Now, you'll need to check the email you just entered into the subusers page, and create an account. I won't cover this, as it'll change depending on what host you're using.

Moving on, the bot doesn't need all of the permissions you just gave it. This poses a security risk, should the bot be compromised. We can fix this by importing only the permissions the bot requires. Import the following string into your subuser's permissions.

["websocket.connect","control.read-console","control.console","control.start","control.stop","control.restart","startup.read","startup.update","settings.rename","settings.reinstall"]

image

Getting an API Key

Log out of your primary account, and switch to the sub-user you just created.

Navigate to your sub-user account's API Credentials page.

image

Create a new API key.

image

You don't have to specify an allowed IP if you don't want to, but I recommend it. If you chose to, you'll need to retrieve your bot's IP address. You can do this through SSH or through a cog like AAA3A's IP cog.

image

Now, use the [p]set api command on your bot to add the API key.
The format is as follows:

# Service: pterodactyl
# Keys and Tokens: api_key ptlc_...

image

Getting server information

There's some other information that the Pterodactyl cog needs to function.

First, get the base url for your panel. This does not include any extra information, like server ids, or whatnot. In my case, I'm using https://mc.bloom.host/.

image

Use the [p]pterodactyl config url command to set the URL the cog will use.
In my case, I'd use -pterodactyl config url https://mc.bloom.host/.

image

Now, we need to get the id of your server. Navigate to the Settings page in your panel.

image

Use the [p]pterodactyl config serverid command to add the server id to the bot. In my case, I'd use -pterodactyl config serverid ad712016-df3d-47a5-b1df-6b71baf50340.

image

Once you've done all of this, you should see a connection message in the bot's logs. Now, we need to configure some other things.

Configuring the cog

Setting up a console channel

Create a channel, and make sure the bot has permissions to speak in it.

/// admonition | Only give access to the console channel to people you trust! type: danger If a user account has access to the console channel, they can execute any command on your server, including power actions. They will also be able to see potentially sensitive information, such as player IPs. ///

Once you've created a channel, use [p]pterodactyl config consolechannel #channel to set the console channel.
Now, logs from your server should be posted in the channel you've configured.

Please note that, in order to avoid Discord ratelimits, logs will not be posted when the server status is one of the following:

  • starting
  • stopping

This is to prevent the console channel from flooding and getting backed up by Discord's message ratelimits.

Setting up a chat channel

Create another channel, and make sure the bot has permissions to speak in it and embed links.

Once you've created a channel, use [p]pterodactyl config chat channel #channel to set the console channel.
Now, chat messages, user joins, and advancements/challenges from your server should be posted in the channel you've configured.

My chat messages aren't detected!

If you're not running on recent versions of Paper, which this cog was developed against, or you're otherwise changing for format of chat messages, you'll need to add custom regex through the [p]pterodactyl config regex command. Same thing applies if any other type of message isn't being detected. I recomend using ChatGPT or something similar for this, or if you need help, you can join my Discord server.

The default values for all of the configurable regex in the cog is as follows:

chat messages: \[(\d{2}:\d{2}:\d{2})\sINFO\]:\s<(\w+)>\s(.*),
server messages: ^\[\d{2}:\d{2}:\d{2} INFO\]: \[Not Secure\] \[.*\] (.*),
join messages: ^\[\d{2}:\d{2}:\d{2} INFO\]: ([^<\n]+) joined the game$,
leave messages: ^\[\d{2}:\d{2}:\d{2} INFO\]: ([^<\n]+) left the game$,
achivement messages: ^\[\d{2}:\d{2}:\d{2} INFO\]: (.*) has (made the advancement|completed the challenge) \[(.*)\]$,

Changing the tellraw command

The cog uses a tellraw command to send messages to Minecraft from Discord. To change this, use the [p]pterodactyl config chat command command. The JSON format Minecraft uses for this is very janky sometimes, if you need help with changing the command, you can join my Discord server.

Available placeholders:

  • .$C - replaced with hex color of the author's top colored role
  • .$D - replaced with the author's discriminator (will usually be 0, you shouldn't use this)
  • .$I - replaced with the author's ID
  • .$M - replaced with message content
  • .$N - replaced with author's display name (or guild nickname, if set)
  • .$U - replaced with the author's username (NOT display name, you should usually use .$N)

Default:

tellraw @a ["",{"text":".$D ","color":".$C"},{"text":" (DISCORD): ","color":"blue"},{"text":".$M","color":"white"}]