File size: 5,564 Bytes
019c960 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 | # 🎮 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 — تأكد من امتلاك نسخة أصلية.
|