[{"data":1,"prerenderedAt":1498},["ShallowReactive",2],{"navigation":3,"docs-navigation-en":294,"\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-keycloak":324,"\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-keycloak-surround":1493},[4,8,12,16,20,24,28,32,36,40,44,48,52,56,60,64,68,72,76,80,84,88,92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,207,219,250,287],{"title":5,"path":6,"stem":7},"Build and Deploy a Modern Website in 5 Minutes","\u002Fen\u002Fblog\u002Fbuild-with-loveable","en\u002F3.blog\u002F1.build-with-loveable",{"title":9,"path":10,"stem":11},"The Vercel Alternative for the German Mittelstand: Sovereign Hosting on Hetzner with lowcloud","\u002Fen\u002Fblog\u002Fdigital-sovereignty-lowcloud-vs-vercel-b2b","en\u002F3.blog\u002F10.digital-sovereignty-lowcloud-vs-vercel-b2b",{"title":13,"path":14,"stem":15},"Cloud Sovereignty Framework: How the EU Is Finally Making Cloud Sovereignty Measurable","\u002Fen\u002Fblog\u002Fcloud-sovereignty-framework","en\u002F3.blog\u002F12.cloud-sovereignty-framework",{"title":17,"path":18,"stem":19},"Avoiding Cloud Vendor Lock-in: What Real Sovereignty Means Technically","\u002Fen\u002Fblog\u002Fcloud-vendor-lock-in","en\u002F3.blog\u002F13.cloud-vendor-lock-in",{"title":21,"path":22,"stem":23},"Digital Sovereignty with Kubernetes: When Is Open Source Truly Sovereign?","\u002Fen\u002Fblog\u002Fkubernetes-digital-sovereignty","en\u002F3.blog\u002F14.kubernetes-digital-sovereignty",{"title":25,"path":26,"stem":27},"What Is DevOps as a Service and When Does It Actually Make Sense?","\u002Fen\u002Fblog\u002Fdevops-as-a-service","en\u002F3.blog\u002F15.devops-as-a-service",{"title":29,"path":30,"stem":31},"Cloud Sovereignty Governance: Why This Topic Belongs in the Boardroom, Not the Server Room","\u002Fen\u002Fblog\u002Fcloud-sovereignty-governance","en\u002F3.blog\u002F16.cloud-sovereignty-governance",{"title":33,"path":34,"stem":35},"PaaS vs. DaaS: What","\u002Fen\u002Fblog\u002Fpaas-vs-daas","en\u002F3.blog\u002F17.paas-vs-daas",{"title":37,"path":38,"stem":39},"Sovereign Cloud: Can SaaS Really Maintain Control Over Your Data?","\u002Fen\u002Fblog\u002Fsovereign-cloud-saas-data-control","en\u002F3.blog\u002F18.sovereign-cloud-saas-data-control",{"title":41,"path":42,"stem":43},"DevOps vs. DevOps as a Service – Which One Fits Your Team?","\u002Fen\u002Fblog\u002Fdevops-vs-devops-as-a-service","en\u002F3.blog\u002F19.devops-vs-devops-as-a-service",{"title":45,"path":46,"stem":47},"Docker Fundamentals -  Understanding Container Virtualization","\u002Fen\u002Fblog\u002Fhow-docker-works","en\u002F3.blog\u002F2.how-docker-works",{"title":49,"path":50,"stem":51},"The 7 Biggest DevOps Problems in SMBs – And How to Fix Them","\u002Fen\u002Fblog\u002Fdevops-problems-smb","en\u002F3.blog\u002F20.devops-problems-smb",{"title":53,"path":54,"stem":55},"PostgreSQL Helm Chart: How to Deploy Postgres on Kubernetes","\u002Fen\u002Fblog\u002Fpostgresql-helm-chart-kubernetes","en\u002F3.blog\u002F21.postgresql-helm-chart-kubernetes",{"title":57,"path":58,"stem":59},"Platform Engineering vs. DevOps – What","\u002Fen\u002Fblog\u002Fplatform-engineering-vs-devops","en\u002F3.blog\u002F22.platform-engineering-vs-devops",{"title":61,"path":62,"stem":63},"Cloud Act vs. GDPR: The Risk for EU Businesses","\u002Fen\u002Fblog\u002Fcloud-act-vs-gdpr","en\u002F3.blog\u002F23.cloud-act-vs-gdpr",{"title":65,"path":66,"stem":67},"Cut IT Costs with Automation: The Biggest Lever","\u002Fen\u002Fblog\u002Freduce-it-costs-automation","en\u002F3.blog\u002F24.reduce-it-costs-automation",{"title":69,"path":70,"stem":71},"NIS2 Compliance for DevOps Teams: What You Need to Do","\u002Fen\u002Fblog\u002Fnis2-compliance-devops","en\u002F3.blog\u002F25.nis2-compliance-devops",{"title":73,"path":74,"stem":75},"Self-Hosted EU Alternatives: Host LibreOffice & More","\u002Fen\u002Fblog\u002Fself-hosted-eu-alternatives","en\u002F3.blog\u002F26.self-hosted-eu-alternatives",{"title":77,"path":78,"stem":79},"DORA Compliance for DevOps: What the EU Resilience Act Means","\u002Fen\u002Fblog\u002Fdora-compliance-devops","en\u002F3.blog\u002F27.dora-compliance-devops",{"title":81,"path":82,"stem":83},"Cloud TCO: Hidden Costs AWS, Azure & GCP Don't Show You","\u002Fen\u002Fblog\u002Fcloud-tco-hidden-costs","en\u002F3.blog\u002F28.cloud-tco-hidden-costs",{"title":85,"path":86,"stem":87},"Data Residency vs. Data Sovereignty: What Really Matters","\u002Fen\u002Fblog\u002Fdata-residency-vs-data-sovereignty","en\u002F3.blog\u002F29.data-residency-vs-data-sovereignty",{"title":89,"path":90,"stem":91},"Self-Host n8n on Hetzner: Complete Docker Setup Guide","\u002Fen\u002Fblog\u002Fself-hosted-n8n-on-hetzner","en\u002F3.blog\u002F3.self-hosted-n8n-on-hetzner",{"title":93,"path":94,"stem":95},"Manual Deployments: An Underestimated Risk for SMBs","\u002Fen\u002Fblog\u002Fmanual-deployment-risks","en\u002F3.blog\u002F30.manual-deployment-risks",{"title":97,"path":98,"stem":99},"DevOps Tool Sprawl: How It Happens and How to Stop It","\u002Fen\u002Fblog\u002Fdevops-tool-sprawl","en\u002F3.blog\u002F31.devops-tool-sprawl",{"title":101,"path":102,"stem":103},"Kubernetes Monitoring: Using Logs and Metrics Effectively","\u002Fen\u002Fblog\u002Fkubernetes-monitoring-logs-metrics","en\u002F3.blog\u002F32.kubernetes-monitoring-logs-metrics",{"title":105,"path":106,"stem":107},"OB7 Case Study: Website Deployment Without Infrastructure Overhead","\u002Fen\u002Fblog\u002Fob7-case-study-lowcloud-deployment","en\u002F3.blog\u002F33.ob7-case-study-lowcloud-deployment",{"title":109,"path":110,"stem":111},"DevOps in SMBs: Why Missing Roles Become a Real Risk","\u002Fen\u002Fblog\u002Fmissing-devops-roles-smb","en\u002F3.blog\u002F34.missing-devops-roles-smb",{"title":113,"path":114,"stem":115},"Simplify Kubernetes Configuration: The Path to Human-Readable Cloud","\u002Fen\u002Fblog\u002Fsimplify-kubernetes-configuration","en\u002F3.blog\u002F35.simplify-kubernetes-configuration",{"title":117,"path":118,"stem":119},"Collaborative DevOps: How Modern Teams Build Cloud Apps Together","\u002Fen\u002Fblog\u002Fcollaborative-devops-teams","en\u002F3.blog\u002F36.collaborative-devops-teams",{"title":121,"path":122,"stem":123},"Knowledge Documentation in DevOps Teams: How to Actually Reduce Your Bus Factor","\u002Fen\u002Fblog\u002Fdevops-knowledge-documentation-bus-factor","en\u002F3.blog\u002F37.devops-knowledge-documentation-bus-factor",{"title":125,"path":126,"stem":127},"What Is PaaS? Platform as a Service Explained","\u002Fen\u002Fblog\u002Fwhat-is-paas","en\u002F3.blog\u002F38.what-is-paas",{"title":129,"path":130,"stem":131},"EU AI Act Hosting: What Changes for AI Workload Operators","\u002Fen\u002Fblog\u002Feu-ai-act-hosting","en\u002F3.blog\u002F39.eu-ai-act-hosting",{"title":133,"path":134,"stem":135},"Docker Compose Tutorial: Managing Multi-Container Apps Made Easy","\u002Fen\u002Fblog\u002Fdocker-compose-for-beginners","en\u002F3.blog\u002F4.docker-compose-for-beginners",{"title":137,"path":138,"stem":139},"Full-Stack Developer Reality: What the Title Actually Means","\u002Fen\u002Fblog\u002Ffull-stack-developer-reality","en\u002F3.blog\u002F40.full-stack-developer-reality",{"title":141,"path":142,"stem":143},"Cloud Egress Fees Compared: AWS vs. Azure vs. GCP Pricing","\u002Fen\u002Fblog\u002Fcloud-egress-fees","en\u002F3.blog\u002F41.cloud-egress-fees",{"title":145,"path":146,"stem":147},"Bring Your Own Cloud: What the Model Means and Why It","\u002Fen\u002Fblog\u002Fbring-your-own-cloud","en\u002F3.blog\u002F42.bring-your-own-cloud",{"title":149,"path":150,"stem":151},"Zero-Config Kubernetes: Why Simplicity Wins","\u002Fen\u002Fblog\u002Fzero-config-kubernetes","en\u002F3.blog\u002F43.zero-config-kubernetes",{"title":153,"path":154,"stem":155},"Minimalist Cloud Architecture: Why Less Complexity Means More Stability","\u002Fen\u002Fblog\u002Fminimalist-cloud-architecture","en\u002F3.blog\u002F44.minimalist-cloud-architecture",{"title":157,"path":158,"stem":159},"Software Deployment for SMBs: How Small Teams Ship Faster","\u002Fen\u002Fblog\u002Fsmb-software-deployment","en\u002F3.blog\u002F45.smb-software-deployment",{"title":161,"path":162,"stem":163},"EU Data Act: What Businesses and DevOps Teams Need to Know","\u002Fen\u002Fblog\u002Feu-data-act-business-devops","en\u002F3.blog\u002F46.eu-data-act-business-devops",{"title":165,"path":166,"stem":167},"Data Governance Act: What SMBs and DevOps Teams Need to Know","\u002Fen\u002Fblog\u002Fdata-governance-act-devops-guide","en\u002F3.blog\u002F47.data-governance-act-devops-guide",{"title":169,"path":170,"stem":171},"Self-Host Docmost with Docker Compose and Traefik: Complete Guide","\u002Fen\u002Fblog\u002Fself-host-docmost-with-docker-and-traefik","en\u002F3.blog\u002F5.self-host-docmost-with-docker-and-traefik",{"title":173,"path":174,"stem":175},"What Is Kubernetes? A Practical Guide to Container Orchestration","\u002Fen\u002Fblog\u002Fwhat-is-kubernetes","en\u002F3.blog\u002F6.what-is-kubernetes",{"title":177,"path":178,"stem":179},"The Cloud Illusion: Why a Server Location in Germany Doesn’t Guarantee Digital Sovereignty","\u002Fen\u002Fblog\u002Fcloud-illusion-digital-sovereignty","en\u002F3.blog\u002F7.cloud-illusion-digital-sovereignty",{"title":181,"path":182,"stem":183},"S3-Compatible Object Storage: The Best Solutions at a Glance","\u002Fen\u002Fblog\u002Fs3-compatible-object-storage","en\u002F3.blog\u002F8.s3-compatible-object-storage",{"title":185,"path":186,"stem":187},"Deployment as a Bottleneck: When AI Codes Faster Than You Can Deploy","\u002Fen\u002Fblog\u002Fdeployment-bottleneck","en\u002F3.blog\u002F9.deployment-bottleneck",{"title":189,"path":190,"stem":191,"children":192,"icon":206},"Getting Started","\u002Fen\u002Fdocs\u002Fgetting-started","en\u002F1.docs\u002F1.getting-started\u002F1.index",[193,196,201],{"title":194,"path":190,"stem":191,"icon":195},"Introduction","i-lucide-house",{"title":197,"path":198,"stem":199,"icon":200},"Get Started","\u002Fen\u002Fdocs\u002Fgetting-started\u002Fget-started","en\u002F1.docs\u002F1.getting-started\u002F2.get-started","i-lucide-rocket",{"title":202,"path":203,"stem":204,"icon":205},"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":208,"path":209,"stem":210,"children":211,"icon":206},"Guides","\u002Fen\u002Fdocs\u002Fguides","en\u002F1.docs\u002F2.guides\u002F1.index",[212,214],{"title":208,"path":209,"stem":210,"icon":213},"i-lucide-book-open",{"title":215,"path":216,"stem":217,"icon":218},"Connect a Container Registry","\u002Fen\u002Fdocs\u002Fguides\u002Fcontainer-registries","en\u002F1.docs\u002F2.guides\u002F2.container-registries","i-lucide-container",{"title":220,"path":221,"stem":222,"children":223,"icon":206},"App Services","\u002Fen\u002Fdocs\u002Fapp-services","en\u002F1.docs\u002F3.app-services\u002F1.index",[224,225,230,235,240,245],{"title":220,"path":221,"stem":222,"icon":200},{"title":226,"path":227,"stem":228,"icon":229},"Build Settings","\u002Fen\u002Fdocs\u002Fapp-services\u002Fbuild-settings","en\u002F1.docs\u002F3.app-services\u002F2.build-settings","i-lucide-settings",{"title":231,"path":232,"stem":233,"icon":234},"Env Variables","\u002Fen\u002Fdocs\u002Fapp-services\u002Fenvironment-variables","en\u002F1.docs\u002F3.app-services\u002F3.environment-variables","i-lucide-key",{"title":236,"path":237,"stem":238,"icon":239},"Custom Domains","\u002Fen\u002Fdocs\u002Fapp-services\u002Fcustom-domains","en\u002F1.docs\u002F3.app-services\u002F4.custom-domains","i-lucide-globe",{"title":241,"path":242,"stem":243,"icon":244},"Health Checks","\u002Fen\u002Fdocs\u002Fapp-services\u002Fhealth-checks","en\u002F1.docs\u002F3.app-services\u002F5.health-checks","i-lucide-heart-pulse",{"title":246,"path":247,"stem":248,"icon":249},"Autoscaling","\u002Fen\u002Fdocs\u002Fapp-services\u002Fautoscaling","en\u002F1.docs\u002F3.app-services\u002F6.autoscaling","i-lucide-scaling",{"title":251,"path":252,"stem":253,"children":254,"icon":206},"Helm Releases","\u002Fen\u002Fdocs\u002Fhelm-releases","en\u002F1.docs\u002F4.helm-releases\u002F1.index",[255,257,262,267,272,277,282],{"title":251,"path":252,"stem":253,"icon":256},"i-lucide-package",{"title":258,"path":259,"stem":260,"icon":261},"Deploy PostgreSQL","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-postgresql","en\u002F1.docs\u002F4.helm-releases\u002F2.deploy-postgresql","i-lucide-database",{"title":263,"path":264,"stem":265,"icon":266},"Deploy Redis","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-redis","en\u002F1.docs\u002F4.helm-releases\u002F3.deploy-redis","i-lucide-zap",{"title":268,"path":269,"stem":270,"icon":271},"Deploy n8n","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-n8n","en\u002F1.docs\u002F4.helm-releases\u002F4.deploy-n8n","i-lucide-workflow",{"title":273,"path":274,"stem":275,"icon":276},"Deploy RustFS","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-rustfs","en\u002F1.docs\u002F4.helm-releases\u002F5.deploy-rustfs","i-lucide-hard-drive",{"title":278,"path":279,"stem":280,"icon":281},"Deploy OpenSearch","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-opensearch","en\u002F1.docs\u002F4.helm-releases\u002F6.deploy-opensearch","i-lucide-search",{"title":283,"path":284,"stem":285,"icon":286},"Deploy Keycloak","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-keycloak","en\u002F1.docs\u002F4.helm-releases\u002F7.deploy-keycloak","i-lucide-shield-check",{"title":288,"path":289,"stem":290,"children":291,"icon":206},"Glossary","\u002Fen\u002Fdocs\u002Fglossary","en\u002F1.docs\u002F5.glossary\u002F1.index",[292],{"title":288,"path":289,"stem":290,"icon":293},"i-lucide-book-a",[295,300,304,312,321],{"title":189,"path":190,"stem":191,"children":296,"icon":206},[297,298,299],{"title":194,"path":190,"stem":191,"icon":195},{"title":197,"path":198,"stem":199,"icon":200},{"title":202,"path":203,"stem":204,"icon":205},{"title":208,"path":209,"stem":210,"children":301,"icon":206},[302,303],{"title":208,"path":209,"stem":210,"icon":213},{"title":215,"path":216,"stem":217,"icon":218},{"title":220,"path":221,"stem":222,"children":305,"icon":206},[306,307,308,309,310,311],{"title":220,"path":221,"stem":222,"icon":200},{"title":226,"path":227,"stem":228,"icon":229},{"title":231,"path":232,"stem":233,"icon":234},{"title":236,"path":237,"stem":238,"icon":239},{"title":241,"path":242,"stem":243,"icon":244},{"title":246,"path":247,"stem":248,"icon":249},{"title":251,"path":252,"stem":253,"children":313,"icon":206},[314,315,316,317,318,319,320],{"title":251,"path":252,"stem":253,"icon":256},{"title":258,"path":259,"stem":260,"icon":261},{"title":263,"path":264,"stem":265,"icon":266},{"title":268,"path":269,"stem":270,"icon":271},{"title":273,"path":274,"stem":275,"icon":276},{"title":278,"path":279,"stem":280,"icon":281},{"title":283,"path":284,"stem":285,"icon":286},{"title":288,"path":289,"stem":290,"children":322,"icon":206},[323],{"title":288,"path":289,"stem":290,"icon":293},{"id":325,"title":283,"body":326,"description":1486,"extension":1487,"lastUpdated":1488,"meta":1489,"navigation":1490,"path":284,"seo":1491,"stem":285,"__hash__":1492},"docs\u002Fen\u002F1.docs\u002F4.helm-releases\u002F7.deploy-keycloak.md",{"type":327,"value":328,"toc":1471},"minimark",[329,333,344,356,361,371,375,378,492,504,508,511,693,697,702,713,717,724,728,734,897,901,912,916,919,1284,1288,1291,1322,1329,1333,1336,1429,1440,1444,1467],[330,331,332],"p",{},"Keycloak is an open-source Identity and Access Management solution. With the lowcloud Helm Release, you deploy Keycloak in your Kubernetes cluster – including an embedded PostgreSQL database, Ingress support, and optional Realm import.",[330,334,335,339,340],{},[336,337,338],"strong",{},"Chart Registry:"," ",[341,342,343],"code",{},"oci:\u002F\u002Fregistry-1.docker.io\u002Fcloudpirates\u002Fkeycloak",[330,345,346,347,355],{},"The Helm Release is provided and maintained by ",[348,349,354],"a",{"href":350,"rel":351,"target":353},"https:\u002F\u002Fartifacthub.io\u002Fpackages\u002Fhelm\u002Fcloudpirates-keycloak\u002Fkeycloak",[352],"nofollow","\\_blank","Cloud Pirates",".",[357,358,360],"h2",{"id":359},"prerequisites","Prerequisites",[362,363,364,368],"ul",{},[365,366,367],"li",{},"A lowcloud account with an active cluster",[365,369,370],{},"Access to the lowcloud Dashboard",[357,372,374],{"id":373},"quick-start","Quick Start",[330,376,377],{},"Minimal configuration to get Keycloak up and running:",[379,380,385],"pre",{"className":381,"code":382,"language":383,"meta":384,"style":384},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","keycloak:\n  adminUser: admin\n  adminPassword: your-secure-password\n  hostname: https:\u002F\u002Fauth.example.com\n  proxyHeaders: xforwarded\n\npostgres:\n  enabled: true\n  auth:\n    password: your-db-password\n","yaml","",[341,386,387,400,413,424,435,446,453,461,473,481],{"__ignoreMap":384},[388,389,392,396],"span",{"class":390,"line":391},"line",1,[388,393,395],{"class":394},"swJcz","keycloak",[388,397,399],{"class":398},"sMK4o",":\n",[388,401,403,406,409],{"class":390,"line":402},2,[388,404,405],{"class":394},"  adminUser",[388,407,408],{"class":398},":",[388,410,412],{"class":411},"sfazB"," admin\n",[388,414,416,419,421],{"class":390,"line":415},3,[388,417,418],{"class":394},"  adminPassword",[388,420,408],{"class":398},[388,422,423],{"class":411}," your-secure-password\n",[388,425,427,430,432],{"class":390,"line":426},4,[388,428,429],{"class":394},"  hostname",[388,431,408],{"class":398},[388,433,434],{"class":411}," https:\u002F\u002Fauth.example.com\n",[388,436,438,441,443],{"class":390,"line":437},5,[388,439,440],{"class":394},"  proxyHeaders",[388,442,408],{"class":398},[388,444,445],{"class":411}," xforwarded\n",[388,447,449],{"class":390,"line":448},6,[388,450,452],{"emptyLinePlaceholder":451},true,"\n",[388,454,456,459],{"class":390,"line":455},7,[388,457,458],{"class":394},"postgres",[388,460,399],{"class":398},[388,462,464,467,469],{"class":390,"line":463},8,[388,465,466],{"class":394},"  enabled",[388,468,408],{"class":398},[388,470,472],{"class":471},"sfNiH"," true\n",[388,474,476,479],{"class":390,"line":475},9,[388,477,478],{"class":394},"  auth",[388,480,399],{"class":398},[388,482,484,487,489],{"class":390,"line":483},10,[388,485,486],{"class":394},"    password",[388,488,408],{"class":398},[388,490,491],{"class":411}," your-db-password\n",[493,494,497],"callout",{"color":495,"icon":496},"warning","i-lucide-triangle-alert",[330,498,499,500,503],{},"Set ",[341,501,502],{},"keycloak.proxyHeaders: xforwarded"," when running Keycloak behind an nginx Ingress or any other reverse proxy. Without this setting, redirects and token validation will not work correctly.",[357,505,507],{"id":506},"configuration","Configuration",[330,509,510],{},"The most important configuration options at a glance:",[512,513,514,530],"table",{},[515,516,517],"thead",{},[518,519,520,524,527],"tr",{},[521,522,523],"th",{},"Parameter",[521,525,526],{},"Description",[521,528,529],{},"Default",[531,532,533,549,566,578,597,616,630,642,657,672],"tbody",{},[518,534,535,541,544],{},[536,537,538],"td",{},[341,539,540],{},"keycloak.adminUser",[536,542,543],{},"Keycloak admin username",[536,545,546],{},[341,547,548],{},"admin",[518,550,551,556,563],{},[536,552,553],{},[341,554,555],{},"keycloak.adminPassword",[536,557,558,559,562],{},"Admin password (or use ",[341,560,561],{},"existingSecret",")",[536,564,565],{},"—",[518,567,568,573,576],{},[536,569,570],{},[341,571,572],{},"keycloak.hostname",[536,574,575],{},"Public URL of the Keycloak instance",[536,577,565],{},[518,579,580,585,595],{},[536,581,582],{},[341,583,584],{},"keycloak.proxyHeaders",[536,586,587,588,591,592,562],{},"Proxy header mode (",[341,589,590],{},"xforwarded"," or ",[341,593,594],{},"forwarded",[536,596,565],{},[518,598,599,604,611],{},[536,600,601],{},[341,602,603],{},"keycloak.production",[536,605,606,607,610],{},"Production mode (",[341,608,609],{},"start",") or dev mode",[536,612,613],{},[341,614,615],{},"true",[518,617,618,623,626],{},[536,619,620],{},[341,621,622],{},"postgres.enabled",[536,624,625],{},"Enable embedded PostgreSQL",[536,627,628],{},[341,629,615],{},[518,631,632,637,640],{},[536,633,634],{},[341,635,636],{},"postgres.auth.password",[536,638,639],{},"Password for the embedded database",[536,641,565],{},[518,643,644,649,652],{},[536,645,646],{},[341,647,648],{},"ingress.enabled",[536,650,651],{},"Enable Ingress",[536,653,654],{},[341,655,656],{},"false",[518,658,659,664,670],{},[536,660,661],{},[341,662,663],{},"ingress.className",[536,665,666,667,562],{},"Ingress class (e.g. ",[341,668,669],{},"nginx",[536,671,565],{},[518,673,674,679,689],{},[536,675,676],{},[341,677,678],{},"cache.stack",[536,680,681,682,591,685,688],{},"Cache mode (",[341,683,684],{},"local",[341,686,687],{},"ispn"," for multi-replica)",[536,690,691],{},[341,692,684],{},[357,694,696],{"id":695},"step-by-step-guide","Step-by-Step Guide",[698,699,701],"h3",{"id":700},"_1-add-the-service","1. Add the service",[330,703,704,705,708,709,712],{},"In the lowcloud Dashboard, navigate to ",[336,706,707],{},"Add Service"," and select ",[336,710,711],{},"Helm Release",". Search for the Keycloak registry in the popup:",[330,714,715],{},[341,716,343],{},[330,718,719,720,723],{},"Select the desired version. ",[336,721,722],{},"\"latest\""," is a good choice in most cases.",[698,725,727],{"id":726},"_2-configure-values","2. Configure values",[330,729,730,731,733],{},"Give the service a meaningful name (e.g. ",[341,732,395],{},"). Then adjust the values:",[379,735,737],{"className":381,"code":736,"language":383,"meta":384,"style":384},"keycloak:\n  adminUser: admin\n  adminPassword: your-secure-password\n  hostname: https:\u002F\u002Fauth.example.com\n  proxyHeaders: xforwarded\n\npostgres:\n  enabled: true\n  auth:\n    password: your-db-password\n\ningress:\n  enabled: true\n  className: nginx\n  hosts:\n    - host: auth.example.com\n      paths:\n        - path: \u002F\n          pathType: Prefix\n",[341,738,739,745,753,761,769,777,781,787,795,801,809,814,822,831,842,850,864,872,886],{"__ignoreMap":384},[388,740,741,743],{"class":390,"line":391},[388,742,395],{"class":394},[388,744,399],{"class":398},[388,746,747,749,751],{"class":390,"line":402},[388,748,405],{"class":394},[388,750,408],{"class":398},[388,752,412],{"class":411},[388,754,755,757,759],{"class":390,"line":415},[388,756,418],{"class":394},[388,758,408],{"class":398},[388,760,423],{"class":411},[388,762,763,765,767],{"class":390,"line":426},[388,764,429],{"class":394},[388,766,408],{"class":398},[388,768,434],{"class":411},[388,770,771,773,775],{"class":390,"line":437},[388,772,440],{"class":394},[388,774,408],{"class":398},[388,776,445],{"class":411},[388,778,779],{"class":390,"line":448},[388,780,452],{"emptyLinePlaceholder":451},[388,782,783,785],{"class":390,"line":455},[388,784,458],{"class":394},[388,786,399],{"class":398},[388,788,789,791,793],{"class":390,"line":463},[388,790,466],{"class":394},[388,792,408],{"class":398},[388,794,472],{"class":471},[388,796,797,799],{"class":390,"line":475},[388,798,478],{"class":394},[388,800,399],{"class":398},[388,802,803,805,807],{"class":390,"line":483},[388,804,486],{"class":394},[388,806,408],{"class":398},[388,808,491],{"class":411},[388,810,812],{"class":390,"line":811},11,[388,813,452],{"emptyLinePlaceholder":451},[388,815,817,820],{"class":390,"line":816},12,[388,818,819],{"class":394},"ingress",[388,821,399],{"class":398},[388,823,825,827,829],{"class":390,"line":824},13,[388,826,466],{"class":394},[388,828,408],{"class":398},[388,830,472],{"class":471},[388,832,834,837,839],{"class":390,"line":833},14,[388,835,836],{"class":394},"  className",[388,838,408],{"class":398},[388,840,841],{"class":411}," nginx\n",[388,843,845,848],{"class":390,"line":844},15,[388,846,847],{"class":394},"  hosts",[388,849,399],{"class":398},[388,851,853,856,859,861],{"class":390,"line":852},16,[388,854,855],{"class":398},"    -",[388,857,858],{"class":394}," host",[388,860,408],{"class":398},[388,862,863],{"class":411}," auth.example.com\n",[388,865,867,870],{"class":390,"line":866},17,[388,868,869],{"class":394},"      paths",[388,871,399],{"class":398},[388,873,875,878,881,883],{"class":390,"line":874},18,[388,876,877],{"class":398},"        -",[388,879,880],{"class":394}," path",[388,882,408],{"class":398},[388,884,885],{"class":411}," \u002F\n",[388,887,889,892,894],{"class":390,"line":888},19,[388,890,891],{"class":394},"          pathType",[388,893,408],{"class":398},[388,895,896],{"class":411}," Prefix\n",[698,898,900],{"id":899},"_3-start-deployment","3. Start deployment",[330,902,903,904,907,908,911],{},"Open the created service and click ",[336,905,906],{},"Deploy",". Wait until the label in the Dashboard switches to ",[336,909,910],{},"\"Deployed\"",". Keycloak will then be accessible at the configured hostname URL.",[357,913,915],{"id":914},"advanced-values","Advanced Values",[330,917,918],{},"For production use, a complete configuration with persistence, resource limits, and TLS is recommended:",[379,920,922],{"className":381,"code":921,"language":383,"meta":384,"style":384},"keycloak:\n  adminUser: admin\n  adminPassword: your-secure-password\n  hostname: https:\u002F\u002Fauth.example.com\n  proxyHeaders: xforwarded\n  production: true\n\npostgres:\n  enabled: true\n  auth:\n    password: your-db-password\n  primary:\n    persistence:\n      enabled: true\n      size: 10Gi\n    resources:\n      requests:\n        cpu: 250m\n        memory: 256Mi\n      limits:\n        cpu: 500m\n        memory: 512Mi\n\ningress:\n  enabled: true\n  className: nginx\n  hosts:\n    - host: auth.example.com\n      paths:\n        - path: \u002F\n          pathType: Prefix\n  tls:\n    - secretName: auth-tls\n      hosts:\n        - auth.example.com\n\nresources:\n  requests:\n    cpu: 500m\n    memory: 512Mi\n  limits:\n    cpu: '2'\n    memory: 1Gi\n",[341,923,924,930,938,946,954,962,971,975,981,989,995,1003,1010,1017,1026,1036,1043,1050,1060,1070,1078,1088,1098,1103,1110,1119,1128,1135,1146,1153,1164,1173,1181,1194,1202,1209,1214,1222,1230,1240,1250,1258,1274],{"__ignoreMap":384},[388,925,926,928],{"class":390,"line":391},[388,927,395],{"class":394},[388,929,399],{"class":398},[388,931,932,934,936],{"class":390,"line":402},[388,933,405],{"class":394},[388,935,408],{"class":398},[388,937,412],{"class":411},[388,939,940,942,944],{"class":390,"line":415},[388,941,418],{"class":394},[388,943,408],{"class":398},[388,945,423],{"class":411},[388,947,948,950,952],{"class":390,"line":426},[388,949,429],{"class":394},[388,951,408],{"class":398},[388,953,434],{"class":411},[388,955,956,958,960],{"class":390,"line":437},[388,957,440],{"class":394},[388,959,408],{"class":398},[388,961,445],{"class":411},[388,963,964,967,969],{"class":390,"line":448},[388,965,966],{"class":394},"  production",[388,968,408],{"class":398},[388,970,472],{"class":471},[388,972,973],{"class":390,"line":455},[388,974,452],{"emptyLinePlaceholder":451},[388,976,977,979],{"class":390,"line":463},[388,978,458],{"class":394},[388,980,399],{"class":398},[388,982,983,985,987],{"class":390,"line":475},[388,984,466],{"class":394},[388,986,408],{"class":398},[388,988,472],{"class":471},[388,990,991,993],{"class":390,"line":483},[388,992,478],{"class":394},[388,994,399],{"class":398},[388,996,997,999,1001],{"class":390,"line":811},[388,998,486],{"class":394},[388,1000,408],{"class":398},[388,1002,491],{"class":411},[388,1004,1005,1008],{"class":390,"line":816},[388,1006,1007],{"class":394},"  primary",[388,1009,399],{"class":398},[388,1011,1012,1015],{"class":390,"line":824},[388,1013,1014],{"class":394},"    persistence",[388,1016,399],{"class":398},[388,1018,1019,1022,1024],{"class":390,"line":833},[388,1020,1021],{"class":394},"      enabled",[388,1023,408],{"class":398},[388,1025,472],{"class":471},[388,1027,1028,1031,1033],{"class":390,"line":844},[388,1029,1030],{"class":394},"      size",[388,1032,408],{"class":398},[388,1034,1035],{"class":411}," 10Gi\n",[388,1037,1038,1041],{"class":390,"line":852},[388,1039,1040],{"class":394},"    resources",[388,1042,399],{"class":398},[388,1044,1045,1048],{"class":390,"line":866},[388,1046,1047],{"class":394},"      requests",[388,1049,399],{"class":398},[388,1051,1052,1055,1057],{"class":390,"line":874},[388,1053,1054],{"class":394},"        cpu",[388,1056,408],{"class":398},[388,1058,1059],{"class":411}," 250m\n",[388,1061,1062,1065,1067],{"class":390,"line":888},[388,1063,1064],{"class":394},"        memory",[388,1066,408],{"class":398},[388,1068,1069],{"class":411}," 256Mi\n",[388,1071,1073,1076],{"class":390,"line":1072},20,[388,1074,1075],{"class":394},"      limits",[388,1077,399],{"class":398},[388,1079,1081,1083,1085],{"class":390,"line":1080},21,[388,1082,1054],{"class":394},[388,1084,408],{"class":398},[388,1086,1087],{"class":411}," 500m\n",[388,1089,1091,1093,1095],{"class":390,"line":1090},22,[388,1092,1064],{"class":394},[388,1094,408],{"class":398},[388,1096,1097],{"class":411}," 512Mi\n",[388,1099,1101],{"class":390,"line":1100},23,[388,1102,452],{"emptyLinePlaceholder":451},[388,1104,1106,1108],{"class":390,"line":1105},24,[388,1107,819],{"class":394},[388,1109,399],{"class":398},[388,1111,1113,1115,1117],{"class":390,"line":1112},25,[388,1114,466],{"class":394},[388,1116,408],{"class":398},[388,1118,472],{"class":471},[388,1120,1122,1124,1126],{"class":390,"line":1121},26,[388,1123,836],{"class":394},[388,1125,408],{"class":398},[388,1127,841],{"class":411},[388,1129,1131,1133],{"class":390,"line":1130},27,[388,1132,847],{"class":394},[388,1134,399],{"class":398},[388,1136,1138,1140,1142,1144],{"class":390,"line":1137},28,[388,1139,855],{"class":398},[388,1141,858],{"class":394},[388,1143,408],{"class":398},[388,1145,863],{"class":411},[388,1147,1149,1151],{"class":390,"line":1148},29,[388,1150,869],{"class":394},[388,1152,399],{"class":398},[388,1154,1156,1158,1160,1162],{"class":390,"line":1155},30,[388,1157,877],{"class":398},[388,1159,880],{"class":394},[388,1161,408],{"class":398},[388,1163,885],{"class":411},[388,1165,1167,1169,1171],{"class":390,"line":1166},31,[388,1168,891],{"class":394},[388,1170,408],{"class":398},[388,1172,896],{"class":411},[388,1174,1176,1179],{"class":390,"line":1175},32,[388,1177,1178],{"class":394},"  tls",[388,1180,399],{"class":398},[388,1182,1184,1186,1189,1191],{"class":390,"line":1183},33,[388,1185,855],{"class":398},[388,1187,1188],{"class":394}," secretName",[388,1190,408],{"class":398},[388,1192,1193],{"class":411}," auth-tls\n",[388,1195,1197,1200],{"class":390,"line":1196},34,[388,1198,1199],{"class":394},"      hosts",[388,1201,399],{"class":398},[388,1203,1205,1207],{"class":390,"line":1204},35,[388,1206,877],{"class":398},[388,1208,863],{"class":411},[388,1210,1212],{"class":390,"line":1211},36,[388,1213,452],{"emptyLinePlaceholder":451},[388,1215,1217,1220],{"class":390,"line":1216},37,[388,1218,1219],{"class":394},"resources",[388,1221,399],{"class":398},[388,1223,1225,1228],{"class":390,"line":1224},38,[388,1226,1227],{"class":394},"  requests",[388,1229,399],{"class":398},[388,1231,1233,1236,1238],{"class":390,"line":1232},39,[388,1234,1235],{"class":394},"    cpu",[388,1237,408],{"class":398},[388,1239,1087],{"class":411},[388,1241,1243,1246,1248],{"class":390,"line":1242},40,[388,1244,1245],{"class":394},"    memory",[388,1247,408],{"class":398},[388,1249,1097],{"class":411},[388,1251,1253,1256],{"class":390,"line":1252},41,[388,1254,1255],{"class":394},"  limits",[388,1257,399],{"class":398},[388,1259,1261,1263,1265,1268,1271],{"class":390,"line":1260},42,[388,1262,1235],{"class":394},[388,1264,408],{"class":398},[388,1266,1267],{"class":398}," '",[388,1269,1270],{"class":411},"2",[388,1272,1273],{"class":398},"'\n",[388,1275,1277,1279,1281],{"class":390,"line":1276},43,[388,1278,1245],{"class":394},[388,1280,408],{"class":398},[388,1282,1283],{"class":411}," 1Gi\n",[698,1285,1287],{"id":1286},"realm-import","Realm Import",[330,1289,1290],{},"You can automatically import a realm on startup. Store your realm configuration as a Kubernetes Secret and reference it:",[379,1292,1294],{"className":381,"code":1293,"language":383,"meta":384,"style":384},"realm:\n  import: true\n  existingSecret: my-realm-secret\n",[341,1295,1296,1303,1312],{"__ignoreMap":384},[388,1297,1298,1301],{"class":390,"line":391},[388,1299,1300],{"class":394},"realm",[388,1302,399],{"class":398},[388,1304,1305,1308,1310],{"class":390,"line":402},[388,1306,1307],{"class":394},"  import",[388,1309,408],{"class":398},[388,1311,472],{"class":471},[388,1313,1314,1317,1319],{"class":390,"line":415},[388,1315,1316],{"class":394},"  existingSecret",[388,1318,408],{"class":398},[388,1320,1321],{"class":411}," my-realm-secret\n",[330,1323,1324,1325,1328],{},"The Secret must contain a key ",[341,1326,1327],{},"realm.json"," with the realm JSON content.",[698,1330,1332],{"id":1331},"external-database","External Database",[330,1334,1335],{},"If you want to use an existing PostgreSQL instance, disable the embedded database and configure the external connection:",[379,1337,1339],{"className":381,"code":1338,"language":383,"meta":384,"style":384},"postgres:\n  enabled: false\n\ndatabase:\n  type: postgres\n  host: my-postgres-service\n  port: '5432'\n  name: keycloak\n  username: keycloak\n  password: your-db-password\n",[341,1340,1341,1347,1356,1360,1367,1377,1387,1401,1411,1420],{"__ignoreMap":384},[388,1342,1343,1345],{"class":390,"line":391},[388,1344,458],{"class":394},[388,1346,399],{"class":398},[388,1348,1349,1351,1353],{"class":390,"line":402},[388,1350,466],{"class":394},[388,1352,408],{"class":398},[388,1354,1355],{"class":471}," false\n",[388,1357,1358],{"class":390,"line":415},[388,1359,452],{"emptyLinePlaceholder":451},[388,1361,1362,1365],{"class":390,"line":426},[388,1363,1364],{"class":394},"database",[388,1366,399],{"class":398},[388,1368,1369,1372,1374],{"class":390,"line":437},[388,1370,1371],{"class":394},"  type",[388,1373,408],{"class":398},[388,1375,1376],{"class":411}," postgres\n",[388,1378,1379,1382,1384],{"class":390,"line":448},[388,1380,1381],{"class":394},"  host",[388,1383,408],{"class":398},[388,1385,1386],{"class":411}," my-postgres-service\n",[388,1388,1389,1392,1394,1396,1399],{"class":390,"line":455},[388,1390,1391],{"class":394},"  port",[388,1393,408],{"class":398},[388,1395,1267],{"class":398},[388,1397,1398],{"class":411},"5432",[388,1400,1273],{"class":398},[388,1402,1403,1406,1408],{"class":390,"line":463},[388,1404,1405],{"class":394},"  name",[388,1407,408],{"class":398},[388,1409,1410],{"class":411}," keycloak\n",[388,1412,1413,1416,1418],{"class":390,"line":475},[388,1414,1415],{"class":394},"  username",[388,1417,408],{"class":398},[388,1419,1410],{"class":411},[388,1421,1422,1425,1427],{"class":390,"line":483},[388,1423,1424],{"class":394},"  password",[388,1426,408],{"class":398},[388,1428,491],{"class":411},[493,1430,1433],{"color":1431,"icon":1432},"info","i-lucide-link",[330,1434,1435,1436,1439],{},"If you are using an external PostgreSQL instance from another Helm Release, connect the two services via ",[336,1437,1438],{},"Helm Release Dependencies"," in the lowcloud Dashboard.",[357,1441,1443],{"id":1442},"further-reading","Further Reading",[362,1445,1446,1453,1460],{},[365,1447,1448],{},[348,1449,1452],{"href":1450,"rel":1451,"target":353},"https:\u002F\u002Fartifacthub.io\u002Fpackages\u002Fhelm\u002Fcloudpirates\u002Fkeycloak",[352],"Keycloak Chart on ArtifactHub",[365,1454,1455],{},[348,1456,1459],{"href":1457,"rel":1458,"target":353},"https:\u002F\u002Fgithub.com\u002FCloudPirates-io\u002Fhelm-charts\u002Ftree\u002Fmain\u002Fcharts\u002Fkeycloak",[352],"Keycloak Helm Chart on GitHub",[365,1461,1462],{},[348,1463,1466],{"href":1464,"rel":1465,"target":353},"https:\u002F\u002Fwww.keycloak.org\u002Fdocumentation",[352],"Keycloak Documentation",[1468,1469,1470],"style",{},"html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}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);}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);}",{"title":384,"searchDepth":402,"depth":402,"links":1472},[1473,1474,1475,1476,1481,1485],{"id":359,"depth":402,"text":360},{"id":373,"depth":402,"text":374},{"id":506,"depth":402,"text":507},{"id":695,"depth":402,"text":696,"children":1477},[1478,1479,1480],{"id":700,"depth":415,"text":701},{"id":726,"depth":415,"text":727},{"id":899,"depth":415,"text":900},{"id":914,"depth":402,"text":915,"children":1482},[1483,1484],{"id":1286,"depth":415,"text":1287},{"id":1331,"depth":415,"text":1332},{"id":1442,"depth":402,"text":1443},"Learn how to deploy Keycloak as a Helm Release via lowcloud – including database setup, Ingress configuration, and Realm import.","md","2026-03-27",{},{"icon":286},{"title":283,"description":1486},"9ObmBn2g66rrd97nIpLjzW5p-G1GVsKG6CtYHTW5HDo",[1494,1496],{"title":278,"path":279,"stem":280,"description":1495,"icon":281,"children":-1},"Learn how to deploy OpenSearch as a search and analytics engine on your Kubernetes cluster using lowcloud.",{"title":288,"path":289,"stem":290,"description":1497,"icon":293,"children":-1},"Key terms from the fields of cloud computing, Kubernetes, and DevOps explained clearly.",1775388357949]