THEZYZSTUDIO's picture
Upload 2 files
019c960 verified
|
raw
history blame
5.56 kB
# 🎮 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 — تأكد من امتلاك نسخة أصلية.