Přeskočit na obsah

Přesměrujte porty z terminálu

Server, který spustíš v terminálu konverzace, se vystaví jen pro tenhle prostor. Panel Předané porty si všimne posluchačů, které tam tahle aplikace spustila, namapuje je a dá ti adresu pro každé místo, odkud se k nim chceš dostat. Dva prostory můžou oba naslouchat na 5173; jejich mapy se nikdy nesmíchají.

Nic z tohohle stroj neotevírá: každou cestu vytvoří server, na požádání, a ta zanikne s terminálem nebo stanicí.

Podívej se, co naslouchá

Sekce “Podívej se, co naslouchá”
  1. Otevři Terminal (VM) konverzace nebo shell hostitele (v prostoru, nebo na stránce PR).
  2. Spusť server — pnpm dev, python -m http.server 8000, cokoli.
  3. Během pár sekund dostane ikona zástrčky v pravém horním rohu terminálu tečku. Klikni na ni.

Panel vypíše každý naslouchající port i s procesem, který ho vlastní, ve tvaru 3000 → 3000: vlevo port, na který se proces navázal, vpravo port, na kterém odpovídá místně (stejné číslo, kdykoli bylo na tvém stroji volné). Každý řádek taky řekne, jestli na něj dosáhne desktopové localhost, Browser (VM) a Android.

Zjišťování zůstává uvnitř: u Terminal (VM) se posluchači hledají v tom hostu, u shellu hostitele ve stromu procesů PTY té relace. Ostatní prostory a ostatní procesy na tvém Macu v seznamu nejsou.

Nové porty v tomhle terminálu se předávají automaticky. Automaticky předávat porty vypni ve stejném panelu, když chceš jen ty, které přidáš sám.

Dostaň se k němu z tohohle počítače

Sekce “Dostaň se k němu z tohohle počítače”

Na řádku použij Kopírovat místní URL — http://localhost:3000. Předání naslouchá jen na loopbacku, takže ho ve tvé síti nikdo jiný neuvidí.

Když dva prostory vystaví 5173 hosta a tvůj stroj už drží 127.0.0.1:5173, druhý prostor si 5173 hosta nechá a dostane dočasný místní port. Kopírovat místní URL bere číslo vpravo.

U shellu hostitele už proces běží na tvém stroji. Namapovat stejný místní port nic neudělá; když zvolíš jiný místní port, naváže se loopbacková proxy na ten, který sis vybral.

--host (nebo navázání na 0.0.0.0) uzavřenému Browser (VM) neumožní dosáhnout serveru na Macu. Host má vlastní loopback; server do toho hosta zasadí tunel, když je karta Browser ve stejném prostoru.

Dostaň se k němu z Browser (VM)

Sekce “Dostaň se k němu z Browser (VM)”

Otevři uzavřený prohlížeč ve stejné konverzaci. Napiš localhost:<left-hand port> — číslo, na které se proces navázal. Přemapování (5173 → 3000) v tom prohlížeči odpovídá i na čísle vpravo, takže tam Kopírovat místní URL funguje taky. Agentovo browser_use umí přejít na kteroukoli z nich. Server v Prostoru A se v prohlížeči Prostoru B nikdy neobjeví jako localhost:5173.

Používej localhost, ne IP adresu v LAN a ne --host. Host má vlastní loopback; tunel tam naslouchá na IPv4 i na IPv6.

Stránky, které najednou otevřou spoustu spojení (desítky assetů, socket live reloadu), sdílejí tentýž tunel. Browser (VM) je multiplexuje na jeden trvalý exec, takže příval fetchů není spawn procesu na každé spojení a nevyprší jako bílá stránka.

Uvnitř jednoho prostoru má předání z Terminal (VM) přednost před shellem hostitele na stejném čísle. Napříč prostory přednost není — mapy jsou oddělené.

Dostaň se k němu z Androidu

Sekce “Dostaň se k němu z Androidu”

Otevři kartu Android toho prostoru. localhost:<port> emulátoru se pak reverzně přepojí na vystavený port tohohle prostoru (adb reverse). Jeden emulátor platí pro celé zařízení: připojení Prostoru B přenastaví :5173 na B a mapování A zahodí. Zavři kartu a reverzní přepojení, která tahle stanice zasadila, se odstraní.

iOS Simulator už je ten Mac — žádný reverse. Fyzický iPhone pořád potřebuje sdílení v LAN.

Sdílej ho ve své síti

Sekce “Sdílej ho ve své síti”

⋯ → Sdílet v místní síti vystaví port na <server-ip>:<random port> — hodí se, když chceš stránku otevřít na telefonu, nebo když server běží na jiném stroji.

  • Port v LAN vždy přidělí operační systém, nikdy číslo hosta, takže ven jde záměrná, viditelná adresa, kterou nejde uhodnout.
  • Zůstane soukromý (jen loopback), dokud ho nepřepneš, a ⋯ → Jen místně ho ze sítě zase stáhne.

Dej mu jméno — s HTTPS

Sekce “Dej mu jméno — s HTTPS”

⋯ → Nastavit doménu prohlížeče (.test) přiřadí portu vývojovou doménu, třeba myapp.test. Uvnitř Browser (VM) pak https://myapp.test načte tvůj server s platným zámečkem — hodí se pro všechno, co se chová jinak na pojmenovaném originu nebo v zabezpečeném kontextu (cookies, service workers, OAuth callbacky).

  • Domény musí končit na .test nebo .localhost — to jsou dvě TLD vyhrazené pro vývoj, takže vývojové jméno nikdy nezastíní skutečný web.
  • Jména domén jsou na serveru jedinečná, čísla portů ne. Dva prostory můžou oba používat 5173, ale myapp.test si nemůžou nárokovat oba.
  • Certifikát pochází z místní autority, kterou server vydá při prvním použití. Její klíče žijí v datovém adresáři serveru a nikdy nevstoupí do žádného hosta; uzavřený prohlížeč důvěřuje právě tomu jednomu klíči, takže TLS do skutečného internetu se dál ověřuje normálně.
  • Doména se překládá jen uvnitř Browser (VM). Tvůj prohlížeč na hostiteli místo toho používá localhost:<port>.
  • Obyčejné http://myapp.test funguje taky.

Přidat port dole v panelu namapuje port předem, ať na něm něco naslouchá, nebo ne. Ruční předání si adresu podrží, i když server restartuješ — řádek ukazuje nenaslouchá, dokud se nevrátí — kdežto automatická předání zmizí spolu se svým portem. U shellu hostitele můžeš taky nastavit jiný místní port.

Jak to zůstane uzavřené

Sekce “Jak to zůstane uzavřené”

Klíčem portu je pracovní prostor a prostor. Vlastní mapa portů hypervizoru se při startu stroje zafixuje, takže Terminal (VM) jede dvěma úzkými kanály, které ovládá server: jedním předem vytvořeným příchozím kanálem do hosta, který odmítne spojení na port, na kterém host ve skutečnosti nenaslouchá, a reverzními tunely, které server drží otevřené pro Browser (VM) a Android. Shell hostitele nikdy neprohledává celý stroj. Uvnitř hosta nevznikne posluchač, kterého tam nedal server, a všechno se strhne s terminálem nebo stanicí. Jak je to postavené, vysvětluje Stanice a izolovaná prostředí; přesné vyhrazené porty a pravidla domén jsou v referenci stanic.