
# Daytona

تتيح Daytona لـ Termbridge تشغيل طرفيتك ومعاينتك في بيئة سحابية معزولة. استخدمها عندما تريد بيئة قابلة لإعادة الإنتاج، أو معاينة سحابية، أو إبقاء حاسوبك المحمول في وضع الخمول.

## المتطلبات

- مفتاح Daytona API
- مستودع URL يمكن للبيئة المعزولة استنساخه
- بيانات اعتماد Git إذا كان المستودع خاصًا

## البدء السريع

عيّن الواجهة الخلفية إلى Daytona ووفّر إعدادات المستودع:

```bash
export TERMBRIDGE_BACKEND=sandbox-daytona
export TERMBRIDGE_DAYTONA_API_KEY=your_key
export TERMBRIDGE_SANDBOX_REPO=https://github.com/you/your-repo.git
export TERMBRIDGE_SANDBOX_BRANCH=main
export TERMBRIDGE_SANDBOX_PATH=your-repo
export TERMBRIDGE_SANDBOX_NAME=termbridge-sandbox
export TERMBRIDGE_SANDBOX_PUBLIC=true
export TERMBRIDGE_SANDBOX_PREVIEW_PORT=5173
export TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true
```

ثم شغّل Termbridge كالمعتاد:

```bash
npx termbridge
```

احرص دائمًا على تعيين `TERMBRIDGE_SANDBOX_REPO` (أو `--sandbox-repo`). إذا لم تُعيّن، فسيستخدم Termbridge حاليًا مستودعًا افتراضيًا مضمّنًا لا يمكن الوصول إليه علنًا، ما يؤدي إلى إنشاء البيئة المعزولة وفشل الاستنساخ ([#2](https://github.com/inline0/termbridge/issues/2)).

## اتصال Daytona

| المتغير | الغرض |
| --- | --- |
| `TERMBRIDGE_DAYTONA_API_KEY` | مفتاح API الخاص بك في Daytona |
| `TERMBRIDGE_DAYTONA_API_URL` | نقطة نهاية API (الافتراضية `https://app.daytona.io/api`) |
| `TERMBRIDGE_DAYTONA_TARGET` | المنطقة المستهدفة في Daytona (اختياري) |

تُمرر هذه القيم إلى Daytona SDK. عند ترك إحداها دون تعيين، يستخدم SDK متغيره الخاص `DAYTONA_API_KEY` أو `DAYTONA_API_URL` أو `DAYTONA_TARGET`.

## وضع البيئة المعزولة المباشر (بلا نفق)

يشغّل الوضع المباشر خادم Termbridge داخل البيئة المعزولة ويتجاوز Cloudflare بالكامل. رابط مشاركة URL هو رابط معاينة Daytona للخادم داخل البيئة المعزولة.

```bash
export TERMBRIDGE_BACKEND=sandbox-daytona
export TERMBRIDGE_SANDBOX_DIRECT=true
export TERMBRIDGE_SANDBOX_SERVER_PORT=8080
```

تكون القيمة الافتراضية لـ `TERMBRIDGE_SANDBOX_SERVER_PORT` (أو `--port`) هي `8080`. ينشئ الوضع المباشر بيئة معزولة عامة ما لم تعيّن `TERMBRIDGE_SANDBOX_PUBLIC=false`، كما يخفي UI مبدّل الطرفيات.

لا يزال بإمكانك تفعيل المعاينة بتعيين `TERMBRIDGE_SANDBOX_PREVIEW_PORT`؛ ففي الوضع المباشر يُمرر كمنفذ الخادم `--proxy`.

## استنساخ المستودع

سينشئ Termbridge بيئة معزولة ويستنسخ مستودعك إلى دليل العمل فيها.

استخدم هذه الإعدادات:

| المتغير | الغرض |
| --- | --- |
| `TERMBRIDGE_SANDBOX_REPO` | المستودع URL المراد استنساخه (اضبطه دائمًا، راجع البدء السريع) |
| `TERMBRIDGE_SANDBOX_BRANCH` | الفرع المراد سحبه (اختياري) |
| `TERMBRIDGE_SANDBOX_PATH` | مسار المستودع في البيئة المعزولة (اختياري) |
| `TERMBRIDGE_SANDBOX_NAME` | اسم البيئة المعزولة (اختياري، والافتراضي هو `termbridge-<random hex>`) |

إذا لم يتم ضبط `TERMBRIDGE_SANDBOX_PATH`، فسيستنتجه Termbridge من اسم المستودع.

## المستودعات الخاصة

قدّم بيانات اعتماد git عند استنساخ المستودعات الخاصة:

```bash
export TERMBRIDGE_SANDBOX_GIT_USERNAME=your_github_username
export TERMBRIDGE_SANDBOX_GIT_TOKEN=your_github_token
```

يدعم أيضًا `TERMBRIDGE_SANDBOX_GIT_PASSWORD`، وله الأولوية على الرمز المميز إذا تم ضبطه.

## وكلاء البرمجة

يمكن لـ Termbridge تثبيت وكلاء البرمجة داخل البيئة المعزولة ومزامنة بيانات المصادقة المحلية لتكون جاهزة فورًا.

راجع دليل [وكلاء البرمجة](https://termbridge.inline0.dev/ar/docs/sandboxes/coding-agents) للاطلاع على الإعداد الكامل والوضع التلقائي وتفاصيل الأمان.

## وضع المعاينة

لعرض المعاينة، اضبط `TERMBRIDGE_SANDBOX_PREVIEW_PORT` على المنفذ الذي يستخدمه خادم التطوير داخل البيئة المعزولة.

في Vite، تأكد من ربط الخادم بجميع الواجهات:

```bash
npm run dev -- --host 0.0.0.0 --port 5173
```

يجلب Termbridge رابط المعاينة من Daytona ويمرره عبر خادم Termbridge حتى تُحمّل المعاينة داخل UI.

## البيئات المعزولة العامة والخاصة

| المتغير | وظيفته |
| --- | --- |
| `TERMBRIDGE_SANDBOX_PUBLIC=true` | ينشئ بيئة معزولة عامة |
| `TERMBRIDGE_SANDBOX_PUBLIC=false` | ينشئ بيئة معزولة خاصة |

عند عدم ضبط المتغير، تكون البيئات المعزولة خاصة، باستثناء الوضع المباشر حيث تكون عامة.

بالنسبة إلى البيئات المعزولة الخاصة، يمرر Termbridge رمز المعاينة تلقائيًا عند تمرير المعاينة.

## التنظيف ودورة الحياة

لحذف البيئات المعزولة عند خروج Termbridge:

```bash
export TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true
```

للبيئات المعزولة قصيرة الأجل أو الاختبارية، استخدم بادئة:

```bash
export TERMBRIDGE_SANDBOX_NAME=termbridge-test-$(date +%s)
export TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true
```

يساعد ذلك على ضبط استخدام البيئة المعزولة وتجنب مشكلات حصص القرص.

## علامات CLI

يمكنك أيضًا ضبط Daytona عبر العلامات. وتكون للعلامة أولوية على متغير البيئة المطابق.

| العلامة | متغير البيئة | الغرض |
| --- | --- | --- |
| `--backend sandbox-daytona` | `TERMBRIDGE_BACKEND` | استخدام الواجهة الخلفية لـ Daytona |
| `--sandbox-repo <url>` | `TERMBRIDGE_SANDBOX_REPO` | مستودع URL |
| `--sandbox-branch <branch>` | `TERMBRIDGE_SANDBOX_BRANCH` | الفرع |
| `--sandbox-path <path>` | `TERMBRIDGE_SANDBOX_PATH` | مسار المستودع في البيئة المعزولة |
| `--sandbox-name <name>` | `TERMBRIDGE_SANDBOX_NAME` | اسم البيئة المعزولة |
| `--sandbox-preview-port <port>` | `TERMBRIDGE_SANDBOX_PREVIEW_PORT` | منفذ المعاينة |
| `--sandbox-public` | `TERMBRIDGE_SANDBOX_PUBLIC=true` | إنشاء بيئة معزولة عامة |
| `--sandbox-direct` | `TERMBRIDGE_SANDBOX_DIRECT=true` | تشغيل الخادم داخل البيئة المعزولة (من دون نفق) |

لا توجد علامة للبيئة المعزولة الخاصة؛ استخدم `TERMBRIDGE_SANDBOX_PUBLIC=false`. ويظل مخرج `termbridge --help` المدمج يعرض الأسماء `--daytona-*` و`--backend daytona`، وهما مرفوضان ([#1](https://github.com/inline0/termbridge/issues/1)).

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

**صفحة المعاينة فارغة**
- تأكد من أن خادم التطوير يعمل داخل البيئة المعزولة.
- استخدم `--host 0.0.0.0` ليكون منفذ المعاينة قابلًا للوصول.
- تحقق من أن `TERMBRIDGE_SANDBOX_PREVIEW_PORT` يطابق منفذ خادم التطوير.

**فشل إنشاء البيئة المعزولة بسبب أخطاء الحصة**
- احذف البيئات المعزولة القديمة من لوحة تحكم Daytona.
- استخدم `TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true` للجلسات قصيرة الأجل.

**فشل استنساخ المستودع**
- تحقق من URL المستودع والفرع وبيانات الاعتماد.
- تأكد من أن رمز Git المميز يتيح قراءة المستودع.
