# كيفية نشر وإدارة المستودعات باستخدام Rediacc

المستودعات هي وحدة النشر الأساسية في Rediacc, كل مستودع هو بيئة معزولة ومشفرة مع Docker daemon خاص به ومساحة تخزين مخصصة. في هذا الدرس التعليمي، ستقوم بإنشاء مستودع مشفر ونشر تطبيق حاوية وفحص الحاويات العاملة والتنظيف. عند الانتهاء، ستكون قد أكملت دورة نشر كاملة.

## المتطلبات الأساسية

- تثبيت `rdc` CLI مع تهيئة الإعدادات
- جهاز مُجهّز (انظر [الدرس التعليمي: إعداد الجهاز](/ar/docs/tutorial-setup))
- تطبيق بسيط يحتوي على `Rediaccfile` و `docker-compose.yml`

## التسجيل التفاعلي

![الدرس التعليمي: دورة حياة المستودع](/assets/tutorials/repos-tutorial.cast)

### الخطوة 1: إنشاء مستودع مشفر

يحصل كل مستودع على وحدة تخزين مشفرة بـ LUKS خاصة به. حدد الجهاز وحجم التخزين.

```bash
rdc repo create --name test-app -m server-1 --size 2G
```

يقوم Rediacc بإنشاء وحدة تخزين مشفرة بحجم 2 جيجابايت وتهيئتها وتوصيلها تلقائياً. المستودع جاهز لرفع الملفات.

### الخطوة 2: عرض المستودعات

تأكد من توفر المستودع الجديد.

```bash
rdc repo list -m server-1
```

يعرض جميع المستودعات على الجهاز مع حجمها وحالة التوصيل وحالة التشفير.

### الخطوة 3: فحص مسار التوصيل

قبل النشر، تحقق من أن تخزين المستودع موصّل ويمكن الوصول إليه.

```bash
rdc term connect -m server-1 -c "ls -la /mnt/rediacc/mounts/test-app/"
```

مجلد التوصيل هو المكان الذي تتواجد فيه ملفات التطبيق, `Rediaccfile` و `docker-compose.yml` وأي وحدات تخزين بيانات.

### الخطوة 4: بدء الخدمات

انشر التطبيق عن طريق توصيل المستودع وبدء خدمات Docker الخاصة به.

```bash
rdc repo up --name test-app -m server-1 --mount
```

يقوم هذا بتوصيل المستودع (إذا لم يكن موصّلاً بالفعل)، وبدء Docker daemon معزول، وبدء الخدمات عبر `up()`.

> **ملاحظة:** يستغرق النشر الأول وقتاً أطول لتنزيل صور Docker. عمليات البدء اللاحقة تستخدم الصور المخزنة مؤقتاً.

### الخطوة 5: عرض الحاويات العاملة

```bash
rdc machine containers server-1
```

يعرض جميع الحاويات العاملة عبر جميع المستودعات على الجهاز، بما في ذلك استخدام المعالج والذاكرة.

### الخطوة 6: الوصول إلى طرفية المستودع

لتشغيل الأوامر داخل بيئة Docker المعزولة للمستودع:

```bash
rdc term connect -m server-1 -r test-app -c "docker ps"
```

تقوم جلسة الطرفية بتعيين `DOCKER_HOST` إلى مقبس Docker المعزول الخاص بالمستودع. أي أمر Docker يعمل فقط على حاويات ذلك المستودع.

### الخطوة 7: إيقاف وتنظيف

عندما تنتهي، أوقف الخدمات وأغلق وحدة التخزين المشفرة واحذف المستودع اختيارياً.

```bash
rdc repo down --name test-app -m server-1  # إيقاف الخدمات
rdc repo unmount --name test-app -m server-1  # إغلاق وحدة التخزين المشفرة
rdc repo delete --name test-app -m server-1  # حذف المستودع نهائياً
```

`down` يوقف الحاويات و Docker daemon. `unmount` يغلق وحدة LUKS. `delete` يحذف المستودع ومساحة التخزين المشفرة نهائياً.

> **تحذير:** `repo delete` لا يمكن التراجع عنه. يتم تدمير جميع البيانات في المستودع. أنشئ نسخة احتياطية أولاً إذا لزم الأمر.

## استكشاف الأخطاء وإصلاحها

**"مساحة القرص غير كافية" أثناء إنشاء المستودع**
تحتاج وحدة التخزين المشفرة إلى مساحة حرة متجاورة على المضيف. تحقق من المساحة المتاحة باستخدام `df -h` على الخادم. فكر في استخدام قيمة `--size` أصغر أو تحرير مساحة القرص.

**انتهاء مهلة سحب صورة Docker أثناء `repo up`**
قد تنتهي مهلة الصور الكبيرة على الاتصالات البطيئة. أعد المحاولة باستخدام `rdc repo up`, يستأنف من حيث توقف. للبيئات المعزولة عن الشبكة، حمّل الصور مسبقاً في Docker daemon الخاص بالمستودع.

**"فشل التوصيل" أو "فشل فتح LUKS"**
تُشتق عبارة مرور LUKS من الإعدادات. تحقق من أنك تستخدم نفس الإعدادات التي أنشأت المستودع. إذا كانت وحدة التخزين موصّلة بالفعل بواسطة عملية أخرى، افصلها أولاً.

## الخطوات التالية

لقد أنشأت مستودعاً مشفراً ونشرت تطبيقاً وفحصت الحاويات وقمت بالتنظيف. لمراقبة عمليات النشر الخاصة بك:

- [الخدمات](/ar/docs/services), مرجع Rediaccfile وشبكات الخدمات والتشغيل التلقائي وتخطيطات الخدمات المتعددة
- [الدرس التعليمي: المراقبة والتشخيص](/ar/docs/tutorial-monitoring), فحوصات الصحة وفحص الحاويات والتشخيص
- [الأدوات](/ar/docs/tools), الطرفية ومزامنة الملفات وتكامل VS Code