# How to Self-Host Pterodactyl Panel: Panel, Wings and Docker Explained

> Self-host Pterodactyl Panel on your own domain: what the Panel and Wings each need, a manual vs one-click comparison, and the upgrade and backup steps.

**Pterodactyl Panel** is a free, open-source web control panel for game servers. To self-host it, you run the Panel (a PHP app with MariaDB and Redis) on one server, then install **Wings** with Docker on each machine that runs games. xCloud's One Click App deploys the Panel side for you; Wings stays a manual install.

That split is the part most guides blur. Some tutorials install everything on one box with a long list of shell commands; others sell you "Pterodactyl hosting" without saying which half you are getting.

This guide separates the two halves clearly. You will see what each one needs, how a manual install compares with a one-click install, and the honest limits, including how the Panel version is pinned and updated. If Docker itself is new to you, read [**what Docker Compose is**](/what-is-docker-compose/) first.

![Pterodactyl Panel on one server talking to Wings nodes that run game servers in Docker](/_landing/blog/self-host-pterodactyl-image-1.png)

## TL;DR

- **Pterodactyl has two parts.** The Panel is the website your admins and players sign in to. Wings is the daemon that runs each game server in its own Docker container.
- **The xCloud One Click App is the Panel only:** v1.15.2, MariaDB 11.8.3, Redis 7.4.10, HTTPS on your domain and no public sign-up.
- **Wings still needs its own install** on each game node. Upstream says KVM always works and OpenVZ, Virtuozzo or LXC usually will not.
- **The template floor is small:** 1 CPU, 1024 MB of RAM and 8 GB of disk for the Panel stack.
- **The template ships the current security release.** xCloud moved the template to Panel v1.15.2, the upstream security release, on 3 November 2026.
- **Back up all five volumes together.** The `panel_var` volume holds the keys the Panel needs to read its own data.

## What We Found in the xCloud Template

Most "pterodactyl panel" results either walk you through 40 commands or never say which version you get. Here is what the xCloud One Click App for Pterodactyl actually ships, read from its template on the xCloud app-templates repository.

| **Item** | **What the One Click App ships** |
|---|---|
| Panel image | `ghcr.io/pterodactyl/panel:v1.15.2`, pinned by digest |
| Database | MariaDB 11.8.3, data in `panel_db` |
| Cache | Redis 7.4.10 (Alpine) with a generated password, data in `panel_redis` |
| Web access | Only reachable through your domain over HTTPS, not by server IP and port |
| Upload limit | 100 MB, matching the Panel's own upload limit (set in the xCloud template) |
| First admin | Created from the install form; password generated if you leave it blank (12+ characters) |
| Sign-up | None. Guests get a 403 on `/admin` |
| reCAPTCHA | Off, so upstream's shared keys do not block your login |
| Mail | Written to the app log until you add a full SMTP block |
| Volumes | `panel_var`, `panel_logs`, `panel_nginx`, `panel_db`, `panel_redis` |
| Minimum server | 1 CPU core, 1024 MB RAM, 8 GB disk |
| Not included | Wings, game ports (TCP or UDP), the host Docker socket |

If you only remember one line: **the database and Redis never get a public port**, and the Panel itself is reachable only through your domain, not by server IP and port.

## Panel vs Wings: What Each One Does

The official Wings docs put it plainly: "Wings runs on each node, manages Docker, and runs your game servers for the Panel." The Panel is the control plane, so it holds users, locations, nodes, server settings and schedules.

That design is why one Panel can manage many nodes. Game load lands on the nodes, not on the server that hosts your admin website.

It also explains the hardware split. The Panel is light. Your nodes carry the real load, sized by the games and player counts you run.

### What the Panel needs (manual install)

The official [**Pterodactyl 1.x getting-started page**](https://docs.pterodactyl.io/v1/panel/getting-started) lists PHP 8.2 or 8.3 (8.3 recommended), MySQL 5.7.22 or newer (MySQL 8 recommended) or MariaDB 10.2 or newer, Redis, a web server, `curl`, `tar`, `unzip`, `git` and Composer 2. Supported systems include Ubuntu 22.04 and 24.04, Debian 11 to 13, and RHEL, Rocky or AlmaLinux 8 and 9.

On top of that, a manual install means a queue worker service, a cron entry, an NGINX site, a certificate and an admin user. Manual install guides cover each of those by hand.

### What Wings needs

The [**official Wings install page**](https://docs.pterodactyl.io/v2/wings/installing) says Wings needs a Linux system that can run Docker containers, plus `curl` and Docker. It does not run on Windows.

The catch worth knowing: "If your provider uses Virtuozzo, OpenVZ, or LXC virtualization, Wings probably will not run," and "KVM always works." Check a node with `systemd-detect-virt` before you buy a year of it, and compare KVM plans in our [**VPS providers comparison**](/vps-providers-compared/).

Wings also needs its own ports open on the node, so lock the rest down with the basics from [**how to secure a VPS**](/maximize-your-vps-security/). Wings listens on `8080/tcp` and `2022/tcp` by default (see its [default configuration](https://github.com/pterodactyl/wings/blob/develop/config/config.go)), and each game needs its own ports on top.

## Manual Install vs the xCloud One Click App

Here is the Panel side of both paths, side by side. Wings is a manual install in both.

![Manual Pterodactyl Panel install compared with the xCloud One Click App](/_landing/blog/self-host-pterodactyl-image-2.png)

| **Panel task** | **Manual install** | **xCloud One Click App** |
|---|---|---|
| PHP, Composer, web server | You install and patch them | Official Docker image, pinned |
| MariaDB and Redis | You install, secure and tune them | Private containers, generated passwords |
| SSL certificate | You set up issuing and renewal | HTTPS on your domain |
| First administrator | Created from the command line | Created from the install form |
| Panel version | Whatever you download | Pinned to v1.15.2 by the xCloud template |
| Backups | Your own scripts | **Backup → Previous Backups** and scheduled backups |
| Wings and game ports | Your job on every node | Still your job on every node |

The trade-off is control versus time. A manual install lets you pick every version on day one. The one-click path removes the database, certificate and web server work, but you accept a pinned image and Docker-based layout. Our [**Vaultwarden self-hosting guide**](/self-host-vaultwarden-password-manager/) follows the same one-click pattern, and [**the best Docker hosting providers**](/best-docker-hosting-providers/) roundup covers other places to run containers.

## Step-by-Step: Self-Host Pterodactyl Panel on xCloud

These steps follow the [**One-Click App templates guide**](/docs/how-to-use-one-click-app-templates-in-xcloud/). You need an xCloud account, an NGINX server (xCloud-managed or your own VPS) and a domain such as `panel.example.com`.

### Step 1: Pick a server

Go to **Sites → New Site**, select **One-Click Apps** and search for **Pterodactyl**. Container apps show **Runs on Nginx, Docker**, so choose an NGINX server; if Docker is missing, xCloud installs it during the app install.

OpenLiteSpeed servers cannot run Docker. See [**how to enable Docker on an NGINX server**](/docs/enable-docker-on-an-nginx-server-in-xcloud/) if you are unsure.

### Step 2: Fill in the install form

Choose **Go Live** for your own domain, or **Demo Site** to try it on a temporary URL first. You can change domains later, as the [**domains and endpoints guide**](/docs/manage-one-click-app-domains-and-public-endpoints-in-xcloud/) shows. Then enter the administrator email, username, first name and last name.

Leave the password blank to have one generated. Click **Create**.

### Step 3: Wait for first boot

First boot can take a few minutes. The Panel runs its database migrations before its web server starts, so a slow first load is normal.

Follow progress in **Recent Events** on the site overview, and select **View All** if a task fails.

### Step 4: Sign in and save the password

Open the site's **Credentials** page in xCloud and copy the administrator password, store it in your password manager, then open `https://panel.example.com` and sign in. There is no first-visitor sign-up, so nobody else can claim the admin account.

Change the password inside the Panel later, not by editing the environment file. The template notes say to rotate it in the Panel once the account exists.

### Step 5: Add SMTP so password resets work

Until you set up mail, the Panel writes emails to its log. Open **Environment**, add `MAIL_HOST`, `MAIL_PORT`, `MAIL_USERNAME`, `MAIL_PASSWORD`, `MAIL_ENCRYPTION` and a real sender, switch the mail driver to `smtp`, then click **Save & Redeploy**.

Save & Redeploy restarts the containers briefly, so do it before you invite players.

### Step 6: Create a location and attach a Wings node

In the Panel's admin area, create a location, then add a node with its domain or IP. Install and configure Wings and Docker on that node by following the [**official Wings guide**](https://docs.pterodactyl.io/v2/wings/installing), then open the Wings and game ports on that node's firewall.

This step happens on the node, not on xCloud. The One Click App does not install or monitor Wings.

## Keep It Safe: Backups and Upgrades

### Back up all five volumes together

Open **Backup → Previous Backups** and click **Backup Now** for a first snapshot. Then set a schedule under **Backup → Backup Settings**, and add a remote destination so the only copy is not on the same server.

Docker app backups in xCloud capture named volumes, the `docker-compose.yml` and the `.env` file together. The [**Docker backup guide**](/docs/backup-and-restore-docker-apps/) covers retention and restores.

Here's the part that trips people up: `panel_var` holds the `APP_KEY` and `HASHIDS_SALT`. Lose those and a restored database is hard to use, so never back up the database alone.

### Upgrade on purpose, not by accident

Upstream published **v1.15.2** as a security release (see the [**Pterodactyl releases page**](https://github.com/pterodactyl/panel/releases/tag/v1.15.2)), and xCloud's template now ships Panel v1.15.2, pinned by digest. A new install gets that version with no extra steps.

**App Actions → Update** pulls the image your app was deployed with, so it never jumps to a different release on its own. Template updates change new installs only, so an install made before 3 November 2026 stays on v1.15.1 until you upgrade it on purpose: read the upstream release notes and back up all five volumes first. Take a full backup before you run it, so you can restore all five volumes together if anything goes wrong. The [**Update and Compose guide**](/docs/update-a-one-click-app-and-edit-its-docker-compose-in-xcloud/) explains what Update does.

## What the One Click App Does Not Do

- **No Wings, no game hosting.** The template is the Panel only. Game processes run on nodes you install and patch yourself.
- **No automatic Panel upgrades.** The image is pinned, and catalog updates only change new installs.
- **No HSTS header by default.** Add it yourself if your security policy needs it.
- **No email until you configure SMTP.** Password resets and invites stay in the log until then.

To undo the whole install, restore a backup or delete the site; your Wings nodes are separate servers and are not touched.

## Common Problems and Fixes

| **Problem** | **Likely cause** | **Fix** |
|---|---|---|
| Panel shows an error for the first few minutes | Migrations still running | Wait, then check **Recent Events** |
| Password reset emails never arrive | Mail still uses the log driver | Add the full SMTP block in **Environment** |
| Node shows as offline in the Panel | Wings not running or its port blocked | Check Wings and the node firewall |
| Wings fails to start containers | Node uses OpenVZ, Virtuozzo or LXC | Move the node to a KVM VPS |
| Upload fails on a large file | Over the 100 MB limit | Keep uploads through the Panel under 100 MB |

## Alternatives Worth a Look

Pterodactyl is not the only open-source game panel. **Pyrodactyl** is built on Pterodactyl, **Pelican Panel** is an alternative in the same ecosystem that also uses Wings, and **Hydrodactyl** is a fork that pairs with Elytra nodes.

xCloud has a One Click App for each: [**Pelican Panel**](/pelican-panel-hosting/), [**Pyrodactyl**](/pyrodactyl-hosting/) and [**Hydrodactyl**](/hydrodactyl-hosting/). If you only need one Minecraft world and no panel at all, [**Minecraft hosting**](/minecraft-hosting/) runs the game server directly.

Rule of thumb: pick Pterodactyl when you want a stable 1.x release, since the xCloud templates for Pelican (beta) and Pyrodactyl (pre-release) are earlier in their life. Try any fork on a **Demo Site** first.

## Run Your Pterodactyl Panel on xCloud

If you want the Panel live today and your evenings spent on the game nodes, [**Pterodactyl Panel hosting on xCloud**](/pterodactyl-hosting/) gives you the pinned Panel, MariaDB, Redis and HTTPS from one form. Browse the rest of the catalog on [**One Click Apps**](/one-click-apps/), and compare server sizes on [**pricing**](/pricing/).

👉 Read the [**One-Click App templates guide**](/docs/how-to-use-one-click-app-templates-in-xcloud/) before your first install.

**Deploy the Panel, attach your first Wings node, and take a backup before you invite a single player.**

## Get Your Game Server Panel Live This Week

Self-hosting Pterodactyl is two jobs: a light Panel that needs care with keys, mail and upgrades, and Wings nodes that need KVM, Docker and open ports. Treat them separately and the whole setup gets simpler.

This week, deploy the Panel on a demo site, add SMTP, take a full backup and attach one node. Then make a backup part of every upgrade, before you click Update.

If you have found this blog helpful, feel free to [**subscribe to our blogs**](https://xcloud.host/blog/) for valuable tutorials, guides, knowledge, and tips on web hosting and server management. You can also join our [**Facebook community**](https://www.facebook.com/groups/xcloud.community) to share insights and engage in discussions.

## Frequently Asked Questions

### Is Pterodactyl Panel free?

Yes. Pterodactyl Panel is free and open source under the MIT licence. You still pay for the servers it runs on: one for the Panel and one or more for the Wings nodes that host your games.

### Can I run the Pterodactyl Panel and Wings on the same server?

Yes, on a manual install you can run both on one server. The xCloud One Click App does not: it ships the Panel only, with no Wings daemon, no game ports and no Docker socket, so your game servers run on a separate node.

### What are the minimum requirements for Pterodactyl Panel?

The xCloud template asks for 1 CPU core, 1024 MB of RAM and 8 GB of disk for the Panel, MariaDB and Redis together. A manual install on 1.x needs PHP 8.2 or 8.3, MySQL 5.7.22+ or MariaDB 10.2+, Redis, a web server and Composer 2.

### Does Pterodactyl work with Docker?

Yes, in two places. Wings needs Docker on every node, because each game server runs in its own container. The Panel can also run as the official Docker image, which is how the xCloud One Click App deploys it.

### Does the xCloud one-click install update Pterodactyl automatically?

No. New installs get the Panel version the template pins, now v1.15.2, and App Actions → Update pulls the same image your app was deployed with. Back up all five volumes before any upgrade.

### Should I use Pterodactyl, Pelican or Pyrodactyl?

All three are open-source game server panels. Pyrodactyl is built on Pterodactyl, and Pelican is an alternative that also uses Wings nodes; on xCloud, Pelican is a beta and Pyrodactyl is pre-release, while Pterodactyl is v1.15.2. Try any of them on a demo site first.
