[{"data":1,"prerenderedAt":1081},["ShallowReactive",2],{"doc-\u002Fdocs\u002Fgetting-started\u002Fquickstart":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"body":10,"_type":1075,"_id":1076,"_source":1077,"_file":1078,"_stem":1079,"_extension":1080},"\u002Fgetting-started\u002Fquickstart","getting-started",false,"","Quickstart & Deployment","Launch webtop-manage in under 60 seconds with Docker Compose or standalone binary.",{"type":11,"children":12,"toc":1063},"root",[13,21,36,40,47,60,567,573,606,612,617,632,660,663,669,681,803,809,892,895,901,913,1057],{"type":14,"tag":15,"props":16,"children":18},"element","h1",{"id":17},"quickstart-deployment",[19],{"type":20,"value":8},"text",{"type":14,"tag":22,"props":23,"children":24},"p",{},[25,27,34],{"type":20,"value":26},"Get ",{"type":14,"tag":28,"props":29,"children":31},"code",{"className":30},[],[32],{"type":20,"value":33},"webtop-manage",{"type":20,"value":35}," running on any machine in under 60 seconds.",{"type":14,"tag":37,"props":38,"children":39},"hr",{},[],{"type":14,"tag":41,"props":42,"children":44},"h2",{"id":43},"_1-minute-launch-via-docker-compose",[45],{"type":20,"value":46},"🚀 1-Minute Launch via Docker Compose",{"type":14,"tag":48,"props":49,"children":51},"h3",{"id":50},"_1-create-docker-composeyml",[52,54],{"type":20,"value":53},"1. Create ",{"type":14,"tag":28,"props":55,"children":57},{"className":56},[],[58],{"type":20,"value":59},"docker-compose.yml",{"type":14,"tag":61,"props":62,"children":66},"pre",{"className":63,"code":64,"language":65,"meta":7,"style":7},"language-yaml shiki shiki-themes github-dark github-dark github-light","services:\n  webtop-manage:\n    # Option 1: Build directly from local source (zero publishing needed)\n    build: .\n    # Option 2: Or use a pre-built image\n    # image: ghcr.io\u002Fmngdlnx\u002Fwebtop-manage:latest\n    container_name: webtop-manage\n    restart: unless-stopped\n    ports:\n      # Strict 127.0.0.1 loopback binding for security\n      - \"127.0.0.1:8080:8080\"\n    volumes:\n      # Docker daemon socket passthrough to manage sibling containers\n      - \u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n      # Host root filesystem mount (read-only) for visual folder browsing\n      - \u002F:\u002Fhost:ro\n      # Optional: Custom Presets, Themes & Config files\n      - .\u002Fpresets.json:\u002Fapp\u002Fpresets.json:ro\n      - .\u002Fthemes.json:\u002Fapp\u002Fthemes.json:ro\n      - .\u002Fconfig.json:\u002Fapp\u002Fconfig.json:ro\n    environment:\n      - PORT=8080\n      - BIND_HOST=0.0.0.0\n      - APP_TITLE=webtop-manage\n      - DEFAULT_INSTANCE_BIND_IP=127.0.0.1\n      - DEFAULT_NETWORK=webtop-net\n      - DEFAULT_TZ=Etc\u002FUTC\n      - DEFAULT_KEYBOARD=en-us-qwerty\n      - DEFAULT_SHM_SIZE_MB=1024\n      - BASE_PORT=3000\n      - DEFAULT_EGRESS_POLICY=full\n    networks:\n      - webtop-net\n\nnetworks:\n  webtop-net:\n    name: webtop-net\n    driver: bridge\n","yaml",[67],{"type":14,"tag":28,"props":68,"children":69},{"__ignoreMap":7},[70,88,101,111,131,140,149,168,186,199,208,222,235,244,257,266,279,288,301,314,327,340,353,366,379,392,405,418,431,444,457,470,483,496,506,519,532,549],{"type":14,"tag":71,"props":72,"children":75},"span",{"class":73,"line":74},"line",1,[76,82],{"type":14,"tag":71,"props":77,"children":79},{"style":78},"--shiki-default:#85E89D;--shiki-dark:#85E89D;--shiki-light:#22863A",[80],{"type":20,"value":81},"services",{"type":14,"tag":71,"props":83,"children":85},{"style":84},"--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8;--shiki-light:#24292E",[86],{"type":20,"value":87},":\n",{"type":14,"tag":71,"props":89,"children":91},{"class":73,"line":90},2,[92,97],{"type":14,"tag":71,"props":93,"children":94},{"style":78},[95],{"type":20,"value":96},"  webtop-manage",{"type":14,"tag":71,"props":98,"children":99},{"style":84},[100],{"type":20,"value":87},{"type":14,"tag":71,"props":102,"children":104},{"class":73,"line":103},3,[105],{"type":14,"tag":71,"props":106,"children":108},{"style":107},"--shiki-default:#6A737D;--shiki-dark:#6A737D;--shiki-light:#6A737D",[109],{"type":20,"value":110},"    # Option 1: Build directly from local source (zero publishing needed)\n",{"type":14,"tag":71,"props":112,"children":114},{"class":73,"line":113},4,[115,120,125],{"type":14,"tag":71,"props":116,"children":117},{"style":78},[118],{"type":20,"value":119},"    build",{"type":14,"tag":71,"props":121,"children":122},{"style":84},[123],{"type":20,"value":124},": ",{"type":14,"tag":71,"props":126,"children":128},{"style":127},"--shiki-default:#79B8FF;--shiki-dark:#79B8FF;--shiki-light:#005CC5",[129],{"type":20,"value":130},".\n",{"type":14,"tag":71,"props":132,"children":134},{"class":73,"line":133},5,[135],{"type":14,"tag":71,"props":136,"children":137},{"style":107},[138],{"type":20,"value":139},"    # Option 2: Or use a pre-built image\n",{"type":14,"tag":71,"props":141,"children":143},{"class":73,"line":142},6,[144],{"type":14,"tag":71,"props":145,"children":146},{"style":107},[147],{"type":20,"value":148},"    # image: ghcr.io\u002Fmngdlnx\u002Fwebtop-manage:latest\n",{"type":14,"tag":71,"props":150,"children":152},{"class":73,"line":151},7,[153,158,162],{"type":14,"tag":71,"props":154,"children":155},{"style":78},[156],{"type":20,"value":157},"    container_name",{"type":14,"tag":71,"props":159,"children":160},{"style":84},[161],{"type":20,"value":124},{"type":14,"tag":71,"props":163,"children":165},{"style":164},"--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF;--shiki-light:#032F62",[166],{"type":20,"value":167},"webtop-manage\n",{"type":14,"tag":71,"props":169,"children":171},{"class":73,"line":170},8,[172,177,181],{"type":14,"tag":71,"props":173,"children":174},{"style":78},[175],{"type":20,"value":176},"    restart",{"type":14,"tag":71,"props":178,"children":179},{"style":84},[180],{"type":20,"value":124},{"type":14,"tag":71,"props":182,"children":183},{"style":164},[184],{"type":20,"value":185},"unless-stopped\n",{"type":14,"tag":71,"props":187,"children":189},{"class":73,"line":188},9,[190,195],{"type":14,"tag":71,"props":191,"children":192},{"style":78},[193],{"type":20,"value":194},"    ports",{"type":14,"tag":71,"props":196,"children":197},{"style":84},[198],{"type":20,"value":87},{"type":14,"tag":71,"props":200,"children":202},{"class":73,"line":201},10,[203],{"type":14,"tag":71,"props":204,"children":205},{"style":107},[206],{"type":20,"value":207},"      # Strict 127.0.0.1 loopback binding for security\n",{"type":14,"tag":71,"props":209,"children":211},{"class":73,"line":210},11,[212,217],{"type":14,"tag":71,"props":213,"children":214},{"style":84},[215],{"type":20,"value":216},"      - ",{"type":14,"tag":71,"props":218,"children":219},{"style":164},[220],{"type":20,"value":221},"\"127.0.0.1:8080:8080\"\n",{"type":14,"tag":71,"props":223,"children":225},{"class":73,"line":224},12,[226,231],{"type":14,"tag":71,"props":227,"children":228},{"style":78},[229],{"type":20,"value":230},"    volumes",{"type":14,"tag":71,"props":232,"children":233},{"style":84},[234],{"type":20,"value":87},{"type":14,"tag":71,"props":236,"children":238},{"class":73,"line":237},13,[239],{"type":14,"tag":71,"props":240,"children":241},{"style":107},[242],{"type":20,"value":243},"      # Docker daemon socket passthrough to manage sibling containers\n",{"type":14,"tag":71,"props":245,"children":247},{"class":73,"line":246},14,[248,252],{"type":14,"tag":71,"props":249,"children":250},{"style":84},[251],{"type":20,"value":216},{"type":14,"tag":71,"props":253,"children":254},{"style":164},[255],{"type":20,"value":256},"\u002Fvar\u002Frun\u002Fdocker.sock:\u002Fvar\u002Frun\u002Fdocker.sock\n",{"type":14,"tag":71,"props":258,"children":260},{"class":73,"line":259},15,[261],{"type":14,"tag":71,"props":262,"children":263},{"style":107},[264],{"type":20,"value":265},"      # Host root filesystem mount (read-only) for visual folder browsing\n",{"type":14,"tag":71,"props":267,"children":269},{"class":73,"line":268},16,[270,274],{"type":14,"tag":71,"props":271,"children":272},{"style":84},[273],{"type":20,"value":216},{"type":14,"tag":71,"props":275,"children":276},{"style":164},[277],{"type":20,"value":278},"\u002F:\u002Fhost:ro\n",{"type":14,"tag":71,"props":280,"children":282},{"class":73,"line":281},17,[283],{"type":14,"tag":71,"props":284,"children":285},{"style":107},[286],{"type":20,"value":287},"      # Optional: Custom Presets, Themes & Config files\n",{"type":14,"tag":71,"props":289,"children":291},{"class":73,"line":290},18,[292,296],{"type":14,"tag":71,"props":293,"children":294},{"style":84},[295],{"type":20,"value":216},{"type":14,"tag":71,"props":297,"children":298},{"style":164},[299],{"type":20,"value":300},".\u002Fpresets.json:\u002Fapp\u002Fpresets.json:ro\n",{"type":14,"tag":71,"props":302,"children":304},{"class":73,"line":303},19,[305,309],{"type":14,"tag":71,"props":306,"children":307},{"style":84},[308],{"type":20,"value":216},{"type":14,"tag":71,"props":310,"children":311},{"style":164},[312],{"type":20,"value":313},".\u002Fthemes.json:\u002Fapp\u002Fthemes.json:ro\n",{"type":14,"tag":71,"props":315,"children":317},{"class":73,"line":316},20,[318,322],{"type":14,"tag":71,"props":319,"children":320},{"style":84},[321],{"type":20,"value":216},{"type":14,"tag":71,"props":323,"children":324},{"style":164},[325],{"type":20,"value":326},".\u002Fconfig.json:\u002Fapp\u002Fconfig.json:ro\n",{"type":14,"tag":71,"props":328,"children":330},{"class":73,"line":329},21,[331,336],{"type":14,"tag":71,"props":332,"children":333},{"style":78},[334],{"type":20,"value":335},"    environment",{"type":14,"tag":71,"props":337,"children":338},{"style":84},[339],{"type":20,"value":87},{"type":14,"tag":71,"props":341,"children":343},{"class":73,"line":342},22,[344,348],{"type":14,"tag":71,"props":345,"children":346},{"style":84},[347],{"type":20,"value":216},{"type":14,"tag":71,"props":349,"children":350},{"style":164},[351],{"type":20,"value":352},"PORT=8080\n",{"type":14,"tag":71,"props":354,"children":356},{"class":73,"line":355},23,[357,361],{"type":14,"tag":71,"props":358,"children":359},{"style":84},[360],{"type":20,"value":216},{"type":14,"tag":71,"props":362,"children":363},{"style":164},[364],{"type":20,"value":365},"BIND_HOST=0.0.0.0\n",{"type":14,"tag":71,"props":367,"children":369},{"class":73,"line":368},24,[370,374],{"type":14,"tag":71,"props":371,"children":372},{"style":84},[373],{"type":20,"value":216},{"type":14,"tag":71,"props":375,"children":376},{"style":164},[377],{"type":20,"value":378},"APP_TITLE=webtop-manage\n",{"type":14,"tag":71,"props":380,"children":382},{"class":73,"line":381},25,[383,387],{"type":14,"tag":71,"props":384,"children":385},{"style":84},[386],{"type":20,"value":216},{"type":14,"tag":71,"props":388,"children":389},{"style":164},[390],{"type":20,"value":391},"DEFAULT_INSTANCE_BIND_IP=127.0.0.1\n",{"type":14,"tag":71,"props":393,"children":395},{"class":73,"line":394},26,[396,400],{"type":14,"tag":71,"props":397,"children":398},{"style":84},[399],{"type":20,"value":216},{"type":14,"tag":71,"props":401,"children":402},{"style":164},[403],{"type":20,"value":404},"DEFAULT_NETWORK=webtop-net\n",{"type":14,"tag":71,"props":406,"children":408},{"class":73,"line":407},27,[409,413],{"type":14,"tag":71,"props":410,"children":411},{"style":84},[412],{"type":20,"value":216},{"type":14,"tag":71,"props":414,"children":415},{"style":164},[416],{"type":20,"value":417},"DEFAULT_TZ=Etc\u002FUTC\n",{"type":14,"tag":71,"props":419,"children":421},{"class":73,"line":420},28,[422,426],{"type":14,"tag":71,"props":423,"children":424},{"style":84},[425],{"type":20,"value":216},{"type":14,"tag":71,"props":427,"children":428},{"style":164},[429],{"type":20,"value":430},"DEFAULT_KEYBOARD=en-us-qwerty\n",{"type":14,"tag":71,"props":432,"children":434},{"class":73,"line":433},29,[435,439],{"type":14,"tag":71,"props":436,"children":437},{"style":84},[438],{"type":20,"value":216},{"type":14,"tag":71,"props":440,"children":441},{"style":164},[442],{"type":20,"value":443},"DEFAULT_SHM_SIZE_MB=1024\n",{"type":14,"tag":71,"props":445,"children":447},{"class":73,"line":446},30,[448,452],{"type":14,"tag":71,"props":449,"children":450},{"style":84},[451],{"type":20,"value":216},{"type":14,"tag":71,"props":453,"children":454},{"style":164},[455],{"type":20,"value":456},"BASE_PORT=3000\n",{"type":14,"tag":71,"props":458,"children":460},{"class":73,"line":459},31,[461,465],{"type":14,"tag":71,"props":462,"children":463},{"style":84},[464],{"type":20,"value":216},{"type":14,"tag":71,"props":466,"children":467},{"style":164},[468],{"type":20,"value":469},"DEFAULT_EGRESS_POLICY=full\n",{"type":14,"tag":71,"props":471,"children":473},{"class":73,"line":472},32,[474,479],{"type":14,"tag":71,"props":475,"children":476},{"style":78},[477],{"type":20,"value":478},"    networks",{"type":14,"tag":71,"props":480,"children":481},{"style":84},[482],{"type":20,"value":87},{"type":14,"tag":71,"props":484,"children":486},{"class":73,"line":485},33,[487,491],{"type":14,"tag":71,"props":488,"children":489},{"style":84},[490],{"type":20,"value":216},{"type":14,"tag":71,"props":492,"children":493},{"style":164},[494],{"type":20,"value":495},"webtop-net\n",{"type":14,"tag":71,"props":497,"children":499},{"class":73,"line":498},34,[500],{"type":14,"tag":71,"props":501,"children":503},{"emptyLinePlaceholder":502},true,[504],{"type":20,"value":505},"\n",{"type":14,"tag":71,"props":507,"children":509},{"class":73,"line":508},35,[510,515],{"type":14,"tag":71,"props":511,"children":512},{"style":78},[513],{"type":20,"value":514},"networks",{"type":14,"tag":71,"props":516,"children":517},{"style":84},[518],{"type":20,"value":87},{"type":14,"tag":71,"props":520,"children":522},{"class":73,"line":521},36,[523,528],{"type":14,"tag":71,"props":524,"children":525},{"style":78},[526],{"type":20,"value":527},"  webtop-net",{"type":14,"tag":71,"props":529,"children":530},{"style":84},[531],{"type":20,"value":87},{"type":14,"tag":71,"props":533,"children":535},{"class":73,"line":534},37,[536,541,545],{"type":14,"tag":71,"props":537,"children":538},{"style":78},[539],{"type":20,"value":540},"    name",{"type":14,"tag":71,"props":542,"children":543},{"style":84},[544],{"type":20,"value":124},{"type":14,"tag":71,"props":546,"children":547},{"style":164},[548],{"type":20,"value":495},{"type":14,"tag":71,"props":550,"children":552},{"class":73,"line":551},38,[553,558,562],{"type":14,"tag":71,"props":554,"children":555},{"style":78},[556],{"type":20,"value":557},"    driver",{"type":14,"tag":71,"props":559,"children":560},{"style":84},[561],{"type":20,"value":124},{"type":14,"tag":71,"props":563,"children":564},{"style":164},[565],{"type":20,"value":566},"bridge\n",{"type":14,"tag":48,"props":568,"children":570},{"id":569},"_2-start-the-service",[571],{"type":20,"value":572},"2. Start the Service",{"type":14,"tag":61,"props":574,"children":578},{"className":575,"code":576,"language":577,"meta":7,"style":7},"language-bash shiki shiki-themes github-dark github-dark github-light","docker compose up -d\n","bash",[579],{"type":14,"tag":28,"props":580,"children":581},{"__ignoreMap":7},[582],{"type":14,"tag":71,"props":583,"children":584},{"class":73,"line":74},[585,591,596,601],{"type":14,"tag":71,"props":586,"children":588},{"style":587},"--shiki-default:#B392F0;--shiki-dark:#B392F0;--shiki-light:#6F42C1",[589],{"type":20,"value":590},"docker",{"type":14,"tag":71,"props":592,"children":593},{"style":164},[594],{"type":20,"value":595}," compose",{"type":14,"tag":71,"props":597,"children":598},{"style":164},[599],{"type":20,"value":600}," up",{"type":14,"tag":71,"props":602,"children":603},{"style":127},[604],{"type":20,"value":605}," -d\n",{"type":14,"tag":48,"props":607,"children":609},{"id":608},"_3-open-the-dashboard",[610],{"type":20,"value":611},"3. Open the Dashboard",{"type":14,"tag":22,"props":613,"children":614},{},[615],{"type":20,"value":616},"Open your browser and navigate to:",{"type":14,"tag":61,"props":618,"children":621},{"className":619,"code":620,"language":20,"meta":7,"style":7},"language-text shiki shiki-themes github-dark github-dark github-light","http:\u002F\u002F127.0.0.1:8080\n",[622],{"type":14,"tag":28,"props":623,"children":624},{"__ignoreMap":7},[625],{"type":14,"tag":71,"props":626,"children":627},{"class":73,"line":74},[628],{"type":14,"tag":71,"props":629,"children":630},{},[631],{"type":20,"value":620},{"type":14,"tag":633,"props":634,"children":635},"blockquote",{},[636],{"type":14,"tag":22,"props":637,"children":638},{},[639,644,650,652,658],{"type":14,"tag":71,"props":640,"children":641},{},[642],{"type":20,"value":643},"!TIP",{"type":14,"tag":645,"props":646,"children":647},"strong",{},[648],{"type":20,"value":649},"Zero-Trust Guarantee",{"type":20,"value":651},": Because the compose file binds to ",{"type":14,"tag":28,"props":653,"children":655},{"className":654},[],[656],{"type":20,"value":657},"127.0.0.1:8080:8080",{"type":20,"value":659},", your workstation manager is completely unreachable from the local Wi-Fi or public internet.",{"type":14,"tag":37,"props":661,"children":662},{},[],{"type":14,"tag":41,"props":664,"children":666},{"id":665},"running-as-a-native-binary-standalone",[667],{"type":20,"value":668},"💻 Running as a Native Binary (Standalone)",{"type":14,"tag":22,"props":670,"children":671},{},[672,674,679],{"type":20,"value":673},"You can also run ",{"type":14,"tag":28,"props":675,"children":677},{"className":676},[],[678],{"type":20,"value":33},{"type":20,"value":680}," directly on Linux, macOS, or Windows without containerizing the manager:",{"type":14,"tag":61,"props":682,"children":684},{"className":575,"code":683,"language":577,"meta":7,"style":7},"# Clone repository\ngit clone https:\u002F\u002Fgithub.com\u002Fmngdlnx\u002Fwebtop-manage.git\ncd webtop-manage\n\n# Build static binary with embedded web assets\ngo build -ldflags=\"-s -w\" -o webtop-manage .\u002Fcmd\u002Fwebtop-manage\n\n# Run daemon (Connects automatically to local Docker engine)\n.\u002Fwebtop-manage\n",[685],{"type":14,"tag":28,"props":686,"children":687},{"__ignoreMap":7},[688,696,714,727,734,742,780,787,795],{"type":14,"tag":71,"props":689,"children":690},{"class":73,"line":74},[691],{"type":14,"tag":71,"props":692,"children":693},{"style":107},[694],{"type":20,"value":695},"# Clone repository\n",{"type":14,"tag":71,"props":697,"children":698},{"class":73,"line":90},[699,704,709],{"type":14,"tag":71,"props":700,"children":701},{"style":587},[702],{"type":20,"value":703},"git",{"type":14,"tag":71,"props":705,"children":706},{"style":164},[707],{"type":20,"value":708}," clone",{"type":14,"tag":71,"props":710,"children":711},{"style":164},[712],{"type":20,"value":713}," https:\u002F\u002Fgithub.com\u002Fmngdlnx\u002Fwebtop-manage.git\n",{"type":14,"tag":71,"props":715,"children":716},{"class":73,"line":103},[717,722],{"type":14,"tag":71,"props":718,"children":719},{"style":127},[720],{"type":20,"value":721},"cd",{"type":14,"tag":71,"props":723,"children":724},{"style":164},[725],{"type":20,"value":726}," webtop-manage\n",{"type":14,"tag":71,"props":728,"children":729},{"class":73,"line":113},[730],{"type":14,"tag":71,"props":731,"children":732},{"emptyLinePlaceholder":502},[733],{"type":20,"value":505},{"type":14,"tag":71,"props":735,"children":736},{"class":73,"line":133},[737],{"type":14,"tag":71,"props":738,"children":739},{"style":107},[740],{"type":20,"value":741},"# Build static binary with embedded web assets\n",{"type":14,"tag":71,"props":743,"children":744},{"class":73,"line":142},[745,750,755,760,765,770,775],{"type":14,"tag":71,"props":746,"children":747},{"style":587},[748],{"type":20,"value":749},"go",{"type":14,"tag":71,"props":751,"children":752},{"style":164},[753],{"type":20,"value":754}," build",{"type":14,"tag":71,"props":756,"children":757},{"style":127},[758],{"type":20,"value":759}," -ldflags=",{"type":14,"tag":71,"props":761,"children":762},{"style":164},[763],{"type":20,"value":764},"\"-s -w\"",{"type":14,"tag":71,"props":766,"children":767},{"style":127},[768],{"type":20,"value":769}," -o",{"type":14,"tag":71,"props":771,"children":772},{"style":164},[773],{"type":20,"value":774}," webtop-manage",{"type":14,"tag":71,"props":776,"children":777},{"style":164},[778],{"type":20,"value":779}," .\u002Fcmd\u002Fwebtop-manage\n",{"type":14,"tag":71,"props":781,"children":782},{"class":73,"line":151},[783],{"type":14,"tag":71,"props":784,"children":785},{"emptyLinePlaceholder":502},[786],{"type":20,"value":505},{"type":14,"tag":71,"props":788,"children":789},{"class":73,"line":170},[790],{"type":14,"tag":71,"props":791,"children":792},{"style":107},[793],{"type":20,"value":794},"# Run daemon (Connects automatically to local Docker engine)\n",{"type":14,"tag":71,"props":796,"children":797},{"class":73,"line":188},[798],{"type":14,"tag":71,"props":799,"children":800},{"style":587},[801],{"type":20,"value":802},".\u002Fwebtop-manage\n",{"type":14,"tag":48,"props":804,"children":806},{"id":805},"docker-daemon-socket-auto-detection",[807],{"type":20,"value":808},"Docker Daemon Socket Auto-Detection",{"type":14,"tag":810,"props":811,"children":812},"ul",{},[813,829,851,866],{"type":14,"tag":814,"props":815,"children":816},"li",{},[817,822,823],{"type":14,"tag":645,"props":818,"children":819},{},[820],{"type":20,"value":821},"Linux",{"type":20,"value":124},{"type":14,"tag":28,"props":824,"children":826},{"className":825},[],[827],{"type":20,"value":828},"\u002Fvar\u002Frun\u002Fdocker.sock",{"type":14,"tag":814,"props":830,"children":831},{},[832,837,838,844,846],{"type":14,"tag":645,"props":833,"children":834},{},[835],{"type":20,"value":836},"macOS",{"type":20,"value":124},{"type":14,"tag":28,"props":839,"children":841},{"className":840},[],[842],{"type":20,"value":843},"~\u002F.docker\u002Frun\u002Fdocker.sock",{"type":20,"value":845}," or ",{"type":14,"tag":28,"props":847,"children":849},{"className":848},[],[850],{"type":20,"value":828},{"type":14,"tag":814,"props":852,"children":853},{},[854,859,860],{"type":14,"tag":645,"props":855,"children":856},{},[857],{"type":20,"value":858},"Windows",{"type":20,"value":124},{"type":14,"tag":28,"props":861,"children":863},{"className":862},[],[864],{"type":20,"value":865},"npipe:\u002F\u002F\u002F\u002F.\u002Fpipe\u002Fdocker_engine",{"type":14,"tag":814,"props":867,"children":868},{},[869,874,876,882,884,890],{"type":14,"tag":645,"props":870,"children":871},{},[872],{"type":20,"value":873},"Custom Engine",{"type":20,"value":875},": Pass ",{"type":14,"tag":28,"props":877,"children":879},{"className":878},[],[880],{"type":20,"value":881},"DOCKER_HOST=tcp:\u002F\u002Fremote-docker-host:2375",{"type":20,"value":883}," or specify in ",{"type":14,"tag":28,"props":885,"children":887},{"className":886},[],[888],{"type":20,"value":889},"config.json",{"type":20,"value":891},".",{"type":14,"tag":37,"props":893,"children":894},{},[],{"type":14,"tag":41,"props":896,"children":898},{"id":897},"deploying-behind-reverse-proxies",[899],{"type":20,"value":900},"🌐 Deploying Behind Reverse Proxies",{"type":14,"tag":22,"props":902,"children":903},{},[904,906,911],{"type":20,"value":905},"To expose ",{"type":14,"tag":28,"props":907,"children":909},{"className":908},[],[910],{"type":20,"value":33},{"type":20,"value":912}," over secure HTTPS using Cloudflare Tunnels, Tailscale Funnel, Caddy, or Nginx:",{"type":14,"tag":810,"props":914,"children":915},{},[916,942,984],{"type":14,"tag":814,"props":917,"children":918},{},[919,924,926,932,934,940],{"type":14,"tag":645,"props":920,"children":921},{},[922],{"type":20,"value":923},"WebSocket Terminal",{"type":20,"value":925},": The Go server accepts connections matching ",{"type":14,"tag":28,"props":927,"children":929},{"className":928},[],[930],{"type":20,"value":931},"r.Host",{"type":20,"value":933},", so proxied WebSocket connections on ",{"type":14,"tag":28,"props":935,"children":937},{"className":936},[],[938],{"type":20,"value":939},"\u002Fapi\u002Finstances\u002F{id}\u002Fterminal",{"type":20,"value":941}," work out of the box.",{"type":14,"tag":814,"props":943,"children":944},{},[945,950,951],{"type":14,"tag":645,"props":946,"children":947},{},[948],{"type":20,"value":949},"Caddy Example",{"type":20,"value":87},{"type":14,"tag":61,"props":952,"children":956},{"className":953,"code":954,"language":955,"meta":7,"style":7},"language-caddyfile shiki shiki-themes github-dark github-dark github-light","webtop.internal.domain {\n    reverse_proxy 127.0.0.1:8080\n}\n","caddyfile",[957],{"type":14,"tag":28,"props":958,"children":959},{"__ignoreMap":7},[960,968,976],{"type":14,"tag":71,"props":961,"children":962},{"class":73,"line":74},[963],{"type":14,"tag":71,"props":964,"children":965},{},[966],{"type":20,"value":967},"webtop.internal.domain {\n",{"type":14,"tag":71,"props":969,"children":970},{"class":73,"line":90},[971],{"type":14,"tag":71,"props":972,"children":973},{},[974],{"type":20,"value":975},"    reverse_proxy 127.0.0.1:8080\n",{"type":14,"tag":71,"props":977,"children":978},{"class":73,"line":103},[979],{"type":14,"tag":71,"props":980,"children":981},{},[982],{"type":20,"value":983},"}\n",{"type":14,"tag":814,"props":985,"children":986},{},[987,992,993],{"type":14,"tag":645,"props":988,"children":989},{},[990],{"type":20,"value":991},"Nginx Example",{"type":20,"value":87},{"type":14,"tag":61,"props":994,"children":998},{"className":995,"code":996,"language":997,"meta":7,"style":7},"language-nginx shiki shiki-themes github-dark github-dark github-light","location \u002F {\n    proxy_pass http:\u002F\u002F127.0.0.1:8080;\n    proxy_http_version 1.1;\n    proxy_set_header Upgrade $http_upgrade;\n    proxy_set_header Connection \"upgrade\";\n    proxy_set_header Host $host;\n}\n","nginx",[999],{"type":14,"tag":28,"props":1000,"children":1001},{"__ignoreMap":7},[1002,1010,1018,1026,1034,1042,1050],{"type":14,"tag":71,"props":1003,"children":1004},{"class":73,"line":74},[1005],{"type":14,"tag":71,"props":1006,"children":1007},{},[1008],{"type":20,"value":1009},"location \u002F {\n",{"type":14,"tag":71,"props":1011,"children":1012},{"class":73,"line":90},[1013],{"type":14,"tag":71,"props":1014,"children":1015},{},[1016],{"type":20,"value":1017},"    proxy_pass http:\u002F\u002F127.0.0.1:8080;\n",{"type":14,"tag":71,"props":1019,"children":1020},{"class":73,"line":103},[1021],{"type":14,"tag":71,"props":1022,"children":1023},{},[1024],{"type":20,"value":1025},"    proxy_http_version 1.1;\n",{"type":14,"tag":71,"props":1027,"children":1028},{"class":73,"line":113},[1029],{"type":14,"tag":71,"props":1030,"children":1031},{},[1032],{"type":20,"value":1033},"    proxy_set_header Upgrade $http_upgrade;\n",{"type":14,"tag":71,"props":1035,"children":1036},{"class":73,"line":133},[1037],{"type":14,"tag":71,"props":1038,"children":1039},{},[1040],{"type":20,"value":1041},"    proxy_set_header Connection \"upgrade\";\n",{"type":14,"tag":71,"props":1043,"children":1044},{"class":73,"line":142},[1045],{"type":14,"tag":71,"props":1046,"children":1047},{},[1048],{"type":20,"value":1049},"    proxy_set_header Host $host;\n",{"type":14,"tag":71,"props":1051,"children":1052},{"class":73,"line":151},[1053],{"type":14,"tag":71,"props":1054,"children":1055},{},[1056],{"type":20,"value":983},{"type":14,"tag":1058,"props":1059,"children":1060},"style",{},[1061],{"type":20,"value":1062},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}",{"title":7,"searchDepth":103,"depth":103,"links":1064},[1065,1071,1074],{"id":43,"depth":90,"text":46,"children":1066},[1067,1069,1070],{"id":50,"depth":103,"text":1068},"1. Create docker-compose.yml",{"id":569,"depth":103,"text":572},{"id":608,"depth":103,"text":611},{"id":665,"depth":90,"text":668,"children":1072},[1073],{"id":805,"depth":103,"text":808},{"id":897,"depth":90,"text":900},"markdown","content:1.getting-started:2.quickstart.md","content","1.getting-started\u002F2.quickstart.md","1.getting-started\u002F2.quickstart","md",1787169590132]