استضافة خادم Minecraft على VPS بنظام Ubuntu 24.04
شغّل خادم Paper على VPS بـUbuntu 24.04: اختر RAM المناسبة، استخدم Java 25، اضبط systemd وufw للمنفذ 25565، وخذ نسخاً احتياطية آمنة للعالم.
ما الذي ستبنيه
خادم Minecraft Java Edition يعمل باستمرار: يستخدم Paper على Ubuntu 24.04، ويعمل كمستخدم مخصص باسم minecraft تحت إدارة systemd مع Restart=on-failure، وتكون whitelist مفعّلة، والمنفذ 25565 مفتوحاً في ufw وفي جدار الحماية الشبكي لدى مزود الخدمة إذا كان مفعّلاً، وتُجرى النسخ الاحتياطية بطريقة لا تتسبب في إتلاف العالم الذي يفترض أن تحميه. يتكون الخادم نفسه من ملف jar واحد وأمر java واحد؛ وكل ما يميز خادماً يلعب عليه أصدقاؤك لمدة عام عن خادم يتوقف في عطلة نهاية الأسبوع الأولى يتعلق بذلك الأمر، وهذا ما يشرحه هذا الدليل.
تحذيران صريحان قبل أن تنفق المال. أولاً، يستهلك Minecraft ذاكرة كبيرة ويعتمد في معظمه على نواة واحدة: لن يشغّل VPS بسعة 1 GB خادماً قابلاً للعب، وتتفوق نواة سريعة واحدة على أربع نوى بطيئة. ثانياً، هذا هو Java Edition. لا يستطيع لاعبو Bedrock، أو أجهزة الألعاب، أو الهواتف، أو تطبيق Windows Bedrock، الانضمام إلى خادم Java؛ إذ يحتاج Bedrock إلى برنامج خادم مختلف يستخدم UDP 19132، أو إلى إضافة Geyser، وهذا خارج نطاق الدليل.
تحتاج إلى VPS جديد يعمل بـ Ubuntu 24.04 عبر KVM، مع root أو sudo، ونحو ثلاثين دقيقة.
احتياجات الخادم الخاص بالأصدقاء من الموارد
ذاكرة RAM هي العامل الأهم. والأرقام الفعلية أقل مما توحي به منتديات حزم التعديلات:
- 2 GB تشغّل النسخة الأصلية دون تعديلات لـ 2–5 لاعبين، مع مسافة عرض متوسطة. اللعبة قابلة للعب، لكن من دون هامش موارد.
- 4 GB هي السعة المناسبة لخادم الأصدقاء: نحو عشرة لاعبين متزامنين على Paper مع عدد قليل من الإضافات، مع بقاء موارد كافية لنظام التشغيل.
- 8 GB وما فوق مناسبة لحزم التعديلات ولأكثر من 20 لاعبًا. في هذه الحالة، يجب أن تهتم أيضًا بسرعة CPU على نواة واحدة، لأن الحلقة الرئيسية للعبة تعمل على خيط واحد.
يكبر العالم أيضًا على القرص مع استكشاف اللاعبين. وقد يصل عالم بقاء كثير الاستكشاف إلى عدة غيغابايت، لذلك اترك هامشًا للعالم ولنسخه الاحتياطية.
النسخة الأصلية دون تعديلات أم Paper؟ Paper بديل مباشر لملف jar الرسمي: يستخدم العوالم نفسها والعملاء أنفسهم، ولا يحتاج إلى تعديلات على جانب العميل. ويعيد كتابة أبطأ مسارات الخادم، مثل تحميل المقاطع، وتحديث الكيانات، وناقلات العناصر، كما يضيف API للإضافات. السبب الوحيد لتشغيل النسخة الأصلية دون تعديلات هو حاجتك إلى آليات مطابقة تمامًا لآليات النسخة الأصلية من أجل مزارع redstone التقنية التي قد تغيّرها تحسينات Paper. أما في الحالات الأخرى، فيتيح Paper تشغيل عدد أكبر من اللاعبين لكل غيغابايت. كل ما يلي يعمل مع الخيارين.
الخطوة 1: تثبيت Java 25
يتطلب Minecraft 26.1 وكل إصدار صدر بعده Java 25؛ ولا يغطي Java 21 إلا السلسلة الأقدم من 1.20 إلى 1.21.11. يوفّر Ubuntu 24.04 إصدار Java 25 عبر مستودعات التحديثات والأمان. ثبّت JRE الكامل، وليس الإصدار -headless: يحذّر دليل تثبيت Paper من استخدام الإصدارات headless لأنها تفتقد تبعيات يحتاج إليها Paper.
sudo apt update && sudo apt install -y openjdk-25-jre
java -versionالنتيجة الصحيحة: يجب أن يقرأ السطر الأول openjdk version "25.0.x". إذا قرأ 21 أو 17 أو 11، فهذا يعني أن JRE آخر مثبت وله الأولوية؛ أصلح ذلك باستخدام sudo update-alternatives --config java، واختر الإدخال الذي يحتوي على java-25.
يؤدي تخطي هذا الفحص إلى أكثر أخطاء خادم Minecraft بحثاً على Google لاحقاً. عند استخدام Java 21، يتوقف ملف jar الخاص بالخادم فوراً ويعرض:
Error: LinkageError occurred while loading main class net.minecraft.bundler.Main
java.lang.UnsupportedClassVersionError: net/minecraft/bundler/Main has been
compiled by a more recent version of the Java Runtime (class file version 69.0),
this version of the Java Runtime only recognizes class file versions up to 65.0توضح الأرقام عدم التطابق: إصدار ملف الفئة 69.0 هو Java 25، و65.0 هو Java 21، و61.0 هو Java 17. أياً كان الزوج الذي تراه، فالحل نفسه: ثبّت JRE الأحدث، ثم أعد تشغيل update-alternatives.
الخطوة 2: مستخدم مخصص، وليس root
ينفّذ الخادم شيفرة الإضافات ويحلّل مدخلات الشبكة من أي شخص يستطيع الوصول إلى المنفذ. إذا حدث خطأ، فإن الاختراق الذي يعمل بصلاحيات root يسيطر على VPS بالكامل؛ أما الاختراق الذي يعمل بصلاحيات minecraft فيسيطر على عالم اللعبة.
sudo adduser --system --group --home /opt/minecraft minecraftينشئ --system حسابًا بلا كلمة مرور، ولا يمكنه تسجيل الدخول عبر SSH، ويكون /opt/minecraft دليله المنزلي ودليل العمل. من الآن فصاعدًا، يُنفَّذ كل أمر يتعامل مع الخادم باستخدام هذا المستخدم.
الخطوة 3: نزّل ملف jar للخادم من المصدر الرسمي
يجب أن تحصل على ملف jar للخادم من مكانين فقط: صفحة تنزيل الخادم الرسمية على minecraft.net لإصدار vanilla، وصفحة التنزيلات على papermc.io لإصدار Paper. أما «مراكز التنزيل» التابعة لجهات خارجية التي تعيد حزم ملفات jar للخوادم، فهي قناة مستمرة لتوزيع البرمجيات الخبيثة. فملف jar للخادم عبارة عن تعليمات برمجية عشوائية ستشغّلها على مدار 24 ساعة طوال أيام الأسبوع على خادم متصل بالإنترنت.
انسخ رابط التنزيل للإصدار الحالي من الصفحة الرسمية. يتغير عنوان URL مع كل إصدار وكل build، لذلك سيصبح تثبيت عنوان واحد هنا قديماً. ثم:
cd /opt/minecraft
sudo -u minecraft wget -O server.jar 'PASTE-THE-COPIED-URL-HERE'النتيجة الصحيحة: server.jar بحجم يقارب 60 MB، ويمتلكه minecraft، وقد تم التحقق منه باستخدام ls -lh /opt/minecraft/server.jar.
الخطوة 4: التشغيل الأول، واتفاقية EULA، ومنح حسابك صلاحيات المشغّل
شغّل الخادم بشكل تفاعلي مرة واحدة قبل استخدام systemd. ينجز التشغيل الأول مهمتين فقط، وتكون وحدة التحكم المباشرة مناسبة لهما.
cd /opt/minecraft
sudo -u minecraft java -Xms1G -Xmx1G -jar server.jar noguiيتوقف الخادم خلال ثوانٍ. يقضي Paper بضع لحظات إضافية أولًا في تطبيق تصحيحاته. وينتهي السجل بالسطر الذي يراه الجميع:
[ServerMain/INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info.هذا ليس خطأً، بل بوابة ترخيص. أنشأ التشغيل الملف eula.txt بجانب ملف jar. اقرأ اتفاقية EULA المرتبطة إذا لم تكن قد قرأتها، ثم غيّر قيمة العلم:
sudo -u minecraft sed -i 's/eula=false/eula=true/' /opt/minecraft/eula.txtشغّل الأمر نفسه java مرة أخرى. ينشئ الخادم العالم هذه المرة، ويستغرق ذلك دقيقة أو دقيقتين عند التشغيل الأول، ثم يستقر عند:
[Server thread/INFO]: Done (9.204s)! For help, type "help"لديك الآن وحدة تحكم مباشرة. استخدمها للمهمة الثانية: اكتب op YourMinecraftName (اسم المستخدم المطابق تمامًا داخل اللعبة)، وسيضيفك الخادم إلى ops.json. لذلك، عندما لا تكون هناك وحدة تحكم متصلة، يمكنك تنفيذ جميع أوامر الإدارة من داخل اللعبة. ثم اكتب stop لحفظ الخادم والخروج منه بطريقة سليمة.
الخطوة 5: server.properties، ولماذا تظل online-mode مضبوطة على true
كتبت عملية التشغيل الأولى أيضًا الملف server.properties. معظم الإعدادات الافتراضية مناسبة؛ وهذه هي الأسطر التي تستحق اتخاذ قرار مدروس بشأنها:
online-mode=true
white-list=true
enforce-whitelist=true
view-distance=8
max-players=10
motd=A private server for people I actually knowيطلب online-mode=true من الخادم التحقق من كل اسم مستخدم ينضم، عبر خوادم جلسات Mojang، لإثبات أن اللاعب يملك الحساب. عند ضبطه على false، وهو خيار «الخادم غير الموثّق»، يقبل الخادم هوية أي عميل كما يحددها العميل نفسه. يمكن لأي شخص الانضمام بأي اسم، بما في ذلك اسمك. وبما أن صلاحيات op وقوائم السماح تعتمد على الاسم، يمكن لمنتحل الهوية الدخول بصلاحيات operator الخاصة بك. السبب المشروع الوحيد لتعطيله هو تشغيل الخادم خلف وكيل مصادقة مثل Velocity، إذ يتحقق الوكيل من اللاعبين بنفسه. في الخادم العادي، تظل قيمته true دون استثناء.
يُعد view-distance أكبر إعداد يؤثر في الأداء ضمن هذا الملف. تتناسب تكلفة CPU وRAM معه تقريبًا تربيعيًا. القيمة 8 إعداد افتراضي مناسب لخادم VPS، أما القيمة 10 فهي الإعداد الافتراضي في vanilla وتستهلك موارد أكبر بشكل ملحوظ.
يؤدي white-list=true مع enforce-whitelist=true إلى منع الغرباء من دخول الخادم، وتوضح فقرة الأمان أدناه أن هذا الإجراء ضروري. أضف اللاعبين باستخدام /whitelist add TheirName داخل اللعبة بصلاحية op.
الخطوة 6: أعلام الذاكرة، ولماذا يجب أن تتطابق -Xms و-Xmx
يخصّص JVM ذاكرة الكومة بين -Xms (الحجم الابتدائي) و-Xmx (الحد الأقصى). في خادم ألعاب مخصّص، اضبطهما على القيمة نفسها. ستصل الكومة إلى الحد الأقصى على أي حال، وزيادتها على مراحل لا تؤدي إلا إلى زيادة عمل جامع البيانات المهملة أثناء اللعب. في VPS بسعة 4 GB، تكون القيم المناسبة:
/usr/bin/java -Xms3G -Xmx3G -jar server.jar noguiلا تمثل -Xmx إجمالي الذاكرة التي تستخدمها العملية. يضيف JVM مساحة إضافية خارج الكومة، ومكدسات للخيوط، وذاكرات JIT مؤقتة، ومخازن مؤقتة مباشرة، بإجمالي يقارب نصف GB أو أكثر. ويحتاج Ubuntu نفسه إلى مساحة. القاعدة العملية: يجب ألا تتجاوز -Xmx سعة ذاكرة VPS مطروحًا منها 1 GB. إذا تجاوزت هذا الحد، فستواجه أحد فشلين. إذا فشل التخصيص مبدئيًا، يرفض الخادم بدء التشغيل ويعرض:
Error: Could not reserve enough space for object heapهذا الخطأ واضح وفوري. أما الحالة الأسوأ فتبدأ فيها الخدمة بصورة طبيعية ثم تتوقف بعد ساعات، عندما تمتلئ الكومة تحت الحمل ويختار قاتل العمليات الخارجة عن الذاكرة (OOM) في النواة أكبر عملية على الخادم، وهي JVM. لا يظهر شيء في سجل الخادم. ستجد الدليل في sudo dmesg | grep -i oom، في سطر مثل Out of memory: Killed process 1234 (java). إذا أعادت خدمتك التشغيل «عشوائيًا»، فتحقق من ذلك أولًا، ثم خفّض -Xmx.
بالنسبة إلى Paper، توثّق الجهة المسؤولة عن المشروع أعلام Aikar، وهي مجموعة مضبوطة من إعدادات G1GC (-XX:+UseG1GC -XX:MaxGCPauseMillis=200 وعشرات الإعدادات الأخرى) لتقليل تقلبات إيقاف جامع البيانات المهملة على الأكوام الأكبر. أنشئ السطر الكامل من وثائق Paper. على كومة بسعة 2–4 GB، يكون التحسن محدودًا، لكن هذه الأعلام غير ضارة.
الخطوة 7: وحدة systemd مع Restart=on-failure
يتوقف الخادم الذي شغّلته يدويًا بانتهاء جلسة SSH، ويبقى متوقفًا بعد إعادة التشغيل. اكتب /etc/systemd/system/minecraft.service:
[Unit]
Description=Minecraft server (Paper)
After=network-online.target
Wants=network-online.target
[Service]
User=minecraft
Group=minecraft
WorkingDirectory=/opt/minecraft
ExecStart=/usr/bin/java -Xms3G -Xmx3G -jar server.jar nogui
Restart=on-failure
RestartSec=10
TimeoutStopSec=120
[Install]
WantedBy=multi-user.targetsudo systemctl daemon-reload
sudo systemctl enable --now minecraft
systemctl status minecraft
journalctl -u minecraft -fالنتيجة الصحيحة: يعرض status القيمة active (running)، وينتهي السجل، الذي يحتوي الآن على مخرجات وحدة تحكم الخادم، عند السطر Done مجددًا.
هناك خياران مقصودان في هذه الوحدة. يعيد Restart=on-failure تشغيل الخادم بعد حدوث عطل، لكنه لا يفعل ذلك بعد stop سليم، لذلك تبقى الصيانة ممكنة. كما أن TimeoutStopSec=120 أهم مما يبدو: يرسل systemctl stop إشارة SIGTERM، فيلتقطها خادم Minecraft ويحفظ كل العوالم قبل الخروج، وقد يستغرق هذا الحفظ وقتًا في العوالم الكبيرة. يمكن أن تتسبب مهلة systemd الافتراضية في إرسال SIGKILL إلى JVM أثناء الحفظ، وهذا يؤدي تحديدًا إلى تلف ملفات المناطق. اضبط المهلة على دقيقتين.
إذا تكرر توقف الخدمة وتشغيلها، وظهر في السجل ما يلي:
[Server thread/WARN]: **** FAILED TO BIND TO PORT!
[Server thread/WARN]: The exception was: io.netty.channel.unix.Errors$NativeIoException: bind(..) failed: Address already in use
[Server thread/WARN]: Perhaps a server is already running on that port?فهذا يعني أن عملية أخرى تشغل المنفذ 25565، وغالبًا ما تكون عملية التشغيل الأمامية السابقة التي لا تزال تعمل في جلسة SSH أخرى. اعثر عليها باستخدام sudo ss -tlnp | grep 25565 وأوقف تلك النسخة؛ لا تشغّل خادمين على منفذ واحد.
الخطوة 8: افتح المنفذ 25565 في جدارَي الحماية
يستخدم Minecraft Java بروتوكول TCP 25565 فقط. بروتوكول UDP مخصص لبروتوكول الاستعلام الاختياري، وهو معطّل افتراضياً. على VPS:
sudo ufw allow OpenSSH
sudo ufw allow 25565/tcp
sudo ufw enableهذا هو جدار الحماية الأول. يوفّر كثير من مزوّدي VPS أيضاً جدار حماية ثانياً على مستوى الشبكة في لوحة التحكم. وعندما يكون هذا الجدار مفعّلاً، ينساه المستخدمون غالباً. في SSD Nodes، يُسمى هذا الخيار Advanced Firewall Groups، وهو إضافة مدفوعة تعيّنها عند إتمام الطلب أو من لوحة التحكم. إذا كان خادمك يستخدمه، فافتح TCP 25565 فيه أيضاً. تكون أعراض غياب القاعدة في أيٍّ من الجدارين غير محددة بشكل مزعج: تتوقف اللعبة عند "Connecting to the server..." ثم تفشل مع Connection timed out: no further information، من دون رفض اتصال أو خطأ من الخادم أو أي شيء في السجل، لأن الحزم لم تصل إليه. تحقّق من جهاز خارج VPS باستخدام nc -vz your.server.ip 25565. يعني succeeded أن كل جدران الحماية في المسار تسمح بالاتصال. أما توقف الاتصال فعادةً فيعني أن أحدها ما زال يسقط الحزم، مع أن المضيف المشغول جداً لدرجة عدم قبول الاتصالات قد يتسبب أيضاً في انتهاء المهلة. لذلك تأكد من أن الخادم يستمع باستخدام ss على الخادم نفسه.
ما دمت داخل ufw، فإن الخادم نفسه يشغّل SSH على عنوان IP عام، وستبدأ ضوضاء سجلات محاولات القوة الغاشمة خلال ساعات. أعد إعداد Fail2ban لـ SSH على Ubuntu 24.04 قبل أن تنسى ذلك.
اتصل الآن: Multiplayer، ثم Direct Connection، ثم أدخل عنوان IP للخادم. لأنك منحت حسابك صلاحية op في الخطوة 4، ستعمل أوامر اللعبة فوراً، /whitelist add FriendName لكل لاعب، و/gamemode creative إذا كانت هذه هي الخطة.
الخطوة 9: القائمة البيضاء، لأن الإنترنت يكتشف المنفذ 25565
إن إبقاء خادم Minecraft مفتوحًا على الإنترنت ليس خطرًا نظريًا: تفحص أدوات المسح الجماعي كامل نطاق IPv4 بحثًا عن المنفذ 25565 باستمرار، وقد رسمت مشاريع التخريب الهواية خريطة لمئات الآلاف من الخوادم المفتوحة بهذه الطريقة، ويتلقى الخادم غير المقيّد بالقائمة البيضاء زوارًا غير مدعوين خلال أيام، وأحيانًا خلال ساعات. القائمة البيضاء من الخطوة 5 هي الحل: يثبت online-mode=true الهوية، وتقيّد القائمة البيضاء الدخول بالهويات التي اخترتها. يشكّل هذان العنصران نموذج الأمان كاملًا، وهما كافيان لخادم مخصص للأصدقاء.
للوصول إلى وحدة التحكم دون تشغيل اللعبة، ولإنشاء نسخ احتياطية باستخدام البرامج النصية، ولتشغيل مهمة cron، فعّل RCON في server.properties (enable-rcon=true، واستخدم rcon.password قويًا، والمنفذ 25575)، ثم أنشئ عميل mcrcon الصغير من مصدره على GitHub داخل VPS نفسه؛ فهو غير متوفر في مستودعات Ubuntu. لا تفتح المنفذ 25575 في أي جدار ناري: يرسل RCON كلمة المرور بنص واضح، ولذلك يجب أن يظل متاحًا عبر loopback فقط.
الخطوة 10: النسخ الاحتياطية التي لا تفسد العالم
القاعدة الوحيدة: لا تنسخ مجلداً للعالم بينما يكتب الخادم فيه. تُعاد كتابة ملفات المناطق باستمرار أثناء اللعب؛ وإذا تزامن tar مع عملية كتابة، فسينتج أرشيفاً يحتوي على أجزاء مكتوبة جزئياً، وعند استعادته لاحقاً، في اللحظة التي يجب أن يعمل فيها النسخ الاحتياطي، سيمتلئ السجل بأخطاء تحميل الأجزاء وستظهر فجوات في التضاريس. تتجنب ممارستان هذه المشكلة.
تتمثل طريقة إيقاف-نسخ-تشغيل في الخيار البسيط، مقابل توقف الخدمة لمدة دقيقة:
sudo systemctl stop minecraft
sudo mkdir -p /opt/backups
sudo tar czf /opt/backups/world-$(date +%F-%H%M).tgz \
-C /opt/minecraft world
sudo systemctl start minecraft(منذ 26.1، يحتفظ Paper بالأبعاد الثلاثة كلها داخل world/dimensions/، كما يفعل vanilla، لذلك يكون world هو العالم بأكمله. أما خادم Paper الذي لا يزال يعمل بالإصدار 1.21.11 أو إصدار أقدم، فيقسمها إلى world وworld_nether وworld_the_end؛ أضف المجلدين الأخيرين إلى أمر tar هناك.)
تُنشئ طريقة Save-off نسخة احتياطية أثناء تشغيل الخادم: أرسل عبر RCON الأمر save-off (لإيقاف الحفظ التلقائي)، ثم save-all flush (لإجبار الخادم على كتابة كل شيء إلى القرص والانتظار)، وأنشئ أرشيف tar، ثم نفّذ save-on. استخدم هذه الطريقة في cron عند الساعة 5 صباحاً.
في كلتا الحالتين، لا تُعد النسخة الاحتياطية الموجودة على VPS نفسه الذي يعمل عليه الخادم نسخة احتياطية فعلية. استخدم scp أو rclone لنقل الأرشيفات خارج الخادم، واحتفظ بأكثر من نسخة. وبما أنك لن تراقب وحدة التحكم عند حدوث عطل، أضف فحصاً خارجياً للمنفذ: استخدم Uptime Kuma على خادم آخر لإجراء فحص TCP على المنفذ 25565، وبذلك تعرف أن الخادم متوقف قبل اللاعبين.
الإضافات والترقيات
في Paper، تكون الإضافة عبارة عن ملف jar يُوضع في /opt/minecraft/plugins/، ثم تعيد التشغيل. هذا هو التثبيت بالكامل. احصل على الإضافات من صفحات مشاريعها الرسمية فقط، مثل Hangar وModrinth وSpigotMC، للسبب نفسه المتعلق بملف server jar: كل إضافة هي تعليمات برمجية عشوائية تعمل بصلاحيات المستخدم minecraft.
ترقية الخادم تعني: أوقفه، وأنشئ نسخة احتياطية، واستبدل server.jar بالبنية الخاصة بإصدار Minecraft الجديد، ثم شغّله. انتبه إلى نقطتين. ترقيات العوالم أحادية الاتجاه. فالعالم الذي فتحه إصدار أحدث لن يُفتح في إصدار أقدم، ولهذا تكون النسخ الاحتياطية مهمة أيضاً. كما أن الإضافات تتأخر غالباً عن إصدار Minecraft الجديد أياماً أو أسابيع، لذلك تحقّق من التوافق قبل تثبيت إصدار جديد في اليوم الأول. الانتقال من 1.21.11 إلى 26.1 أو إصدار أحدث يتطلب أيضاً Java 25 (الخطوة 1)، وينقل مجلدي Nether وEnd في Paper إلى world/dimensions/.
إذا كنت تفضّل إدارة كل ذلك داخل حاوية، مع تثبيت الإصدارات وقبول EULA وخيارات الذاكرة كمتغيرات بيئية، فإن صورة itzg/minecraft-server الشائعة تشغّل خادم Paper نفسه باستخدام Docker Compose على VPS الخاص بك، مع تطبيق قواعد الجدار الناري والنسخ الاحتياطي نفسها.
FAQ
كم يحتاج خادم Minecraft من RAM؟
تشغّل سعة 2 GB الإصدار vanilla لما بين 2 و5 لاعبين. وتكون سعة 4 GB مناسبة لخادم أصدقاء يضم نحو عشرة لاعبين على Paper مع عدة plugins. تحتاج modpacks و20 لاعباً أو أكثر إلى 8 GB أو أكثر. أياً كانت سعة VPS، اضبط -Xmx على قيمة لا تتجاوز إجمالي RAM ناقص 1 GB، لأن JVM تستخدم ذاكرة إضافية خارج heap، وقد يؤدي تجاوز الحد إلى Error: Could not reserve enough space for object heap أو إلى OOM kill صامت.
لماذا لا يستطيع أصدقائي الاتصال بخادم Minecraft؟
يعني تعليق العميل الذي ينتهي بـ Connection timed out: no further information عادةً وجود مشكلة في firewall: قد يكون ufw على VPS، أو network firewall لدى مزود الخدمة إذا كان مفعّلاً في control panel. يجب فتح TCP 25565 في كل firewall موجود على المسار. تأكد من أن الخادم يستمع فعلياً باستخدام sudo ss -tlnp | grep 25565 على الخادم، ثم اختبره من خارج الشبكة باستخدام nc -vz your.server.ip 25565.
هل ينبغي أن أضبط online-mode=false في server.properties؟
لا. عند استخدام online-mode=false، يتجاوز الخادم مصادقة Mojang بالكامل. وبذلك يمكن لأي شخص الانضمام باستخدام أي اسم مستخدم، بما في ذلك اسم مستخدم op، مع وراثة صلاحياته. كما تتعطل skins وUUIDs الثابتة. الاستخدام المشروع الوحيد هو تشغيله خلف proxy للمصادقة مثل Velocity، بحيث يتحقق proxy من اللاعبين بنفسه. في الخادم العادي تبقى القيمة true.
هل Paper أفضل من خادم Minecraft vanilla؟
نعم، بالنسبة إلى معظم المستخدمين. Paper هو ملف jar بديل يُحمّل عوالم vanilla، ويقبل العملاء غير المعدّلين، ويعالج الكيانات ويحمّل chunks بكفاءة أعلى بكثير، كما يضيف منظومة plugins. الاستثناء هو مجتمعات technical-redstone التي تحتاج إلى سلوك vanilla مطابقاً على مستوى البتات، إذ تغيّر بعض تحسينات Paper هذا السلوك. على VPS صغير، توفّر كفاءة Paper عملياً RAM إضافية من دون تكلفة أخرى.
كيف أنشئ نسخة احتياطية من عالم Minecraft من دون إتلافه؟
لا تنشئ أرشيفاً لدليل العالم أثناء كتابة الخادم فيه. فنسخ الدليل بالتزامن مع كتابة region-file قد ينتج chunks تالفة لا تكتشفها إلا عند الاستعادة. أوقف الخادم، ثم استخدم tar لأرشفة أدلة العوالم وشغّله مجدداً، أو أبقه قيد التشغيل باستخدام save-off وsave-all flush وtar وsave-on عبر RCON. ثم انقل الأرشيف خارج VPS.