🎮 Minecraft Java Server — Hugging Face Spaces
سيرفر Minecraft Java Edition صغير يعمل داخل Docker على Hugging Face Spaces. مثالي للعب مع الأصدقاء دون الحاجة لاستضافة مدفوعة.
ما الذي يفعله هذا المشروع؟
- يُشغّل Minecraft Java server داخل حاوية Docker.
- يُنزّل JAR السيرفر تلقائيًا من Mojang عند أول تشغيل.
- يحفظ عالمك ولوغاتك في
/data(دائم بين إعادات التشغيل). - يقبل إعدادات مرنة عبر متغيرات البيئة دون تعديل الكود.
المتطلبات
| المتطلب | التفاصيل |
|---|---|
| حساب Hugging Face | مجاني على huggingface.co |
| Space من نوع Docker | اختر Docker عند إنشاء الـ Space |
| Hardware | Space مجاني يكفي للتجربة — CPU basic |
| Minecraft Java Edition | على أجهزة اللاعبين (نسخة مدفوعة) |
| منفذ مفتوح | HF Spaces لا تدعم TCP مباشرة — راجع ملاحظة الشبكة |
كيفية الرفع إلى Hugging Face
# 1. ثبّت git-lfs إن لم يكن مثبتًا
git lfs install
# 2. أنشئ Space جديد من نوع Docker على huggingface.co/new-space
# 3. استنسخ الـ Space الفارغ
git clone https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME
cd YOUR_SPACE_NAME
# 4. انسخ ملفات هذا المشروع إليه
cp -r /path/to/minecraft-hf-space/* .
# 5. ارفع
git add .
git commit -m "Initial Minecraft server setup"
git push
بعد الـ push، سيبني HF الـ Docker image تلقائيًا ويُشغّل السيرفر.
كيفية تشغيل السيرفر
بعد رفع الملفات:
- افتح الـ Space على Hugging Face.
- انتظر حتى يكتمل البناء (عادةً 2-3 دقائق).
- راقب اللوغات من تبويب Logs في الـ Space.
- عند ظهور
Done! For help, type "help"— السيرفر شغّال.
الاتصال بالسيرفر ⚠️
تنبيه مهم: Hugging Face Spaces لا تكشف منافذ TCP خارجيًا تلقائيًا. لتمرير المنفذ، استخدم إحدى الطرق التالية:
| الخيار | التفاصيل |
|---|---|
| playit.gg | خدمة مجانية لتمرير منفذ Minecraft — الأسهل |
| ngrok | يتطلب حساب مجاني، يدعم TCP |
| Cloudflare Tunnel | للمستخدمين المتقدمين |
مثال باستخدام playit.gg داخل الـ container:
# أضف في start.sh قبل تشغيل Java:
curl -SsL https://playit.gg/downloads/playit-linux-amd64 -o /tmp/playit
chmod +x /tmp/playit
/tmp/playit &
كيف أحافظ على العالم محفوظًا؟
- العالم يُحفظ في
/data/world(أو أي اسم اخترته فيMC_WORLD). /dataهو الـ volume الدائم في Spaces — البيانات لا تُحذف عند إعادة التشغيل.- لعمل نسخة احتياطية يدوية: اذهب إلى Files في الـ Space وحمّل مجلد
data/world.
⚠️ إذا حذفت الـ Space نفسه، ستُفقد البيانات. احتفظ بنسخة خارجية دائمًا.
كيف أغيّر الإعدادات؟
كل الإعدادات الرئيسية تُتحكم بها عبر Environment Variables في إعدادات الـ Space:
| المتغير | الافتراضي | الوصف |
|---|---|---|
MC_VERSION |
1.21.4 |
إصدار Minecraft |
MC_MEMORY |
1G |
الحد الأدنى للـ RAM |
MC_MAX_MEMORY |
2G |
الحد الأقصى للـ RAM |
MC_WORLD |
world |
اسم مجلد العالم |
SERVER_PORT |
25565 |
منفذ السيرفر |
طريقة التعديل:
- افتح Space ← Settings ← Variables and secrets
- أضف المتغير بالاسم والقيمة المطلوبة.
- أعد تشغيل الـ Space.
تغيير إعدادات اللعبة (server.properties):
بعد أول تشغيل، عدّل /data/server.properties مباشرة عبر:
- أداة الـ terminal في الـ Space (إن توفرت)
- أو أضف سكريبت يعدّل الملف قبل التشغيل
هيكل الملفات
minecraft-hf-space/
├── Dockerfile # تعريف الحاوية
├── start.sh # سكريبت التشغيل
├── README.md # هذا الملف
└── config/
└── server.properties.template # قالب الإعدادات
بعد التشغيل الأول، ستجد في /data:
/data/
├── server.jar # JAR السيرفر (مُخزَّن مؤقتًا)
├── eula.txt
├── server.properties
├── world/ # العالم المحفوظ
└── logs/
نصائح الأداء
- RAM: على الـ Space المجاني (16GB RAM)،
MC_MAX_MEMORY=3Gجيد لـ 5 لاعبين. - view-distance: قيمة 6-8 تكفي وتوفر CPU.
- Aikar's flags: مُضمّنة في
start.shلتحسين GC.
الترخيص
هذا المشروع لأغراض تعليمية وتجريبية. Minecraft ملك لـ Mojang/Microsoft — تأكد من امتلاك نسخة أصلية.