# Pterodactyl Guides

# Pterodactyl Terminology - What Do The Terms Mean?

<span style="color: rgb(0, 0, 0);">Sometimes the panel can be really confusing when understanding the terminology, so I have included the list below, with some easy to understand statements at the end of each bullet point to gain more understanding of how the application works.</span>

- <span style="color: rgb(0, 0, 0);">**Panel** — This refers to Pterodactyl Panel itself, and is what allows you to add additional nodes and servers to the system. Written in ReactJS and Laravel. **Obvious enough!**</span>
- <span style="color: rgb(0, 0, 0);">**Node** — A node is a physical machine (dedicated or VPS) that runs an instance of Wings. **Dedicated systems you buy from a provider.**</span>
- <span style="color: rgb(0, 0, 0);">**Wings** — The a service written in Go that interfaces with Docker and the Panel to provide secure access for controlling servers via the Panel. **The guy that does the talking between panel and docker.**</span>
- <span style="color: rgb(0, 0, 0);">**Server** — A server refers to a running instance that is created by the panel. These servers are created on nodes, and you can have multiple servers per node. **One small house.**</span>
- <span style="color: rgb(0, 0, 0);">**Allocations** - Allocations are ports which you assign to the servers. For example, 25565 for the BungeeCord server for a proxy or MC server, then another "allocation" for Bedrock, 19132. **Basically ports given to a container.**</span>
- <span style="color: rgb(0, 0, 0);">**Docker** — Docker is a platform that lets you separate the application from your infrastructure into isolated, secure containers. **A city of houses.**</span>
- <span style="color: rgb(0, 0, 0);">**Container** — Each server will be running inside an isolated container to enforce hardware limitations (such as CPU and RAM) and avoid any interference between servers on one node. These are created by Docker. **Again, the same one small house.**</span>
- <span style="color: rgb(0, 0, 0);">**Docker Image** — A Docker image contains everything needed to run a containerized application. (e.g. Java for a Minecraft Server). **Operating systems like Windows.**</span>
- <span style="color: rgb(0, 0, 0);">**Nest** — Each nest is usually used as a specific game or service, for example: Minecraft, Teamspeak or Terraria and can contain many eggs. **Multiple categories.**</span>
- <span style="color: rgb(0, 0, 0);">**Egg** — Each egg is usually used to store the configuration of a specific type of game, for example: Vanilla, Spigot or Bungeecord for Minecraft. **Select the "gamemode" of the game/service from the Nest chosen.**</span>

# Typical Pterodactyl Errors In Console & Solving Them

##### <span style="color: rgb(0, 0, 0);">**"Unable to access jarfile xxx.jar"**</span>

<span style="color: rgb(0, 0, 0);">**Use. Common. Sense.** This is the most irritating one we get asked literally every day. No, your server didn't crash, it didn't break, it didn't blow up. **Read the error.** It is clearly asking that it cannot find the jar file on start up. If you see the start up line just before it states the error, you can see in my example it is called "server.jar". We need to change this. Go to the "Startup" tab along the top and update the jar file name. Your file called "BungeeCord.jar"? Put that in there and start the server again. *Note:* **CaSe SeNSiTiVe.**</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/sqHuXW.png) [![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-11/scaled-1680-/HoFJ95ZWgrmjMOTU-image.png)](https://docs.jasmeow.systems/uploads/images/gallery/2023-11/HoFJ95ZWgrmjMOTU-image.png)</span>

##### <span style="color: rgb(0, 0, 0);">**"Cannot find module './index.js'"**</span>

<span style="color: rgb(0, 0, 0);">Same as above, the file doesn't exist. It could be located in /src/index.js for example, and if it is, you need to go to the Startup tab and update that parameter in the Main File section.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/iCqglW.png) ![](https://jasmeow.pics/YzDLHK.png)</span>

##### <span style="color: rgb(0, 0, 0);">**"Exception in thread "main"..."**</span>

<span style="color: rgb(0, 0, 0);">This error is usually caused by selecting the wrong Java version for the docker container. For example, you put on a Paper 1.8 jar but the server is using docker image Java 17. Normally the panel or jar file will be smart and explicitly state "Oi, wrong version, update it" but some jar files can't do that or haven't got that built in. Another reason for the below is due to a corrupt server jar so download a new one from the site you got it from or use a different one if it is broken.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/TMoOuY.png)</span>

##### <span style="color: rgb(0, 0, 0);">**"bind: cannot assign requested address"**</span>

<span style="color: rgb(0, 0, 0);">Big scary red error but actually a very simple one - Your dedicated system has IP's and to manage them they use something called network adapters. If none of the adapters has the address specified, it won't "bind", as in, "I can't see it, did you type the number right?". For example, 1.1.1.1 would not ever exist on your system, so you can see where it states **tcp4 1.1.1.1**, meaning it cannot find that particular IP. Normally happens if you have multiple IP's you ordered from your hosting provider, tried to use one on the panel, but forgot that you need to **ip addr add** or **netplan** them first on the system. Ask us for assistance if you are adding additional IP's as this can get confusing with networking very quickly. The rest of the error is just the server UUID and a bunch of waffle.</span>

##### <span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/rhSndN.png)</span>

##### <span style="color: rgb(0, 0, 0);">"**bind: address already in use**"</span>

<span style="color: rgb(0, 0, 0);">If I have a server or service using the same port, it will state this error. Very obvious to solve - Find what is using that port and stop it, turn it off, or change your current servers port to something else. Might require use to investigate if the local system has locked up that port and is actually available. ![](https://jasmeow.pics/NOn3lz.png)</span>

##### <span style="color: rgb(0, 0, 0);">"**Invalid maximum heap size: -Xmx0M**"</span>

<span style="color: rgb(0, 0, 0);">This is due to setting your "Allocated Memory" RAM limit on your panel to 0 and have the variable flag **-Xmx{{SERVER\_MEMORY}}M** included in your start up command. Basically, the panel states "Setting this to 0 will allow unlimited memory in a container" but Java doesn't work like this and if the line exists, it means that it will try and use maximum RAM of 0. The panel was recently updated within the past year to remove this *-Xmx* line and only have the *-Xms* (minimum) due to the poor wording and confusion this had with not so technically minded users of the panel. Now when you set it to 0, it will really use all the memory it can get for the container, so normally you use Aikar flags to make the RAM **-Xms8G -Xmx8G** for example.</span>

![](https://jasmeow.pics/hrxPgq.png)

![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-12/scaled-1680-/Vb9TqsTVLHs1qG4v-image.png)

##### <span style="color: rgb(0, 0, 0);">"**daemon: network pterodactyl\_nw not found.**"</span>

<span style="color: rgb(0, 0, 0);">**EXTREMELY rare.** Reinstall docker using the standardized docker commands from Pterodactyl's website and then start the container again. Still failing? Pull the latest wings configuration from the node and update it, then restart wings. Ask us to solve this problem for more troubleshooting.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/RNb6lJ.png)</span>

##### <span style="color: rgb(0, 0, 0);">"**NODE\_MODULE\_VERSION xxx. This version requires *higher/lower*...**"</span>

<span style="color: rgb(0, 0, 0);">[![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-11/scaled-1680-/vXaCk5Yl4PQzLXEt-image.png)](https://docs.jasmeow.systems/uploads/images/gallery/2023-11/vXaCk5Yl4PQzLXEt-image.png)</span>

<span style="color: rgb(0, 0, 0);">This means that you have the wrong NodeJS version selected on the Startup tab, needing to switch to a higher version. You can find them here - [https://nodejs.org/en/download/releases](https://nodejs.org/en/download/releases) </span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/zN9OmK.png)</span>

# Getting A Containers UUID

<span style="color: rgb(0, 0, 0);">When asking for support and your panel contains more than one server, it speeds up our assistance by providing which server UUID is effected with the issue. You can find them in many places, see below:</span>

<p class="callout info"><span style="color: rgb(0, 0, 0);">Note, there is the short UUID and long UUID. Both of these can be provided as the short one is mostly always unique and never matches another, but if it does, provide the long one. For this guide, we will be using **S** for short and **L** for long at the beginning of **UUID**.</span>  
  
<span style="color: rgb(0, 0, 0);">For example:</span>  
<span style="color: rgb(0, 0, 0);">ce823922 **AND** ce823922-2f7a-4425-a0d9-7c5cc2e2242b</span>  
</p>

<span style="color: rgb(0, 0, 0);">**<span style="text-decoration: underline;">Client Side</span>**</span>

<span style="color: rgb(0, 0, 0);">1. Click a server on your panel and look at the URL at the top of your browser in the address bar. It's https://yourpanel.com/server/**SUUID**</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/lEsSzp.png)</span>

<span style="color: rgb(0, 0, 0);">2. Click the "Settings" tab in any server along the top and find "Server ID" (**LUUID**) in the bottom left. You can click it to copy!</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/tD50K3.png) ![](https://jasmeow.pics/niAyED.png)![](https://jasmeow.pics/VrR7E8.png)</span>

<span style="color: rgb(0, 0, 0);">3. On the server, click the arrow next to the "Activity" tab. You can locate the **LUUID** on the 3rd line of the Information table.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/HwYa6b.png) ![](https://jasmeow.pics/MSyKaB.png)</span>

<span style="text-decoration: underline; color: rgb(0, 0, 0);">**Admin Side**</span>

<span style="color: rgb(0, 0, 0);">1. Go to the admin side and click "Servers" on the left. All the **LUUID**'s are listed.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/yGeCba.png) </span><span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/Hb1Xrd.png)</span>

<span style="color: rgb(0, 0, 0);">2. Click a server name in blue and the **LUUID** appears on the 3rd line of the Information table.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/MSyKaB.png)</span>

<span style="color: rgb(0, 0, 0);">3. Click "Nodes" along the left hand side, click the node you want on the blue text, click the "Servers" tab and find the **SUUID** in the "Process Manager" table on the left.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/mUFGA4.png) ![](https://jasmeow.pics/fjO8oB.png) ![](https://jasmeow.pics/Yq0Cpm.png) ![](https://jasmeow.pics/X5eiPT.png)</span>

# Moving Files & Folders Around The Container

<span style="color: rgb(0, 0, 0);">Pterodactyl does not have documentation on moving files and folders around the container you are in as it believes you already have the knowledge as you were the one that installed the panel in the first place, as in, knowing Linux commands. The trouble is, most panel installs are done by system admins or our team directly, so this unfortunately doesn't get informed. In simple terms, we need to learn what **../**, **.**, and what a **directory** means.</span>

<span style="color: rgb(0, 0, 0);">A directory is a folder. It's a term used in Linux but also Windows, but the term is used for more computer proficient users. In a **Linux** system, in the **root/beginning/start** location, like the **C:\\** drive on Windows, there are directories which run the system, such as **/root /var /srv /home** and more. See below for an example.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/YpV8Z9.png)</span>

<span style="color: rgb(0, 0, 0);">In Pterodactyl, your servers are stored in **/var/lib/pterodactyl/volumes**. You might be thinking "Wait, var is variable files? That doesn't make sense?" Well, it includes directories such as **/var/lib** for MySQL/MariaDB or MongoDB storage and **/var/www** for website files like the Ptero panel. You've got to see it as **These are variable &gt; They change &gt; Hence the name**. You are storing data in them that will change by the user or the program using them.</span>

<span style="color: rgb(0, 0, 0);">Now, in Pterodactyl, each server is contained as a UUID, which is explained [**here**](https://docs.jasmeow.systems/books/pterodactyl-guides/page/getting-a-containers-uuid), see below:</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/XYFnrD.png)</span>

<span style="color: rgb(0, 0, 0);">Now, in the panel itself, these are mounted as **/home/container**, if you check under the File Manager, you'll see this. You can't go further **"back"** from /home/container such as **/home** or even **/**, so this area is your **root**, your **beginning**, your **start**. When we start moving things soon, you will soon realise we can't go back any further.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/ucpK5S.png)</span>

<span style="color: rgb(0, 0, 0);">The main **relative path** operand we use is **../**. We call this **dot dot slash**, easy to say, simple to do. For example, if I was in **/root** and I wanted to move the file called **steve.txt** to **/srv**, I would do **mv /root/steve.txt /srv**. Now, that might be very confusing at first, but basically the command **mv** means **Move**. We can go and see that file with **cd /srv** which will take us to that directory and it means **Change Directory**. Doing **ls** will list all the items in that directory, showing us the **steve.txt**.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/u0UZao.png) &gt; ![](https://jasmeow.pics/zlJhge.png)</span>

<span style="color: rgb(0, 0, 0);">*(~ means root in this context don't worry about it, but you can see we moved it in /srv.)*</span>

<span style="color: rgb(0, 0, 0);">If you were using the other **relative path** operand, **.**, mostly just called **dot**, you are telling it to **move** here/**come** here. So, if I was in **/root** and I wanted to **move /srv/steve.txt** to me, I would do **cd /root**, then **mv /srv/steve.txt .**. That dot means it "put it where I am" essentially.</span>

<span style="color: rgb(0, 0, 0);">Now, how do we apply this knowledge to the panel? Well, let's say we wanted to move data from a folder named **Server 1** and put it into the **root** of the container, so we can start the server with that data.</span>

##### <span style="text-decoration: underline;">**<span style="color: rgb(0, 0, 0); text-decoration: underline;">Now onto actually doing it!</span>**</span>

<span style="color: rgb(0, 0, 0);">The panel automatically does **mv** when pressing the move button, but where does **../** come into play? Well, when we want to move a file or folder backwards, we do **../** at the front. Each time we do it, it moves back another directory. Watch below:</span>

<p class="callout info">*<span style="color: rgb(0, 0, 0);">Watch the **New Location:**</span><span style="color: rgb(0, 0, 0);"> at the bottom of the box. This will really help nail it first time!</span>*</p>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/IVxham.gif)</span>

<span style="color: rgb(0, 0, 0);">You'll also notice that to move something back into a folder, we go to the front, and pop in where it needs to go. When knowing that **../** goes **back**, and **typing the name** goes **forward**, you've now mastered moving your server files around!</span>

# Adding Additional Ports To Your Pterodactyl Nodes

<span style="color: rgb(0, 0, 0);">Head over to your Pterodactyl panel and go to the admin side which is the button in the top right corner, a cog icon.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/AX9tif.png)</span>

<span style="color: rgb(0, 0, 0);">Click on "Nodes" along the left hand side.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/YePnpw.png)</span>

<span style="color: rgb(0, 0, 0);">In the node list, click on the blue text. Normally, you will only have one node called "S01" for Server 01, but choose which one you want to add an allocation to.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/Ce4KrG.png)</span>

<span style="color: rgb(0, 0, 0);">Click "Allocation" along the top bar.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/HiQLgY.png)</span>

<span style="color: rgb(0, 0, 0);">In the allocation table, you will see on the right a "Assign New Allocations" header.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/A8V9xW.png)</span>

- <span style="color: rgb(0, 0, 0);">For the *IP Address*, if you want it externally, put in the external IP. Only do this if you are setting up the proxy for external player connections or voting incoming connections. Alternatively, you would do this if you are making another server such as a modpack server from Forge/Fabric, as this won't be able to connect to your proxy normally and has to be a standalone server. </span><span style="color: rgb(0, 0, 0);">This is normally done for you so you shouldn't need to worry about it. In most cases, you will put *172.18.0.1* as this is internal, and would be used for internal proxying of players, votifier forwardings, dynmap redirections for vhost nginx redirects and so fourth. You would also use an internal IP for internal services such as hosting a Discord bot as that doesn't need external connections inwards but only outwards.</span>
- <span style="color: rgb(0, 0, 0);">For the *IP Alias*, this is helpful for disguising the external or internal IP's on the normal panel side if some of your staff are not administrators so that helpers/moderators/developers don't see the backend IP address or internal ones causing a potential breach if shared.</span>
- <span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/akoKhD.png)</span>
- <span style="color: rgb(0, 0, 0);">For the *Ports,* choose wisely and follow an order to save time later on. For example, we do *172.18.0.1* as the IP and *25566-25575* as the ports, as we can then use the 10 internals for Hub, Survival, etc and the public IP on port *25565* for the proxy to prevent proxy spoofing. For other services like bots, we just put them somewhere where they aren't going to be clashing with future projects, such as on ports 4000, 5000, etc.</span>

<p class="callout info align-left"><span style="color: rgb(0, 0, 0);">When using more than one dedicated system, the *IP Address* can be different, dependent on your network infrastructure, so ask the team before continuing if you are confused. For example, your internal networking could be 10.10.10.1 to 10.10.10.5, each dedicated system being an IP in that range.</span></p>

<span style="color: rgb(0, 0, 0);">In our case, we did 10.10.10.1 with alias "DiscordBot" to hide from non admins on port 3000. We click the green "Submit" button.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-06/scaled-1680-/JigXMxOzisYwxizL-image.png)</span>

<span style="color: rgb(0, 0, 0);">If you get the this error, Make sure you choose a port over 1024 as these are restricted to root level access only. </span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-06/scaled-1680-/xj31eZcbDaHBHvJJ-image.png)</span>

<span style="color: rgb(0, 0, 0);">If you get either below error, make sure you actually filled out an IP in the *IP Address* box or a port in the *Ports* box!</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/h1JOvZ.png) ![](https://jasmeow.pics/DGLpkT.png)</span>

<span style="color: rgb(0, 0, 0);">If successful, you will get the below success message.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/5w7K8M.png)</span>

<span style="color: rgb(0, 0, 0);">You can delete an allocation by clicking the red bin icon in the allocations table on the left.</span>

![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-06/scaled-1680-/6XLxvsYv3sqg8BDb-image.png) ![](https://jasmeow.pics/LZbvjx.png) ![](https://jasmeow.pics/QcMY5K.png)

<span style="color: rgb(0, 0, 0);">You can also bulk remove them by ticking them along the left, then scrolling back up to the top and clicking "Mass Actions" top right, and pressing "Delete." </span>

![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-06/scaled-1680-/jekZDIPFt6QKs1Wh-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-06/scaled-1680-/GrBvnIg5DYssboT3-image.png) ![](https://jasmeow.pics/lyeoCB.png) ![](https://jasmeow.pics/ItH6TJ.png)

<span style="color: rgb(0, 0, 0);">Now when you go to "Servers" on the left sidebar and "Create New" on the top right, you can now select which node to use and your port will appear there.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-06/scaled-1680-/sSzfD7nO4PdjgqGx-image.png) ![](https://jasmeow.pics/aE6dy3.png)</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/h0sunH.png)</span>

<span style="text-decoration: underline; color: rgb(0, 0, 0);">**Adding ports to existing servers**</span>

<span style="color: rgb(0, 0, 0);">Go to the Admin Side &gt; Servers &gt; Click a server &gt; Build Configuration.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-12/scaled-1680-/nafhNLkamYyyquNC-image.png)</span>

<span style="color: rgb(0, 0, 0);">In the bottom right, there is a section called "Allocation Management". Each option is self explanatory.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/6G7kYw.gif)</span>

# Creating A New Server Container On The Panel

<span style="color: rgb(0, 0, 0);">To make a new server, you first need to make the allocation for it if you haven't already. Read the previous page first to do that before following this guide.</span>

<span style="color: rgb(0, 0, 0);">Head over to your Pterodactyl panel and go to the admin side which is the button in the top right corner, a cog icon.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/AX9tif.png)</span>

<span style="color: rgb(0, 0, 0);">Go to "Servers" on the left sidebar and "Create New" on the top right.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-06/scaled-1680-/sSzfD7nO4PdjgqGx-image.png) ![](https://jasmeow.pics/aE6dy3.png) </span>

##### <span style="color: rgb(0, 0, 0);">**Core Details**</span>

<span style="color: rgb(0, 0, 0);">Server Name is self explanatory. Call it the name of your server.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/9FXb0v.png)</span>

<span style="color: rgb(0, 0, 0);">Description can be left blank but if filled in, it appears on the panel under the server name in grey:</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/lMKiXD.png) ![](https://jasmeow.pics/IqDJmK.png)</span>

<span style="color: rgb(0, 0, 0);">Server Owner is the email address of the user you want to "Assign" the server to. Normally just put my name "Jasmine" and choose my email address. The user owning the server doesn't do anything in particular in the panel, just have to click the toggle switch on the client side of the panel if you assign it under you which is annoying sometimes.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/RtEljT.png) ![](https://jasmeow.pics/Ybu3nl.gif)</span>

##### <span style="color: rgb(0, 0, 0);">**Allocation Management**</span>

<span style="color: rgb(0, 0, 0);">If you've already made your allocation, you can select it here and carry on. If not, go follow that allocation guide. If no ports are available and it's greyed out, you need to go and make one first otherwise the server can't be made.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/PSFEAl.png)</span>

##### <span style="color: rgb(0, 0, 0);">**Application Feature Limits**</span>

<span style="color: rgb(0, 0, 0);">Remember that this is your own panel so you can set these values to be whatever you wish and even change them later with no issues.</span>

- <span style="color: rgb(0, 0, 0);">**Database Limit** - You can set to around 10.</span>
- <span style="color: rgb(0, 0, 0);">**Allocation Limit** - Put 0. It's not needed and we can always add more ports later.</span>
- <span style="color: rgb(0, 0, 0);">**Backup Limit** - Leave them as 0 unless you want to generate a quick backup on the panel.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/ZIUjnR.png)</span>

##### <span style="color: rgb(0, 0, 0);">**<span style="color: #000000;">Resource Management</span>**</span>

<span style="color: rgb(0, 0, 0);"><span style="color: #000000;">As stated previously, this is your own panel, you can set the limits now and change them later on. Don't limit yourself just because you should. You can overallocate and still run your network as it should be as you brought the system, you have control!</span></span>

- <span style="color: rgb(0, 0, 0);"><span style="color: #000000;">**CPU Limit** - Leave it 0. If you read the guide below the box, it states each CPU core is 100%, so leaving it 0 will use all the cores it can when booting a server or running it.</span></span>
- <span style="color: rgb(0, 0, 0);"><span style="color: #000000;">**CPU Pinning** - Unless you want to arrange maybe Proxy to cores 1-2, Survival to cores 3-4 for example, leave blank as it's really not needed unless you are advanced.</span></span>
- <span style="color: rgb(0, 0, 0);"><span style="color: #000000;">**Memory** - It's in multiples of 1024, binary. Don't Google search "5GB in MB"! If you put a non binary number, it will look strange on the panel as it's coded with binary in mind.</span></span>
- <span style="color: rgb(0, 0, 0);"><span style="color: #000000;">**Swap** - Leave 0. You don't need to modify it. Swap is disabled on all systems we manage as it is not efficient for what it's worth and its overhead is a massive headache to manage.</span></span>
- <span style="color: rgb(0, 0, 0);"><span style="color: #000000;">**Disk Space** - Same formatting as memory, binary formatted. For example, want 20GB? 20480. 50GB? 51200. 1024 times X (X being amount) equals the amount in MB.</span></span>
- <span style="color: rgb(0, 0, 0);"><span style="color: #000000;">**Block IO Weight** - Do. Not. Touch. This is very advanced and should only be modified by system administrators when required for your docker containers. You've been warned.</span></span>
- <span style="color: rgb(0, 0, 0);">**<span style="color: #000000;">Enable OOM Killer </span>**<span style="color: #000000;">- Pointless, leave ticked off. You are not a hosting company so it's not needed and if it's on it will just kill the container and leave you with a headache.</span></span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/yodDA2.png)</span>

##### <span style="color: rgb(0, 0, 0);">**Nest Configuration**</span>

<span style="color: rgb(0, 0, 0);">You select which category you need and which image you want to get setup on the panel. For example, we are using the Minecraft category and the Paper egg as this is for our survival server.</span>

- <span style="color: rgb(0, 0, 0);">**Nest** - The Pterodactyl term for the categories, such as "Minecraft" or "Discord".</span>
- <span style="color: rgb(0, 0, 0);">**Egg** - The different container images docker can deploy onto the panel, such as "Paper".</span>
- <span style="color: rgb(0, 0, 0);">**Skip Egg Install Script** - Leave it off. Not needed for most creations of servers.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/UCatPc.png)</span>

<p class="callout info"><span style="color: rgb(0, 0, 0);">This next part you can skip as these options can be changed at a later date. We would recommend scrolling to the bottom of the page and pressing "Create Server".  
  
![](https://jasmeow.pics/8mytMH.png)</span></p>

##### <span style="color: rgb(0, 0, 0);">**Docker Configuration**</span>

<span style="color: rgb(0, 0, 0);">This will normally be a drop down with the different images you can deploy. For Minecraft, Select which Java version you need, such as 1.8 needing Java 8 and 1.20.1 needing Java 17.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/rS3O4c.png)</span>

##### <span style="color: rgb(0, 0, 0);">**Startup Command** </span>

<span style="color: rgb(0, 0, 0);">This is where you add your Aikar flags if need be. You can do this later in the settings of the server.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/BMIFY3.png)</span>

##### <span style="color: rgb(0, 0, 0);">**Service Variables**</span>

<span style="color: rgb(0, 0, 0);">These are entirely dependent on the egg that you choose. For now, change them if you wish or leave them as they are, nothing will change and you can still make your server.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/jM1PGu.png)</span>

<span style="color: rgb(0, 0, 0);">Head to the bottom of the page and click "Create Server".  
  
![](https://jasmeow.pics/8mytMH.png)</span>

<span style="color: rgb(0, 0, 0);">If this fails, it will jump to the top of the page and show a warning with what's missing. In this case, the memory field was left blank, so we did 8192, 8GB of RAM.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/piLnsx.png)</span>

<span style="color: rgb(0, 0, 0);">If successful, you will see the below message.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/odfVxe.png)</span>

<span style="color: rgb(0, 0, 0);">To head to the client side of the panel, click this arrow along the top bar or click the servers icon next to your name in the top right corner.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/tuCQ6h.png) ![](https://jasmeow.pics/71OXx2.png)</span>

<span style="color: rgb(0, 0, 0);">Any questions, speak to one of the team.</span>

# Adding A Server To Your Proxy

<span style="color: rgb(0, 0, 0);">When using BungeeCord or Velocity, you will need to connect your internal servers to your Proxy server before you are able to connect to them using **/server servername**, with different ways to do this as some changes are dependent on the versions you allow your players to join on.</span>

<p class="callout info"><span style="color: rgb(0, 0, 0);">Remember, this applies to the "forks" of these proxies also, such as Waterfall for BungeeCord. The steps are the exact same to complete. Start with the "Both Proxies" section, then move onto the relevant section you need.</span></p>

<span style="text-decoration: underline; color: rgb(0, 0, 0);">**Don't know which proxy you're running?**</span>

<span style="color: rgb(0, 0, 0);">Go to the "Startup" tab on the proxy and you will see the jarfile name which is the proxy type. This name can be "waterfall.jar" but actually something completely different as people are lazy and rename the file and not the start up box name, but it is rare so just check with the command **bungee** or **ver** in the console.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/PgeIfL.png)</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/E78WPn.png)</span>

<span style="text-decoration: underline; color: rgb(0, 0, 0);">**Both Proxies:**</span>

<span style="color: rgb(0, 0, 0);">Click a server on the panel that you are wanting to configure for accessing over the proxy and go to "Files" along the top. Find the "server.properties" file and click on it.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/H0gJuU.png)</span>

<span style="color: rgb(0, 0, 0);">Find the line "online-mode=true" and change it to false. You set this to offline mode as the backend server won't be reachable when it's online as the proxy does the authentication to Mojang. If this was left on, you would be hitting Mojang twice, breaking your connection essentially.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/F8doQx.gif)</span>

<span style="color: rgb(0, 0, 0);">Save the file with Ctrl +S, or by pressing save in the bottom right. **CONTINUE READING FURTHER.**</span>

<span style="text-decoration: underline; color: rgb(0, 0, 0);">**BungeeCord:**</span>

<span style="color: rgb(0, 0, 0);">This type of proxy is the easiest to configure. Go to the "spigot.yml" file on the same server and update the "bungeecord: false" line to true, saving the file afterwards.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/JSoFRn.png) ![](https://jasmeow.pics/tKy7Lm.gif)</span>

<span style="color: rgb(0, 0, 0);">Go to the proxy server and open the "config.yml" file.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/uFrBo5.png)</span>

<span style="color: rgb(0, 0, 0);">Copy the server above and paste it below, like this:</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/xpDAHn.gif)</span>

<span style="color: rgb(0, 0, 0);">Update the details as required. Update the server name before the colon, such as "Survival:", the address as the one shown on the panel and the MOTD. An example is below:</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/ztlC3m.png) ![](https://jasmeow.pics/zXPFpr.png)</span>

<span style="color: rgb(0, 0, 0);">Make sure to update your priorities with which servers should be connected to. In our case, we have "Lobby" and "Survival" able to be connected to if either one goes offline.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/4LpPbY.png)</span>

<span style="color: rgb(0, 0, 0);">Reboot your proxy to apply the changes. If you don't reboot, you won't be able to join. Do note this will kick everyone on the network so do it during low peak downtime or maintenance.</span>

<span style="text-decoration: underline; color: rgb(0, 0, 0);">**Velocity - 1.13+:**</span>

<span style="color: rgb(0, 0, 0);">For MC networks who would like players to connect with versions 1.13 or above **only** need to complete the following. Versions 1.12 and below will **not** be able to join even if you have installed ViaVersion and its additional addons, ViaBackwards and ViaRewind.</span>

<span style="color: rgb(0, 0, 0);">Head to your Velocity proxy and open the "velocity.toml" file, finding the line "player-info-forwarding-mode". Set this to "modern" to allow the correct versions. If you look above this option, it tells you the explanation for each of the different forwarding modes. </span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/T38YcU.png)</span>

<span style="color: rgb(0, 0, 0);">A little bit further down, you will see the forwarding secret file line. Leave this as it is, we will be going to that file shortly.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/AhbBek.png)</span>

<span style="color: rgb(0, 0, 0);">Further down, locate the \[servers\] header and input the backend servers you have on your network, with the name, a equals sign, then the IP in quotations with the port. An example is below.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/75c8A4.png)</span>

<span style="color: rgb(0, 0, 0);">Go further down and locate the "try" line. Make sure to update it with your "lobby" and any others to try and connect to first when they connect to the proxy. In this case below, if lobby is offline, players can still get to survival. You can see how it's formatted with quotations, a comma, a space then another quotations field of the next server, surrounded in brackets.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/Vw7pmY.png)</span>

<span style="color: rgb(0, 0, 0);">Save the configuration and open the "forwarding.secret" file in the same proxy server. Copy that code as we will need to go and put it into our backend servers now.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/H0cCUk.png)</span>

<span style="color: rgb(0, 0, 0);">Head to your first backend server and:</span>

- <span style="color: rgb(0, 0, 0);">For 1.19 servers and above, go to the config folder &gt; paper-global.yml. </span>
- <span style="color: rgb(0, 0, 0);">For anything below, find the paper.yml in the root directory.</span>

<span style="color: rgb(0, 0, 0);">Reason for the above differences is because of the below when you update from 1.18 and below to 1.19:</span>

<span style="color: rgb(0, 0, 0);"> ![](https://jasmeow.pics/UMej0p.png)</span>

<span style="color: rgb(0, 0, 0);">Search this file with Ctrl +F and finding "velocity" should take you here. Update both lines to true (unless you are running a cracked server then leave online-mode to false) and the secret in the apostrophes. </span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/hLaICX.png) ![](https://jasmeow.pics/J5YdbV.gif)</span>

<span style="color: rgb(0, 0, 0);">Reboot both the proxy **and** the the server to apply. You will need to do this on all backend servers, repeat the exact same steps with the forwarding secret key. If you don't do this, you'll be kicked with failing to authenticate.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/Ab1Gvt.png)</span>

# Configuring A Standalone Plugin To Access A MySQL/MariaDB Database

<span style="color: rgb(0, 0, 0);">Plugins such as CoreProtect, GadgetsMenu and more ideally should have their information stored in databases as this is far more efficient and less prone to corruption than SQLLite files. </span>

<span style="color: rgb(0, 0, 0);">If you have ever seen "Data is malformed" error from a plugin spamming the console (Normally CoreProtect) this means that you didn't safely shutdown the server and corrupted the SQLLite file, and will need to delete it to start again from scratch, possibly losing over 50GB+ worth of */co i* history, causing a huge headache for you and your server admins meaning that griefers have the upper hand.</span>

---

<p class="callout warning"><span style="color: rgb(0, 0, 0);">For each plugin, make a different database. Don't merge them together as it makes organisation a headache later on down the line when you want to migrate to a new system and tables are merged. You may also cause conflicts when the table names are the same such as different CoreProtect servers, as the prefix is always co\_, so linking your Hub and Survival together would cause data mismatches due to them both using the co\_block table.</span></p>

<span style="color: rgb(0, 0, 0);">It is better to organise databases by location, such as: </span>

- <span style="color: rgb(0, 0, 0);">LuckPerms = Global = Proxy</span>
- <span style="color: rgb(0, 0, 0);">CoreProtect = One Server = Survival</span>

<p class="callout info"><span style="color: rgb(0, 0, 0);">For this example tutorial, we will be using LuckPerms.</span></p>

<span style="color: rgb(0, 0, 0);">Pick a server on your panel and go to the "Databases" tab. Here, in the bottom right corner, you will have "New Database". Click this and name it "luckperms", then click "Create Database".</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/gSCRDjfPc4TXCDEI-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/pnj3mn3V2O0U4OcN-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/x5XawMD4G1RiPkWP-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/h3B6TalNMMctkkpZ-image.png)![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/QX3sdTNtfVbCmRPl-image.png)</span>

<span style="color: rgb(0, 0, 0);">Go to the File Manager &gt; Plugins &gt; LuckPerms &gt; config.yml. Scroll down and firstly set the server name to what server you are going to be configuring the the plugin on. For example, "Proxy".</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/M6mBDYgEIy595PZq-image.png)</span>

<span style="color: rgb(0, 0, 0);">In the storage-method variable, set it to "MariaDB" from H2 to start linking to the database.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/SFxH9Tjy9Z6aRr7J-image.png)</span>

<span style="color: rgb(0, 0, 0);"><span style="color: #000000;">Scroll down a bit more and find the address. Replace with ***172.18.0.1*** as the IP and some plugins require "3306" as a colon next to the IP, some have a dedicated option for the port such as Port: 3306.</span></span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/uA7H4OqvpyJH5rE5-image.png)</span>

<span style="color: rgb(0, 0, 0);">Right click the tab with "Duplicate" then you will have one tab which has the configuration file open on it, and the other one you can click back to the ***Databases*** tab on the panel.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/I2YnwBsF1ijLSEUq-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/BtsGrnyDyndTsI9I-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/g4xduuxRAnvclHsm-image.png)</span>

<span style="color: rgb(0, 0, 0);">Copy the database name by clicking it on the panel, in our case, s2\_luckperms, and then putting it into the config. Repeat the same for the username. For the password, click the eye symbol and you will see the password to also put into the config.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/LTM7szINML2ZPVsS-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/URVsvj6rxyZopUaj-image.png)</span>

<span style="color: rgb(0, 0, 0);">You can now save it with Ctrl + S or the "Save Content" button.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/aNAjvSwPEOmDfVnI-image.png)</span>

<span style="color: rgb(0, 0, 0);">You can now restart the server and it will link successfully to the database.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/ogwHKuLsAiXa7aOo-image.png)</span>

# Configuring Centralised Plugins For Linked Database Access

<span style="color: rgb(0, 0, 0);">Plugins such as LiteBans and LuckPerms need to use the same database to communicate their information across all your servers successfully. There are many benefits to doing this rather than:</span>

- <span style="color: rgb(0, 0, 0);">Keeping your permissions in a flat file as they won't sync across all servers. This causes confusion for server owners with many ranks, having to remake them each time.</span>
- <span style="color: rgb(0, 0, 0);">Bans just being stored on one server so when they connect back through the Bungee network, they can join other servers, just not the one you banned them on!</span>

---

<p class="callout warning"><span style="color: rgb(0, 0, 0);">For each plugin, make a different database. Don't merge them together as it makes organisation a headache later on down the line when you want to migrate to a new system and tables are merged. You may also cause conflicts when the table names are the same such as different CoreProtect servers, as the prefix is always co\_, so linking your Hub and Survival together would cause data mismatches due to them both using the co\_block table.</span></p>

<span style="color: rgb(0, 0, 0);">Firstly, Pick a server on your panel and go to the "Databases" tab. Create a database for the plugin name. I would recommend making this database on the proxy as it's better to organise databases by location, such as:</span>

- <span style="color: rgb(0, 0, 0);">LuckPerms = Global = Proxy</span>
- <span style="color: rgb(0, 0, 0);">CoreProtect = One Server = Survival</span>

<p class="callout info"><span style="color: rgb(0, 0, 0);">For this example tutorial, we will be using LuckPerms. The same process applies to other global plugins.</span></p>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/gSCRDjfPc4TXCDEI-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/pnj3mn3V2O0U4OcN-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/x5XawMD4G1RiPkWP-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/h3B6TalNMMctkkpZ-image.png)![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/QX3sdTNtfVbCmRPl-image.png)</span>

<span style="color: rgb(0, 0, 0);">Go to the File Manager &gt; Plugins &gt; LuckPerms &gt; config.yml. Scroll down and firstly set the server name to "Proxy" or "Bungee" so LuckPerms knows it's the proxy.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/M6mBDYgEIy595PZq-image.png)</span>

<span style="color: rgb(0, 0, 0);">In the storage-method variable, set it to "MariaDB" from H2 to start linking to the database.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/SFxH9Tjy9Z6aRr7J-image.png)</span>

<span style="color: rgb(0, 0, 0);"><span style="color: #000000;">Scroll down a bit more and find the address. Replace with *172.18.0.1* as the IP and some plugins require "3306" as a colon next to the IP, some have a dedicated option for the port such as Port: 3306.</span></span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/uA7H4OqvpyJH5rE5-image.png)</span>

<span style="color: rgb(0, 0, 0);">Right click the tab with "Duplicate" then you will have one tab which has the configuration file open on it, and the other one you can click back to the *Databases* tab on the panel.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/I2YnwBsF1ijLSEUq-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/BtsGrnyDyndTsI9I-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/g4xduuxRAnvclHsm-image.png)</span>

<span style="color: rgb(0, 0, 0);">Copy the database name by clicking it on the panel, in our case, s2\_luckperms, and then putting it into the config. Repeat the same for the username. For the password, click the eye symbol and you will see the password to also put into the config.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/LTM7szINML2ZPVsS-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/URVsvj6rxyZopUaj-image.png)</span>

<span style="color: rgb(0, 0, 0);">You can now save it with Ctrl + S or the "Save Content" button.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/aNAjvSwPEOmDfVnI-image.png)</span>

<span style="color: rgb(0, 0, 0);">You can now restart the server and it will link successfully to the database.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/ogwHKuLsAiXa7aOo-image.png)</span>

<span style="color: rgb(0, 0, 0);">For the other servers, basically copy and paste the host, database, username and password onto your clipboard, pop onto the next server, and just edit the server name and storage-method. For example, let's go to the Hub. We need to rename the server to "Hub", set the storage-method to "MariaDB" then paste in our database information from the proxy, or you can follow the duplicate tab &gt; click and paste method above, whichever is easier for you.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/KYC6Zd8TwCAIVqtW-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/PL9VF4Ii90HO5tu7-image.png)</span>

<span style="color: rgb(0, 0, 0);">Provided an example GIF below of how you can simply just copy and paste the details over.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/ThM9Ac.gif)</span>

<span style="color: rgb(0, 0, 0);">Restart the server and it will link to the same database!</span>

# IP Aliasing On Your Panel For Staff Members

<span style="color: rgb(0, 0, 0);">If you run a Minecraft network where you have additional staff such as moderators, administrators or developers who access the control panel, you may want to think about IP Aliasing to hide particular IP's on the panel, such as your public IP, so it's not immediately visible to them.</span>

<span style="color: rgb(0, 0, 0);">For ease of convenience as we know server owners want to hide the IP address, we normally name the Public IP "Players-External", internal ports "Players-Internal", voting port on the proxy "Voting-External" and voting ports internally with proxy forwarding turned on "Voting-Internal". Additional allocations like "DiscordBot", "Servername-Dynmap" and others are included, dependent on your configuration.</span>

<span style="color: rgb(0, 0, 0);">We have written some warnings to go over beforehand so we solve any common FAQ's or confusion immediately.</span>

<p class="callout info"><span style="color: rgb(0, 0, 0);">Pterodactyl themes, addons or anything additional to the panel may not honor these IP Alias changes, such as hiding them, modifying them, or simply outright ignoring them, so that the IP gets exposed anyway.</span></p>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">Remember, this feature is entirely cosmetic and no configuration changes occur to effect players joining, ports being open or even hiding the ports which the server is assigned to, as these are always visible. </span></p>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">If you go to the "Network" tab of the server, be aware that if you've only changed one allocation but forgot another, this will expose the IP address. Triple check and confirm all is hidden with all ports ideally having IP Alias's to save headaches later down the line.  
  
![](https://jasmeow.pics/vxYtsH.png)</span></p>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">If you provide an account with administrator access in the panel, they can simply click on this button on the server page to see the IP address, rendering this masking very unnecessary. They can also go to the admin side of the panel &gt; Nodes &gt; Click The Node &gt; Allocations.</span>  
  
<span style="color: rgb(0, 0, 0);">[![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-09/scaled-1680-/ShblpoHGJKQmLosh-image.png) ![](https://jasmeow.pics/guUN2P.png)](https://docs.jasmeow.systems/uploads/images/gallery/2023-09/ShblpoHGJKQmLosh-image.png)</span></p>

<p class="callout danger"><span style="color: rgb(0, 0, 0);">SFTP is only operational over IP and not hostname if you are configured with CloudFlare proxying anyway, so your results with masking said IP address with Aliasing may vary, including becoming more of a chore for you than it is for a malicious staff member. Plugins also may expose the external IP address in their configuration files such as GeyserMC's Standalone proxy system, as shown below:</span>  
  
<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/2JwnV1.png)</span>  
</p>

*<span style="color: rgb(0, 0, 0);">Now that's all out the way, please follow these simple steps.</span>*

<span style="color: rgb(0, 0, 0);">To setup an IP Aliasing, go to the admin side of the panel &gt; Nodes &gt; Click the node you want in blue &gt; Click the "Allocation" tab.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/gMAs5Q.png)</span>

<span style="color: rgb(0, 0, 0);">See the middle column? Type any custom text in these boxes and it will show on the client side of the panel, such as *Players-External*. While you type, the box turns green which means it has been saved.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/tayQBl.png)</span>

<span style="color: rgb(0, 0, 0);">Now when you come out of admin, the custom text appears and not the IP, being completely disguised.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/A3VCJ1.png)</span>

<span style="color: rgb(0, 0, 0);">This is also hidden when you click into the server.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/BIJTz2.png)</span>

# Updating CPU, Disk, RAM & Startup Parameters For A Container

<span style="color: rgb(0, 0, 0);">Updating values for your containers so they have more CPU for starting up or running, more RAM for Minecraft or Storage for a plugin is very simple to do.</span>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">You will need to make sure your account is an Admin as you won't be able to modify these values otherwise. You can tell if you are admin or not by the gear in the top right.  
  
![](https://jasmeow.pics/kJTohG.png)  
</span></p>

<span style="color: rgb(0, 0, 0);">To change any of these values, head to your panel and click on the server you want to modify. For example, we can see that Earth Survival is nearing its storage limit on the container, 226.56GB out of 250GB, so we will pick this one to change and update. The same process applies to CPU%, RAM or other settings.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/UENVJy.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-09/scaled-1680-/nOJLt7B1HPglPesE-image.png) </span>

<span style="color: rgb(0, 0, 0);">Click on the box with the arrow along the top bar next to the "Activity" button then click on "Build Configuration."</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2024-01/scaled-1680-/Cyw1u8Cy52qzDnSV-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2024-01/scaled-1680-/QCS7tt6TQwhxGeLn-image.png)</span>

<span style="color: rgb(0, 0, 0);">You can also go to Admin &gt; Servers &gt; Click The Server &gt; Build Configuration.</span>

<span style="text-decoration: underline; color: rgb(0, 0, 0);">**CPU**</span>

<span style="color: rgb(0, 0, 0);">Unless you are a hosting company, leaving this at 0 is perfectly fine. You want your servers to use all the performance they can get and setting this to a value such as 200 will just limit you to 2 cores. Leave on 0 unless you really want to limit servers.</span>

<span style="text-decoration: underline; color: rgb(0, 0, 0);">**![](https://jasmeow.pics/RJqeEm.png)**</span>

<span style="text-decoration: underline; color: rgb(0, 0, 0);">**<span style="color: #000000;">RAM</span>**</span>

<p class="callout danger"><span style="color: rgb(0, 0, 0);"> **IMPORTANT NOTE:** If you use Akair flags, the RAM will not be modified. For example, if you have **-Xms8G** (Minimum) and **-Xmx8G** (Maximum), this means your server will stay stable at 8-8.5GB and not change, even if you change the below value. Go to the "Startup" tab in either the Admin side or normal side and check.  
  
![](https://jasmeow.pics/DH4VsX.png)  
</span></p>

<span style="color: rgb(0, 0, 0);"><span style="color: #000000;">RAM is calculated in binary, **1024**. When calculating how much RAM you want, **do the value you want times 1024**, such as 200GB x 1024 = 204800. Make sure you do binary and not 1000 as it will look daft in the panel, like the below:</span></span>

<span style="color: rgb(0, 0, 0);"><span style="color: #000000;">![](https://jasmeow.pics/GgZvlm.png)</span></span>

<span style="color: rgb(0, 0, 0);"><span style="color: #000000;">![](https://jasmeow.pics/PNk4CK.png) ![](https://jasmeow.pics/e8E7Fj.png)</span></span>

<span style="text-decoration: underline; color: rgb(0, 0, 0);">**Disk**</span>

<span style="color: rgb(0, 0, 0);">Disk is calculated in binary, the same as the RAM. Examples are below:</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/SnyH19.png)</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/Zlk4RH.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-12/scaled-1680-/l49Y7PbwQAIUSoYJ-image.png) ![](https://jasmeow.pics/nCdZhX.png)</span>

---

<span style="color: rgb(0, 0, 0);">Once you've changed the values you needed to change, </span><span style="color: rgb(0, 0, 0);">click "Update Build Configuration" in the bottom right hand corner.</span>

![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-10/scaled-1680-/w4ihrkj7dh1s9hkT-image.png)

<span style="color: rgb(0, 0, 0);">As success banner will appear at the top if the information entered is valid. Once done, click the boxed arrow button to go back to the normal client side of the panel.</span>

![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-10/scaled-1680-/OHE5PBFy8riWJhbB-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-10/scaled-1680-/PSGfXmNvwXPknIkh-image.png)

<span style="color: rgb(0, 0, 0);">Reboot your server for the changes to take effect. If you forget, the docker container will not update to the new information you have provided. For example, 250GB still instead of our new value, 300GB.</span>

<p class="callout info"><span style="color: rgb(0, 0, 0);">The panel will update the values on the interface as it is connected to the database, but the container has not received the new parameters yet until a container restart. Please do so at a convenient time.</span></p>

![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-10/scaled-1680-/SE5WQBm3Muik7lvA-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-10/scaled-1680-/36h8KXJIuUP7r5GU-image.png)

# Using Schedules On The Panel For Restarts & Events

<span style="color: rgb(0, 0, 0);">Head to your panel and click on the server that you need to make the schedule for then click on the "Schedules" tab along the top bar.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-10/scaled-1680-/XVmgoqu5ot8B3yzg-image.png)</span>

<span style="color: rgb(0, 0, 0);">Create a new schedule in the bottom right.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/OfqrVd.png)</span>

<span style="color: rgb(0, 0, 0);">In this window, give the schedule a name, such as "Restart Server". Next, we need to set the time it will restart using the Cronjob syntax. Not sure what this is? In Windows, you might be aware of a tool called "Task Scheduler", and in Linux it's called "Cronjob/Crontab's", basically the exact same system. To schedule a time, you write it in a way of **x x x x x**, looking like this in terminal:</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/JNurL1.png)</span>

<span style="color: rgb(0, 0, 0);">This means I want my script to run at **1AM** each day. The 0 means at the minute 0, the **1** means at **1AM**, the first **\*** means to run every day of the month, the second **\*** means every month and the third **\*** means to run every day of the week.</span>

- <span style="color: rgb(0, 0, 0);">**Show Cheatsheet** - This is helpful to look at common schedule times or you can use a Cronjob calculator to work out what time you want your schedule to run at <span style="color: rgb(35, 111, 161);">[https://crontab.guru/](https://crontab.guru/) </span></span>
- <span style="color: rgb(0, 0, 0);">**Only When Server Is Online** - Only complete the schedule when the server is in a running state, useful for stopping a restart schedule if the server is off for maintenance, causing it boot back up again and possibly causing headache.</span>
- <span style="color: rgb(0, 0, 0);">**Schedule Enabled** - Obvious enough! Turn on and off the schedule so it doesn't run.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/uEL18l.png)</span>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">This next part gets a little confusing, so please read in depth and don't presume anything, causing an unfortunate mistake. If you have any questions, don't hesitate to ask.</span></p>

<span style="color: rgb(0, 0, 0);">If you click into the schedule after creating it, you will see the below. You will notice three buttons. Edit, which allows you to change the schedule name and when it runs, New Task which adds tasks onto the schedule for them to run in what order of how they are created with delays if specified, and the Delete button in the bottom right to bin the schedule. Click on "New Task".</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/yD42Al.png)</span>

<span style="color: rgb(0, 0, 0);">You will see the below screen, with the "Action" drop down having three options, Send Command, Send Power Action and Create Backup. These options should be relatively easy to understand, with the power action option changing the Payload section to "Stop, Start, Restart and Kill" options.</span>

<span style="color: rgb(0, 0, 0);">For the Time Offset, you set how long after each task it should wait before running it, such as 10 seconds. This will run the schedule at 1AM for example and run the first task immediately, but the next task set to 10 seconds will run 10 seconds later.</span>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">Remember, Time Offset is the time from the **PREVIOUS** task, **NOT** the **FIRST** task. For example, an announcement for a keyall, then **10** seconds later the keyall, and finally **5** seconds later a save-all, would be **0, 10, 5**, not **0, 10, 15**. It's **5** seconds after the previous task, not **15** seconds, accidentally thinking it begins from the first task in the schedule. If you go to the bottom of this documentation, it has an example for a server restart and announcements.</span></p>

<span style="color: rgb(0, 0, 0);">The "Continue On Failure" option is turned on when the task does not run successfully but continues onto the next tasks in the schedule. This is useful for if you programmed the **broadcast** command but your server actually uses **sendbroadcast** for example. Normally leave this toggled off so you can find out why your schedule did not run unless you are certain everything is correct.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-10/scaled-1680-/xdSE6KE6F176Rscr-image.png)</span>

<span style="color: rgb(0, 0, 0);">Click "Create Task" in the bottom right. You are now done unless you need to add additional tasks.</span>

<p class="callout info"><span style="color: rgb(0, 0, 0);">An example is provided below basically explaining how to setup an announcement for a reboot of a Minecraft server for **60, 30 10** and **5** second broadcasts, then **a restart** command.</span></p>

<span style="color: rgb(0, 0, 0);">For example, I have an MC server that needs rebooting at 1AM but I want to announce in chat that the server is going down in 60 seconds, 30 seconds, 10 seconds and 5 seconds. After these announcements, reboot the server.</span>

<span style="color: rgb(0, 0, 0);">To do this, I would:</span>

- <span style="color: rgb(0, 0, 0);">put the first "Action" as **Send Command**...</span>
- <span style="color: rgb(0, 0, 0);">With the "Time Offset" being 0...</span>
- <span style="color: rgb(0, 0, 0);">And the "Payload" being **broadcast &amp;e&amp;lReboot in &amp;6&amp;l60 &amp;e&amp;lseconds!**</span>

<span style="color: rgb(0, 0, 0);">And press "Create Task". I would repeat the same steps for each message, putting the Time Offset as **0, 30, 20, 5**, **5**. If you think about it, you are sending the announcements at **0, 30, 20** and **5** seconds after each other of the previous, and **5** seconds after the previous announcement, you are restarting. It looks like the below:</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/UoYpCr.png)</span>

<span style="color: rgb(0, 0, 0);">You can click on "Run Now" in the bottom right to test your schedule and see if it runs successfully. If it runs with no problems, you are good to leave it running and come back to amend later if need be.</span>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">If you run into an issue where your schedule is stuck on "Processing" with a spinning circle, but not actually doing anything, this is due to a service called Pteroq not running properly. This is responsible for running email sending to subusers or reset password requests, schedule timings and other database related tasks. Let us know and we will connect into your system which is hosting the panel and run **systemctl restart pteroq**.</span></p>

# Being An Owner Of A Server & How To Change

<span style="color: rgb(0, 0, 0);">In Pterodactyl, you may notice that servers are owned by you or another individual, such as one of our team. The good news is that this means absolutely nothing for you directly and you need to remember that the panel is built for a hosting company in mind, so "ownership" of a server actually means that the "client", aka the "user" is the o*wner* of said server. Let's take this panel as an example:</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/zmAG8V.png)</span>

<span style="color: rgb(0, 0, 0);">If we go to **Admin &gt; Servers**, we can see that the Owner is me, Jasmine. Now, what this essentially means is that I don't need subuser permissions to access any feature of that server, such as schedules, stopping and starting it, backups, file manager, etc, like you set by going to the **Client side &gt; Click a server &gt; Users &gt; New User &gt; Click the permissions.**</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/yJts3g.png)</span>

<span style="color: rgb(0, 0, 0);">This also applies to the toggle switch in the top right on the main client side page, shown here:</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/8vUAkN.gif)</span>

<span style="color: rgb(0, 0, 0);">You can see that with the toggle set to **Showing others' servers,** my servers vanish and aren't viewable. This is because I don't have anymore servers on my panel, but if one was assigned to a different user, they would be visible in the toggle.</span>

<p class="callout danger"><span style="color: rgb(0, 0, 0);">To clear up any misconceptions of the interface. This does not mean the user who "owns" your servers **OWN** your servers (ironic sentence), it's a visual feature that applies to hosting providers, or if you rented from one, you would be the "owner" of that server, and you invite "subusers" to your server.</span></p>

<p class="callout danger"><span style="color: rgb(0, 0, 0);">If you are an administrator of the panel, denoted by the star next to the users email in **Admin Side &gt; Users**, you have access to **ALL** the servers **AND** permissions anyway, so whoever owns the server is **pointless.** Pterodactyl **has** to have an owner to a container (a server), no matter who it is.  
![](https://jasmeow.pics/ak0vuH.png)  
</span></p>

<span style="color: rgb(0, 0, 0);">**Let's take this example.** You are removing a previous developer who was a "owner" of a server and you want to take it back from them. If they are administrator, doing this is pointless, so remove their star first by going to **Admin Side &gt; Users &gt; Click the user &gt; Bottom right:** then saving with "Update User" in the bottom left. **![](https://jasmeow.pics/RhnWCl.gif) ![](https://jasmeow.pics/aeNTWu.png)**</span>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">They still have access to that server as they are "owner" of that server, still keeping in mind the panel is like a hosting company, so you need to "nick" it back.</span></p>

<span style="color: rgb(0, 0, 0);">Go to the **Users** page again and find your email.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/tcXBdV.png)</span>

<span style="color: rgb(0, 0, 0);">Once you've done that, head on over to **Servers** above **Users** on the left hand sidebar and click a server name in blue. Head to the "Details" tab along the top. Find "Server Owner" and update the email by typing it in. Once done, click "Update Details" in the bottom left.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/M1OI52.png) ![](https://jasmeow.pics/0NuJjS.png) ![](https://jasmeow.pics/VeCKzH.png)![](https://jasmeow.pics/yICuzj.gif) ![](https://jasmeow.pics/0l6mzc.png)</span>

<span style="color: rgb(0, 0, 0);">You've now become owner of that said server. </span>

<span style="color: rgb(0, 0, 0);">**Remember:** Being an owner of a container (a server in this case for simplicity sake) **does not** mean they can do anything malicious, neither do they "own" or "lock you out" of anything. The only action this stops you from doing is if you wish to remove their user on the panel, you must first assign all servers to a different user, such as yourself, before deleting them in **Admin Side &gt; Users &gt; Click the user &gt; Delete user.** You'll notice the button is grayed out until they've all been moved.</span>

<span style="color: rgb(0, 0, 0);">**![](https://jasmeow.pics/CsPv3T.png)**</span>

# Problems With Plugins Accessing Databases

<span style="color: #000000;">If you get an error like the below with your plugins connecting to databases:</span>

<p class="callout info"><span style="color: #000000;">Remember, all plugins display errors in different ways, such as LuckPerms below, but will fill the console with a few lines of errors to tell you it failed to link to the SQL database if you configured the plugin to use one.</span></p>

<span style="color: #000000;">![](https://jasmeow.pics/gnL29a.png)</span>

<span style="color: rgb(0, 0, 0);">Unfortunately, this is mostly always due to you entering the wrong endpoint IP address into the configuration file of said plugin. It can also be username and password being incorrect but it is normally the port not being open to the database host, either configured internally or not open on another system.</span>

<span style="color: #000000;">For your databases to work correctly, ensure that the plugins host/IP address is pointing to “**172.18.0.1**” in its config.yml file. The configuration file might be named differently for your plugin, but the action is the same. Make sure it is not “**localhost**” or “**127.0.0.1**” as it shows in the database creation panel, shown below. </span>

<span style="color: #000000;">All your servers sit in individual *houses* called docker containers, separated from each other. They cannot see outside themselves to the main internal system, root level. Docker, the system which makes these *houses* creates a private network adapter with the IP address “**172.18.0.1”** to all containers internally, so they all link together and know how to interact with one another. This makes them speak on this number to access the databases living on “**127.0.0.1**”. Think of it as a bridge linking two cities together.</span>

<span style="color: #000000;">Make sure not to make this mistake when creating databases in the panel and getting errors such as “Connection timed out”, "Communications link failure" and "timeout after 10000ms" in the console.</span>

<span style="color: #000000;">![image-1629134683719.png](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-08/scaled-1680-/pVSgzfGa3xjEJIH0-image-1629134683719.png)</span>

<span style="color: #000000;">![image-1629134321122.png](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-08/scaled-1680-/2YNMKKtGVnetVa73-image-1629134321122.png)</span>

<span style="color: #000000;">Another most common reason for plugins not accessing databases on the panel is because your systems are running UFW, which is unified firewall. At Jasmeow.Systems, we configure this appropriately with additional rules for security purposes but if 3306 is not allowed internally on your own system, the following rules can be added:</span>

```bash
# Allows Votifier Ports
ufw allow in on pterodactyl0 to 172.18.0.1 port 40001:40010 proto tcp
# Allows MC Ports
ufw allow in on pterodactyl0 to 172.18.0.1 port 25566:25580 proto tcp
# Allows Redis
ufw allow in on pterodactyl0 to 172.18.0.1 port 6379 proto tcp
# Allows MongoDB
ufw allow in on pterodactyl0 to 172.18.0.1 port 27017 proto tcp
# Allows MySQL
ufw allow in on pterodactyl0 to 172.18.0.1 port 3306 proto tcp
```

<span style="color: rgb(0, 0, 0);">Any questions, reach out to management.</span>

# Inviting Additional Staff Members To Your Control Panel

<span style="color: rgb(0, 0, 0);">For additional staff such as Developers and Administrators, you can invite them to each server with their own permissions using the Subusers feature of Pterodactyl. </span>

<span style="color: rgb(0, 0, 0);">Click into any server and click the "Users" tab. Click "New User" and put in their email into the top box.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2024-01/scaled-1680-/3OnlRj5RwjodUHWm-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2024-01/scaled-1680-/1RVoue0Ry71yRCfR-image.png) ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2024-01/scaled-1680-/Zmis51ILszZSSA9T-image.png)</span>

<span style="color: rgb(0, 0, 0);">For permissions, you can tick which ones they should have access to. They all have descriptions of what each one does so it's pretty self explanatory. </span>

<span style="color: rgb(0, 0, 0);">Some clients have requested if it is possible to disallow downloading of files but still allow edits, SFTP and other features but unfortunately this isn't possible in the current builds of the panel. This is due to this very annoying permission and it's description on the end of it. - </span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2024-01/scaled-1680-/K4J8HBbynGdiJH5E-image.png)</span>

<span style="color: rgb(0, 0, 0);">At the bottom of the permissions page, there is "Invite User". This will send the user an email to make an account on the panel then access the servers you've given them access to. You do this for all the other servers on the panel.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2024-01/scaled-1680-/dok2k4v8VxXcdvzu-image.png)</span>

<span style="text-decoration: underline;"><span style="color: rgb(0, 0, 0); text-decoration: underline;">**Admin Users**</span></span>

<p class="callout danger">Do not continue with this section unless you have a secondary owner, trusted developer or one of our team. They can simply update any startup parameters on the servers, delete servers in 5 seconds and more. Ask us if you are unsure before granting them full administrator.</p>

In the top right corner, click the cog for the Admin side of the panel.

![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2024-01/scaled-1680-/kiFoviSo7Ldxdb8F-image.png)

On the left, click "Users".

![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2024-01/scaled-1680-/wxV6JzV5Ql6chtRI-image.png)

Click on a users email.

![](https://jasmeow.pics/vCPWLY.png)

On the right, click the Administrator drop down and change it to "Yes". On the left, click "Update User". They are now admin users and can access all the servers and all the settings.

![](https://jasmeow.pics/HOWJZV.gif) ![](https://jasmeow.pics/Uz2IJj.png) ![](https://jasmeow.pics/sS4Ytr.png)

# Changing Docker Containers Images For Your Servers

<span style="color: rgb(0, 0, 0);">Pterodactyl runs all servers in containers using software called Docker. Docker uses a system called "images" which helps manage what a server needs to run, like virtual operating systems. These images can contain any application that is needed to be used to run the container, such as Java 8, 11, 16, 17 and more for Minecraft. When adding additional "Eggs" onto the panel on the admin side under "Nests", you can bring additional images onto the panel such as "NodeJS" for Discord bots, so it will download all the NPM packages needed for a normal bot with node modules.</span>

<span style="color: rgb(0, 0, 0);">When you click into a server, go to the "Startup" tab. In here, you can change the docker image which will be used to start up your server. For example, you can switch on a MC server from Java 8 to Java 17.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/bl2fAc.gif)</span>

<span style="color: rgb(0, 0, 0);">If you see an error like the below for example:</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/0zWU6c.png)</span>

<span style="color: rgb(0, 0, 0);">This means that you have the wrong NodeJS version selected on the Startup tab, needing to switch to a higher version. You can find them here - [https://nodejs.org/en/download/releases](https://nodejs.org/en/download/releases) </span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/zN9OmK.png)</span>

# Adding New Games & Services To Pterodactyl With Nests

<span style="color: rgb(0, 0, 0);">Go to your panel and head to the admin side.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/H70XIm.png)</span>

<span style="color: rgb(0, 0, 0);">Click "Nests" bottom left.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/UVYOcw.png)</span>

<span style="color: rgb(0, 0, 0);">You will see the following list. These are the default Eggs supplied with the panel when installed for the first time or restored after deletion when you update the panel. This is the reason why the red warning states don't edit the default Eggs as you will lose the changes.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/jhzfkY.png)</span>

<span style="color: #000000;">In this example, we want to add the Discord bot eggs, mainly NodeJS for starters as this is the most common bot language. In the top right, click "Create New":</span>

<span style="color: #000000;">![](https://jasmeow.pics/M2PT1w.png)</span>

<span style="color: #000000;">Give a name and description. An example is below, click Save in the bottom right when done.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/9KrJ3l.png) ![](https://jasmeow.pics/36dmCj.png)![](https://jasmeow.pics/H73v8m.png)</span>

<span style="color: #000000;">We now need to go and get our Egg file JSON from either:</span>

- <span style="color: #000000;">The Pterodactyl default Eggs Github. This is where you can find eggs for all sorts of supported games and services - [Link.](https://github.com/parkervcp/eggs)</span>
- <span style="color: #000000;">Your download from a forum site such as BuiltByBit in the zip file or other website hosting the raw JSON code you can copy and paste into a notepad and save it.</span>

<span style="color: rgb(0, 0, 0);"><span style="color: #000000;">As we are doing a Discord NodeJS Egg in our example, we will go to Parker's default Pterodactyl Eggs and find **Generic &gt; NodeJS &gt; egg-node-js-generic.json**.</span></span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-11/scaled-1680-/plaFI60IM0vV18ew-image.png)</span>

<span style="color: rgb(0, 0, 0);">Click on it then in the top left click "Raw".</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/qbozSh.png)</span>

<span style="color: rgb(0, 0, 0);">Do Ctrl + A &gt; Ctrl + C to select all of the text, then open up Notepad and paste it in with Ctrl + V.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-11/scaled-1680-/JJJ9k1N8eXucnpQ3-image.png)</span>

<span style="color: rgb(0, 0, 0);">Top right, press **File &gt; Save As** then in the popup window, change the **Save as type:** to **All Files**.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-11/scaled-1680-/JiNbeJ7YiTUab0fA-image.png)</span>

<span style="color: rgb(0, 0, 0);">Give the file a name and put **.json** on the end of it.</span>

<span style="color: rgb(0, 0, 0);">![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-11/scaled-1680-/mKL4SvKJ3wWV9Vs8-image.png)</span>

<span style="color: rgb(0, 0, 0);">Save, close Notepad and go back to Pterodactyl.</span>

<span style="color: #000000;">To import the Egg into the Nest for the panel to run the game or service properly, click "Import Egg" in the top left.</span>

<span style="color: #000000;">![](https://jasmeow.pics/pAOz1P.png)</span>

<span style="color: #000000;">In the popup, select the Egg file JSON on your computer and then select the Nest we made earlier, clicking "Import" once done.</span>

<span style="color: #000000;">![](https://jasmeow.pics/VSAJkI.png) ![](https://jasmeow.pics/49ZYVa.png)</span>

<span style="color: #000000;">Once imported, you will see the below success message and the Egg title:</span>

<span style="color: #000000;">![](https://jasmeow.pics/gA7LMY.png)</span>

<span style="color: #000000;">When you now go to make a server on the panel under Servers &gt; Create New, you will now see under the "Nest Configuration" section your newly created Nest and its Eggs you imported.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/c4x83Z.png)</span>

<span style="color: rgb(0, 0, 0);">For already existing servers, go to Servers &gt; Click the server you want &gt; Startup tab. Under the "Service Configuration" header you can then select the Nest &amp; Egg.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/ZBxh2u.png)</span>

**<span style="color: rgb(0, 0, 0);">Do note that if you do change the egg on an existing server, this will "rebuild" it, downloading the latest container image and running its script ready for use on next start, possibly making you lose data. Use with caution.</span>**

<span style="color: rgb(0, 0, 0);">If you see below, when you change the Egg, the Startup Command doesn't update but the Egg shows the Default Service Start Command. Make sure you copy the default line into the Startup command box if you are switching Eggs and don't have a custom configuration otherwise the server will try to start using the old Startup command. An example of this is switching a Javascript Egg to a NodeJS Egg and still has the **java -jar** command.</span>

**<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/swtJzq.png)</span>**

# Advanced Procedures & Issue Diagnostics

Contains advanced documentation and solutions to issues for your panel not commonly needed.

# Updating Panel To Latest Version (v1.12.1)

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">This guide will inform you how to update your panel to the latest version of Pterodactyl. The current version is **v1.12.1.** You can return to this guide to run the same commands again when the panel is updated.</span>

##### <span data-darkreader-inline-color="" style="color: #000000;"><span style="text-decoration: underline;">**<span style="--darkreader-inline-color: #e8e6e3;">Panel Update </span>**</span><span style="--darkreader-inline-color: #e8e6e3;">**<u>Procedure</u>**</span></span>

<p class="callout danger"><span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">Do not continue if you have custom addons, themes or other features installed on the panel. This **will** remove them and return the panel to the default state. This is your warning, and if not adhered to, there's no return unless you have a backup of your panel.</span></p>

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">Login to your VPS/Dedicated server where your panel is hosted. We first will make a backup just in case we mess up anything. Run the commands below to make a full backup of the current live panel.</span>

```
cd /var/www
tar -zcvf panel-before-upgrade.tgz pterodactyl
```

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">We will now begin the update. Navigate to your panel's web directory, which is /var/www/pterodactyl.</span>

```bash
cd /var/www/pterodactyl
```

![](https://jasmeow.pics/hBAgKv.png)

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">Run the command below to begin the update.</span>

```
php artisan p:upgrade
```

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">The first question that is asked whether to download the latest archived version from Pterodactyl's GitHub store. Before typing **yes**, make sure it goes to the github.com/pterodactyl/panel/...etc link, as shown below.</span>

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">[![image-1624966372365.png](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-06/scaled-1680-/cnkn3kn2mhPAWrUN-image-1624966372365.png)](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-06/cnkn3kn2mhPAWrUN-image-1624966372365.png)</span>

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">The upgrade system will then state that the webserver user &amp; group should be www-data. If it is not picked up the right one, type no and then update it like the below. Do the same for the "Your webserver group..." as well.</span>

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">[![image-1624966565384.png](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-06/scaled-1680-/DMOYfaYVo6XXnsx5-image-1624966565384.png)](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-06/DMOYfaYVo6XXnsx5-image-1624966565384.png)</span>

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">[![image-1624966622397.png](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-06/scaled-1680-/2vJXXTwBYI3tKAJr-image-1624966622397.png)](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-06/2vJXXTwBYI3tKAJr-image-1624966622397.png)</span>

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">Finally, it will ask if you would like to being the upgrade process. Type **yes.**</span>

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">[![image-1624966726941.png](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-06/scaled-1680-/WFASyZqCAzSsJ2AU-image-1624966726941.png)](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-06/WFASyZqCAzSsJ2AU-image-1624966726941.png)</span>

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">The upgrade system will then continue and fill the screen with the process of upgrading of the new panel, set its permissions and other important steps. Once it's half way through, it will pause and ask you if you would like to run the migration the databases with new updated information. Type **yes.**</span>

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">[![image-1624966768731.png](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-06/scaled-1680-/kLkI7EdxUfUy6Z55-image-1624966768731.png)](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-06/kLkI7EdxUfUy6Z55-image-1624966768731.png)</span>

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">[![image-1624966960764.png](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-06/scaled-1680-/R4IU1Nu2I3ksNgfb-image-1624966960764.png)](https://docs.jasmeowthecat.lgbt/uploads/images/gallery/2021-06/R4IU1Nu2I3ksNgfb-image-1624966960764.png)</span>

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">The panel upgrade is now complete. </span>

##### <span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">**<span style="text-decoration: underline;">Wings Update Procedure</span>** </span>

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">To upgrade wings, which is the daemon which runs the servers, copy the commands below on all your nodes which are linked to your panel. </span>

```
systemctl stop wings
curl -L -o /usr/local/bin/wings https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_amd64
chmod u+x /usr/local/bin/wings
systemctl restart wings
```

<span data-darkreader-inline-color="" style="color: #000000; --darkreader-inline-color: #e8e6e3;">Your wings update is now complete.</span>

# Panel Error 500 Or MySQL Database Connection Issues

This error appears for a number of reasons, so we'll break down each one. The first place to look is the Pterodactyl storage log folder which is in laravel,

![](https://jasmeow.pics/B6V1CG.png)

# Adding Additional Application Versions To Existing Eggs

<p class="callout warning"><span style="color: rgb(0, 0, 0);">**Note when doing this:** If you update your panel and use the commands from the pterodactyl documentation, your changes to the default eggs will be **overwritten**. You can ignore the command **php artisan migrate --seed --force** to prevent this but this isn't recommended on panel updates. The main suggestion here is to make nnew eggs for your custom changes.   
  
This does not remove the installed version on a server, just hides it again from the dropdown for the selected docker image.</span></p>

<span style="color: rgb(0, 0, 0);">In this example we will add Java 22 and 23 to the Minecraft Paper egg. Firstly, head on over to **Admin &gt; Nests &gt; Click the egg**. Look a few sections down and you'll see "Docker Images". In here, make a new line above/below where you want it to appear, and continue reading.</span>

![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2025-09/scaled-1680-/JPWy7GU3rJTtimlH-image.png)

<span style="color: rgb(0, 0, 0);">The format of Docker Images to show in the dropdown is **NAME PIPE SYMBOL IMAGE SOURCE.** For example, **J**</span><span style="color: rgb(0, 0, 0);">**ava 23|ghcr.io/ptero-eggs/yolks:java\_23**. You can normally find the image source from [https://ghcr.io/ptero-eggs/yolks](https://ghcr.io/ptero-eggs/yolks) and finding the right one you require. Let's go find Java 23. Click the URL above and then "View all tagged versions".</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/SWsVtv.png)</span>

<span style="color: rgb(0, 0, 0);">**Ctrl + F** and find the one you need. Search "java\_23" or "java\_" and you'll find it. Keep in mind there's many pages so you'll need to keep looking, such as *node\_* might be on page 3.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/AfvJOb.png)</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/jfy1xA.png)</span>

<span style="color: rgb(0, 0, 0);">As we've searched here, it has the name **java\_23**. If you click on the blue text of the image you need, copy the **ghcr.io/...** section after the FROM.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/Wh9Yq1.png)</span>

<span style="color: rgb(0, 0, 0);">Now paste this into the panel, put the **Name** at the front followed by a **Pipe Symbol**, and you're done.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/AgSpqG.gif)</span>

<span style="color: rgb(0, 0, 0);">This will now appear under servers with that egg under "Startup" tab.</span>

![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2025-09/scaled-1680-/0qOnGoW6AF96Qwqq-image.png)

# Wings Daemon Causing Containers To Null Route Or Can't Reach Internet

<span style="color: rgb(0, 0, 0);">Sometimes the wings daemon doesn't pass along route configuration properly to the docker containers which in turn break DNS and access for plugins to the outside internet. There are two solutions you can try, one is minor and the other is major, dependent on your infrastructure.</span>

<span style="color: rgb(0, 0, 0);">Run `nano /etc/pterodactyl/config.yml` and find the DNS entries under the docker header.</span>

<span style="color: rgb(0, 0, 0);">[![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/71s6CZZ18WBHeief-image.png)](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/71s6CZZ18WBHeief-image.png)</span>

<span style="color: rgb(0, 0, 0);">You will notice that the DNS entries are set to CloudFlare, and this is normally the case on every system. We will need to set these to Google, *8.8.8.8* and *8.8.4.4*. CloudFlare is not always better in every case and can actually cause DNS problems on software not routed through their CDN's.</span>

<span style="color: rgb(0, 0, 0);">[![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/scaled-1680-/l4ZWIfokhLKh9dUN-image.png)](https://docs.jasmeow.systems/uploads/images/gallery/2023-07/l4ZWIfokhLKh9dUN-image.png)</span>

<span style="color: rgb(0, 0, 0);">Save the file, Ctrl + X, Y then Enter. Restart wings with `systemctl restart wings`.</span>

<span style="color: rgb(0, 0, 0);">Start/restart your server and see if you have the same problem. If you still are experiencing a connection issue, try the solution below.</span>

<p class="callout danger"><span style="color: rgb(0, 0, 0);">This is **dangerous** to do on a hosted client node, such as a hosting company with multiple clients accessing their servers. It's relatively fine if it's just one client with a managed dedicated system, but don't always use this solution as a "go-to" and say job done. It's basically setting the internal networking for docker to the host and not pterodactyl's internal adapter, which can cause plugins to maliciously break out into the root system and containers to speak to the root system which is disabled by default. </span></p>

<span style="color: rgb(0, 0, 0);">Nano back into the wings configuration file and change the network mode under the docker section to "host" instead of "pterodactyl\_nw".</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/DQbkIR.png)</span>

<span style="color: rgb(0, 0, 0);">Restart wings using the same command. The issue will be permanently resolved as it's using the root systems network and configuration. Still not working? Reach out to one of the system administrators.</span>

# Containers Stopping/Crashing Due To Memory/Process Limit Reached

<span style="color: rgb(0, 0, 0);">You might be running into this error when running a large MC network or have a server which has many plugins, players and operations going on at the same time.</span>

<span style="color: rgb(0, 0, 0);">[![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2023-09/scaled-1680-/hJBMlG9VeD1RJvku-image.png)](https://docs.jasmeow.systems/uploads/images/gallery/2023-09/hJBMlG9VeD1RJvku-image.png)</span>

<span style="color: rgb(0, 0, 0);">Pterodactyl is running on a Linux OS, which has "PID's". PID means Process ID, and what happens is your server(s) are using more than 512 processes, causing said container to stop, crash or not start up at all. Windows operates the same way and has it's own process ID's for each application. Open Task Manager, go to the "Details" tab and you will see "PID" next to each service.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/jqDbnr.png)</span>

<span style="color: rgb(0, 0, 0);">By default, Pterodactyl Wings, the daemon, is set to 512 PID's, which to us is really daft. It's secure for a reason, as remember, Pterodactyl is mainly written for hosting companies. This is done just in case you have a client who decides to crash or stop a node from running efficiently by tar bombs, PID limits or RAM exploits.</span>

<span style="color: rgb(0, 0, 0);">The problem is, this causes an annoyance for networks as it's your own dedicated system and you shouldn't be bothered by this error. At Jasmeow.Systems, we set this to -1 by default to stop this from happening in the future. If you are running your own system however, SSH into the system and go to `nano /etc/pterodactyl/config.yml` and scroll down to find:</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/W3uvkY.png)</span>

<span style="color: rgb(0, 0, 0);">Change the number to -1.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/bAJXWF.png)</span>

<span style="color: rgb(0, 0, 0);">Ctrl + X, Y then enter to come out of nano. Then run `systemctl restart wings`.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/48Wja6.png)</span>

<span style="color: rgb(0, 0, 0);">That's it. Your servers won't do this anymore.</span>

# Changing The Panel Domain For Pterodactyl

<p class="callout warning"><span style="color: rgb(0, 0, 0);">This guide will be using CloudFlare with nginx installed on the server, with the record proxied using port 8443 for the daemon and SFTP requiring an IP connection instead of the hostname. If this doesn't make sense, ask.</span></p>

<span style="color: rgb(0, 0, 0);">Login to your DNS and firstly update the A record to what you wish it to be. For example, I am changing the domain from **manage.** to **panel.** </span>

<span style="color: rgb(0, 0, 0);">**![](https://jasmeow.pics/K1p7Zq.gif)**</span>

<span style="color: rgb(0, 0, 0);">Then SSH into your system and go to **/etc/nginx/sites-enabled** and update the **pterodactyl.conf** with your new domain. Easiest way is by nano'ing into it, doing Ctrl + \\ (Backslash), typing in "manage." then replacing with "panel." like I did below in the GIF. I then did Ctrl + X, Y then Enter.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/AjRIPm.gif)</span>

<span style="color: rgb(0, 0, 0);">Your next step is restarting nginx, **systemctl restart nginx**. Now head into **/var/www/pterodactyl** and update the .env file with the new domain under the **APP\_URL** option.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/Zlv40E.gif)</span>

<span style="color: rgb(0, 0, 0);">Now head to your panel, in our case *panel.jasmeow.systems* and login with the same credentials you had previously, everything is the same. Go to the Admin side &gt; Nodes &gt; Click the node &gt; Settings tab. Update the domain in the FQDN box as shown below, make sure your daemon port is 8443 (Or one of the [CloudFlare's HTTPS ports](https://developers.cloudflare.com/fundamentals/reference/network-ports/)) and click "Save Changes" in the bottom right.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/JFs4Vo.gif) ![](https://jasmeow.pics/y0RIax.png) ![](https://jasmeow.pics/XAP45n.png)</span>

<span style="color: #000000;">Head to the configuration tab and click Generate Token. Pop back into SSH and paste it in, allowing the overwrite.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/0LMtAE.png) ![](https://jasmeow.pics/8sFRCL.png)</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/289WrA.png)</span>

<span style="color: rgb(0, 0, 0);">Restart wings with **systemctl restart wings** - You are all done and wings should now come back online with a green heart. Not come online? Check the status of wings and solve the error or reach out for assistance.</span>

<span style="color: rgb(0, 0, 0);">![](https://jasmeow.pics/vMhmQU.png)</span>

# Understanding The Node Values - The Disk & RAM Information

<span style="color: rgb(0, 0, 0);">Pterodactyl panel was written with hosting companies in mind and not for just the average consumer, so a lot of the panel has admin side only additions which aren't used unless you are a host and API integrations with software like WHMCS modules which support such checks.</span>

<span style="color: #000000;">If you go to the Admin Side &gt; Nodes &gt; Click the node, you will see the following two information boards on the right hand side. You might be thinking "What? How's that 250 million billion whatever value? Isn't there only 500GB disk and 128GB RAM?"</span>

<span style="color: #000000;">![](https://jasmeow.pics/A2ry3W.png)</span>

<span style="color: #000000;"><span style="color: #000000;">You are correct, but the value can be modified to whatever number you wish. These values are not automatic, and you set these values when you create the node for the first time, or under the "Settings" tab on the top bar then "Allocation Limits" on the right.</span></span>

<span style="color: #000000;"><span style="color: #000000;"> </span></span><span style="color: #000000;"><span style="color: #000000;">![](https://jasmeow.pics/13q2Lr.png)</span></span>

<span style="color: #000000;"><span style="color: #000000;">Typically, people set this to unlimited, like a billion for example as you see here as it is your own dedicated system. As long as you watch the system resources in SSH such as **free -h, df -h** and other commands, you will have no issues and you can even setup remote monitoring like HetrixTools pings to monitor the resource levels. The value is a **dummy** value. Go nuts, set it to what you wish within reason and watch your limits in other ways. The panel does not care what you set this to as a personal user as it won't stop you making servers or starting them *manually*, it's for limiting creations of servers via the API as explained below.</span></span>

<span style="color: #000000;"><span style="color: #000000;">For a hosting company however, they use billing systems such as WHMCS and with the server module addon "Pterodactyl" or "PteroBill" which automatically creates the server on bill payment by the customer and makes them an account. Now, with these modules, they do API calls to check the node for available space, RAM and allocations before making the server just in case it has no room left. This is where you would set these values to a reasonable amount such as 128GB RAM (131072 MB) so when your billing system allocates a server, you don't run out of room for future customers, over allocating and worrying about degraded performance.</span></span>

<span style="color: #000000;"><span style="color: #000000;">**A common misconception** is that you should never over allocate as a hosting company. Over allocating is not bad as long as you manage it well. For example, Jasmine has a host herself and set her nodes to unlimited also, but she has many systems in place to warn her of over allocation and usage limits. Think about it, a client isn't going to need all 12GB 24/7 and will idle around 3-4GB when not in use, so allocating 3 servers in that 12GB space is perfectly fine. This applies to CPU also so setting the limit to 200% for 2 whole cores is fine. That server will use all 2 cores on boot but then idle around 20-30%.</span></span>

<span style="color: #000000;"><span style="color: #000000;">As a host running WHMCS, you will meet the error "There are no nodes to satisfy the request" every now and again, meaning that this is basically telling you "A node I am trying to use has run out of something, please check, I cannot auto create a server for this customer." Go check the Disk and RAM values for the node in question including confirming there is enough allocations available.</span></span>

# Getting Rid Of The “Invalid Java Version” Popup In Pterodactyl

<span style="color: rgb(0, 0, 0);">Simple config line.</span>

<span style="color: rgb(176, 19, 243);">*nano /var/www/pterodactyl/resources/scripts/components/server/features/JavaVersionModalFeature.tsx*</span>

<span style="color: rgb(0, 0, 0);">Delete all const MATCH\_ERRORS and enter whatever for the last line and put a comma, like the below for an example.</span>

<span style="color: rgb(0, 0, 0);">![](https://docs.jasmeow.systems/uploads/images/gallery/2024-02/hBPPV0Mn6GNrdWOO-embedded-image-4nqjqrn5.png)</span>  
<span style="color: rgb(0, 0, 0);"> </span>  
<span style="color: rgb(0, 0, 0);">Save, rebuild panel using ptero's community "build the panel assets" doc. </span>

<span style="color: rgb(0, 58, 255);">[https://pterodactyl.io/community/customization/panel.html](https://pterodactyl.io/community/customization/panel.html)</span>

# Disabling The Too Large Directory "First 250 Files" Limiter

<span style="color: rgb(0, 0, 0);">By default, the panel limits any directory on a server container to 250 files and folders at any given time in a single view. This is done to improve page loading performance, but can be majorly inconvenient for hosting companies or for networks with large file collections stored in flat format. </span>

<span style="color: rgb(0, 0, 0);">Go into /var/www/pterodactyl and edit the following file:</span>

```bash
cd /var/www/pterodactyl
nano resources/scripts/components/server/files/FileManagerContainer.tsx
```

<span style="color: rgb(0, 0, 0);">Locate the following code:</span>

```php
<div>
    {files.length > 250 && (
        <div css={tw`rounded bg-yellow-400 mb-px p-3`}>
            <p css={tw`text-yellow-900 text-sm text-center`}>
                This directory is too large to display in the browser, limiting the output
                to the first 250 files.
            </p>
        </div>
    )}
    {sortFiles(files.slice(0, 250)).map((file) => (
        <FileObjectRow key={file.key} file={file} />
    ))}
    <MassActionsBar />
</div>
```

<span style="color: rgb(0, 0, 0);">Replace it with:</span>

```php
<div>
    {sortFiles(files).map((file) => (
        <FileObjectRow key={file.key} file={file} />
    ))}
    <MassActionsBar />
</div>
```

<p class="callout info"><span style="color: rgb(0, 0, 0);">You can also simply update the code at ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2024-03/scaled-1680-/7HTVha956UN2qDtt-image.png) and at ![image.png](https://docs.jasmeow.systems/uploads/images/gallery/2024-03/scaled-1680-/WCPZ5nNc27IMCmBu-image.png) to be a higher number, so the limiter is still in effect. Make sure to update the reason it displays to not confuse clients or other staff members.</span></p>

<span style="color: rgb(0, 0, 0);">Build the panel assets from the following Pterodactyl guide - <span style="color: rgb(0, 139, 255);">[https://pterodactyl.io/community/customization/panel.html](https://pterodactyl.io/community/customization/panel.html) </span></span>

<span style="color: rgb(0, 0, 0);">Once done, you should see the directory no longer have the yellow banner along the top.</span>