← All articles
A computer generated image of a cluster of spheres

Pterodactyl: Self-Host Any Game Server With a Web Panel

Gaming 2026-03-28 · 4 min read pterodactyl game server self-hosted docker minecraft
By HomeLab Starter Editorial TeamHome lab enthusiasts covering hardware setup, networking, and self-hosted services for home and small office environments.

If you run game servers at home, you've probably done the dance: SSH in, wrestle with startup scripts, try to remember which screen session is which, and repeat every time a friend asks why the Minecraft server is down. Pterodactyl Panel solves this by wrapping all of that in a clean web UI with user management, resource limits, and per-server consoles.

Photo by Logan Voss on Unsplash

This guide walks through installing Pterodactyl on a homelab machine running Ubuntu 22.04, setting up the Wings daemon on a game server node, and deploying your first server.

What Pterodactyl Actually Is

Pterodactyl has two components:

Each game server runs in its own Docker container. The Panel ships with "eggs" — configuration templates — for Minecraft (Java and Bedrock), Valheim, CS2, Terraria, Rust, Factorio, and dozens more. Custom eggs exist in the community for anything not in the default set.

Prerequisites

You'll need:

If you're running both Panel and Wings on the same machine (fine for home use), make sure it has at least 6GB RAM.

Installing the Panel

1. Install dependencies

apt install -y php8.3 php8.3-{cli,gd,mysql,pdo,mbstring,tokenizer,bcmath,xml,fpm,curl,zip} \
  mariadb-server redis-server nginx tar unzip git curl

2. Create the database

mysql -u root -p
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'your_password';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
FLUSH PRIVILEGES;

3. Download the Panel

mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
tar -xzvf panel.tar.gz
chmod -R 755 storage/* bootstrap/cache/

4. Configure and install

cp .env.example .env
composer install --no-dev --optimize-autoloader
php artisan key:generate --force
php artisan p:environment:setup
php artisan p:environment:database
php artisan migrate --seed --force
php artisan p:user:make

The p:environment:setup command walks you through your domain, timezone, and email settings interactively.

5. Set up cron and queue worker

# crontab -e
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1

Create a systemd service for the queue worker (saves to /etc/systemd/system/pteroq.service):

[Unit]
Description=Pterodactyl Queue Worker
After=redis-server.service

[Service]
User=www-data
Group=www-data
Restart=always
ExecStart=/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3

[Install]
WantedBy=multi-user.target
systemctl enable --now pteroq

6. Configure Nginx

Point Nginx at /var/www/pterodactyl/public. The official docs provide a complete Nginx config — use that verbatim and update the server_name to your domain.

Like what you're reading? Subscribe to HomeLab Starter — free weekly guides in your inbox.

Installing Wings

On your game server node:

# Install Docker
curl -sSL https://get.docker.com | sh
systemctl enable --now docker

# Install Wings
mkdir -p /etc/pterodactyl
curl -Lo /usr/local/bin/wings \
  https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_amd64
chmod +x /usr/local/bin/wings

Back in the Panel, go to Admin > Nodes > Create New. Fill in your Wings host's public IP (or local IP if Panel and Wings are on the same network), leave the daemon port at 8080, and save. Then click Configuration on the node and copy the config block.

Paste it into /etc/pterodactyl/config.yml on the Wings host, then start Wings:

wings --debug  # first run to verify it connects

Create the Wings systemd unit at /etc/systemd/system/wings.service and enable it:

systemctl enable --now wings

When the node shows as connected in the Panel, Wings is working.

Creating Your First Server

  1. Admin > Locations — create a location (e.g., "homelab")
  2. Assign your node to that location
  3. Go to Servers > Create New
  4. Pick an egg (e.g., Minecraft Java — Paper)
  5. Set RAM, CPU, and disk limits
  6. Set the game-specific variables (Minecraft version, etc.)
  7. Click Create

The server will install automatically. You can open a real-time console from the Panel, start/stop/restart with one click, and see live CPU/RAM graphs per server.

User Management

Pterodactyl supports sub-users. You can give a friend access to only their server — they get a Panel login with a console, file manager, and the ability to restart but not reconfigure the machine. No more sharing SSH credentials.

Admin accounts can set per-server resource allocations, which matters when multiple people are running servers on the same node.

Useful Tips

Custom eggs: The community maintains a large collection of unofficial eggs at github.com/parkervcp/eggs. Factorio, Project Zomboid, and Satisfactory all have working eggs there.

Backups: Pterodactyl has a built-in backup system. Configure a local or S3 backup destination in Admin > Backups. Set a schedule per server and you get compressed, timestamped backups without scripting anything manually.

Reverse proxy for SFTP: Wings exposes an SFTP server on port 2022 by default. If you want to access game server files from the Panel's built-in file manager, make sure that port is accessible from where you browse.

Resource limits that actually work: Because each server runs in a Docker container, CPU throttling and memory limits are enforced at the kernel level — not just advisory. This matters if you're running three servers and don't want one runaway process to starve the others.

Wrapping Up

Pterodactyl is overkill if you run one Minecraft server for yourself, but it's the right tool once you have multiple games, multiple users, or want reliable automated restarts and backups. The setup takes an hour or two, but you get a professional management interface that scales to as many servers as your hardware supports.

The Panel UI is clean enough that non-technical friends can manage their own servers without a tutorial, which is reason enough to bother with it.

Get free weekly tips in your inbox. Subscribe to HomeLab Starter