Cloudflare Subdomains for Pterodactyl 2.0: play.example.com for every game server
Players would rather type play.example.com than 203.0.113.20:25565. Subdomain Manager, the extension sold on this page, adds a Subdomains tab to each server on your Pterodactyl 2.0 panel.
On sale on Gumroad. The SourceXchange listing is coming soon.
- Requires
- Pterodactyl 2.0 with the queue worker, and a domain whose DNS is at Cloudflare
- Tested with
- Pterodactyl 2.0.0-beta.2 (PHP 8.4)
- Package
- Official extension (.pteroext), no Blueprint
- Price
- $9.99, one panel
Customers pick a name, the DNS records appear in Cloudflare at once, and they stay correct when the server's address changes. It is a .pteroext for Pterodactyl 2.0's official extension system: no panel files changed and no Blueprint.

What Cloudflare Subdomains for Pterodactyl 2.0 does
A Subdomains tab on every server
For the owner and the subusers you allow: pick a domain, type a name (checked as it is typed), create, click the address to copy it, delete.
The right records per game
Minecraft Java servers get an SRV record (_minecraft._tcp) beside the A record, so players connect without the port. Other games get A/AAAA records; you set the type per egg.
Any number of domains
Each with its own Cloudflare API token, offered to every node and egg or only to the ones you choose. A name inside a zone works too: servers.example.com gives play.servers.example.com.
Records follow the server
Primary allocation, alias, egg and node address changes and completed transfers update the records; deleting a server deletes them. Resync repairs records changed in Cloudflare.
Never touches other records
Every record is changed or deleted only by the id Cloudflare gave it when the extension created it. A name already used by any record in the zone cannot be taken.
Works behind NAT and on 0.0.0.0
Records point at the allocation's alias or IP when it is public, otherwise at the public IPv4/IPv6 you set for the node.
How it works
- Install.
php artisan p:extension:install subdomain-manager.pteroext --enable, thenchown -R www-data:www-data extensions public/assets/extensions(your web server's user). - Create a Cloudflare token. In Cloudflare: My Profile → API Tokens → Create Token → template Edit zone DNS → your zone.
- Add the domain. In the panel: Admin → Subdomains → Add domain, paste the token, then check Record types and, for allocations on 0.0.0.0 or behind NAT, Node addresses.
Screenshots



Safe by design
- Names follow DNS label rules (a-z, 0-9, hyphen, 1-63 characters), are stored in lower case, can be reserved, and are unique per domain through a database unique index, so two customers asking for the same name at the same moment cannot both get it.
- Each user can create 5 subdomains per 10 minutes, and each server has a limit you set (default 1).
- If Cloudflare fails, times out or rate-limits while a subdomain is created, the customer gets a clear message and nothing is left half-made.
- Tokens (Zone, DNS, Edit) are checked with Cloudflare before they are saved, stored encrypted with your APP_KEY, never returned by any API, never queued and never logged. The extension only talks to api.cloudflare.com.
- Two subuser permissions of its own (read, manage), checked on every request. The admin page is for root admins only, with the panel's CSRF protection.
Pricing
One Pterodactyl panel installation; a test or staging copy is included. Updates within 1.x, full source.
Good to know
- Does not run on Pterodactyl 1.x or with Blueprint.
- The panel server needs outgoing HTTPS to api.cloudflare.com. Record updates after an address change run in the panel's queue.
- Use a user API token from My Profile in Cloudflare. Account-owned tokens are not supported.
- Tested against a local stand-in that follows Cloudflare's documented API v4, not against Cloudflare itself.
FAQ
Do customers need a Cloudflare account?
No. You add your domain and token once; customers only pick names.
Can I limit which servers get which domain?
Yes, per domain by node and by egg.
What happens when a customer changes the server's primary allocation?
The records are updated in the background, normally within seconds while the queue worker runs.
What if someone edits the records in Cloudflare?
Resync on the domain puts them back. Records the extension did not create are never touched.
Why does the panel call it Subdomain Manager?
Subdomain Manager is the extension's name inside the panel. It is sold as Cloudflare Subdomains for Pterodactyl 2.0.
Does it work with Pterodactyl 1.x or Blueprint?
No. It is built for Pterodactyl 2.0's own extension system.
Related tools
Discord Notifications for Pterodactyl 2.0
Pterodactyl 2.0 panel events in Discord: power actions, sign-ins, file edits, backups and admin changes. 138 events, per-server webhooks, rate limits handled.
Sign in with Paymenter for Pterodactyl 2.0
Free: a Sign in with Paymenter button on the Pterodactyl 2.0 login page. OAuth 2.0 with PKCE, verified-email matching, two-factor kept, admins protected.
Karelia Bridge
Customers open Pterodactyl 2.0 from Paymenter already signed in, and see due dates and unpaid invoices in the panel. Official 2.0 extension, no core edits.
Updated 2026-10-25