تخطي إلى المحتوى الرئيسي

FiveM: إعداد بروكسي عكسي

تم إنشاء هذا الدليل باستخدام المنتجات التالية:

(قد تختلف التفاصيل مع المنتجات من مزودين مختلفين ولكن المفاهيم الرئيسية تظل كما هي)

مقدمة

سيرفر البروكسي العكسي هو سيرفر يعمل كوسيط بين المستخدمين النهائيين (لاعبينك) وسيرفر FiveM الخاص بك. هذا مفيد جدًا للسيرفرات التي تتعرض لهجمات DDoS متكررة، لأنه يوفر طبقة إضافية من الأمان والموثوقية عن طريق تقليل ظهور المضيف الرئيسي ويوفر حماية إضافية.

في هذا الدليل، سنستعرض كيفية إعداد بروكسي عكسي لسيرفر FiveM الخاص بك. هناك نوعان من البروكسي العكسي في هذا السيناريو؛ بروكسي الاتصال الذي يُستخدم لنقطة نهاية الاتصال، وبروكسي السيرفر الذي يُستخدم لنقطة نهاية السيرفر حيث يتم تمرير TCP/UDP الخام. يمكن إعداد كل منهما بشكل مستقل عن الآخر.

التحضير

لإعداد بروكسي عكسي، ستحتاج إلى سيرفر Linux (مثل VPS) ليستضيف سيرفر البروكسي الخاص بك. في هذا المثال، سنستخدم أوبونتو كنظام تشغيل Linux، لكن خطوات التثبيت ستكون مشابهة لمعظم توزيعات Linux.

مواصفات VPS الموصى بها

ننصح بشدة بشراء سرعات شبكة أعلى إذا كنت تخطط لإعداد بروكسي سيرفر، خاصة إذا كان سيرفرك يحتوي على العديد من اللاعبين. لأن VPS الخاص بك سيقوم ببث TCP/UDP الخام مباشرة بين العميل (اللاعب) وسيرفر FiveM. وإلا، فإن سيرفر بمواصفات أساسية وترقيات بسيطة سيكون كافيًا. :)

ننصح أيضًا بإعداد البروكسي باستخدام نطاق تملكه. يجب عليك إنشاء سجل A على النطاق الذي ترغب باستخدامه (مثلاً zapdocs.example.com)، يشير إلى عنوان IP الخاص بـ VPS Linux الخاص بك. هذا ما سيستخدمه اللاعبون للاتصال بالسيرفر، رغم أنه يمكنك تقنيًا استخدام عنوان IP الخاص بسيرفر البروكسي إذا أردت.

الوصول إلى VPS

مع جاهزية VPS Linux الخاص بك، ستحتاج للاتصال به. يرجى استخدام دليلنا الوصول الأولي عبر SSH لتتعلم كيفية القيام بذلك.

تثبيت Nginx

ستستخدم Nginx لاستضافة سيرفر البروكسي العكسي لأنه سيرفر ويب مفتوح المصدر عالي الأداء وشائع.

بعد الوصول إلى VPS، استخدم الأمر التالي لتثبيت Nginx.

sudo apt install nginx

بعد التثبيت، ستحتاج لضبط جدار الحماية لضمان وصول الخدمة من الإنترنت. في هذا الدليل، سنستخدم جدار الحماية UFW لأن Nginx يسجل نفسه كتطبيق، مما يسهل تعديل الإعدادات. يمكنك معرفة المزيد عن جدار الحماية UFW من خلال دليلنا نصائح أمان Linux.

ملاحظة

إذا كنت تستخدم جدران حماية أخرى (مثل Iptables)، تأكد من منح الوصول المناسب لـ Nginx، خصوصًا على المنفذين 80 و443 حيث تعمل خدمة nginx.

يمكنك التحقق من ملفات تعريف Nginx عبر الأمر sudo ufw app list. في هذا السيناريو، نريد اختيار خيار Nginx Full، الذي يتيح الوصول إلى HTTP للاختبار وHTTPS للاستخدام الإنتاجي.

sudo ufw allow 'Nginx Full'

مع إعداد Nginx الآن، حاول الوصول إلى الصفحة عبر المتصفح للتأكد من عملها كما هو متوقع. إذا عملت صفحة الاختبار بشكل صحيح، يمكنك المتابعة في الدليل.

http://[your_serverip]

بروكسي الاتصال (Connect Proxy)

بروكسي الاتصال يُستخدم لتمرير طلبات نقطة نهاية الاتصال لسيرفر FiveM الخاص بك. بمعنى آخر، سيرفر البروكسي سيكون مسؤولًا عن استقبال طلبات نقطة نهاية الاتصال وتمريرها إلى سيرفر FiveM الرئيسي. هذا يوفر فائدة كبيرة في إخفاء عنوان IP الحقيقي لسيرفر FiveM من قائمة السيرفرات، مما يقلل من ظهوره.

إعداد Nginx

ابدأ بإنشاء ملف داخل مجلد Nginx للمضيف الذي اخترته أثناء إعداد النطاق. في هذا المثال، سنستخدم zapdocs.example.com كما في السابق.

استخدم الأمر التالي لإنشاء ملف إعداد السيرفر لنطاقك، مع استبدال [your_domain] بنطاقك الخاص.

sudo nano /etc/nginx/sites-available/[your-domain]

الآن انسخ القالب التالي في المحرر وعدّل القيم بما يناسب إعدادك.

upstream backend {
# عنوان IP لسيرفر FiveM
server [your_fivem_serverip]:30120;
}

proxy_cache_path /srv/cache levels=1:2 keys_zone=assets:48m max_size=20g inactive=2h;

server {
listen 80;
listen [::]:80;

server_name [your_domain]; # مثال: zapdocs.example.com

location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
# مطلوب لتمرير رؤوس المصادقة بشكل صحيح
proxy_pass_request_headers on;
# مطلوب لمنع إغلاق الاتصال فورًا بواسطة التأجيلات
proxy_http_version 1.1;
proxy_pass http://backend;
}

# كتلة إضافية لبروكسي التخزين المؤقت
location /files/ {
proxy_pass http://backend$request_uri;
add_header X-Cache-Status $upstream_cache_status;
proxy_cache_lock on;
proxy_cache assets;
proxy_cache_valid 1y;
proxy_cache_key $request_uri$is_args$args;
proxy_cache_revalidate on;
proxy_cache_min_uses 1;
}
}

بعد تعديل القيم بما يناسب إعدادك، احفظ الملف واخرج من nano باستخدام CTRL + X، ثم Y للتأكيد وأخيرًا ENTER.

الآن تحتاج لتفعيل ملف إعداد السيرفر بإنشاء رابط رمزي إلى مجلد التفعيل.

sudo ln -s /etc/nginx/sites-available/[your_filename] /etc/nginx/sites-enabled/[your_filename]

للتأكد من صحة الإعدادات، خاصة من ناحية الصياغة، استخدم الأمر sudo nginx -t للتحقق من وجود أخطاء. إذا كانت النتيجة ناجحة، الخطوة الأخيرة هي إعادة تشغيل Nginx لتطبيق التغييرات.

systemctl reload nginx.service

بعد إعادة تشغيل الخدمة، جرب الوصول إلى النطاق الذي استخدمته للبروكسي العكسي عبر المتصفح. عند النجاح، يجب أن تحمل الصفحة المحتوى الذي حددته في معلمة targetServer. إذا واجهت مشاكل، ننصح بفحص السجلات باستخدام journalctl -f -u nginx.service لتحديد الأخطاء المحتملة.

إعداد FiveM

مع إعداد البروكسي، ستحتاج لتعديل بعض القيم في ملف الإعداد server.cfg على سيرفر FiveM الخاص بك.

أضف المحتويات التالية في ملف الإعداد، مع استبدال القيم بما يناسب إعدادك.

# يمنع قائمة السيرفرات من الإعلان عن سيرفرك باستخدام عنوان IP الحقيقي
set sv_forceIndirectListing true

# يجعل طلبات قائمة السيرفرات تستخدم نطاقك بدلاً من الافتراضي (مثال: zapdocs.example.com)
set sv_listingHostOverride "[your_domain]"

# قائمة شبكات IPv4 بصيغة CIDR للسماح بـ 'X-Real-IP' منها، بالإضافة لتجاوز محدد المعدل
set sv_proxyIPRanges "[your_proxy_serverip]/32"

# نقطة النهاية الفعلية التي يستضيف عليها سيرفرك، أو واحد أو أكثر من بروكسيات نقطة نهاية السيرفر
set sv_endpoints "[your_fivem_serverip]:30120"

احفظ الملف وأعد تشغيل السيرفر. في المرة التالية لتشغيل السيرفر، يجب أن يحل نطاقك محل سيرفر FiveM مما يعني أنه يمكن استخدامه للاتصال.

يمكنك التحقق من عمل كل شيء بمحاولة الوصول إلى: https://[your_domain]/info.json. إذا تم التحميل بشكل صحيح، فإن بروكسي الاتصال يعمل.

بروكسي السيرفر (Server Proxy)

بروكسي السيرفر يُستخدم لتمرير نقطة نهاية السيرفر إلى سيرفر FiveM الخاص بك، حيث يقوم بتمرير TCP/UDP الخام والبث مباشرة.

إعداد Nginx

للقيام بذلك، ستستخدم وحدة stream التي هي جزء من Nginx. افتح ملف nginx.conf باستخدام nano.

sudo nano /etc/nginx/nginx.conf

انسخ المحتويات التالية في النطاق الجذري، مع استبدال القيم بما يناسب إعدادك.

stream {
upstream backend {
server [your_fivem_serverip]:30120;
}

server {
listen 30120;
proxy_pass backend;
}

server {
listen 30120 udp reuseport;
proxy_pass backend;
}
}

بعد تعديل القيم بما يناسب إعدادك، احفظ الملف واخرج من nano باستخدام CTRL + X، ثم Y للتأكيد وأخيرًا ENTER.

للتأكد من صحة الإعدادات، خاصة من ناحية الصياغة، استخدم الأمر sudo nginx -t للتحقق من وجود أخطاء. إذا كانت النتيجة ناجحة، الخطوة الأخيرة هي إعادة تشغيل Nginx لتطبيق التغييرات.

systemctl reload nginx.service

بعد إعادة تشغيل الخدمة، حاول الاتصال بسيرفر الألعاب عبر نطاق البروكسي. عند النجاح، يجب أن تتمكن من الاتصال بسيرفر الألعاب، تحديدًا السيرفر الذي عينته في معلمة targetServer. إذا واجهت مشاكل، ننصح بفحص السجلات باستخدام journalctl -f -u nginx.service لتحديد الأخطاء المحتملة.

إعداد FiveM

مع إعداد البروكسي، ستحتاج لتعديل قيمة في ملف الإعداد server.cfg على سيرفر FiveM الخاص بك.

نصيحة

إذا كنت قد أعددت معلمة set sv_endpoints مسبقًا عبر إعداد بروكسي الاتصال، يمكنك تخطي هذا.

أضف السطر التالي في ملف الإعداد، مع استبدال القيمة بما يناسب إعدادك.

# نقطة النهاية الفعلية التي يستضيف عليها سيرفرك، أو واحد أو أكثر من بروكسيات نقطة نهاية السيرفر
set sv_endpoints "[your_fivem_serverip]:30120"

احفظ الملف وأعد تشغيل السيرفر. في المرة التالية لتشغيل السيرفر، يجب أن يتم بث نقاط نهاية TCP/UDP الخام عبر البروكسي العكسي.

يمكنك التحقق من ذلك بتحليل عنوان IP للاعبين، والذي يجب أن يكون جميعه عنوان IP الخاص بسيرفر البروكسي مع منافذ مخصصة عشوائية.

شهادة SSL

مع إعداد بروكسي عكسي لـ FiveM، ننصح بشدة بإضافة شهادة SSL للنطاقات التي تستخدمها لضمان نقل البيانات بأمان عبر HTTPS.

يرجى مراجعة دليلنا تثبيت Certbot، الذي يغطي كامل عملية طلب وتجديد شهادات SSL تلقائيًا لنطاقاتك.

الخاتمة

مبروك، لقد أعددت بنجاح بروكسي عكسي لسيرفر FiveM الخاص بك، مما يوفر لك تحسينات متعددة في الأمان والموثوقية والأداء. لأي أسئلة أو مساعدة إضافية، لا تتردد في التواصل مع فريق الدعم لدينا، المتوفر يوميًا لمساعدتك! 🙂