[{"data":1,"prerenderedAt":381},["ShallowReactive",2],{"navigation":3,"docs-navigation-en":4,"\u002Fen\u002Fdocs\u002Fguides\u002Fcontainer-registries":115,"\u002Fen\u002Fdocs\u002Fguides\u002Fcontainer-registries-surround":376},[],[5,24,36,67,108],{"title":6,"path":7,"stem":8,"children":9,"icon":23},"Getting Started","\u002Fen\u002Fdocs\u002Fgetting-started","en\u002F1.docs\u002F1.getting-started\u002F1.index",[10,13,18],{"title":11,"path":7,"stem":8,"icon":12},"Introduction","i-lucide-house",{"title":14,"path":15,"stem":16,"icon":17},"Get Started","\u002Fen\u002Fdocs\u002Fgetting-started\u002Fget-started","en\u002F1.docs\u002F1.getting-started\u002F2.get-started","i-lucide-rocket",{"title":19,"path":20,"stem":21,"icon":22},"How It Works","\u002Fen\u002Fdocs\u002Fgetting-started\u002Fhow-it-works","en\u002F1.docs\u002F1.getting-started\u002F3.how-it-works","i-lucide-lightbulb",false,{"title":25,"path":26,"stem":27,"children":28,"icon":23},"Guides","\u002Fen\u002Fdocs\u002Fguides","en\u002F1.docs\u002F2.guides\u002F1.index",[29,31],{"title":25,"path":26,"stem":27,"icon":30},"i-lucide-book-open",{"title":32,"path":33,"stem":34,"icon":35},"Connect a Container Registry","\u002Fen\u002Fdocs\u002Fguides\u002Fcontainer-registries","en\u002F1.docs\u002F2.guides\u002F2.container-registries","i-lucide-container",{"title":37,"path":38,"stem":39,"children":40,"icon":23},"App Services","\u002Fen\u002Fdocs\u002Fapp-services","en\u002F1.docs\u002F3.app-services\u002F1.index",[41,42,47,52,57,62],{"title":37,"path":38,"stem":39,"icon":17},{"title":43,"path":44,"stem":45,"icon":46},"Build Settings","\u002Fen\u002Fdocs\u002Fapp-services\u002Fbuild-settings","en\u002F1.docs\u002F3.app-services\u002F2.build-settings","i-lucide-settings",{"title":48,"path":49,"stem":50,"icon":51},"Env Variables","\u002Fen\u002Fdocs\u002Fapp-services\u002Fenvironment-variables","en\u002F1.docs\u002F3.app-services\u002F3.environment-variables","i-lucide-key",{"title":53,"path":54,"stem":55,"icon":56},"Custom Domains","\u002Fen\u002Fdocs\u002Fapp-services\u002Fcustom-domains","en\u002F1.docs\u002F3.app-services\u002F4.custom-domains","i-lucide-globe",{"title":58,"path":59,"stem":60,"icon":61},"Health Checks","\u002Fen\u002Fdocs\u002Fapp-services\u002Fhealth-checks","en\u002F1.docs\u002F3.app-services\u002F5.health-checks","i-lucide-heart-pulse",{"title":63,"path":64,"stem":65,"icon":66},"Autoscaling","\u002Fen\u002Fdocs\u002Fapp-services\u002Fautoscaling","en\u002F1.docs\u002F3.app-services\u002F6.autoscaling","i-lucide-scaling",{"title":68,"path":69,"stem":70,"children":71,"icon":23},"Helm Releases","\u002Fen\u002Fdocs\u002Fhelm-releases","en\u002F1.docs\u002F4.helm-releases\u002F1.index",[72,74,79,84,88,93,98,103],{"title":68,"path":69,"stem":70,"icon":73},"i-lucide-package",{"title":75,"path":76,"stem":77,"icon":78},"Deploy PostgreSQL","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-postgresql","en\u002F1.docs\u002F4.helm-releases\u002F2.deploy-postgresql","i-lucide-database",{"title":80,"path":81,"stem":82,"icon":83},"Deploy Redis","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-redis","en\u002F1.docs\u002F4.helm-releases\u002F3.deploy-redis","i-lucide-zap",{"title":85,"path":86,"stem":87,"icon":83},"Deploy Valkey","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-valkey","en\u002F1.docs\u002F4.helm-releases\u002F3.deploy-valkey",{"title":89,"path":90,"stem":91,"icon":92},"Deploy n8n","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-n8n","en\u002F1.docs\u002F4.helm-releases\u002F4.deploy-n8n","i-lucide-workflow",{"title":94,"path":95,"stem":96,"icon":97},"Deploy RustFS","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-rustfs","en\u002F1.docs\u002F4.helm-releases\u002F5.deploy-rustfs","i-lucide-hard-drive",{"title":99,"path":100,"stem":101,"icon":102},"Deploy OpenSearch","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-opensearch","en\u002F1.docs\u002F4.helm-releases\u002F6.deploy-opensearch","i-lucide-search",{"title":104,"path":105,"stem":106,"icon":107},"Deploy Keycloak","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-keycloak","en\u002F1.docs\u002F4.helm-releases\u002F7.deploy-keycloak","i-lucide-shield-check",{"title":109,"path":110,"stem":111,"children":112,"icon":23},"Glossary","\u002Fen\u002Fdocs\u002Fglossary","en\u002F1.docs\u002F5.glossary\u002F1.index",[113],{"title":109,"path":110,"stem":111,"icon":114},"i-lucide-book-a",{"id":116,"title":32,"body":117,"description":369,"extension":370,"lastUpdated":371,"meta":372,"navigation":373,"path":33,"seo":374,"stem":34,"__hash__":375},"docs\u002Fen\u002F1.docs\u002F2.guides\u002F2.container-registries.md",{"type":118,"value":119,"toc":357},"minimark",[120,124,129,132,149,160,163,167,176,180,185,188,202,209,216,224,228,238,244,247,311,324,328,334,338],[121,122,123],"p",{},"Container registries are external Docker registries that you connect to lowcloud for building and deploying your apps. They serve as the central storage for your container images.",[125,126,128],"h2",{"id":127},"how-container-registries-work-in-lowcloud","How Container Registries Work in lowcloud",[121,130,131],{},"Container registries serve two purposes in lowcloud:",[133,134,135,143],"ol",{},[136,137,138,142],"li",{},[139,140,141],"strong",{},"Build"," – Your app is built inside the cluster. The resulting container image is then pushed to the connected registry.",[136,144,145,148],{},[139,146,147],{},"Deploy"," – During deployment, the Kubernetes deployment pulls the image from the registry and starts your app.",[150,151,156],"pre",{"className":152,"code":154,"language":155},[153],"language-text","Code Push → Build in Cluster → Image Push to Registry → Deploy from Registry\n","text",[157,158,154],"code",{"__ignoreMap":159},"",[121,161,162],{},"You can use any Docker-compatible registry – e.g. GitHub Container Registry (ghcr.io), Docker Hub, GitLab Container Registry, or a self-hosted registry.",[125,164,166],{"id":165},"prerequisites","Prerequisites",[168,169,170,173],"ul",{},[136,171,172],{},"Access to the lowcloud dashboard",[136,174,175],{},"An external container registry with valid credentials",[125,177,179],{"id":178},"example-connect-github-container-registry-ghcrio","Example: Connect GitHub Container Registry (ghcr.io)",[181,182,184],"h3",{"id":183},"_1-create-a-github-personal-access-token","1. Create a GitHub Personal Access Token",[121,186,187],{},"You need a GitHub Personal Access Token (classic) with the following permissions:",[168,189,190,196],{},[136,191,192,195],{},[157,193,194],{},"read:packages"," – Pull images from the registry",[136,197,198,201],{},[157,199,200],{},"write:packages"," – Push images to the registry",[121,203,204,205,208],{},"Create the token under ",[139,206,207],{},"GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic)",".",[121,210,211],{},[212,213],"img",{"alt":214,"src":215},"Create GitHub Personal Access Token","\u002Fimages\u002Fdocs\u002Fgithub-create-repository-token.png",[217,218,221],"callout",{"color":219,"icon":220},"warning","i-lucide-triangle-alert",[121,222,223],{},"Copy the token immediately after creation – GitHub only shows it once.",[181,225,227],{"id":226},"_2-add-the-container-registry-in-lowcloud","2. Add the Container Registry in lowcloud",[121,229,230,231,234,235,208],{},"Navigate to ",[139,232,233],{},"Settings → Container Registries"," in the lowcloud dashboard and click ",[139,236,237],{},"Add New",[121,239,240],{},[212,241],{"alt":242,"src":243},"Add Container Registry Dialog","\u002Fimages\u002Fdocs\u002Facc-container-registry.png",[121,245,246],{},"Enter the following details:",[248,249,250,263],"table",{},[251,252,253],"thead",{},[254,255,256,260],"tr",{},[257,258,259],"th",{},"Field",[257,261,262],{},"Value",[264,265,266,277,287,295,303],"tbody",{},[254,267,268,272],{},[269,270,271],"td",{},"Name",[269,273,274],{},[157,275,276],{},"Github Container Registry",[254,278,279,282],{},[269,280,281],{},"Registry URL",[269,283,284],{},[157,285,286],{},"ghcr.io",[254,288,289,292],{},[269,290,291],{},"Username",[269,293,294],{},"Your GitHub username",[254,296,297,300],{},[269,298,299],{},"Password \u002F Token",[269,301,302],{},"Your GitHub Personal Access Token",[254,304,305,308],{},[269,306,307],{},"Image Prefix (optional)",[269,309,310],{},"Your GitHub organization or username",[312,313,314],"blockquote",{},[121,315,316,319,320,323],{},[139,317,318],{},"Note:"," The ",[139,321,322],{},"Image Prefix"," field defines the namespace for your images (e.g. your organization). If left empty, it falls back to your username.",[181,325,327],{"id":326},"_3-save-the-registry","3. Save the Registry",[121,329,330,331,333],{},"Click ",[139,332,237],{},". The registry is now connected and available for builds and deployments.",[125,335,337],{"id":336},"summary","Summary",[168,339,340,343,354],{},[136,341,342],{},"Container registries are external Docker registries for your container images",[136,344,345,346,349,350,353],{},"lowcloud uses them to ",[139,347,348],{},"push"," (after build) and ",[139,351,352],{},"pull"," (during deploy) images",[136,355,356],{},"You can connect any Docker-compatible registry",{"title":159,"searchDepth":358,"depth":358,"links":359},2,[360,361,362,368],{"id":127,"depth":358,"text":128},{"id":165,"depth":358,"text":166},{"id":178,"depth":358,"text":179,"children":363},[364,366,367],{"id":183,"depth":365,"text":184},3,{"id":226,"depth":365,"text":227},{"id":326,"depth":365,"text":327},{"id":336,"depth":358,"text":337},"Learn how to connect an external container registry to lowcloud for building and deploying your apps.","md","2026-03-16",{},{"icon":35},{"title":32,"description":369},"GAQNNfQcfwcx5n29BB4HcyvIdz37jMwQQ3bXlACldRc",[377,379],{"title":25,"path":26,"stem":27,"description":378,"icon":30,"children":-1},"Step-by-step tutorials for databases, services, and configurations on lowcloud.",{"title":37,"path":38,"stem":39,"description":380,"icon":17,"children":-1},"Learn what App Services are and how to deploy your applications on your Kubernetes cluster with lowcloud.",1776519811261]