[{"data":1,"prerenderedAt":629},["ShallowReactive",2],{"docs-en-getting-started\u002Fget-started":3,"docs-navigation-en":382,"docs-surround-en-getting-started\u002Fget-started":622},{"id":4,"title":5,"body":6,"description":372,"extension":373,"lastUpdated":374,"meta":375,"navigation":376,"path":378,"seo":379,"stem":380,"__hash__":381},"docs\u002Fen\u002F1.docs\u002F1.getting-started\u002F2.get-started.md","Get Started",{"type":7,"value":8,"toc":358},"minimark",[9,13,18,21,36,40,45,60,64,76,83,87,90,112,118,121,141,147,153,160,164,178,186,192,199,205,211,214,234,237,243,247,250,278,284,299,302,318,321,327,334,338,341,355],[10,11,12],"p",{},"Get up and running with lowcloud in minutes. This guide walks you through setting up your first Kubernetes cluster on Hetzner Cloud.",[14,15,17],"h2",{"id":16},"prerequisites","Prerequisites",[10,19,20],{},"Before you begin, make sure you have:",[22,23,24,33],"ul",{},[25,26,27,28],"li",{},"A lowcloud account — ",[29,30,32],"a",{"href":31},"\u002F","sign up here",[25,34,35],{},"A Hetzner Cloud account",[14,37,39],{"id":38},"step-1-prepare-your-hetzner-account","Step 1: Prepare Your Hetzner Account",[41,42,44],"h3",{"id":43},"create-a-new-project","Create a New Project",[10,46,47,48,54,55,59],{},"Log in to the ",[29,49,53],{"href":50,"rel":51},"https:\u002F\u002Fconsole.hetzner.cloud\u002F",[52],"nofollow","Hetzner Cloud Console"," and create a new project. Choose a descriptive name, e.g. ",[56,57,58],"code",{},"lowcloud",".",[41,61,63],{"id":62},"add-an-api-key","Add an API Key",[10,65,66,67,71,72,75],{},"Navigate to ",[68,69,70],"strong",{},"Security → API Tokens"," within your project and create a new token with ",[68,73,74],{},"Read\u002FWrite"," permissions. Copy the token — you will need it in the next step.",[10,77,78],{},[79,80],"img",{"alt":81,"src":82},"Generate Hetzner API Token","\u002Fimages\u002Fdocs\u002Fhetzner-generate-api-token.png",[14,84,86],{"id":85},"step-2-create-a-project-in-lowcloud","Step 2: Create a Project in lowcloud",[10,88,89],{},"Create a new project in the lowcloud Dashboard:",[91,92,93,96,106],"ol",{},[25,94,95],{},"Choose a project name.",[25,97,98,99,102,103,59],{},"Under ",[68,100,101],{},"Select Provider",", select ",[68,104,105],{},"Hetzner",[25,107,108,109,59],{},"Click ",[68,110,111],{},"Create Hetzner Connection",[10,113,114],{},[79,115],{"alt":116,"src":117},"Connect Hetzner Cloud Project","\u002Fimages\u002Fdocs\u002Fconnect-hetzner-cloud-project.png",[10,119,120],{},"Fill in the dialog:",[22,122,123,129,135],{},[25,124,125,128],{},[68,126,127],{},"Connection Name",": A name for the connection",[25,130,131,134],{},[68,132,133],{},"Project Name",": The project name of your Hetzner project from the Hetzner Console",[25,136,137,140],{},[68,138,139],{},"API Token",": The API key from Step 1",[10,142,108,143,146],{},[68,144,145],{},"Add"," to save the connection.",[10,148,149],{},[79,150],{"alt":151,"src":152},"Connect Hetzner Project Dialog","\u002Fimages\u002Fdocs\u002Fconnect-hetzner-project-dialog.png",[10,154,155,156,159],{},"Then click ",[68,157,158],{},"Create Project"," to create the project.",[14,161,163],{"id":162},"step-3-provision-a-kubernetes-cluster","Step 3: Provision a Kubernetes Cluster",[10,165,166,167,170,171,174,175,59],{},"After creating the project, you will land on the project page. The ",[68,168,169],{},"Getting Started"," card shows you the next steps: ",[68,172,173],{},"Provision Kubernetes Cluster"," and ",[68,176,177],{},"Add and deploy service",[10,179,108,180,183,184,59],{},[68,181,182],{},"Set up"," on ",[68,185,173],{},[10,187,188],{},[79,189],{"alt":190,"src":191},"Getting Started Card","\u002Fimages\u002Fdocs\u002Fnew-project-getting-started.png",[10,193,194,195,198],{},"You will land on the Infrastructure page. Click ",[68,196,197],{},"Provision K8s Cluster",". A dialog opens with a preconfigured setup: a single node Control Plane and one worker group with 2 replicas. You can keep the defaults.",[10,200,201],{},[79,202],{"alt":203,"src":204},"Provision K8s Cluster Dialog","\u002Fimages\u002Fdocs\u002Fprovision-k8s-dialog.png",[10,206,108,207,210],{},[68,208,209],{},"Provision Cluster"," to start the provisioning.",[10,212,213],{},"The following resources will be automatically created in your Hetzner account:",[22,215,216,219,222,225,228,231],{},[25,217,218],{},"Firewall",[25,220,221],{},"Private network for the Kubernetes cluster",[25,223,224],{},"1 Control Plane VM",[25,226,227],{},"2 Worker VMs",[25,229,230],{},"1 Load Balancer for cluster management",[25,232,233],{},"1 Load Balancer for external traffic",[10,235,236],{},"After a few minutes, the Kubernetes cluster is successfully created.",[10,238,239],{},[79,240],{"alt":241,"src":242},"Provisioned Kubernetes Cluster","\u002Fimages\u002Fdocs\u002Fprovisioned-k8s-cluster.png",[14,244,246],{"id":245},"step-4-deploy-a-sample-app","Step 4: Deploy a Sample App",[10,248,249],{},"Now we can create our first application. For this demo, we will deploy an nginx web server.",[91,251,252,257,263,268],{},[25,253,66,254,59],{},[68,255,256],{},"Services → Add Service → App Service",[25,258,259,260,59],{},"Choose a name, e.g. ",[56,261,262],{},"nginx",[25,264,108,265,59],{},[68,266,267],{},"Next",[25,269,270,271,274,275,59],{},"Enter ",[56,272,273],{},"nginx:latest"," as the ",[68,276,277],{},"Container Image URL",[10,279,280],{},[79,281],{"alt":282,"src":283},"Configure Container Image","\u002Fimages\u002Fdocs\u002Fconfigure-nginx-docker.png",[91,285,287,291,294],{"start":286},5,[25,288,108,289,59],{},[68,290,267],{},[25,292,293],{},"Keep the default configuration.",[25,295,108,296,59],{},[68,297,298],{},"Create",[10,300,301],{},"The App Service has been created and can now be deployed:",[91,303,304,307,312],{},[25,305,306],{},"Open the App Service.",[25,308,66,309,59],{},[68,310,311],{},"Deployments → Deploy Service",[25,313,314,315,59],{},"Confirm with ",[68,316,317],{},"Confirm Deployment",[10,319,320],{},"The deployment will start and a URL will be generated.",[10,322,323],{},[79,324],{"alt":325,"src":326},"Deploy nginx Service","\u002Fimages\u002Fdocs\u002Fdeploy-nginx.png",[10,328,329,330,333],{},"The URL is visible in the Deployment dialog or in the ",[68,331,332],{},"Domains"," tab of the App Service. The nginx server is now accessible under this domain.",[14,335,337],{"id":336},"summary","Summary",[10,339,340],{},"In this guide you have:",[91,342,343,346,349,352],{},[25,344,345],{},"Prepared a Hetzner Cloud account with an API token",[25,347,348],{},"Created a project in lowcloud and connected it to Hetzner",[25,350,351],{},"Provisioned a Kubernetes cluster with a Control Plane and Worker Nodes",[25,353,354],{},"Deployed a first application (nginx) and made it publicly accessible",[10,356,357],{},"Your Kubernetes cluster is now running on Hetzner Cloud and ready for more services.",{"title":359,"searchDepth":360,"depth":360,"links":361},"",2,[362,363,368,369,370,371],{"id":16,"depth":360,"text":17},{"id":38,"depth":360,"text":39,"children":364},[365,367],{"id":43,"depth":366,"text":44},3,{"id":62,"depth":366,"text":63},{"id":85,"depth":360,"text":86},{"id":162,"depth":360,"text":163},{"id":245,"depth":360,"text":246},{"id":336,"depth":360,"text":337},"Set up your first lowcloud environment on Hetzner Cloud.","md","2026-03-11",{},{"icon":377},"i-lucide-rocket","\u002Fen\u002Fdocs\u002Fgetting-started\u002Fget-started",{"title":5,"description":372},"en\u002F1.docs\u002F1.getting-started\u002F2.get-started","XYcGYEuT6rH2oyL_AKG8paVmGZo1v_3nsnZpantJT2I",[383,398,410,549,576,615],{"title":169,"path":384,"stem":385,"children":386,"icon":397},"\u002Fhosting\u002Fdocs\u002Fgetting-started","en\u002F1.docs\u002F1.getting-started\u002F1.index",[387,390,392],{"title":388,"path":384,"stem":385,"icon":389,"children":-1},"Introduction","i-lucide-house",{"title":5,"path":391,"stem":380,"icon":377,"children":-1},"\u002Fhosting\u002Fdocs\u002Fgetting-started\u002Fget-started",{"title":393,"path":394,"stem":395,"icon":396,"children":-1},"How It Works","\u002Fhosting\u002Fdocs\u002Fgetting-started\u002Fhow-it-works","en\u002F1.docs\u002F1.getting-started\u002F3.how-it-works","i-lucide-lightbulb",false,{"title":399,"path":400,"stem":401,"children":402,"icon":397},"Guides","\u002Fhosting\u002Fdocs\u002Fguides","en\u002F1.docs\u002F2.guides\u002F1.index",[403,405],{"title":399,"path":400,"stem":401,"icon":404,"children":-1},"i-lucide-book-open",{"title":406,"path":407,"stem":408,"icon":409,"children":-1},"Connect a Container Registry","\u002Fhosting\u002Fdocs\u002Fguides\u002Fcontainer-registries","en\u002F1.docs\u002F2.guides\u002F2.container-registries","i-lucide-container",{"title":411,"icon":397,"path":412,"stem":413,"children":414,"page":397},"Platform","\u002Fhosting\u002Fdocs\u002Fplatform","en\u002F1.docs\u002F2.platform",[415,435,501,539],{"title":388,"path":416,"stem":417,"children":418,"icon":397},"\u002Fhosting\u002Fdocs\u002Fplatform\u002Fintroduction","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F1.index",[419,422,427,432],{"title":420,"path":416,"stem":417,"icon":421,"children":-1},"Overview","i-lucide-cloud",{"title":423,"path":424,"stem":425,"icon":426,"children":-1},"Use Cases","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fintroduction\u002Fwhen-to-use","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F2.when-to-use","i-lucide-compass",{"title":428,"path":429,"stem":430,"icon":431,"children":-1},"Features","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fintroduction\u002Fwhat-you-get","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F3.what-you-get","i-lucide-package-check",{"title":5,"path":433,"stem":434,"icon":377,"children":-1},"\u002Fhosting\u002Fdocs\u002Fplatform\u002Fintroduction\u002Fget-started","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F4.get-started",{"title":436,"path":437,"stem":438,"children":439,"icon":397},"Web Services","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F01.index",[440,443,448,453,457,462,466,471,476,481,486,491,496],{"title":441,"path":437,"stem":438,"icon":442,"children":-1},"Source Options","i-lucide-app-window",{"title":444,"path":445,"stem":446,"icon":447,"children":-1},"Build Strategies","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fbuild-strategies","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F02.build-strategies","i-lucide-hammer",{"title":449,"path":450,"stem":451,"icon":452,"children":-1},"Configuration","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fconfiguration","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F03.configuration","i-lucide-settings",{"title":454,"path":455,"stem":456,"icon":377,"children":-1},"Deploying","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fdeploying","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F04.deploying",{"title":458,"path":459,"stem":460,"icon":461,"children":-1},"Scaling","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fscaling","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F05.scaling","i-lucide-scaling",{"title":332,"path":463,"stem":464,"icon":465,"children":-1},"\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fdomains","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F06.domains","i-lucide-globe",{"title":467,"path":468,"stem":469,"icon":470,"children":-1},"Service Networking","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fconnecting-services","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F07.connecting-services","i-lucide-network",{"title":472,"path":473,"stem":474,"icon":475,"children":-1},"Env Variables","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fenvironment-variables","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F08.environment-variables","i-lucide-key-round",{"title":477,"path":478,"stem":479,"icon":480,"children":-1},"Storage","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fpersistent-storage","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F09.persistent-storage","i-lucide-hard-drive",{"title":482,"path":483,"stem":484,"icon":485,"children":-1},"Defaults","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Flimits","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F10.limits","i-lucide-gauge",{"title":487,"path":488,"stem":489,"icon":490,"children":-1},"Billing","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fbilling","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F11.billing","i-lucide-credit-card",{"title":492,"path":493,"stem":494,"icon":495,"children":-1},"Shell","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fshell","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F12.shell","i-lucide-square-terminal",{"title":497,"path":498,"stem":499,"icon":500,"children":-1},"Drop a Site","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fdrop","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F13.drop","i-lucide-upload",{"title":502,"path":503,"stem":504,"children":505,"icon":397},"Databases","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F1.index",[506,509,513,518,523,526,531,536],{"title":507,"path":503,"stem":504,"icon":508,"children":-1},"Templates","i-lucide-database",{"title":298,"path":510,"stem":511,"icon":512,"children":-1},"\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fcreate","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F2.create","i-lucide-plus",{"title":514,"path":515,"stem":516,"icon":517,"children":-1},"Connect","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fconnect","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F3.connect","i-lucide-plug",{"title":519,"path":520,"stem":521,"icon":522,"children":-1},"Public Access","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fpublic-access","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F4.public-access","i-lucide-radio-tower",{"title":477,"path":524,"stem":525,"icon":480,"children":-1},"\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fstorage","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F5.storage",{"title":527,"path":528,"stem":529,"icon":530,"children":-1},"Management","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fmanagement","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F6.management","i-lucide-sliders-horizontal",{"title":532,"path":533,"stem":534,"icon":535,"children":-1},"Operations","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases\u002Foperational-notes","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F7.operational-notes","i-lucide-clipboard-list",{"title":487,"path":537,"stem":538,"icon":490,"children":-1},"\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fbilling","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F8.billing",{"title":399,"path":540,"stem":541,"children":542,"icon":397},"\u002Fhosting\u002Fdocs\u002Fplatform\u002Fguides","en\u002F1.docs\u002F2.platform\u002F4.guides\u002F1.index",[543,544],{"title":399,"path":540,"stem":541,"icon":404,"children":-1},{"title":545,"path":546,"stem":547,"icon":548,"children":-1},"Hermes Agent","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fguides\u002Fsetup-hermes-agent","en\u002F1.docs\u002F2.platform\u002F4.guides\u002F2.setup-hermes-agent","i-lucide-bot",{"title":550,"path":551,"stem":552,"children":553,"icon":397},"App Services","\u002Fhosting\u002Fdocs\u002Fapp-services","en\u002F1.docs\u002F3.app-services\u002F1.index",[554,555,559,563,567,572],{"title":550,"path":551,"stem":552,"icon":377,"children":-1},{"title":556,"path":557,"stem":558,"icon":452,"children":-1},"Build Settings","\u002Fhosting\u002Fdocs\u002Fapp-services\u002Fbuild-settings","en\u002F1.docs\u002F3.app-services\u002F2.build-settings",{"title":472,"path":560,"stem":561,"icon":562,"children":-1},"\u002Fhosting\u002Fdocs\u002Fapp-services\u002Fenvironment-variables","en\u002F1.docs\u002F3.app-services\u002F3.environment-variables","i-lucide-key",{"title":564,"path":565,"stem":566,"icon":465,"children":-1},"Custom Domains","\u002Fhosting\u002Fdocs\u002Fapp-services\u002Fcustom-domains","en\u002F1.docs\u002F3.app-services\u002F4.custom-domains",{"title":568,"path":569,"stem":570,"icon":571,"children":-1},"Health Checks","\u002Fhosting\u002Fdocs\u002Fapp-services\u002Fhealth-checks","en\u002F1.docs\u002F3.app-services\u002F5.health-checks","i-lucide-heart-pulse",{"title":573,"path":574,"stem":575,"icon":461,"children":-1},"Autoscaling","\u002Fhosting\u002Fdocs\u002Fapp-services\u002Fautoscaling","en\u002F1.docs\u002F3.app-services\u002F6.autoscaling",{"title":577,"path":578,"stem":579,"children":580,"icon":397},"Helm Releases","\u002Fhosting\u002Fdocs\u002Fhelm-releases","en\u002F1.docs\u002F4.helm-releases\u002F1.index",[581,583,587,592,596,601,605,610],{"title":577,"path":578,"stem":579,"icon":582,"children":-1},"i-lucide-package",{"title":584,"path":585,"stem":586,"icon":508,"children":-1},"Deploy PostgreSQL","\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-postgresql","en\u002F1.docs\u002F4.helm-releases\u002F2.deploy-postgresql",{"title":588,"path":589,"stem":590,"icon":591,"children":-1},"Deploy Redis","\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-redis","en\u002F1.docs\u002F4.helm-releases\u002F3.deploy-redis","i-lucide-zap",{"title":593,"path":594,"stem":595,"icon":591,"children":-1},"Deploy Valkey","\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-valkey","en\u002F1.docs\u002F4.helm-releases\u002F3.deploy-valkey",{"title":597,"path":598,"stem":599,"icon":600,"children":-1},"Deploy n8n","\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-n8n","en\u002F1.docs\u002F4.helm-releases\u002F4.deploy-n8n","i-lucide-workflow",{"title":602,"path":603,"stem":604,"icon":480,"children":-1},"Deploy RustFS","\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-rustfs","en\u002F1.docs\u002F4.helm-releases\u002F5.deploy-rustfs",{"title":606,"path":607,"stem":608,"icon":609,"children":-1},"Deploy OpenSearch","\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-opensearch","en\u002F1.docs\u002F4.helm-releases\u002F6.deploy-opensearch","i-lucide-search",{"title":611,"path":612,"stem":613,"icon":614,"children":-1},"Deploy Keycloak","\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-keycloak","en\u002F1.docs\u002F4.helm-releases\u002F7.deploy-keycloak","i-lucide-shield-check",{"title":616,"path":617,"stem":618,"children":619,"icon":397},"Glossary","\u002Fhosting\u002Fdocs\u002Fglossary","en\u002F1.docs\u002F5.glossary\u002F1.index",[620],{"title":616,"path":617,"stem":618,"icon":621,"children":-1},"i-lucide-book-a",[623,626],{"title":388,"path":624,"stem":385,"description":625,"icon":389,"children":-1},"\u002Fen\u002Fdocs\u002Fgetting-started","Welcome to the lowcloud documentation.",{"title":393,"path":627,"stem":395,"description":628,"icon":396,"children":-1},"\u002Fen\u002Fdocs\u002Fgetting-started\u002Fhow-it-works","Learn how lowcloud provisions Kubernetes infrastructure, deploys applications, and monitors your clusters, all through a unified interface.",1791184611034]