| # 🎮 Minecraft Java Server — Hugging Face Spaces |
|
|
| > سيرفر Minecraft Java Edition صغير يعمل داخل Docker على Hugging Face Spaces. |
| > مثالي للعب مع الأصدقاء دون الحاجة لاستضافة مدفوعة. |
|
|
| --- |
|
|
| ## ما الذي يفعله هذا المشروع؟ |
|
|
| - يُشغّل **Minecraft Java server** داخل حاوية Docker. |
| - يُنزّل JAR السيرفر تلقائيًا من Mojang عند أول تشغيل. |
| - يحفظ عالمك ولوغاتك في `/data` (دائم بين إعادات التشغيل). |
| - يقبل إعدادات مرنة عبر متغيرات البيئة دون تعديل الكود. |
|
|
| --- |
|
|
| ## المتطلبات |
|
|
| | المتطلب | التفاصيل | |
| |--------|----------| |
| | حساب Hugging Face | مجاني على [huggingface.co](https://huggingface.co) | |
| | Space من نوع Docker | اختر **Docker** عند إنشاء الـ Space | |
| | Hardware | Space مجاني يكفي للتجربة — CPU basic | |
| | Minecraft Java Edition | على أجهزة اللاعبين (نسخة مدفوعة) | |
| | منفذ مفتوح | HF Spaces لا تدعم TCP مباشرة — راجع ملاحظة الشبكة | |
|
|
| --- |
|
|
| ## كيفية الرفع إلى Hugging Face |
|
|
| ```bash |
| # 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 تلقائيًا ويُشغّل السيرفر. |
|
|
| --- |
|
|
| ## كيفية تشغيل السيرفر |
|
|
| بعد رفع الملفات: |
|
|
| 1. افتح الـ Space على Hugging Face. |
| 2. انتظر حتى يكتمل البناء (عادةً 2-3 دقائق). |
| 3. راقب اللوغات من تبويب **Logs** في الـ Space. |
| 4. عند ظهور `Done! For help, type "help"` — السيرفر شغّال. |
|
|
| ### الاتصال بالسيرفر ⚠️ |
|
|
| > **تنبيه مهم:** Hugging Face Spaces لا تكشف منافذ TCP خارجيًا تلقائيًا. |
| > لتمرير المنفذ، استخدم إحدى الطرق التالية: |
|
|
| | الخيار | التفاصيل | |
| |--------|----------| |
| | **playit.gg** | خدمة مجانية لتمرير منفذ Minecraft — الأسهل | |
| | **ngrok** | يتطلب حساب مجاني، يدعم TCP | |
| | **Cloudflare Tunnel** | للمستخدمين المتقدمين | |
|
|
| مثال باستخدام playit.gg داخل الـ container: |
| ```bash |
| # أضف في 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` | منفذ السيرفر | |
|
|
| ### طريقة التعديل: |
| 1. افتح Space ← **Settings** ← **Variables and secrets** |
| 2. أضف المتغير بالاسم والقيمة المطلوبة. |
| 3. أعد تشغيل الـ 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 — تأكد من امتلاك نسخة أصلية. |
|
|