
# Daytona

Daytona memungkinkan Termbridge menjalankan terminal dan pratinjau Anda di sandbox cloud. Gunakan ini untuk lingkungan yang dapat direproduksi, pratinjau cloud, atau agar laptop Anda tetap tidak aktif.

## Persyaratan

- Kunci Daytona API
- Repositori URL yang dapat diklon oleh sandbox
- Kredensial Git jika repositori bersifat privat

## Mulai cepat

Tetapkan backend ke Daytona dan berikan konfigurasi repositori:

```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
```

Lalu jalankan Termbridge seperti biasa:

```bash
npx termbridge
```

Selalu tetapkan `TERMBRIDGE_SANDBOX_REPO` (atau `--sandbox-repo`). Jika tidak ditetapkan, saat ini Termbridge menggunakan repositori bawaan yang tidak dapat diakses publik. Akibatnya, sandbox dibuat tetapi proses klon gagal ([#2](https://github.com/inline0/termbridge/issues/2)).

## Koneksi Daytona

| Variabel | Tujuan |
| --- | --- |
| `TERMBRIDGE_DAYTONA_API_KEY` | Kunci Daytona API Anda |
| `TERMBRIDGE_DAYTONA_API_URL` | Endpoint API (default `https://app.daytona.io/api`) |
| `TERMBRIDGE_DAYTONA_TARGET` | Wilayah target Daytona (opsional) |

Nilai ini diteruskan ke SDK Daytona. Jika salah satunya tidak ditetapkan, SDK menggunakan variabel `DAYTONA_API_KEY`, `DAYTONA_API_URL`, atau `DAYTONA_TARGET` miliknya sendiri sebagai pengganti.

## Mode sandbox langsung (tanpa tunnel)

Mode langsung menjalankan server Termbridge di dalam sandbox dan melewati Cloudflare sepenuhnya. URL berbagi adalah tautan pratinjau Daytona ke server dalam sandbox.

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

`TERMBRIDGE_SANDBOX_SERVER_PORT` (atau `--port`) menggunakan `8080` secara default. Mode langsung membuat sandbox publik kecuali jika Anda menetapkan `TERMBRIDGE_SANDBOX_PUBLIC=false`, dan UI menyembunyikan pengalih terminal.

Anda tetap dapat mengaktifkan pratinjau dengan menetapkan `TERMBRIDGE_SANDBOX_PREVIEW_PORT`; dalam mode langsung, nilai ini diteruskan sebagai port `--proxy` server.

## Mengklon repositori

Termbridge akan membuat sandbox dan mengklon repositori Anda ke direktori kerja sandbox.

Gunakan pengaturan berikut:

| Variabel | Tujuan |
| --- | --- |
| `TERMBRIDGE_SANDBOX_REPO` | Repo URL untuk diklon (selalu atur, lihat mulai cepat) |
| `TERMBRIDGE_SANDBOX_BRANCH` | Branch yang akan di-checkout (opsional) |
| `TERMBRIDGE_SANDBOX_PATH` | Path repo di sandbox (opsional) |
| `TERMBRIDGE_SANDBOX_NAME` | Nama sandbox (opsional, default-nya `termbridge-<random hex>`) |

Jika `TERMBRIDGE_SANDBOX_PATH` tidak diatur, Termbridge akan menurunkannya dari nama repo.

## Repositori privat

Berikan kredensial git saat mengkloning repo privat:

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

`TERMBRIDGE_SANDBOX_GIT_PASSWORD` juga didukung dan akan menggantikan token jika diatur.

## Agen coding

Termbridge dapat menginstal agen coding di dalam sandbox dan menyinkronkan autentikasi lokal Anda agar siap digunakan segera.

Lihat panduan [Agen coding](https://termbridge.inline0.dev/id/docs/sandboxes/coding-agents) untuk penyiapan lengkap, mode otomatis, dan detail keamanan.

## Mode pratinjau

Untuk menampilkan tampilan pratinjau, atur `TERMBRIDGE_SANDBOX_PREVIEW_PORT` ke port yang digunakan server dev Anda di dalam sandbox.

Untuk Vite, pastikan Anda mengikatnya ke semua antarmuka:

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

Termbridge mengambil tautan pratinjau Daytona dan meneruskannya melalui server Termbridge agar pratinjau dimuat di dalam UI.

## Sandbox publik vs privat

| Variabel | Fungsinya |
| --- | --- |
| `TERMBRIDGE_SANDBOX_PUBLIC=true` | Membuat sandbox publik |
| `TERMBRIDGE_SANDBOX_PUBLIC=false` | Membuat sandbox privat |

Jika variabel tidak diatur, sandbox bersifat privat, kecuali dalam mode langsung, yang menjadikannya publik.

Untuk sandbox privat, Termbridge otomatis meneruskan token pratinjau saat memproksi pratinjau.

## Pembersihan dan siklus hidup

Untuk menghapus sandbox saat Termbridge keluar:

```bash
export TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true
```

Untuk sandbox sementara atau pengujian, gunakan prefiks:

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

Ini membantu mengendalikan penggunaan sandbox dan menghindari masalah kuota disk.

## Flag CLI

Anda juga dapat mengonfigurasi Daytona melalui flag. Flag akan lebih diutamakan daripada variabel lingkungan yang sesuai.

| Flag | Variabel lingkungan | Tujuan |
| --- | --- | --- |
| `--backend sandbox-daytona` | `TERMBRIDGE_BACKEND` | Gunakan backend Daytona |
| `--sandbox-repo <url>` | `TERMBRIDGE_SANDBOX_REPO` | Repo URL |
| `--sandbox-branch <branch>` | `TERMBRIDGE_SANDBOX_BRANCH` | Branch |
| `--sandbox-path <path>` | `TERMBRIDGE_SANDBOX_PATH` | Path repo di sandbox |
| `--sandbox-name <name>` | `TERMBRIDGE_SANDBOX_NAME` | Nama sandbox |
| `--sandbox-preview-port <port>` | `TERMBRIDGE_SANDBOX_PREVIEW_PORT` | Port pratinjau |
| `--sandbox-public` | `TERMBRIDGE_SANDBOX_PUBLIC=true` | Buat sandbox publik |
| `--sandbox-direct` | `TERMBRIDGE_SANDBOX_DIRECT=true` | Jalankan server di dalam sandbox (tanpa tunnel) |

Tidak ada flag untuk sandbox privat; gunakan `TERMBRIDGE_SANDBOX_PUBLIC=false`. Keluaran bawaan `termbridge --help` tetap menampilkan nama `--daytona-*` dan `--backend daytona`, yang ditolak ([#1](https://github.com/inline0/termbridge/issues/1)).

## Pemecahan masalah

**Tampilan pratinjau kosong**
- Pastikan server dev berjalan di dalam sandbox.
- Gunakan `--host 0.0.0.0` agar port pratinjau dapat dijangkau.
- Pastikan `TERMBRIDGE_SANDBOX_PREVIEW_PORT` cocok dengan port server dev.

**Pembuatan sandbox gagal karena kesalahan kuota**
- Hapus sandbox lama di dasbor Daytona.
- Gunakan `TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true` untuk sesi sementara.

**Klon repo gagal**
- Periksa kembali repo URL, branch, dan kredensial.
- Pastikan token Git memiliki akses baca repo.
