Pular para o conteúdo

Daytona

Daytona permite que Termbridge execute seu terminal e a visualização em um sandbox na nuvem. Use essa opção para obter um ambiente reproduzível, uma visualização na nuvem ou manter seu laptop ocioso.

Requisitos

  • Uma chave Daytona API
  • Um repositório URL que o sandbox possa clonar
  • Credenciais Git se o repositório for privado

Início rápido

Defina o backend como Daytona e informe a configuração do repositório:

Shell
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

Em seguida, execute Termbridge como de costume:

Shell
npx termbridge

Sempre defina TERMBRIDGE_SANDBOX_REPO (ou --sandbox-repo). Se estiver ausente, Termbridge usará um repositório padrão integrado que não é acessível publicamente; assim, o sandbox será criado, mas a clonagem falhará (#2).

Conexão Daytona

Variável Finalidade
TERMBRIDGE_DAYTONA_API_KEY Sua chave Daytona API
TERMBRIDGE_DAYTONA_API_URL Endpoint API (padrão: https://app.daytona.io/api)
TERMBRIDGE_DAYTONA_TARGET Região de destino Daytona (opcional)

Esses valores são passados ao SDK Daytona. Se algum deles não estiver definido, o SDK usará sua própria variável DAYTONA_API_KEY, DAYTONA_API_URL ou DAYTONA_TARGET.

Modo sandbox direto (sem túnel)

No modo direto, o servidor Termbridge é executado dentro do sandbox e Cloudflare é totalmente ignorado. O URL de compartilhamento é o link de visualização Daytona para o servidor no sandbox.

Shell
export TERMBRIDGE_BACKEND=sandbox-daytona
export TERMBRIDGE_SANDBOX_DIRECT=true
export TERMBRIDGE_SANDBOX_SERVER_PORT=8080

TERMBRIDGE_SANDBOX_SERVER_PORT (ou --port) usa 8080 por padrão. O modo direto cria um sandbox público, a menos que você defina TERMBRIDGE_SANDBOX_PUBLIC=false, e o UI oculta o alternador de terminais.

Você ainda pode ativar a visualização definindo TERMBRIDGE_SANDBOX_PREVIEW_PORT; no modo direto, esse valor é encaminhado como a porta --proxy do servidor.

Clonagem de repositório

Termbridge criará um sandbox e clonará seu repositório no diretório de trabalho do sandbox.

Use estas configurações:

Variável Finalidade
TERMBRIDGE_SANDBOX_REPO Repositório URL a clonar (sempre defina, consulte o início rápido)
TERMBRIDGE_SANDBOX_BRANCH Branch a selecionar (opcional)
TERMBRIDGE_SANDBOX_PATH Caminho do repositório no sandbox (opcional)
TERMBRIDGE_SANDBOX_NAME Nome do sandbox (opcional, o padrão é termbridge-<random hex>)

Se TERMBRIDGE_SANDBOX_PATH não estiver definido, Termbridge o deduz do nome do repositório.

Repositórios privados

Forneça credenciais de git ao clonar repositórios privados:

Shell
export TERMBRIDGE_SANDBOX_GIT_USERNAME=your_github_username
export TERMBRIDGE_SANDBOX_GIT_TOKEN=your_github_token

TERMBRIDGE_SANDBOX_GIT_PASSWORD também é compatível e substitui o token se estiver definido.

Agentes de programação

Termbridge pode instalar agentes de programação dentro do sandbox e sincronizar sua autenticação local para que estejam prontos imediatamente.

Consulte o guia de Agentes de programação para ver a configuração completa, o modo automático e os detalhes de segurança.

Modo de pré-visualização

Para exibir a visualização, defina TERMBRIDGE_SANDBOX_PREVIEW_PORT como a porta usada pelo seu servidor de desenvolvimento dentro do sandbox.

Para Vite, vincule-o a todas as interfaces:

Shell
npm run dev -- --host 0.0.0.0 --port 5173

Termbridge busca o link de pré-visualização de Daytona e o encaminha pelo servidor Termbridge para que a pré-visualização seja carregada dentro do UI.

Sandboxes públicos e privados

Variável O que faz
TERMBRIDGE_SANDBOX_PUBLIC=true Cria um sandbox público
TERMBRIDGE_SANDBOX_PUBLIC=false Cria um sandbox privado

Quando a variável não está definida, os sandboxes são privados, exceto no modo direto, em que são públicos.

Para sandboxes privados, Termbridge encaminha automaticamente o token de pré-visualização ao fazer o proxy da pré-visualização.

Limpeza e ciclo de vida

Para excluir sandboxes quando Termbridge sair:

Shell
export TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true

Para sandboxes de curta duração ou de teste, use um prefixo:

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

Isso mantém o uso de sandboxes sob controle e evita problemas com a cota de disco.

Opções de CLI

Você também pode configurar Daytona por meio de opções. Uma opção tem precedência sobre a variável de ambiente correspondente.

Opção Variável de ambiente Finalidade
--backend sandbox-daytona TERMBRIDGE_BACKEND Usar o backend Daytona
--sandbox-repo <url> TERMBRIDGE_SANDBOX_REPO Repositório URL
--sandbox-branch <branch> TERMBRIDGE_SANDBOX_BRANCH Branch
--sandbox-path <path> TERMBRIDGE_SANDBOX_PATH Caminho do repositório no sandbox
--sandbox-name <name> TERMBRIDGE_SANDBOX_NAME Nome do sandbox
--sandbox-preview-port <port> TERMBRIDGE_SANDBOX_PREVIEW_PORT Porta de pré-visualização
--sandbox-public TERMBRIDGE_SANDBOX_PUBLIC=true Criar um sandbox público
--sandbox-direct TERMBRIDGE_SANDBOX_DIRECT=true Executar o servidor dentro do sandbox (sem túnel)

Não há opção para um sandbox privado; use TERMBRIDGE_SANDBOX_PUBLIC=false. A saída integrada de termbridge --help ainda mostra nomes de --daytona-* e --backend daytona, que são rejeitados (#1).

Solução de problemas

A visualização está em branco

  • Verifique se o servidor de desenvolvimento está em execução dentro do sandbox.
  • Use --host 0.0.0.0 para que a porta de pré-visualização possa ser acessada.
  • Confirme se TERMBRIDGE_SANDBOX_PREVIEW_PORT corresponde à porta do servidor de desenvolvimento.

A criação do sandbox falha com erros de cota

  • Exclua sandboxes antigos no painel Daytona.
  • Use TERMBRIDGE_SANDBOX_DELETE_ON_EXIT=true para sessões de curta duração.

Falha ao clonar o repositório

  • Confira novamente URL, a branch e as credenciais do repositório.
  • Verifique se o token Git tem acesso de leitura ao repositório.