
# Daytona

Daytona umożliwia Termbridge uruchamianie terminala i podglądu w piaskownicy chmurowej. Wybierz to rozwiązanie, jeśli potrzebujesz powtarzalnego środowiska lub podglądu w chmurze albo chcesz, aby Twój laptop pozostał bezczynny.

## Wymagania

- Klucz Daytona API
- Repozytorium URL, które piaskownica może sklonować
- Dane uwierzytelniające Git, jeśli repozytorium jest prywatne

## Szybki start

Ustaw backend na Daytona i podaj konfigurację repozytorium:

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

Następnie uruchom Termbridge jak zwykle:

```bash
npx termbridge
```

Zawsze ustaw `TERMBRIDGE_SANDBOX_REPO` (lub `--sandbox-repo`). Jeśli nie podasz tej wartości, Termbridge użyje obecnie wbudowanego domyślnego repozytorium, które nie jest publicznie dostępne. Piaskownica zostanie więc utworzona, ale klonowanie zakończy się niepowodzeniem ([#2](https://github.com/inline0/termbridge/issues/2)).

## Połączenie Daytona

| Zmienna | Zastosowanie |
| --- | --- |
| `TERMBRIDGE_DAYTONA_API_KEY` | Klucz Daytona API |
| `TERMBRIDGE_DAYTONA_API_URL` | Punkt końcowy API (domyślnie `https://app.daytona.io/api`) |
| `TERMBRIDGE_DAYTONA_TARGET` | Docelowy region Daytona (opcjonalnie) |

Wartości te są przekazywane do pakietu SDK Daytona. Jeśli któraś z nich nie jest ustawiona, pakiet SDK używa własnej zmiennej `DAYTONA_API_KEY`, `DAYTONA_API_URL` lub `DAYTONA_TARGET`.

## Bezpośredni tryb piaskownicy (bez tunelu)

W trybie bezpośrednim serwer Termbridge działa w piaskownicy, a Cloudflare jest całkowicie pomijany. Link udostępniania URL to link podglądu Daytona do serwera działającego w piaskownicy.

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

`TERMBRIDGE_SANDBOX_SERVER_PORT` (lub `--port`) domyślnie przyjmuje wartość `8080`. Tryb bezpośredni tworzy publiczną piaskownicę, chyba że ustawisz `TERMBRIDGE_SANDBOX_PUBLIC=false`. UI ukrywa przełącznik terminali.

Nadal możesz włączyć podgląd, ustawiając `TERMBRIDGE_SANDBOX_PREVIEW_PORT`; w trybie bezpośrednim jest on przekazywany jako port serwera `--proxy`.

## Klonowanie repozytorium

Termbridge utworzy piaskownicę i sklonuje Twoje repozytorium do katalogu roboczego piaskownicy.

Użyj tych ustawień:

| Zmienna | Zastosowanie |
| --- | --- |
| `TERMBRIDGE_SANDBOX_REPO` | Repozytorium URL do sklonowania (zawsze ustaw tę wartość, zobacz szybki start) |
| `TERMBRIDGE_SANDBOX_BRANCH` | Gałąź do pobrania (opcjonalnie) |
| `TERMBRIDGE_SANDBOX_PATH` | Ścieżka repozytorium w piaskownicy (opcjonalnie) |
| `TERMBRIDGE_SANDBOX_NAME` | Nazwa piaskownicy (opcjonalnie, domyślnie `termbridge-<random hex>`) |

Jeśli `TERMBRIDGE_SANDBOX_PATH` nie jest ustawiona, Termbridge wyznacza ją na podstawie nazwy repozytorium.

## Repozytoria prywatne

Podaj dane uwierzytelniające git podczas klonowania prywatnych repozytoriów:

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

Obsługiwany jest również `TERMBRIDGE_SANDBOX_GIT_PASSWORD`; jeśli jest ustawiony, zastępuje token.

## Agenci programujący

Termbridge może zainstalować agentów programujących w piaskownicy i zsynchronizować lokalne dane uwierzytelniające, aby byli od razu gotowi do pracy.

Pełną konfigurację, tryb automatyczny i informacje o bezpieczeństwie opisano w przewodniku dla [agentów programujących](https://termbridge.inline0.dev/pl/docs/sandboxes/coding-agents).

## Tryb podglądu

Aby wyświetlić podgląd, ustaw `TERMBRIDGE_SANDBOX_PREVIEW_PORT` na port używany przez serwer deweloperski wewnątrz piaskownicy.

W przypadku Vite pamiętaj, aby nasłuchiwać na wszystkich interfejsach:

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

Termbridge pobiera link podglądu Daytona i przekazuje go przez serwer Termbridge, aby podgląd wyświetlał się wewnątrz UI.

## Piaskownice publiczne i prywatne

| Zmienna | Działanie |
| --- | --- |
| `TERMBRIDGE_SANDBOX_PUBLIC=true` | Tworzy publiczną piaskownicę |
| `TERMBRIDGE_SANDBOX_PUBLIC=false` | Tworzy prywatną piaskownicę |

Jeśli zmienna nie jest ustawiona, piaskownice są prywatne, z wyjątkiem trybu bezpośredniego, w którym są publiczne.

W przypadku prywatnych piaskownic Termbridge automatycznie przekazuje token podglądu podczas jego pośredniczenia.

## Czyszczenie i cykl życia

Aby usuwać piaskownice przy zamykaniu Termbridge:

```bash
export TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true
```

W przypadku krótkotrwałych piaskownic lub piaskownic testowych użyj prefiksu:

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

Pozwala to kontrolować wykorzystanie piaskownic i uniknąć problemów z limitem miejsca na dysku.

## Flagi CLI

Daytona można też konfigurować za pomocą flag. Flaga ma pierwszeństwo przed odpowiadającą jej zmienną środowiskową.

| Flaga | Zmienna środowiskowa | Zastosowanie |
| --- | --- | --- |
| `--backend sandbox-daytona` | `TERMBRIDGE_BACKEND` | Używa backendu Daytona |
| `--sandbox-repo <url>` | `TERMBRIDGE_SANDBOX_REPO` | Repozytorium URL |
| `--sandbox-branch <branch>` | `TERMBRIDGE_SANDBOX_BRANCH` | Gałąź |
| `--sandbox-path <path>` | `TERMBRIDGE_SANDBOX_PATH` | Ścieżka repozytorium w piaskownicy |
| `--sandbox-name <name>` | `TERMBRIDGE_SANDBOX_NAME` | Nazwa piaskownicy |
| `--sandbox-preview-port <port>` | `TERMBRIDGE_SANDBOX_PREVIEW_PORT` | Port podglądu |
| `--sandbox-public` | `TERMBRIDGE_SANDBOX_PUBLIC=true` | Tworzy publiczną piaskownicę |
| `--sandbox-direct` | `TERMBRIDGE_SANDBOX_DIRECT=true` | Uruchamia serwer w piaskownicy (bez tunelu) |

Nie ma flagi dla prywatnej piaskownicy; użyj `TERMBRIDGE_SANDBOX_PUBLIC=false`. Wbudowane dane wyjściowe `termbridge --help` nadal pokazują odrzucone nazwy `--daytona-*` i `--backend daytona` ([#1](https://github.com/inline0/termbridge/issues/1)).

## Rozwiązywanie problemów

**Widok podglądu jest pusty**
- Upewnij się, że serwer deweloperski działa w piaskownicy.
- Użyj `--host 0.0.0.0`, aby port podglądu był osiągalny.
- Sprawdź, czy `TERMBRIDGE_SANDBOX_PREVIEW_PORT` odpowiada portowi serwera deweloperskiego.

**Nie można utworzyć piaskownicy z powodu limitu**
- Usuń stare piaskownice w panelu Daytona.
- W przypadku krótkotrwałych sesji użyj `TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true`.

**Nie można sklonować repozytorium**
- Sprawdź repozytorium URL, gałąź i dane uwierzytelniające.
- Upewnij się, że token Git ma dostęp do odczytu repozytorium.
