آموزش نصب پنل Pterodactyl در دبیان برای مدیریت سرور بازی

آموزش نصب پنل Pterodactyl در Debian برای مدیریت سرور بازی
azarsys team
مدت زمان مطالعه : 11 دقیقه
0 کامنت
۱۴۰۵/۰۶/۲۸

وقتی می‌خوای چند تا گیم‌سرور رو روی یه VPS بالا بیاری، اگه بخوای دونه‌دونه و دستی بری جلو، قشنگ وقتت تلف می‌شه و مدیریت‌شون میره رو مخ. راهکار اصولی و تمیزش اینه که کار رو بسپری به Pterodactyl؛ یه پنل تحت وب که مدیریت سرورها رو برات ساده و متمرکز می‌کنه. این پنل واسه اجرای سرورها میره سراغ داکر (Docker) و بازوی اجرایی خودش یعنی Wings تا گیم‌سرورها رو داخل کانتینرهای جدا روی نودها (Nodes) اجرا و مدیریت کنه. توی این آموزش نصب پنل Pterodactyl در دبیان رو با کدهای ترمینال و مراحل پیکربندیش مرحله مرحله توضیح می‌دیم.

معماری Pterodactyl شامل Panel، Wings، Docker و گیم‌سرورها

بخش اول: آماده سازی سیستم و نصب پنل Pterodactyl

سرورت رو آماده کن و آپدیت‌های لازم رو انجام بده

Debian 12 Bookworm بخاطر مصرف نسبتاً کم منابع، پایداری و عملکرد خوبی که داره مورد مناسبی برای راه‌اندازی محیط میزبانی گیم‌سرورهاست. سرورت باید از لحاظ CPU، RAM و SSD قشنگ واسه گیم‌سرور راه انداختن جفت‌وجور باشه. اگه تو فکرت اینه که چند تا گیم‌سرور رو هم‌زمان بالا بیاری، حتماً حواست به مصرف منابع هر کدومشون باشه تا بعداً یهو با کمبود CPU یا RAM مواجه نشی و سرورت وسط کار کم نیاره. سروری که دارین، بهتره دیتاسنترش به لوکیشن بازیکنا نزدیک باشه و Latency کمی داشته باشه. همچنین اگه بخواین چندتا گیم سرور روی سرورتون میزبانی کنین پهنای باند سرور باید بالا باشه.

با SSH به سرورت وصل شو تا بتونی دستورات نصب و کانفیگ رو از توی ترمینال جلو ببری. بعد اینکه وارد سرورت شدی، بسته‌های سیستمت رو به‌روزرسانی کن:

sudo apt update && sudo apt upgrade -y

بعدش نوبت به نصب فایروال روی سرورت می‌رسه. فایروال کمک می‌کنه دسترسی‌های ورودی و خروجی سرور رو کنترل کنی و Allocation گیم‌سرورها و پورت‌هایی رو باز بذاری که واقعاً بهشون نیاز داری. ولی یادت نره که قبل از فعال‌کردن فایروال، پورت SSH سرورت رو باز کنی؛ وگرنه دسترسی‌ت به سرور قطع می‌شه:

sudo apt install ufw -y

sudo ufw allow OpenSSH

sudo ufw enable

پیش‌نیازهای پنل رو نصب کن

یکی از پیش‌نیازهای اصلی واسه نصب پنل Pterodactyl در دبیان، خود PHP و Extensionهاشه؛ چون کدهای این پنل با PHP نوشته شده. وقتی PHP رو روی سرورت نصب کنی، محیط لازم برای اجرای کدهای Pterodactyl فراهم می‌شه. در کنارش خود ابزار Composer رو هم نصب کن. Composer بسته‌های PHP‌ای که پنل Pterodactyl نیاز داره طبق فایل composer.json پیدا و نصب می‌کنه تا بعداً بتونی وابستگی‌های نرم‌افزاری Pterodactyl رو باهاش نصب کنی.

توی این آموزش از PHP 8.3 استفاده می‌کنیم؛ برای همین اول مخزن بسته‌های PHP رو به سیستم اضافه کن:

sudo apt install -y curl ca-certificates gnupg2 lsb-release git unzip

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/sury-php.list

curl -fsSL https://packages.sury.org/php/apt.gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/sury-keyring.gpg

sudo apt update

بعد PHP 8.3 و Extensionهایی که پنل لازم داره رو نصب کن:

sudo apt install -y php8.3 php8.3-common php8.3-cli php8.3-gd php8.3-mysql php8.3-mbstring php8.3-bcmath php8.3-xml php8.3-curl php8.3-zip libapache2-mod-php8.3

و بعدش برو سراغ نصب Composer؛ این ابزار واسه مدیریت و نصب وابستگی‌های PHP موردنیاز Pterodactyl استفاده می‌شه:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

 وب‌سرور روی سرورت نصب کن

چون Pterodactyl یه پنل تحت وب هست، واسه اینکه کاربر از طریق مرورگر بتونن بهش دسترسی پیدا کنن، باید یه وب‌سرور مثل Apache درخواست‌های HTTP/HTTPS رو از مرورگر گیمرها بگیره و به برنامه پنل برسونه. چون پنل Pterodactyl با PHP اجرا می‌شه، باید وب‌سروری انتخاب کنی که بتونه درخواست‌های PHP رو درست پردازش کنه. توی این آموزش از آپاچی استفاده می‌کنیم:

sudo apt install apache2 -y

MariaDB و Redis رو روی سرورت راه‌اندازی کن

واسه ذخیره اطلاعات پنل، MariaDB رو که یه سیستم مدیریت پایگاه داده‌ست روی سرورت نصب کن. در کنارش Redis رو هم نصب کن تا پنل بتونه برای Cache، Session و Queue ازش استفاده کنه:

sudo apt install -y mariadb-server redis-server
sudo systemctl enable --now mariadb
sudo systemctl enable --now redis-server

بعد از نصب MariaDB و Redis، یه دیتابیس و کاربر اختصاصی برای Pterodactyl بساز.

sudo mariadb
CREATE DATABASE panel;
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY 'رمز-قوی-خودت';
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1';
FLUSH PRIVILEGES;
EXIT;

حالا نوبت نصب خود پنل روی سرورته

وقتشه بری سراغ اصل مطلب یعنی نصب خود Pterodactyl. اول از همه، فایل‌های آخرین نسخه Pterodactyl رو روی سرورت دانلود کن و توی دایرکتوری نصب پنل قرارشون بده. بعد با Composer وابستگی‌های نرم‌افزاری پنل رو نصب کن:

sudo mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl

sudo curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
sudo tar -xzvf panel.tar.gz
sudo rm panel.tar.gz

sudo COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --optimize-autoloader

تنظیمات اولیه پنل رو انجام بده

توی این مرحله باید چندتا کار مهم رو انجام بدی تا کاربران بتونن از طریق مرورگر به پنل دسترسی داشته باشن.

اول وارد دایرکتوری پنل شو و فایل تنظیمات اولیه رو ایجاد کن:

cd /var/www/pterodactyl

sudo cp .env.example .env

حالا دستورات زیر رو توی دایرکتوری پنل اجرا کن تا تنظیمات محیط، دیتابیس و ایمیل پنل مشخص بشه:

sudo php artisan p:environment:setup
sudo php artisan p:environment:database
sudo php artisan p:environment:mail

کلید رمزنگاری پنل رو ایجاد کن و جدول‌های موردنیاز Pterodactyl رو در دیتابیس بساز:

sudo php artisan key:generate --force
sudo php artisan migrate --seed --force

برای اینکه داشبورد پنل رو بتونی مدیریت کنی یه حساب Admin بساز:

sudo php artisan p:user:make

دامنه پنل رو در تنظیمات Apache به مسیر public Pterodactyl متصل کن. واسه این کار فایل تنظیمات Apache رو ایجاد و مشخصات دامنه و مسیر پنل رو داخلش وارد کن:

sudo nano /etc/apache2/sites-available/pterodactyl.conf

بعد این محتوا رو داخل فایل قرار بده و your-domain.com رو با دامنه خودت جایگزین کن:

<VirtualHost *:80>
ServerName your-domain.com
DocumentRoot "/var/www/pterodactyl/public"
<Directory "/var/www/pterodactyl/public">
AllowOverride all
Require all granted
</Directory>
</VirtualHost>

بعد از ذخیره فایل، مالکیت فایل‌های پنل رو تنظیم و کانفیگ Apache رو فعال کن:

sudo chown -R www-data:www-data /var/www/pterodactyl
sudo a2enmod rewrite
sudo a2ensite pterodactyl.conf
sudo systemctl restart apache2

بخش دوم: نصب Wings و Docker و اتصال به پنل

ارتباط Pterodactyl Panel با Node، Wings و Docker برای اجرای گیم‌سرورها

Docker رو روی گره راه بنداز

برای اجرای گیم‌سرورها، Wings به Docker نیاز داره. Docker محیط اجرای هر گیم‌سرور رو داخل کانتینر جدا قرار می‌ده. اینجوری می‌تونی منابع اختصاص‌داده‌شده به هر کانتینر و نحوه اجراشون رو جداگانه مدیریت کنی. وقتی کاربر یه دستوری رو توی پنل میزنه، پنل به وینگز منتقلش میکنه. وینگز هم از طریق Docker API به داکر میگه که چیکار کنه و داکر همون دستور رو اجرا میکنه. برای Debian 12 بهتره Docker Engine رو از مخزن رسمی Docker نصب کنی تا نصب و به‌روزرسانی اون از مسیر رسمی انجام بشه. واسه این کار،دستور نصبش رو توی ترمینال Bash بزن:

sudo apt update
sudo apt install -y ca-certificates curl

sudo install -m 0755 -d /etc/apt/keyrings

sudo curl -fsSL https://download.docker.com/linux/debian/gpg \
-o /etc/apt/keyrings/docker.asc

sudo chmod a+r /etc/apt/keyrings/docker.asc

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

sudo apt update

sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

sudo systemctl enable --now docker

sudo docker run hello-world

توی پنلت گره (Node) درست کن

بعد اینکه پنل Pterodactyl رو در دبیان نصب کردی، باید سروری که قراره گیم سرورها روش اجرا بشن(Node) رو بهش معرفی کنی. واسه ردیف کردن گره (Node) برو توی پنل و رو بخش Node کلیک کن. بعدش گزینه Create Node رو بزن و مشخصات سرورت رو وارد کن. توی این آموزش سروری که پنل رو روش نصب کردیم همون سروریه که قراره گیم سرورها روش اجرا بشن و مشخصات همین سرور رو وارد میکنیم. اگه قراره گیم سرورهات رو روی یه سرور جدا اجرا کنی، توی پنلت مشخصات همون سرور رو وارد کن. 

 صفحه ایجاد Node جدید در پنل Pterodactyl

نصب دیمن وینگس (Wings Daemon)

برنامه وینگس (Wings) تهش همون واسطه بین پنل پتروداکتیل و سروربازیه. این برنامه رو باید روی سروری که قراره گیم سرورها روش اجرا بشن نصب کنی. وقتی کاربر می‌ره تو پنل و دکمه‌های خاموش، روشن یا ری‌استارت رو می‌زنه، این برنامه دستور رو از پنل میگیره و به داکر پیغام میده که مثلا توی فلان کانتینر فلان کار رو بکن. واسه اینکه به داکر متصل بشه از Docker API استفاده میکنه. درواقع مدیریت و و اینکه کانتینرها چجوری اجرا بشن رو وینگز از طریق داکر انجام میده. واسه نصبش هم فقط کافیه چند خط کد رو توی محیط بش (Bash) کپی پیست کنی.

 نحوه ارتباط Pterodactyl Panel، Wings و Docker برای مدیریت گیم‌سرورها

sudo mkdir -p /etc/pterodactyl
sudo curl -L https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_amd64 -o /usr/local/bin/wings
sudo chmod u+x /usr/local/bin/wings

بعد اینکه Wings رو نصب کردی، Configuration ای که توی پنل درست شده بود رو انتقال بده به فایلِ توی Node:

/etc/pterodactyl/config.yml

اینجوری وینگ میفهمه که باید از کدوم پنل دستور بگیره و مربوط به کدوم گیم سروره.

حالا یبار دیگه وینگز رو تست کن تا مطمئن بشی درست کار میکنه:

sudo wings --debug

اگه درست کار کرد، مثل یه سرویس دائمی اجراش کن تا هروقت سرور روشن شد وینگز اجرا بشه:

sudo nano /etc/systemd/system/wings.service

[Unit]
Description=Pterodactyl Wings Daemon
After=docker.service
Requires=docker.service

[Service]
User=root
WorkingDirectory=/etc/pterodactyl
ExecStart=/usr/local/bin/wings
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

sudo systemctl daemon-reload
sudo systemctl enable --now wings

sudo systemctl status wings

 

گیم سروری که میخوای رو بساز

همه این مراحل رو انجام دادیم که بتونیم یک یا چندتا سروربازی رو روی سرورمون اجرا کنیم. توی قسمت مدیریت پنل، روی قسمت Create Server کلیک کن. گره، Egg و Docker Imageای که برای بازیت نیازه رو انتخاب کن.

 صفحه ساخت گیم‌سرور جدید در پنل Pterodactyl با انتخاب Node و Egg

محدودیت‌های سخت‌افزاری و Allocation رو هم برای گیم‌سرورت مشخص کن. Allocation مشخص می‌کنه گیم‌سرور از کدوم IP و پورت برای دریافت اتصال بازیکن‌ها استفاده کنه. و تمام!

پنل اینطوری میفهمه که به وینگ باید دستور بده یه گیم سرور با مشخصاتی که وارد کردی رو روی گره با کمک داکر بسازه. Egg مشخص می‌کنه گیم‌سرور چطور نصب و اجرا بشه، چه متغیرهایی داشته باشه و از چه Docker Image و دستورهای Startup استفاده کنه. واسه بازی‌های رایج میتونی Eggهای آماده جامعه Pterodactyl رو توی پنل وارد کنی و وقتی سرورت رو میسازی، Egg و Docker Imageای که واسه سروربازیت مناسب هست رو انتخاب کنی.

ردیف کردن ارتباط SSL

اطلاعاتی که بین پنل و گره در طول شبکه منتقل می‌شن بهتره رمزنگاری بشن تا احتمال مشکلات امنیتی کمتر بشه. اینجوری اطلاعات مدیریتی و درخواست‌ها بین پنل و وینگ رمزنگاری میشن و در برابر شنود و دستکاری‌های مختلف امنیت بیشتری دارن. واسه این کار:

اول باید واسه دامنه Node یک DNS Record بسازی که به IP سرور Wings اشاره کنه. مثلاً:

Type: A
Name: node
Value: IP-سرور-Wings

ارتباط امن Pterodactyl Panel و Wings Node با استفاده از HTTPS و گواهی TLS

بعد روی Node یک گواهی TLS معتبر برای node.example.com بگیر. اگر Apache روی Node نصب شده، Certbot و پلاگین Apache رو نصب کن:

sudo apt update
sudo apt install -y certbot python3-certbot-apache

حالا برای دامنه Node گواهی TLS بگیر:

sudo certbot certonly --apache -d node.example.com

بعد Configuration مربوط به Wings رو که از بخش Configuration مربوط به Node در پنل گرفتی، در فایل زیر روی Node قرار بده:

sudo nano /etc/pterodactyl/config.yml

مطمئن شو که تنظیمات SSL توی Configuration به گواهی TLS و کلید خصوصی دامنه Node اشاره می‌کنن.

حالا Wings رو تست کن تا مطمئن بشی تنظیماتش درست کار میکنن:

sudo wings --debug

در آخر هم داخل Pterodactyl، آدرس Node رو به شکل HTTPS ثبت کن:

https://node.example.com

بخش سوم: پایدارسازی گیم سرورها و شبکه

  • واسه اینکه شبکه پایدار بمونه و گیمرا موقع وصل شدن به سرور به مشکل نخورن، باید چندتا چیز رو با هم جفت‌وجور کنی: فایروال، Allocation و شبکه داکر. خود داکر شبکه کانتینرها رو ردیف می‌کنه  و از شبکه‌های مجازی مثل Bridge استفاده می‌کنه تا ارتباط کانتینرا با سرور و اینترنت راه بیفته یعنی لازم نیست بشینید دستی یه پل شبکه بسازی. 
  • موقع ساخت هر گیم‌سرور، محدودیت مصرف منابع (RAM، CPU و Disk) رو توی تنظیمات Server مشخص کن تا Wings این محدودیت‌ها رو موقع اجرای کانتینر از طریق Docker اعمال کنه. یعنی طوری نباشه که یه سروربازی بیشتر منابع سرور رو استفاده کنه! اینجوری ممکنه عملکرد سرورهای‌بازی دیگه افت کنه تا لگ بشن.
  • بعد از اینکه پتروداکتیل رو روی دبیان نصب کردی، حتماً بکاپ‌گیری خودکار رو هم ردیف کن. یعنی توی تنظیمات پنل مشخص کن که هر چند ساعت یک‌بار، چندتا نسخه و از کدوم سرورای‌بازی بکاپ گرفته بشه. بهتره محل ذخیره بکاپ‌ها رو بذاری روی S3 Storage، تا به Node وابستگیش کمتر بشه؛ تا اگه واسه سرور اصلی مشکلی پیش اومد، ریسک از بین رفتن بکاپ‌هات کم بشه.

مدیریت شبکه و منابع چند گیم‌سرور با Firewall، Allocation و Docker در Pterodactyl

  • کنار بکاپ دیتابیس و فایلای گیم‌سرور، حواست باشه از فایل تنظیمات .env پنل هم یه نسخه مطمئن واسه خودت نگه داری. یادت باشه اگه کلید اصلی یا همون APP_KEY پاک بشه یا از بین بره، یه سری از اطلاعات رمزگذاری‌شده پنل رو حتی اگه بکاپ دیتابیس رو هم داشته باشی، ممکنه نتونی برگردونی.

تجربه شخصی

چیزی که بعد از نصب پنل Pterodactyl در دبیان بیشتر به چشم میاد، مدیریت و کنترل وضعیتشون برای نگه‌داری بلند مدت سیستمه. پنل مدیریت این سرورها رو متمرکزتر می‌کنه و می‌شه چیزهایی مثل مصرف منابع، روشن و خاموش کردن سرور و ری‌استارت کردنش رو همون‌جا مدیریت کرد. وقتی تعداد سرورها بیشتر می‌شن، حساسیت هم نسبت به وضعیت کانتینرها، گیم‌سرورها، مصرف RAM و پردازنده و فضای دیسک بیشتر میشه. این روال وقتی از اول رعایت بشه، با بیشتر شدن تعداد سرورها یا بازیکن‌ها، احتمال اینکه مشکلات عملکردی به‌سختی قابل شناسایی و عیب‌یابی بشن کمتر می‌شه.

سخن آخر

در نهایت، Pterodactyl مدیریت چند گیم‌سرور روی یک سرور رو خیلی راحت‌تر می‌کنه؛ اما برای اینکه گیم‌سرورهات بدون افت عملکرد اجرا بشن، باید منابع سرور رو متناسب با تعداد بازیکن‌ها و نوع بازی انتخاب و مدیریت کنی. از طرف دیگه، پنل، Wings و وابستگی‌های اصلی رو هم به‌صورت منظم به‌روز نگه دار و قبل از آپدیت، از اطلاعات مهم پنل و گیم‌سرورهات بکاپ بگیر. نسخه‌های جدید Pterodactyl در سال ۲۰۲۶ علاوه بر تغییرات و بهبودهای مختلف، شامل اصلاحات امنیتی هم بوده‌اند؛ بنابراین به‌روز نگه داشتن اجزای زیرساخت رو نباید به بعد موکول کنی.

این پست را به اشتراک بگذارید
سوالات متداول

بله، ولی به صورت غیر مستقیم. برای اینکه بتوانید پنل Pterodactyl را در ویندوز نصب کنید، باید یک محیط لینوکسی در ویندوز درست کنید. این کار را می توانید با نصب WSL2 یا ماشین مجازی روی ویندوزتان انجام دهید.

برای این کار وارد پنل شوید و سرور بازی ای که می خواهید از آن بکاپ بگیرید را باز کنید. سپس روی بخش بکاپ بزنید و روی Create Backup کلیک کنید. بعد از مدتی بکاپ سرور بازی مد نظرتان توسط Wings درست می شود و می توانید آن را دانلود کنید.

برای این کار وارد قسمت مدیریت پنل شوید و روی Nests بزنید. سپس با کلیک روی Create new، برای بازی ای که می خواهید سرور درست کنید Egg ایمپورت کنید.

0

دیدگاه و پرسش