Encaminhar portas a partir de um terminal
Um servidor que você inicia no terminal de uma conversa é publicado apenas para aquele espaço. O painel de portas detecta os processos que este app iniciou lá e que estão escutando, mapeia-os e dá a você um endereço para cada lugar de onde você possa querer alcançá-los. Dois espaços podem ambos escutar na 5173; seus mapas nunca se misturam.
Nada aqui abre a máquina: cada caminho é criado pelo servidor, sob demanda, e morre com o terminal ou o rig.
Ver o que está escutando
Seção intitulada “Ver o que está escutando”- Abra o Terminal (VM) ou o shell do host da conversa (em um espaço ou na página de uma PR).
- Inicie seu servidor —
pnpm dev,python -m http.server 8000, qualquer coisa. - Em poucos segundos, o ícone de plugue no canto superior direito do terminal ganha um ponto. Clique nele.
O painel lista cada porta que está escutando com o processo que a detém, no
formato 3000 → 3000: à esquerda, a porta à qual o processo se vinculou; à
direita, a porta em que ele responde localmente (o mesmo número sempre que ela
estava livre na sua máquina). Cada linha também informa se o localhost do
desktop, o Navegador (VM) e o Android conseguem alcançá-la.
A descoberta é contida: um Terminal (VM) é consultado dentro desse convidado; um shell do host é consultado a partir da árvore de processos do PTY dessa sessão. Outros espaços, e outros processos no seu Mac, não são listados.
Novas portas neste terminal são encaminhadas automaticamente. Desative Encaminhar portas automaticamente no mesmo painel se você quiser apenas as que você mesmo adicionar.
Acessá-lo deste computador
Seção intitulada “Acessá-lo deste computador”Use Copiar URL local na linha — http://localhost:3000. O encaminhamento
escuta apenas no loopback, então nada mais na sua rede consegue vê-lo.
Se dois espaços expõem a 5173 do convidado e a sua máquina já ocupa a
127.0.0.1:5173, o segundo espaço mantém a 5173 do convidado e recebe uma
porta local efêmera. Copiar URL usa o número da direita.
Em um shell do host, o processo já está na sua máquina. Mapear a mesma porta local não faz nada; escolher uma porta local diferente vincula um proxy de loopback à que você escolheu.
--host (ou vincular a 0.0.0.0) não faz um Navegador (VM) em recinto
conseguir alcançar um servidor no Mac. O convidado tem o próprio loopback; o
servidor implanta um túnel nesse convidado quando a aba Navegador está no
mesmo espaço.
Acessá-lo pelo Navegador (VM)
Seção intitulada “Acessá-lo pelo Navegador (VM)”Abra o navegador em recinto na mesma conversa. Digite
localhost:<left-hand port> — o número ao qual o processo se vinculou. Um
remapeamento (5173 → 3000) também responde no número da direita nesse
navegador, então Copiar URL funciona lá também. O browser_use de um agente
consegue navegar para qualquer um dos dois. Um servidor no Espaço A nunca
aparece como localhost:5173 no navegador do Espaço B.
Use localhost, não um IP da LAN nem --host. O convidado tem o próprio
loopback; o túnel escuta lá tanto em IPv4 quanto em IPv6.
Páginas que abrem muitas conexões de uma vez (dezenas de recursos, um socket de live reload) compartilham esse mesmo túnel. O Navegador (VM) multiplexa todas em um único exec persistente, então uma rajada de buscas não é um processo iniciado por conexão e não atinge o tempo limite como uma página em branco.
Dentro de um espaço, um encaminhamento de Terminal (VM) tem precedência sobre um shell do host no mesmo número. Entre espaços não há precedência — são mapas separados.
Acessá-lo pelo Android
Seção intitulada “Acessá-lo pelo Android”Abra a aba Android desse espaço. O localhost:<port> do emulador é então
revertido para a porta publicada deste espaço (adb reverse). Um emulador é
global para o dispositivo: conectar o Espaço B redireciona a :5173 para B e
descarta a de A. Feche a aba e os reverses que este rig implantou são removidos.
O Simulador de iOS já é o Mac — sem reverse. Um iPhone físico ainda precisa de um compartilhamento na LAN.
Compartilhá-lo na sua rede
Seção intitulada “Compartilhá-lo na sua rede”⋯ → Compartilhar na rede local publica a porta em
<server-ip>:<random port> — útil para abrir a página no seu celular, ou quando
o servidor roda em outra máquina.
- A porta da LAN é sempre atribuída pelo SO, nunca o número do convidado, de modo que a exposição é um endereço deliberado e visível, e não adivinhável.
- Ela permanece privada (somente loopback) até você ativá-la, e ⋯ → Apenas local a tira de volta da rede.
Dar um nome a ele — com HTTPS
Seção intitulada “Dar um nome a ele — com HTTPS”⋯ → Definir um domínio do navegador (.test) atribui à porta um domínio de
desenvolvimento como myapp.test. Dentro do Navegador (VM), https://myapp.test
passa a carregar seu servidor com um cadeado válido — útil para qualquer coisa
que se comporte de forma diferente em uma origem nomeada ou em um contexto
seguro (cookies, service workers, callbacks do OAuth).
- Os domínios precisam terminar em
.testou.localhost— os dois TLDs reservados para desenvolvimento, então um nome de desenvolvimento nunca pode se sobrepor a um site real. - Os nomes de domínio são únicos no servidor; os números de porta não
são. Dois espaços podem ambos usar
5173, mas não podem ambos reivindicarmyapp.test. - O certificado vem de uma autoridade local emitida no seu servidor na primeira vez que for necessária. As chaves dela ficam sob o diretório de dados do servidor e nunca entram em nenhum convidado; o navegador em recinto confia exatamente nessa chave, então o TLS para a internet real continua validando normalmente.
- O domínio resolve somente dentro do Navegador (VM). Seu próprio navegador
no host usa
localhost:<port>em vez disso. http://myapp.testsimples também funciona.
Encaminhar uma porta manualmente
Seção intitulada “Encaminhar uma porta manualmente”Adicionar porta na parte inferior do painel mapeia uma porta antes de (ou independentemente de) qualquer coisa estar escutando nela. Um encaminhamento manual mantém o endereço enquanto seu servidor reinicia — a linha mostra não está escutando até ele voltar —, ao passo que os encaminhamentos automáticos desaparecem quando a porta deles desaparece. Em um shell do host, você também pode definir uma porta local diferente.
Como ele permanece contido
Seção intitulada “Como ele permanece contido”As portas têm como chave o espaço de trabalho e o espaço. O próprio mapa de portas do hipervisor é fixo quando uma máquina inicializa, então um Terminal (VM) usa dois canais estreitos controlados pelo servidor: uma faixa de entrada pré-criada para o convidado, que se recusa a conectar a qualquer porta em que o convidado não esteja de fato escutando, e túneis reversos que o servidor mantém abertos para o Navegador (VM) e o Android. Um shell do host nunca varre a máquina inteira. Nenhum processo de escuta é criado dentro de um convidado sem que o servidor o tenha colocado lá, e tudo é desmontado junto com o terminal ou o rig. O design é explicado em Rigs e recintos; as portas reservadas exatas e as regras de domínio estão na referência de rigs.
Relacionados
Seção intitulada “Relacionados”- Dar a um agente uma máquina para testar — abrir, acompanhar e assumir o controle de rigs
- Referência de rigs — portas reservadas, TLDs de desenvolvimento, padrões