Pterodactyl Panel — The Free and Open-Source Self-Hosted Game Control Panel

Logo

The free, open-source, game agnostic, self-hosted control panel for users, networks, and game service providers!

Github —:— Documentation —:— Discord

Pterodactyl Panel is here to help you manage multiple Minecraft (or other) servers from one centralized location, even if those servers are distributed across many different servers. The panel also allows you to run a network, setup servers for friends that are isolated from your system and your servers, or run a business (its got like, that squirty thing from the kitchen sink if we are going to call it everything but the kitchen sink).

So, why Pterodactyl? We built the panel to compete with the bigger panels on the market, but kept it free and open-source. We want to help communities grow and focus on their users, not their budgets and software bugs. I’ve been working on panels since 2013, and written plenty of disastrous code in that time, but Pterodactyl builds on those mistakes, and has a solid foundation and core behind it.

Interested already? Check out our Github, documentation, or join us on Discord. We’re always happy to help you use the panel, or if you’re interested in putting your PHP or NodeJS skills to use, we’d love to have you — ಠ_ಠ.

We can also set you up with a live demo of the software if you like to click around and play with features, just contact us on Discord to get that setup.

Still need some more convincing, check out what we have to offer:

Real-Time Console and Stats — All users have real-time access to their running server process and current server stats. Node overviews in the Admin CP also display real-time resource usage.

Security Focused — Bcrypt password hashing and AES-256-CBC encryption ensure that your data is protected. We support HTTPS out of the box and have designed our daemon to support it as well.

Docker Based — We make use of docker to run all of your server processes. This keeps everything isolated from both other servers and the core system itself. Docker also allows us to implement strict resource limits and operating environments tailored to each specific game. We also leverage Alpine Linux for our containers to keep the size and overhead small. (Alpine Linux is ~5MB in size, and uses <1 MB of memory when idle.)

Custom Daemon — We built our server controlling daemon from scratch to work specifically with the panel. No need to install any additional plugins on your servers to run the panel with them. Our daemon is also quite flexible and supports adding custom game types as needed. Out of the box it supports Minecraft (Sponge, Vanilla, and Spigot), Bungeecord, Source Dedicated Servers, Terarria (as best we can right now), and voice servers like Mumble and Teamspeak 3.

Extensible — We’re open source! All of our templates are created using the Blade Templating Engine which allows you to fully customize every aspect of the design. We also implemented a theme changer so that you can build off our base theme with your own customizations, or even build an entirely new theme.

Remote API — With support for remote requests you’re sure to grow your business with Pterodactyl Panel. Our API supports server creation, deletion, management, and so much more out of the box. Pterodactyl Panel’s API management is designed with security in mind and includes fine-tuned access controls including action permissions and IP controls.

Scheduled Tasks — Our task manager is admittedly still fairly simple, however it has full support for raw crontab syntax alloing you to get very advanced with timings. You can also pause tasks if needed.

Per-Server Databases — Need to add a logblock database for a specific server? No problem! The panel now supports adding individual databases for servers directly from the panel. You can also specify which server databases should run on, so you can keep your MySQL server elsewhere.

Subusers — Yup, got them. Add users to individual servers that you are the owner of (or let a subuser add other subusers) to handle every-day tasks. We’ve included very fine-tuned permissions for subusers so that you don’t have to give someone access to everything just to make sure your server is running smoothly (or for those of us with fat-fingers that accidentally the whole network stack).

Pictures!

Imgur Album With So Many Pictures

20 Likes

Interesting Concept.

1 Like

Is this just a clone of PufferPanel?

To some degree yes, seeing as I’m the one who wrote PufferPanel :slightly_smiling_face:.

However Pterodactyl is written with a new framework, has significantly different and new features, and uses a new and different daemon.

4 Likes

Awesome! I love PufferPanel, Ill have to give this a shot. Does it still use scales, and can I use my old installation of scales?

It does not use Scales, we wrote an entirely new daemon that actually properly interfaces the Docker API for container management, as well as changed the way processes are run and introduced a containerized SFTP service for servers. The new daemon is significantly more secure than Scales ever was. Unfortunately you cannot use an existing Scales install to run servers through Pterodactyl.

However, installing the new daemon is quite straightforward on most modern operating systems, and only requires a few commands, and a few minutes (or less) of installing components.

In terms of transferring existing servers, there is no way to do that automatically, but if you hop on our Discord I can walk you through the process, its pretty simple, just requires that you create a “new” server on the panel and manually move some files around.

One of the more highly requested recent features has been an improved file manager in the panel. Initially we started with a very simple one that supported editing a few files and was nothing amazing.

With 0.5.0 in the works, one of our first goals was to improve this important aspect of the panel. I’ve included some teaser photos below to give you an idea of what to look forward to.

First and foremost, we changed the layout, making it feel like a more natural experience. File and folder actions are now available by right clicking anywhere on the row for the file which brings up an options menu. If you want to edit the file name it is handled right there on the page, simply replacing the name with an input field for you to make your changes. Hit-enter-to-save type of deal.


The file manager also includes support for compression and decompression of files and folders through the dropdown menu. The daemon also supports bulk actions, which means you can expect that to appear in this file manager before release.

Nothing particularly exciting on the file editing page… oh wait! We implemented Ace Editor into the panel to give you something much better for editing files, as well as syntax highlighting and error reporting. You can also use ‘Ctrl+S’ to save the file if you dislike clicking buttons.

There are some other less visible changes, including more accurate listing icons for filetype. We’ve also modified the way we check if a file can be edited, and rely on mimetype data over extensions, so more files are editable through the panel. We also spruced up the javascript powering the editor to make it feel like it is loading faster (basically removed some fades that were slowing down the experience).

2 Likes

We released 0.5.0-pre.1 today for those of you who like to beta test and break things. Introduces that beautiful new file manager above, as well as improved IP aliasing an a few bug fixes.

If you don’t like bugs, stick to 0.4.1 for now. :slight_smile:

We’ve released 0.5.0 Pre-Release #3 today, and are excited about the new features and improvements we’ve made! Check out the changelog for the latest tow pre-releases below, and let us know what you think.

v0.5.0-pre.3 (Bodacious Boreopterus)

Added

  • Return node configuration from remote API by using /api/nodes/{id}/config endpoint. Only accepts SSL connections.
  • Support for filtering servers within Admin CP to narrow down results by name, email, allocation, or defined fields.
  • Setup scripts (user, mail, env) now support argument flags for use in containers and other non-terminal environments.
  • New API endpoints for individual users to control their servers with at /api/me/*.
  • Typeahead support for owner email when adding a new server.
  • Scheduled command to clear out task log every month (configurable timespan).
  • Support for allocating a FQDN as an allocation (panel will convert to IP and assign the FQDN as the alias automatically).
  • Refresh files button in file manager to reload file listing without full page refresh.

Changed

  • Creating a user, server, or node now returns HTTP/1.1 200 and a JSON element with the user/server/node’s ID.
  • Environment setting script is much more user friendly and does not require an excessive amount of clicking and typing.
  • File upload method switched from BinaryJS to Socket.io implementation to fix bugs as well as be a little speedier and allow upload throttling.
  • Server::getbyUUID() now accepts either the uuidShort or full-length uuid for server identification.
  • API keys are tied to individual users and no longer created through the Admin CP.

Fixed

  • Server overview listing the location short-code as the name of the node.
  • Server task manager only sending commands every 5 minutes at the quickest.
  • Fixes additional port allocation from removing the wrong row when clicking ‘x’.

v0.5.0-pre.2 (Bodacious Boreopterus)

Added

  • Added support for file copying through the file manager. #127
  • Creating new files and folders directly from the right-click dropdown menu in the file manager.
  • Support for setting custom user_id when using the API to create users.
  • Support for creating a new server through the API by passing a user ID rather than an email.
  • Passing ?daemon=true flag to /api/servers/:id will return the daemon stats as well as the daemon_token if using HTTPS.
  • Small check for current node status that shows up to the left of the name when viewing a listing of all nodes.

Changed

  • Support for sub-folders within the getJavascript() route for servers.
  • ALL API routes previously returning paginated result sets, or result sets nested inside a descriptive block (e.g. servers:) have been changed to return a single array of all associated items. Please see the updated documentation for how this change might effect your API use.
  • API route for /api/users/:id now includes an array of all servers the user is set as the owner of.

Fixed

  • File manager would do multiple up-down-up-down loading actions if you escaped renaming a file. Fixed the binding issue. #122
  • File manager actions would not trigger properly if text in a row was used to right-click from.
  • File manager rename field would not disappear when pressing the escape key in chrome. #121
  • Fixes bug where server image assigned was not being saved to the database.
  • Fixes instances where selecting auto-deploy would not hide the node selection dropdown.
  • Fixes bug in auto-deployment that would throw a ModelNotFoundException if the location passed was not valid. Not normally an issue in the panel, but caused display issues for the API.
  • Updated Socket.io client file to version 1.5.0 to match the latest release. Correlates with setting hard dependencies in the Daemon.
1 Like

Looks great, especially the scheduled tasks. I wonder though, why if you wrote PufferPanel are you now making another administration panel?

Thanks for the feedback.

Things just didn’t work at with the other people “working” on the panel who controlled some more important assets, so I left and took my work with me.

We’ve pushed a hotfix to our Docker images to fix an issue reported to us by a user involving certain plugins that make use of Javascript within them (specifically Featherboard).

Your daemons should automatically download and update to these new images are servers are updated and created. If your servers work currently, there is no need to do anything. They will be updated in due time.

Hot-diddily-dog! Its time for another release, this time even closer to production ready! Since everyone likes pictures, here we go.

A much better interface for managing your node’s allocations, and seeing which services are linked to them (as well as assigning aliases).
New Allocations

Better API management for all of your servers, with support for controlling individual servers as a user! (In progress still, basic parts implemented)
New API Management

A massively overhauled web-based filemanager. Forget FTP, forget poorly designed, bulk, unresponsive managers. This manager supports tons of actions, including drop to upload on files, and decompressing files right from the panel.
New Filemanager
File Moving
Upload Drop and Drop

Our resource graphing no longer goes backwards in time randomly… horray!
Pretty Graphs

Take control of your server listing as an admin. Search by specific fields or broad terms.
Server Search

v0.5.0-rc.1 (Bodacious Boreopterus)

This is the first release candidate for [email protected] and is considered to be feature complete. No new features will be added to the 0.5.0 line. This release is focused on finding and fixing any remaining bugs in the system. If there are few or no bugs we will continue on to an official production-ready release.

This release requires [email protected].

Added

  • Foreign keys are now enabled on all tables that the panel makes use of to prevent accidental data deletion when associated with other tables.
  • Javascript changes to prevent crashing browsers when large quantities of data are sent over the websocket to the console. Includes a small popover message on the console to alert users that it is being throttled.
  • Support for ‘ARK: Survival Evolved’ servers through the panel.

Fixed

  • Fixes bug where resetting a user password through the login form would not hold passwords to the same requirements as the rest of the panel (mixed case and at least one numeric character).
  • Fixes misnamed environment variable for Bungeecord Servers (BUNGE_VERSION -> BUNGEE_VERSION).
  • Fixes bug where no error would be displayed when adding a new server with an invalid owner email.
  • Fixes a bug that could allow an admin to delete the default allocation for a server causing all sorts of issues.
  • Databases assigned to a server are now actually deleted when a server is removed.
  • Fixes file uploads being improperly throttled.

Changed

  • Servers are now queued for deletion to allow for cancellation of deletion, as well as run in the background to speed up page loading.
  • Switched to new graphing library to make graphs less… broken.
  • Rebuild triggers are only sent to the node if there is actually something changed that requires a rebuild.
  • Dependencies are now hard-coded into the composer.json file to prevent users installing slightly different versions with different features or bugs.
  • Server related tasks now use the lowest priorty queue to prevent clogging the pipes when there are more important tasks to be run by the panel.
  • Decompressing files now shows a pop-over box that does not dismiss until it is complete.
  • Dates displayed in the file manager are now more user friendly.

Removed

  • Removed online player listing due to inconsistency in query library and an assortment of query related bugs. This will return in future versions when we get it working correctly.
3 Likes

Version 0.5.0 (Bodacious Boreopterus) Has Been Released!

I’m not going to post the full changelog like I normally do because it is enormous, but it can be found here.

If you’ve been on the fence we encourage you to hop on off and start using the best panel you can get. We’re more than happy to help you get your new panel setup, just join us in Discord. Installing the panel takes, on average, no more than 15 minutes from start to cheers.

We also sport one of the most secure server isolation mechanisms, and we’re proud of that. Anyone putting security on back burner because they “aren’t concerned with it at the moment” is playing a dangerous game. Don’t let your hard work and money go to waste just because a developer doesn’t want to secure their software.

Just how seriously do we take security? Servers are run in Docker containers, offering an initial layer of isolation from the core system. On top of this, we utilize many features in docker to lock containers down even more. Container logging disabled: check. Non-root users: check (in fact, users in the container don’t even exist on the host). Read-only root filesystem: check. Resource limits: check. Those are just a few of the steps we’ve taken to lock down servers and isolate them from the system.

So, what are you waiting for, give it a try!

2 Likes

State of the Incubator
Some eggciting news today — we’ve started development on v0.6.0 which focuses on improving remote management of nodes as well as service improvements.

If you’ve been having out in Discord recently you’ve probably seen some back and forth discussions regarding modifications to our current server deployment system. We’re moving to a more repository based implementation when it comes to services and options, as well as implementing support for things such as modpacks and pre-downloaded configurations. One of the biggest issues we currently face is long install times for services such as CS:GO and Ark, mostly due to file sizes. This puts a lot of network pressure on servers, especially if deploying multiple to the same node, or if handling updates.

We’ve started work on a centralized repository interface in the panel that nodes will communicate with. You can upload a compressed archive of files as a “Service Pack (“Pack”)” in the panel, which will then be communicated to nodes. Nodes maintain a local cache of packs, and can download, build, and update packs without any admin involvement. The other cool thing with these packs is that you don’t necessarily have to upload the final product for the pack. We support build scripts which are run inside a docker container of your choosing, which you can then use to handle any other dependency downloads. For example, maybe you want to run a custom modded server, but uploading everything would require a humongous file. You can upload a specific part of that pack, and ten use a build script that will run on the nodes and work with what you’ve uploaded. The final product is then cached on the node until it is determined that it needs to be updated.

This setup is also allowing us to create a more community driven collection of packs which you can share with friends or other administrators (assuming you have the rights to do so). Each pack can be exported as a template which someone can then upload to their own panel. These exports can include either the complete pack (archive and template file), or just the template file which admins can then use to upload their own archive to.

I must say…impressive.

Do you have a demo container up that someone could play in?

1 Like

@Zidane We don’t have a public beta up, but we’re more than happy to setup private instances for people to play with a bit to check it out.

We also have un-offocial docker containers for both the panel and daemon created by @parkervcp and a VM Image that can be used with most VM managers for development and testing purposes that was created by another community member. You can message me or find us on Discord if you’d like to try a live version :slight_smile:

Its been while, but fear not, we aren’t a dead project! In fact, since I announced the release of 0.5.0, we’ve pushed five new updates for the panel to address a few bugs, and implement some smaller features that didn’t need to wait until 0.6.0 such as automatic version checking and more detailed node information. The daemon has also been fixed a few times to address a few conditions race (:stuck_out_tongue:) that were occurring when starting or creating servers.

In terms of 0.6.0 development, not a ton has happened as I’ve been working to get 0.5 nice and stable for everyone before the holidays. We do have a working, albeit very beta, version of 0.6.0 that keeps all of your daemon configurations for services up-to-date on boot, and syncs them with the panel, so one edit on the panel syncs them to all nodes.

We’ve also added some community forums which are just hatching! https://forums.pterodactyl.io

I have had plenty experience with this - it is very user friendly and easy to adjust to after using some of the other panels (multicraft, mcmyadmin). Thanks for the great panel!

2 Likes

Does Pterodactyl work when it comes to modded and forge servers? I didn’t see any of those options when attempting to create a server.