Why We Run Everything on Pterodactyl
The open-source panel that powers our game server infrastructure — and why we chose it over the alternatives.
The open-source panel that powers our game server infrastructure — and why we chose it over the alternatives.
When we were setting up the infrastructure, the panel decision was one of the most consequential choices we made. The panel is what customers interact with every day — it's how they start and stop their server, manage files, view console output, and create backups. Getting it wrong makes everything else feel wrong too.
Pterodactyl is open source, actively maintained, and has a large community ecosystem of eggs (server configuration templates) that means we can support a wide variety of game types without writing configuration from scratch every time. The architecture is also solid — the Wings daemon that runs on each node is isolated per-server using Docker containers, which gives us resource isolation and security boundaries between customer servers without a lot of custom infrastructure work on our end.
Eggs are JSON configuration files that define how a server type is set up, started, and what variables it exposes to the user. We maintain a set of custom eggs for the server types we support, tuned for our specific node configuration. We've also used the egg system for some non-game-server workloads — including, as we wrote about recently, the Node.js server that hosts this website.
The core Pterodactyl installation is mostly stock, but we've done some configuration work around resource limits, backup scheduling, and the startup detection strings for various server types. We've also integrated it with our billing system so that server provisioning and suspension happen automatically based on subscription status, without requiring manual intervention.
It's not a perfect piece of software — no software is — but it's the best option available for what we're doing, and the open-source nature means we can fix things ourselves when we hit a limitation rather than waiting on a vendor.