إذا كنت تبحث عن طريقة إنشاء سيرفر ماين كرافت باستخدام لوحة التحكم CyberPanel، فإن استخدام Pterodactyl هو الخيار الأمثل لك. سيرفر Pterodactyl يمنحك القدرة على إدارة الألعاب المختلفة بما في ذلك Minecraft بفعالية كبيرة، بفضل واجهته السهلة الاستخدام وقوته في التعامل مع الحاويات عبر Docker. في هذا الدليل الشامل، سنأخذك خطوة بخطوة لإنشاء سيرفر ماين كرافت باستخدام Pterodactyl على CyberPanel، بالإضافة إلى إعداد وكيل عكسي، فتح منافذ جدار الحماية، وتفعيل Web Socket لضمان سيرفر آمن ومستقر.
جدول المحتويات
لتثبيت Pterodactyl على CyberPanel وتشغيل خادم Minecraft الخاص بك، اتبع الخطوات التفصيلية التالية. قبل البدء، تأكد من قراءة التعليمات الواردة في المقالات التالية وتطبيقها:
إعداد DNS وإنشاء المواقع في CyberPanel
إعداد CNAME في DNS
للبدء، تحتاج إلى إنشاء سجلين من نوع CNAME في DNS الخاص بك. في هذا المثال، سنستخدم الأسماء التالية:
سيكون اسم النطاق الخاص بالسيرفر الرئيسي هو
ServerAlias.Domain.com
سيكون اسم النطاق الخاص بالعقدة الرئيسية هو
NodeAlias.Domain.com
إنشاء مواقع جديدة في CyberPanel
بعد إعداد سجلات CNAME، ننتقل إلى CyberPanel لإنشاء مواقع الويب لكل من السجلات الجديدة.
اذهب إلى:
MAIN > Website > Create Website
املأ البيانات التالية:
- Package: Default (لا حاجة لتغييره)
- Owner: admin (أو أي مستخدم آخر)
- Domain Name: أدخل النطاق بدون “www” ويجب أن يكون بالحروف الصغيرة فقط.
- Email: أدخل البريد الإلكتروني الخاص بك.
- PHP Version: اختر الإصدار 8.0.
- اضغط على: زر
Create Website
.
إصدار شهادات SSL
بعد إنشاء المواقع، نحتاج إلى إصدار شهادة SSL للموقع:
اذهب إلى:
MAIN > Website > List Websites
- ابحث عن الموقع الذي أنشأته واضغط على
Issue SSL
. - انتظر حتى يتم الانتهاء من إصدار الشهادة.
- تأكد من أن الموقع حصل على شهادة LET'S ENCRYPT من خلال إدارة الموقع.
تعديل قواعد إعادة التوجيه
اذهب إلى:
CONFIGURATIONS > Rewrite Rules
استبدل النص الموجود في موقع ServerAlias.Domain.com بالتالي
RewriteEngine On
REWRITERULE ^(.*)$ HTTP://ServerAlias.Domain.com/$1 [P]
اضغط على: زر Save Rewrite Rules
.
استبدل النص الموجود في موقع ServerAlias.Domain.com بالتالي
RewriteEngine On
REWRITERULE ^(.*)$ HTTP://NodeAlias.Domain.com/$1 [P]
إعداد OpenLiteSpeed
إعداد التطبيقات الخارجية
الخطوة التالية هي إعداد التطبيقات الخارجية في OpenLiteSpeed:
اذهب إلى:
Server Configuration > External App
- اضغط على: رمز الإضافة في أعلى القائمة.
- اختر النوع:
Web Server
. - املأ البيانات التالية:
- Name: أدخل اسم النطاق.
- Address: أدخل للسيرفر الرئيسي
127.0.0.1:802
وللعقدة.
127.0.0.1:8443
- Max Connections: 60
- Initial Request Timeout (secs): 60
- Retry Timeout (secs): 60
- اضغط على: رمز الحفظ.
إعداد Web Socket Proxy
لإعداد Web Socket للعقدة، اتبع الخطوات التالية:
اذهب إلى:
Virtual Hosts > Summary > Virtual Host List
- اضغط على النطاق: NodeAlias.Domain.com.
- اختر:
Web Socket Proxy
. - املأ البيانات التالية:
- URI: /
- Address:
127.0.0.1:8443
- اضغط على: رمز الحفظ.
- أعد تشغيل LiteSpeed من خلال الضغط على السهم الأخضر الدائري في أعلى يمين الشاشة.
إعداد Pterodactyl باستخدام Portainer
إنشاء Stack جديد في Portainer
اذهب إلى:
Portainer > local Environments
- اختر:
Stacks
من القائمة الجانبية. - اضغط على:
Add stack
في أعلى القائمة. - املأ البيانات التالية:
- Name: أدخل
pterodactyl
.
في Web editor: قم بإضافة الكود التالي:
version: "3.8"
# This section declares the basic config of all of your Containers that are
# declared below as "services"
x-common:
database:
&db-environment
# You don't need to change these because it will not be exposed to the public.
MYSQL_PASSWORD: &db-password "password_here"
MYSQL_ROOT_PASSWORD: "password_here"
panel:
&panel-environment
#This is the URL that your panel will be on after being reverse proxied.
# set this to "https://yoursubdomain.yourdomain.yourdomainstld"
APP_URL: "https://<ServerAlias.Domain.com>"
# A list of valid timezones can be found here:
# http://php.net/manual/en/timezones.php
APP_TIMEZONE: "Etc/UCT"
APP_SERVICE_AUTHOR: "email@gmail.com"
# Mail is an optional Setup, I have the basic setup if you want to use a gmail
# account. You will need an App Password as the MAIL_PASSWORD field, not your
# gmail password. Uncomment the following lines to enable mail.
HASHIDS_SALT: "Play.MC-SmartCraft.com" # DO NOT CHANGE
HASHIDS_LENGTH: 8 # DO NOT CHANGE
#mail:
#&mail-environment
#MAIL_FROM: "youremail@gmail.com"
#MAIL_DRIVER: "smtp"
#MAIL_HOST: "smtp.gmail.com"
#MAIL_PORT: "587"
#MAIL_USERNAME: "youremail@gmail.com"
#MAIL_PASSWORD: ""
#MAIL_ENCRYPTION: "true"
services:
# Wings is the service that hooks into docker and actually creates your game
# servers,
wings:
image: ghcr.io/pterodactyl/wings:latest
restart: always
networks:
- ptero0
# These are the ports exposed by Wings, I don't recommend changing them.
ports:
- "8443:443"
- "2022:2022"
tty: true
environment:
TZ: "Etc/UCT"
# For ease of setup, this is going to use root user.
WINGS_UID: 0
WINGS_GID: 0
WINGS_USERNAME: root
# This is where docker will bind certain parts of container to your actual
# host OS. These locations will be used later.
volumes:
- "/var/run/docker.sock:/var/run/docker.sock" # DO NOT CHANGE
- "/var/lib/docker/containers:/var/lib/docker/containers" # DO NOT CHANGE
- "/opt/pterodactyl/wings/config:/etc/pterodactyl" # Feel free to change.
- "/var/lib/pterodactyl:/var/lib/pterodactyl" # DO NOT CHANGE
- "/var/log/pterodactyl:/var/log/pterodactyl" # DO NOT CHANGE
- "/tmp/pterodactyl/:/tmp/pterodactyl/" # Recommended not to change.
# It's a database. Not much else to explain.
database:
image: mariadb:10.5
restart: always
command: --default-authentication-plugin=mysql_native_password
volumes:
- "/opt/pterodactyl/panel/database:/var/lib/mysql"
environment:
<<: *db-environment
MYSQL_DATABASE: "panel"
MYSQL_USER: "pterodactyl"
# It's a CACHE database. Not much else to explain.
cache:
image: redis:alpine
restart: always
# Now the fun part. Your actual panel.
panel:
image: ghcr.io/pterodactyl/panel:latest
restart: always
# For NGINX Reverse Proxy, I will be using these ports for simplicity.
ports:
- "802:80"
- "4432:443"
# Links these containers together in a docker network.
links:
- database
- cache
# This is where docker will bind certain parts of container to your actual
# host OS. These don't really matter that much.
volumes:
- "/opt/pterodactyl/panel/appvar/:/app/var/"
- "/opt/pterodactyl/panel/nginx/:/etc/nginx/http.d/"
- "/opt/pterodactyl/panel/logs/:/app/storage/logs"
# Sets the config stuff
environment:
<<: [*panel-environment]
# <<: [*mail-environment]
DB_PASSWORD: *db-password
APP_ENV: "production"
APP_ENVIRONMENT_ONLY: "false"
CACHE_DRIVER: "redis"
SESSION_DRIVER: "redis"
QUEUE_DRIVER: "redis"
REDIS_HOST: "cache"
DB_HOST: "database"
DB_PORT: "3306"
# This is Wings' Network. We don't need much depth here, all you need to know, is
# that it allows the passthrough of the ports from Wings.
networks:
ptero0:
name: ptero0
driver: bridge
ipam:
config:
- subnet: "192.55.0.0/16"
driver_opts:
com.docker.network.bridge.name: ptero0
قم بتغيير: MYSQL_PASSWORD
, MYSQL_ROOT_PASSWORD
, APP_URL
, APP_TIMEZONE
, APP_SERVICE_AUTHOR
بالقيم الصحيحة.
اضغط على: زر Deploy the stack
.
تفعيل Wings على Pterodactyl
بعد إنشاء stack، قم بتفعيل Wings:
اذهب إلى:
Containers
أوقف: pterodactyl-wings-1
من الحاويات.
اذهب إلى الطرفية: على VPS باستخدام صلاحيات الجذر.
استخدم الأمر التالي:
sudo docker exec -it pterodactyl-panel-1 php artisan p:user:make
أنشئ حساب مدير عبر إدخال البريد الإلكتروني، الاسم الأول، الاسم الأخير، وكلمة المرور.
إعداد العقدة (Node) في Pterodactyl
إنشاء موقع العقدة
اذهب إلى: Pterodactyl Control Panel
https://ServerAlias.Domain.com
من القائمة الجانبية: اختر
MANAGEMENT > Nodes
اضغط على: Create New
.
املأ البيانات التالية:
- Name: MainNode.
- Location: MainLocation.
- Node Visibility: Public.
- FQDN:
NodeAlias.Domain.com
. - Communicate Over SSL: Use SSL Connection.
- Behind Proxy: Behind Proxy.
- Total Memory: 4069 MB.
- Total Disk Space: 10240 MB.
- Daemon Port: 443.
- Daemon SFTP Port: 2022.
- اضغط على:
Create Node
.
إضافة تخصيصات المنافذ
في صفحة التخصيصات: املأ البيانات التالية:
- IP Address: 0.0.0.0
- Ports: 25565, 19132, 19133
- اضغط على: زر
Submit
.
ربط العقدة بـ Wings
اذهب إلى:
Configuration of Node
انسخ الـ config الخاص بالعقدة.
انتقل إلى Webmin:
اذهب إلى:
Tools > File Manager
انتقل إلى المسار:
/opt/pterodactyl/wings/config
أنشئ ملفًا جديدًا باسم config.yml
.
الصق الـ config الخاص بالعقدة، وأضف البيانات التالية:
docker:
network:
interfaces:
v4:
subnet: 192.54.0.0/16
gateway: 192.54.0.1
احفظ التعديلات.
عد إلى Portainer وقم بتشغيل الحاوية pterodactyl-wings-1
.
افتح لوحة تحكم Pterodactyl وتأكد من أن العقدة تعمل بشكل صحيح.
إنشاء سيرفر Minecraft على Pterodactyl
إعداد السيرفر الجديد
من لوحة تحكم Pterodactyl: اختر
MANAGEMENT > Servers
.
اضغط على: Create New
.
املأ البيانات التالية:
- Server Name: اكتب اسم السيرفر.
- Server Owner: اختر اسمك
- Default Allocation: 25565.
- Database Limit: 1 (أي رقم تريده).
- Allocation Limit: 1 (أي رقم تريده).
- Backup Limit: 1 (أي رقم تريده).
- CPU Limit: 0 (الصفر يعني لا حدود).
- Memory: 2048 (أي رقم تريده).
- Swap: -1 (يعني -1 لا حدود).
- Disk Space: 10240 (أي رقم تريده).
- Nest: Minecraft
- Egg: Paper (اختر النوع الذي تريده).
- Docker Image: Java 21 (اختر الاصدار المناسب للمكونات الاضافية).
- اضغط على: زر
Create Server
.
تخصيص السيرفر
- انتقل إلى قائمة السيرفرات: واختر السيرفر الذي أنشأته للتو.
- تأكد من أن السيرفر يعمل: واضغط على
Console
. - إذا ظهرت أخطاء في Console: تحقق من إعدادات Java أو Egg أو Port.
فتح منافذ Minecraft على جدار الحماية CSF
إعداد TCP_IN و TCP_OUT في CSF
انتقل إلى CyberPanel:
اذهب إلى:
System > ConfigServer Security & Firewall
اختر: Firewall Configuration
.
تعديل الإعدادات التالية:
TCP_IN: أضف
25565, 19132, 19133
اضغط على: Save Configuration
ثم Restart CSF/LFD
.
خاتمة
بإتباع الخطوات المذكورة أعلاه، تكون تعلمت طريقة إنشاء سيرفر ماين كرافت باستخدام Pterodactyl على CyberPanel بكل سهولة واحترافية. يتضمن هذا الدليل كل ما تحتاجه من إعداد DNS إلى تشغيل السيرفر وتفعيل جميع الخصائص المطلوبة. تأكد من اتباع جميع الخطوات بدقة لضمان سيرفر مستقر وآمن يتيح لك وللاعبيك تجربة لعب ممتعة وخالية من المشاكل.