[{"data":1,"prerenderedAt":491},["ShallowReactive",2],{"doc-\u002Fdocs\u002Fgetting-started\u002Foverview":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"body":10,"_type":485,"_id":486,"_source":487,"_file":488,"_stem":489,"_extension":490},"\u002Fgetting-started\u002Foverview","getting-started",false,"","System Overview","A lightweight, self-hosted web GUI & workstation lifecycle manager for LinuxServer.io Docker Webtop containers.",{"type":11,"children":12,"toc":478},"root",[13,21,49,62,71,75,82,296,299,305,439,442,448],{"type":14,"tag":15,"props":16,"children":18},"element","h1",{"id":17},"system-overview",[19],{"type":20,"value":8},"text",{"type":14,"tag":22,"props":23,"children":24},"p",{},[25,36,38,47],{"type":14,"tag":26,"props":27,"children":28},"strong",{},[29],{"type":14,"tag":30,"props":31,"children":33},"code",{"className":32},[],[34],{"type":20,"value":35},"webtop-manage",{"type":20,"value":37}," is a lightweight, self-hosted orchestration engine and web dashboard built specifically for ",{"type":14,"tag":39,"props":40,"children":44},"a",{"href":41,"rel":42},"https:\u002F\u002Fdocs.linuxserver.io\u002Fimages\u002Fdocker-webtop\u002F",[43],"nofollow",[45],{"type":20,"value":46},"LinuxServer.io Docker Webtop",{"type":20,"value":48}," desktop environments.",{"type":14,"tag":22,"props":50,"children":51},{},[52,54,60],{"type":20,"value":53},"It replaces fragile shell scripts and manual ",{"type":14,"tag":30,"props":55,"children":57},{"className":56},[],[58],{"type":20,"value":59},"docker run",{"type":20,"value":61}," flags with an intuitive browser experience, complete with real-time provisioning streams, live resource gauges, interactive web terminals, and strict security isolation.",{"type":14,"tag":63,"props":64,"children":66},"pre",{"code":65},"┌─────────────────────────────────────────────────────────────────────────────┐\n│ 1. Enterprise Core: Domain Entities (internal\u002Fcore\u002Fdomain\u002F)                 │\n│    • Pure models (Instance, Preset, DistroMatrix, Telemetry, Storage)       │\n│    • Zero external dependencies or framework imports                        │\n├─────────────────────────────────────────────────────────────────────────────┤\n│ 2. Application Core: Use Cases & Ports (internal\u002Fcore\u002Fusecase\u002F, ports\u002F)     │\n│    • Business orchestrators (InstanceUC, TelemetryUC, TerminalUC, NetworkUC)│\n│    • Port interfaces (InstanceRepository, NetworkGateway, TelemetryGateway) │\n├─────────────────────────────────────────────────────────────────────────────┤\n│ 3. Interface Adapters: Primary & Secondary (internal\u002Fadapters\u002F)             │\n│    • Primary \u002F Driving: HTTP, SSE & WS Controllers (adapters\u002Fprimary\u002Fhttp\u002F) │\n│    • Secondary \u002F Driven: Docker SDK & System FS (adapters\u002Fsecondary\u002F)       │\n├─────────────────────────────────────────────────────────────────────────────┤\n│ 4. Composition Root & Delivery (cmd\u002Fwebtop-manage\u002Fmain.go)                  │\n│    • Pure Dependency Injection, embedded web assets, graceful shutdown      │\n└─────────────────────────────────────────────────────────────────────────────┘\n",[67],{"type":14,"tag":30,"props":68,"children":69},{"__ignoreMap":7},[70],{"type":20,"value":65},{"type":14,"tag":72,"props":73,"children":74},"hr",{},[],{"type":14,"tag":76,"props":77,"children":79},"h2",{"id":78},"core-architectural-pillars",[80],{"type":20,"value":81},"⚡ Core Architectural Pillars",{"type":14,"tag":83,"props":84,"children":85},"ul",{},[86,127,169,201,249],{"type":14,"tag":87,"props":88,"children":89},"li",{},[90,95,97,102,104,109,111,117,119,125],{"type":14,"tag":26,"props":91,"children":92},{},[93],{"type":20,"value":94},"100% Stateless Backend (Zero Database Overhead)",{"type":20,"value":96},":\n",{"type":14,"tag":30,"props":98,"children":100},{"className":99},[],[101],{"type":20,"value":35},{"type":20,"value":103}," requires no SQLite, PostgreSQL, or Redis. All metadata, presets, egress policies, and volume tags are persisted directly in ",{"type":14,"tag":26,"props":105,"children":106},{},[107],{"type":20,"value":108},"Docker Container Labels",{"type":20,"value":110}," (",{"type":14,"tag":30,"props":112,"children":114},{"className":113},[],[115],{"type":20,"value":116},"webtop.managed=true",{"type":20,"value":118},", ",{"type":14,"tag":30,"props":120,"children":122},{"className":121},[],[123],{"type":20,"value":124},"webtop.owner=\u003Cname>",{"type":20,"value":126},").",{"type":14,"tag":87,"props":128,"children":129},{},[130,135,137,143,145,151,153,159,161,167],{"type":14,"tag":26,"props":131,"children":132},{},[133],{"type":20,"value":134},"Zero-Trust Localhost Binding",{"type":20,"value":136},":\nThe management dashboard (",{"type":14,"tag":30,"props":138,"children":140},{"className":139},[],[141],{"type":20,"value":142},"8080",{"type":20,"value":144},") and desktop instances (",{"type":14,"tag":30,"props":146,"children":148},{"className":147},[],[149],{"type":20,"value":150},"3000+",{"type":20,"value":152},") default strictly to ",{"type":14,"tag":30,"props":154,"children":156},{"className":155},[],[157],{"type":20,"value":158},"127.0.0.1",{"type":20,"value":160},". Remote LAN and WAN connections receive ",{"type":14,"tag":30,"props":162,"children":164},{"className":163},[],[165],{"type":20,"value":166},"Connection Refused",{"type":20,"value":168}," out of the box.",{"type":14,"tag":87,"props":170,"children":171},{},[172,177,178],{"type":14,"tag":26,"props":173,"children":174},{},[175],{"type":20,"value":176},"Dual-Track Provisioning Wizard",{"type":20,"value":96},{"type":14,"tag":83,"props":179,"children":180},{},[181,191],{"type":14,"tag":87,"props":182,"children":183},{},[184,189],{"type":14,"tag":26,"props":185,"children":186},{},[187],{"type":20,"value":188},"Quick Launch Track",{"type":20,"value":190},": 1-click curated templates (Ubuntu XFCE\u002FKDE, Debian KDE\u002FXFCE) with image cache detection and pre-pull helpers.",{"type":14,"tag":87,"props":192,"children":193},{},[194,199],{"type":14,"tag":26,"props":195,"children":196},{},[197],{"type":20,"value":198},"Custom Blueprint Track",{"type":20,"value":200},": Fine-grained distro matrix, port allocation, CPU\u002FRAM limits, GPU acceleration, and custom volume mounts.",{"type":14,"tag":87,"props":202,"children":203},{},[204,209,210],{"type":14,"tag":26,"props":205,"children":206},{},[207],{"type":20,"value":208},"Real-Time Streaming Subsystems",{"type":20,"value":96},{"type":14,"tag":83,"props":211,"children":212},{},[213,223],{"type":14,"tag":87,"props":214,"children":215},{},[216,221],{"type":14,"tag":26,"props":217,"children":218},{},[219],{"type":20,"value":220},"Server-Sent Events (SSE)",{"type":20,"value":222},": Streams layer-by-layer image download progress, live CPU % and Memory metrics, and container logs.",{"type":14,"tag":87,"props":224,"children":225},{},[226,231,233,239,241,247],{"type":14,"tag":26,"props":227,"children":228},{},[229],{"type":20,"value":230},"In-Browser Web Terminal (WebSockets + xterm.js)",{"type":20,"value":232},": Direct PTY interactive shell (",{"type":14,"tag":30,"props":234,"children":236},{"className":235},[],[237],{"type":20,"value":238},"\u002Fbin\u002Fbash",{"type":20,"value":240}," or ",{"type":14,"tag":30,"props":242,"children":244},{"className":243},[],[245],{"type":20,"value":246},"\u002Fbin\u002Fsh",{"type":20,"value":248},") with dynamic window resize synchronization.",{"type":14,"tag":87,"props":250,"children":251},{},[252,257,259,265,266,272,273,279,280,286,288,294],{"type":14,"tag":26,"props":253,"children":254},{},[255],{"type":20,"value":256},"Single Native Binary with Embedded Assets",{"type":20,"value":258},":\nAll frontend assets (",{"type":14,"tag":30,"props":260,"children":262},{"className":261},[],[263],{"type":20,"value":264},"HTML5",{"type":20,"value":118},{"type":14,"tag":30,"props":267,"children":269},{"className":268},[],[270],{"type":20,"value":271},"CSS",{"type":20,"value":118},{"type":14,"tag":30,"props":274,"children":276},{"className":275},[],[277],{"type":20,"value":278},"modular JS",{"type":20,"value":118},{"type":14,"tag":30,"props":281,"children":283},{"className":282},[],[284],{"type":20,"value":285},"xterm.js",{"type":20,"value":287},") are embedded directly into the Go binary via Go 1.16+ ",{"type":14,"tag":30,"props":289,"children":291},{"className":290},[],[292],{"type":20,"value":293},"\u002F\u002Fgo:embed",{"type":20,"value":295},".",{"type":14,"tag":72,"props":297,"children":298},{},[],{"type":14,"tag":76,"props":300,"children":302},{"id":301},"system-prerequisites",[303],{"type":20,"value":304},"📋 System Prerequisites",{"type":14,"tag":306,"props":307,"children":308},"table",{},[309,334],{"type":14,"tag":310,"props":311,"children":312},"thead",{},[313],{"type":14,"tag":314,"props":315,"children":316},"tr",{},[317,324,329],{"type":14,"tag":318,"props":319,"children":321},"th",{"align":320},"left",[322],{"type":20,"value":323},"Requirement",{"type":14,"tag":318,"props":325,"children":326},{"align":320},[327],{"type":20,"value":328},"Minimum Version",{"type":14,"tag":318,"props":330,"children":331},{"align":320},[332],{"type":20,"value":333},"Notes",{"type":14,"tag":335,"props":336,"children":337},"tbody",{},[338,372,397,418],{"type":14,"tag":314,"props":339,"children":340},{},[341,350,359],{"type":14,"tag":342,"props":343,"children":344},"td",{"align":320},[345],{"type":14,"tag":26,"props":346,"children":347},{},[348],{"type":20,"value":349},"Docker Engine",{"type":14,"tag":342,"props":351,"children":352},{"align":320},[353],{"type":14,"tag":30,"props":354,"children":356},{"className":355},[],[357],{"type":20,"value":358},"24.0+",{"type":14,"tag":342,"props":360,"children":361},{"align":320},[362,364,370],{"type":20,"value":363},"Docker daemon with ",{"type":14,"tag":30,"props":365,"children":367},{"className":366},[],[368],{"type":20,"value":369},"\u002Fvar\u002Frun\u002Fdocker.sock",{"type":20,"value":371}," (Linux\u002FmacOS) or named pipe (Windows)",{"type":14,"tag":314,"props":373,"children":374},{},[375,383,392],{"type":14,"tag":342,"props":376,"children":377},{"align":320},[378],{"type":14,"tag":26,"props":379,"children":380},{},[381],{"type":20,"value":382},"Docker Compose",{"type":14,"tag":342,"props":384,"children":385},{"align":320},[386],{"type":14,"tag":30,"props":387,"children":389},{"className":388},[],[390],{"type":20,"value":391},"v2.20+",{"type":14,"tag":342,"props":393,"children":394},{"align":320},[395],{"type":20,"value":396},"Recommended deployment method",{"type":14,"tag":314,"props":398,"children":399},{},[400,408,413],{"type":14,"tag":342,"props":401,"children":402},{"align":320},[403],{"type":14,"tag":26,"props":404,"children":405},{},[406],{"type":20,"value":407},"Web Browser",{"type":14,"tag":342,"props":409,"children":410},{"align":320},[411],{"type":20,"value":412},"Modern Chromium \u002F Firefox \u002F Safari \u002F Edge",{"type":14,"tag":342,"props":414,"children":415},{"align":320},[416],{"type":20,"value":417},"Supports HTML5 Canvas, Server-Sent Events & WebSockets",{"type":14,"tag":314,"props":419,"children":420},{},[421,429,434],{"type":14,"tag":342,"props":422,"children":423},{"align":320},[424],{"type":14,"tag":26,"props":425,"children":426},{},[427],{"type":20,"value":428},"Host OS",{"type":14,"tag":342,"props":430,"children":431},{"align":320},[432],{"type":20,"value":433},"Linux, macOS, Windows (WSL2 \u002F Docker Desktop)",{"type":14,"tag":342,"props":435,"children":436},{"align":320},[437],{"type":20,"value":438},"Clean machine deployment with zero local path dependencies",{"type":14,"tag":72,"props":440,"children":441},{},[],{"type":14,"tag":76,"props":443,"children":445},{"id":444},"next-steps",[446],{"type":20,"value":447},"🧭 Next Steps",{"type":14,"tag":83,"props":449,"children":450},{},[451,460,469],{"type":14,"tag":87,"props":452,"children":453},{},[454],{"type":14,"tag":39,"props":455,"children":457},{"href":456},"\u002Fdocs\u002Fgetting-started\u002Fquickstart",[458],{"type":20,"value":459},"1-Minute Quickstart & Deployment",{"type":14,"tag":87,"props":461,"children":462},{},[463],{"type":14,"tag":39,"props":464,"children":466},{"href":465},"\u002Fdocs\u002Fworkstations\u002Fwizard",[467],{"type":20,"value":468},"Dual-Track Provisioning Wizard Guide",{"type":14,"tag":87,"props":470,"children":471},{},[472],{"type":14,"tag":39,"props":473,"children":475},{"href":474},"\u002Fdocs\u002Fsecurity\u002Flocalhost-binding",[476],{"type":20,"value":477},"Security & Sandboxing Architecture",{"title":7,"searchDepth":479,"depth":479,"links":480},3,[481,483,484],{"id":78,"depth":482,"text":81},2,{"id":301,"depth":482,"text":304},{"id":444,"depth":482,"text":447},"markdown","content:1.getting-started:1.overview.md","content","1.getting-started\u002F1.overview.md","1.getting-started\u002F1.overview","md",1787169590129]