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 — تأكد من امتلاك نسخة أصلية.