[{"data":1,"prerenderedAt":1541},["ShallowReactive",2],{"docs-en-helm-releases\u002Fdeploy-keycloak":3,"docs-navigation-en":1292,"docs-surround-en-helm-releases\u002Fdeploy-keycloak":1534},{"id":4,"title":5,"body":6,"description":1282,"extension":1283,"lastUpdated":1284,"meta":1285,"navigation":1286,"path":1288,"seo":1289,"stem":1290,"__hash__":1291},"docs\u002Fen\u002F1.docs\u002F4.helm-releases\u002F7.deploy-keycloak.md","Deploy Keycloak",{"type":7,"value":8,"toc":1267},"minimark",[9,13,24,36,41,51,55,58,193,205,209,212,513,517,522,533,537,544,548,554,733,737,748,752,755,1082,1086,1089,1120,1127,1131,1134,1225,1236,1240,1263],[10,11,12],"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.",[10,14,15,19,20],{},[16,17,18],"strong",{},"Chart Registry:"," ",[21,22,23],"code",{},"oci:\u002F\u002Fregistry-1.docker.io\u002Fcloudpirates\u002Fkeycloak",[10,25,26,27,35],{},"The Helm Release is provided and maintained by ",[28,29,34],"a",{"href":30,"rel":31,"target":33},"https:\u002F\u002Fartifacthub.io\u002Fpackages\u002Fhelm\u002Fcloudpirates-keycloak\u002Fkeycloak",[32],"nofollow","\\_blank","Cloud Pirates",".",[37,38,40],"h2",{"id":39},"prerequisites","Prerequisites",[42,43,44,48],"ul",{},[45,46,47],"li",{},"A lowcloud account with an active cluster",[45,49,50],{},"Access to the lowcloud Dashboard",[37,52,54],{"id":53},"quick-start","Quick Start",[10,56,57],{},"Minimal configuration to get Keycloak up and running:",[59,60,65],"pre",{"className":61,"code":62,"language":63,"meta":64,"style":64},"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    database: keycloak\n    username: keycloak\n    password: your-db-password\n","yaml","",[21,66,67,80,93,104,115,126,133,141,153,161,172,182],{"__ignoreMap":64},[68,69,72,76],"span",{"class":70,"line":71},"line",1,[68,73,75],{"class":74},"swJcz","keycloak",[68,77,79],{"class":78},"sMK4o",":\n",[68,81,83,86,89],{"class":70,"line":82},2,[68,84,85],{"class":74},"  adminUser",[68,87,88],{"class":78},":",[68,90,92],{"class":91},"sfazB"," admin\n",[68,94,96,99,101],{"class":70,"line":95},3,[68,97,98],{"class":74},"  adminPassword",[68,100,88],{"class":78},[68,102,103],{"class":91}," your-secure-password\n",[68,105,107,110,112],{"class":70,"line":106},4,[68,108,109],{"class":74},"  hostname",[68,111,88],{"class":78},[68,113,114],{"class":91}," https:\u002F\u002Fauth.example.com\n",[68,116,118,121,123],{"class":70,"line":117},5,[68,119,120],{"class":74},"  proxyHeaders",[68,122,88],{"class":78},[68,124,125],{"class":91}," xforwarded\n",[68,127,129],{"class":70,"line":128},6,[68,130,132],{"emptyLinePlaceholder":131},true,"\n",[68,134,136,139],{"class":70,"line":135},7,[68,137,138],{"class":74},"postgres",[68,140,79],{"class":78},[68,142,144,147,149],{"class":70,"line":143},8,[68,145,146],{"class":74},"  enabled",[68,148,88],{"class":78},[68,150,152],{"class":151},"sfNiH"," true\n",[68,154,156,159],{"class":70,"line":155},9,[68,157,158],{"class":74},"  auth",[68,160,79],{"class":78},[68,162,164,167,169],{"class":70,"line":163},10,[68,165,166],{"class":74},"    database",[68,168,88],{"class":78},[68,170,171],{"class":91}," keycloak\n",[68,173,175,178,180],{"class":70,"line":174},11,[68,176,177],{"class":74},"    username",[68,179,88],{"class":78},[68,181,171],{"class":91},[68,183,185,188,190],{"class":70,"line":184},12,[68,186,187],{"class":74},"    password",[68,189,88],{"class":78},[68,191,192],{"class":91}," your-db-password\n",[194,195,198],"callout",{"color":196,"icon":197},"warning","i-lucide-triangle-alert",[10,199,200,201,204],{},"Set ",[21,202,203],{},"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.",[37,206,208],{"id":207},"configuration","Configuration",[10,210,211],{},"The most important configuration options at a glance:",[213,214,215,231],"table",{},[216,217,218],"thead",{},[219,220,221,225,228],"tr",{},[222,223,224],"th",{},"Parameter",[222,226,227],{},"Description",[222,229,230],{},"Default",[232,233,234,250,265,282,294,315,334,348,362,376,390,402,417,432,447,462,477,492],"tbody",{},[219,235,236,242,245],{},[237,238,239],"td",{},[21,240,241],{},"image.tag",[237,243,244],{},"Keycloak image version",[237,246,247],{},[21,248,249],{},"26.5.6",[219,251,252,257,260],{},[237,253,254],{},[21,255,256],{},"keycloak.adminUser",[237,258,259],{},"Keycloak admin username",[237,261,262],{},[21,263,264],{},"admin",[219,266,267,272,279],{},[237,268,269],{},[21,270,271],{},"keycloak.adminPassword",[237,273,274,275,278],{},"Admin password (or use ",[21,276,277],{},"existingSecret",")",[237,280,281],{},"—",[219,283,284,289,292],{},[237,285,286],{},[21,287,288],{},"keycloak.hostname",[237,290,291],{},"Public URL of the Keycloak instance",[237,293,281],{},[219,295,296,301,311],{},[237,297,298],{},[21,299,300],{},"keycloak.proxyHeaders",[237,302,303,304,307,308,278],{},"Proxy header mode (",[21,305,306],{},"xforwarded"," or ",[21,309,310],{},"forwarded",[237,312,313],{},[21,314,306],{},[219,316,317,322,329],{},[237,318,319],{},[21,320,321],{},"keycloak.production",[237,323,324,325,328],{},"Production mode (",[21,326,327],{},"start",") or dev mode",[237,330,331],{},[21,332,333],{},"true",[219,335,336,341,344],{},[237,337,338],{},[21,339,340],{},"database.type",[237,342,343],{},"Database type",[237,345,346],{},[21,347,138],{},[219,349,350,355,358],{},[237,351,352],{},[21,353,354],{},"postgres.enabled",[237,356,357],{},"Enable embedded PostgreSQL",[237,359,360],{},[21,361,333],{},[219,363,364,369,372],{},[237,365,366],{},[21,367,368],{},"postgres.auth.database",[237,370,371],{},"Database name for embedded PostgreSQL",[237,373,374],{},[21,375,75],{},[219,377,378,383,386],{},[237,379,380],{},[21,381,382],{},"postgres.auth.username",[237,384,385],{},"Username for embedded PostgreSQL",[237,387,388],{},[21,389,75],{},[219,391,392,397,400],{},[237,393,394],{},[21,395,396],{},"postgres.auth.password",[237,398,399],{},"Password for embedded PostgreSQL",[237,401,281],{},[219,403,404,409,412],{},[237,405,406],{},[21,407,408],{},"resources.requests.cpu",[237,410,411],{},"CPU request",[237,413,414],{},[21,415,416],{},"250m",[219,418,419,424,427],{},[237,420,421],{},[21,422,423],{},"resources.requests.memory",[237,425,426],{},"Memory request",[237,428,429],{},[21,430,431],{},"512Mi",[219,433,434,439,442],{},[237,435,436],{},[21,437,438],{},"resources.limits.cpu",[237,440,441],{},"CPU limit",[237,443,444],{},[21,445,446],{},"1000m",[219,448,449,454,457],{},[237,450,451],{},[21,452,453],{},"resources.limits.memory",[237,455,456],{},"Memory limit",[237,458,459],{},[21,460,461],{},"1024Mi",[219,463,464,469,472],{},[237,465,466],{},[21,467,468],{},"ingress.enabled",[237,470,471],{},"Enable Ingress",[237,473,474],{},[21,475,476],{},"false",[219,478,479,484,490],{},[237,480,481],{},[21,482,483],{},"ingress.className",[237,485,486,487,278],{},"Ingress class (e.g. ",[21,488,489],{},"nginx",[237,491,281],{},[219,493,494,499,509],{},[237,495,496],{},[21,497,498],{},"cache.stack",[237,500,501,502,307,505,508],{},"Cache mode (",[21,503,504],{},"local",[21,506,507],{},"ispn"," for multi-replica)",[237,510,511],{},[21,512,504],{},[37,514,516],{"id":515},"step-by-step-guide","Step-by-Step Guide",[518,519,521],"h3",{"id":520},"_1-add-the-service","1. Add the service",[10,523,524,525,528,529,532],{},"In the lowcloud Dashboard, navigate to ",[16,526,527],{},"Add Service"," and select ",[16,530,531],{},"Helm Release",". Search for the Keycloak registry in the popup:",[10,534,535],{},[21,536,23],{},[10,538,539,540,543],{},"Select the desired version. ",[16,541,542],{},"\"latest\""," is a good choice in most cases.",[518,545,547],{"id":546},"_2-configure-values","2. Configure values",[10,549,550,551,553],{},"Give the service a meaningful name (e.g. ",[21,552,75],{},"). Then adjust the values:",[59,555,557],{"className":61,"code":556,"language":63,"meta":64,"style":64},"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    database: keycloak\n    username: keycloak\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",[21,558,559,565,573,581,589,597,601,607,615,621,629,637,645,650,658,667,678,686,700,708,722],{"__ignoreMap":64},[68,560,561,563],{"class":70,"line":71},[68,562,75],{"class":74},[68,564,79],{"class":78},[68,566,567,569,571],{"class":70,"line":82},[68,568,85],{"class":74},[68,570,88],{"class":78},[68,572,92],{"class":91},[68,574,575,577,579],{"class":70,"line":95},[68,576,98],{"class":74},[68,578,88],{"class":78},[68,580,103],{"class":91},[68,582,583,585,587],{"class":70,"line":106},[68,584,109],{"class":74},[68,586,88],{"class":78},[68,588,114],{"class":91},[68,590,591,593,595],{"class":70,"line":117},[68,592,120],{"class":74},[68,594,88],{"class":78},[68,596,125],{"class":91},[68,598,599],{"class":70,"line":128},[68,600,132],{"emptyLinePlaceholder":131},[68,602,603,605],{"class":70,"line":135},[68,604,138],{"class":74},[68,606,79],{"class":78},[68,608,609,611,613],{"class":70,"line":143},[68,610,146],{"class":74},[68,612,88],{"class":78},[68,614,152],{"class":151},[68,616,617,619],{"class":70,"line":155},[68,618,158],{"class":74},[68,620,79],{"class":78},[68,622,623,625,627],{"class":70,"line":163},[68,624,166],{"class":74},[68,626,88],{"class":78},[68,628,171],{"class":91},[68,630,631,633,635],{"class":70,"line":174},[68,632,177],{"class":74},[68,634,88],{"class":78},[68,636,171],{"class":91},[68,638,639,641,643],{"class":70,"line":184},[68,640,187],{"class":74},[68,642,88],{"class":78},[68,644,192],{"class":91},[68,646,648],{"class":70,"line":647},13,[68,649,132],{"emptyLinePlaceholder":131},[68,651,653,656],{"class":70,"line":652},14,[68,654,655],{"class":74},"ingress",[68,657,79],{"class":78},[68,659,661,663,665],{"class":70,"line":660},15,[68,662,146],{"class":74},[68,664,88],{"class":78},[68,666,152],{"class":151},[68,668,670,673,675],{"class":70,"line":669},16,[68,671,672],{"class":74},"  className",[68,674,88],{"class":78},[68,676,677],{"class":91}," nginx\n",[68,679,681,684],{"class":70,"line":680},17,[68,682,683],{"class":74},"  hosts",[68,685,79],{"class":78},[68,687,689,692,695,697],{"class":70,"line":688},18,[68,690,691],{"class":78},"    -",[68,693,694],{"class":74}," host",[68,696,88],{"class":78},[68,698,699],{"class":91}," auth.example.com\n",[68,701,703,706],{"class":70,"line":702},19,[68,704,705],{"class":74},"      paths",[68,707,79],{"class":78},[68,709,711,714,717,719],{"class":70,"line":710},20,[68,712,713],{"class":78},"        -",[68,715,716],{"class":74}," path",[68,718,88],{"class":78},[68,720,721],{"class":91}," \u002F\n",[68,723,725,728,730],{"class":70,"line":724},21,[68,726,727],{"class":74},"          pathType",[68,729,88],{"class":78},[68,731,732],{"class":91}," Prefix\n",[518,734,736],{"id":735},"_3-start-deployment","3. Start deployment",[10,738,739,740,743,744,747],{},"Open the created service and click ",[16,741,742],{},"Deploy",". Wait until the label in the Dashboard switches to ",[16,745,746],{},"\"Deployed\"",". Keycloak will then be accessible at the configured hostname URL.",[37,749,751],{"id":750},"advanced-values","Advanced Values",[10,753,754],{},"For production use, a complete configuration with persistence, resource limits, and TLS is recommended:",[59,756,758],{"className":61,"code":757,"language":63,"meta":64,"style":64},"image:\n  tag: \"26.5.6\"\n\nkeycloak:\n  adminUser: admin\n  adminPassword: your-secure-password\n  hostname: https:\u002F\u002Fauth.example.com\n  proxyHeaders: xforwarded\n  production: true\n\ndatabase:\n  type: postgres\n\npostgres:\n  enabled: true\n  auth:\n    database: keycloak\n    username: keycloak\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  tls:\n    - secretName: auth-tls\n      hosts:\n        - auth.example.com\n\nresources:\n  requests:\n    cpu: 250m\n    memory: 512Mi\n  limits:\n    cpu: 1000m\n    memory: 1024Mi\n",[21,759,760,767,782,786,792,800,808,816,824,833,837,844,854,858,864,872,878,886,894,902,906,912,921,930,937,948,955,966,975,983,996,1004,1011,1016,1024,1032,1043,1054,1062,1072],{"__ignoreMap":64},[68,761,762,765],{"class":70,"line":71},[68,763,764],{"class":74},"image",[68,766,79],{"class":78},[68,768,769,772,774,777,779],{"class":70,"line":82},[68,770,771],{"class":74},"  tag",[68,773,88],{"class":78},[68,775,776],{"class":78}," \"",[68,778,249],{"class":91},[68,780,781],{"class":78},"\"\n",[68,783,784],{"class":70,"line":95},[68,785,132],{"emptyLinePlaceholder":131},[68,787,788,790],{"class":70,"line":106},[68,789,75],{"class":74},[68,791,79],{"class":78},[68,793,794,796,798],{"class":70,"line":117},[68,795,85],{"class":74},[68,797,88],{"class":78},[68,799,92],{"class":91},[68,801,802,804,806],{"class":70,"line":128},[68,803,98],{"class":74},[68,805,88],{"class":78},[68,807,103],{"class":91},[68,809,810,812,814],{"class":70,"line":135},[68,811,109],{"class":74},[68,813,88],{"class":78},[68,815,114],{"class":91},[68,817,818,820,822],{"class":70,"line":143},[68,819,120],{"class":74},[68,821,88],{"class":78},[68,823,125],{"class":91},[68,825,826,829,831],{"class":70,"line":155},[68,827,828],{"class":74},"  production",[68,830,88],{"class":78},[68,832,152],{"class":151},[68,834,835],{"class":70,"line":163},[68,836,132],{"emptyLinePlaceholder":131},[68,838,839,842],{"class":70,"line":174},[68,840,841],{"class":74},"database",[68,843,79],{"class":78},[68,845,846,849,851],{"class":70,"line":184},[68,847,848],{"class":74},"  type",[68,850,88],{"class":78},[68,852,853],{"class":91}," postgres\n",[68,855,856],{"class":70,"line":647},[68,857,132],{"emptyLinePlaceholder":131},[68,859,860,862],{"class":70,"line":652},[68,861,138],{"class":74},[68,863,79],{"class":78},[68,865,866,868,870],{"class":70,"line":660},[68,867,146],{"class":74},[68,869,88],{"class":78},[68,871,152],{"class":151},[68,873,874,876],{"class":70,"line":669},[68,875,158],{"class":74},[68,877,79],{"class":78},[68,879,880,882,884],{"class":70,"line":680},[68,881,166],{"class":74},[68,883,88],{"class":78},[68,885,171],{"class":91},[68,887,888,890,892],{"class":70,"line":688},[68,889,177],{"class":74},[68,891,88],{"class":78},[68,893,171],{"class":91},[68,895,896,898,900],{"class":70,"line":702},[68,897,187],{"class":74},[68,899,88],{"class":78},[68,901,192],{"class":91},[68,903,904],{"class":70,"line":710},[68,905,132],{"emptyLinePlaceholder":131},[68,907,908,910],{"class":70,"line":724},[68,909,655],{"class":74},[68,911,79],{"class":78},[68,913,915,917,919],{"class":70,"line":914},22,[68,916,146],{"class":74},[68,918,88],{"class":78},[68,920,152],{"class":151},[68,922,924,926,928],{"class":70,"line":923},23,[68,925,672],{"class":74},[68,927,88],{"class":78},[68,929,677],{"class":91},[68,931,933,935],{"class":70,"line":932},24,[68,934,683],{"class":74},[68,936,79],{"class":78},[68,938,940,942,944,946],{"class":70,"line":939},25,[68,941,691],{"class":78},[68,943,694],{"class":74},[68,945,88],{"class":78},[68,947,699],{"class":91},[68,949,951,953],{"class":70,"line":950},26,[68,952,705],{"class":74},[68,954,79],{"class":78},[68,956,958,960,962,964],{"class":70,"line":957},27,[68,959,713],{"class":78},[68,961,716],{"class":74},[68,963,88],{"class":78},[68,965,721],{"class":91},[68,967,969,971,973],{"class":70,"line":968},28,[68,970,727],{"class":74},[68,972,88],{"class":78},[68,974,732],{"class":91},[68,976,978,981],{"class":70,"line":977},29,[68,979,980],{"class":74},"  tls",[68,982,79],{"class":78},[68,984,986,988,991,993],{"class":70,"line":985},30,[68,987,691],{"class":78},[68,989,990],{"class":74}," secretName",[68,992,88],{"class":78},[68,994,995],{"class":91}," auth-tls\n",[68,997,999,1002],{"class":70,"line":998},31,[68,1000,1001],{"class":74},"      hosts",[68,1003,79],{"class":78},[68,1005,1007,1009],{"class":70,"line":1006},32,[68,1008,713],{"class":78},[68,1010,699],{"class":91},[68,1012,1014],{"class":70,"line":1013},33,[68,1015,132],{"emptyLinePlaceholder":131},[68,1017,1019,1022],{"class":70,"line":1018},34,[68,1020,1021],{"class":74},"resources",[68,1023,79],{"class":78},[68,1025,1027,1030],{"class":70,"line":1026},35,[68,1028,1029],{"class":74},"  requests",[68,1031,79],{"class":78},[68,1033,1035,1038,1040],{"class":70,"line":1034},36,[68,1036,1037],{"class":74},"    cpu",[68,1039,88],{"class":78},[68,1041,1042],{"class":91}," 250m\n",[68,1044,1046,1049,1051],{"class":70,"line":1045},37,[68,1047,1048],{"class":74},"    memory",[68,1050,88],{"class":78},[68,1052,1053],{"class":91}," 512Mi\n",[68,1055,1057,1060],{"class":70,"line":1056},38,[68,1058,1059],{"class":74},"  limits",[68,1061,79],{"class":78},[68,1063,1065,1067,1069],{"class":70,"line":1064},39,[68,1066,1037],{"class":74},[68,1068,88],{"class":78},[68,1070,1071],{"class":91}," 1000m\n",[68,1073,1075,1077,1079],{"class":70,"line":1074},40,[68,1076,1048],{"class":74},[68,1078,88],{"class":78},[68,1080,1081],{"class":91}," 1024Mi\n",[518,1083,1085],{"id":1084},"realm-import","Realm Import",[10,1087,1088],{},"You can automatically import a realm on startup. Store your realm configuration as a Kubernetes Secret and reference it:",[59,1090,1092],{"className":61,"code":1091,"language":63,"meta":64,"style":64},"realm:\n  import: true\n  existingSecret: my-realm-secret\n",[21,1093,1094,1101,1110],{"__ignoreMap":64},[68,1095,1096,1099],{"class":70,"line":71},[68,1097,1098],{"class":74},"realm",[68,1100,79],{"class":78},[68,1102,1103,1106,1108],{"class":70,"line":82},[68,1104,1105],{"class":74},"  import",[68,1107,88],{"class":78},[68,1109,152],{"class":151},[68,1111,1112,1115,1117],{"class":70,"line":95},[68,1113,1114],{"class":74},"  existingSecret",[68,1116,88],{"class":78},[68,1118,1119],{"class":91}," my-realm-secret\n",[10,1121,1122,1123,1126],{},"The Secret must contain a key ",[21,1124,1125],{},"realm.json"," with the realm JSON content.",[518,1128,1130],{"id":1129},"external-database","External Database",[10,1132,1133],{},"If you want to use an existing PostgreSQL instance, disable the embedded database and configure the external connection:",[59,1135,1137],{"className":61,"code":1136,"language":63,"meta":64,"style":64},"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",[21,1138,1139,1145,1154,1158,1164,1172,1182,1198,1207,1216],{"__ignoreMap":64},[68,1140,1141,1143],{"class":70,"line":71},[68,1142,138],{"class":74},[68,1144,79],{"class":78},[68,1146,1147,1149,1151],{"class":70,"line":82},[68,1148,146],{"class":74},[68,1150,88],{"class":78},[68,1152,1153],{"class":151}," false\n",[68,1155,1156],{"class":70,"line":95},[68,1157,132],{"emptyLinePlaceholder":131},[68,1159,1160,1162],{"class":70,"line":106},[68,1161,841],{"class":74},[68,1163,79],{"class":78},[68,1165,1166,1168,1170],{"class":70,"line":117},[68,1167,848],{"class":74},[68,1169,88],{"class":78},[68,1171,853],{"class":91},[68,1173,1174,1177,1179],{"class":70,"line":128},[68,1175,1176],{"class":74},"  host",[68,1178,88],{"class":78},[68,1180,1181],{"class":91}," my-postgres-service\n",[68,1183,1184,1187,1189,1192,1195],{"class":70,"line":135},[68,1185,1186],{"class":74},"  port",[68,1188,88],{"class":78},[68,1190,1191],{"class":78}," '",[68,1193,1194],{"class":91},"5432",[68,1196,1197],{"class":78},"'\n",[68,1199,1200,1203,1205],{"class":70,"line":143},[68,1201,1202],{"class":74},"  name",[68,1204,88],{"class":78},[68,1206,171],{"class":91},[68,1208,1209,1212,1214],{"class":70,"line":155},[68,1210,1211],{"class":74},"  username",[68,1213,88],{"class":78},[68,1215,171],{"class":91},[68,1217,1218,1221,1223],{"class":70,"line":163},[68,1219,1220],{"class":74},"  password",[68,1222,88],{"class":78},[68,1224,192],{"class":91},[194,1226,1229],{"color":1227,"icon":1228},"info","i-lucide-link",[10,1230,1231,1232,1235],{},"If you are using an external PostgreSQL instance from another Helm Release, connect the two services via ",[16,1233,1234],{},"Helm Release Dependencies"," in the lowcloud Dashboard.",[37,1237,1239],{"id":1238},"further-reading","Further Reading",[42,1241,1242,1249,1256],{},[45,1243,1244],{},[28,1245,1248],{"href":1246,"rel":1247,"target":33},"https:\u002F\u002Fartifacthub.io\u002Fpackages\u002Fhelm\u002Fcloudpirates\u002Fkeycloak",[32],"Keycloak Chart on ArtifactHub",[45,1250,1251],{},[28,1252,1255],{"href":1253,"rel":1254,"target":33},"https:\u002F\u002Fgithub.com\u002FCloudPirates-io\u002Fhelm-charts\u002Ftree\u002Fmain\u002Fcharts\u002Fkeycloak",[32],"Keycloak Helm Chart on GitHub",[45,1257,1258],{},[28,1259,1262],{"href":1260,"rel":1261,"target":33},"https:\u002F\u002Fwww.keycloak.org\u002Fdocumentation",[32],"Keycloak Documentation",[1264,1265,1266],"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":64,"searchDepth":82,"depth":82,"links":1268},[1269,1270,1271,1272,1277,1281],{"id":39,"depth":82,"text":40},{"id":53,"depth":82,"text":54},{"id":207,"depth":82,"text":208},{"id":515,"depth":82,"text":516,"children":1273},[1274,1275,1276],{"id":520,"depth":95,"text":521},{"id":546,"depth":95,"text":547},{"id":735,"depth":95,"text":736},{"id":750,"depth":82,"text":751,"children":1278},[1279,1280],{"id":1084,"depth":95,"text":1085},{"id":1129,"depth":95,"text":1130},{"id":1238,"depth":82,"text":1239},"Learn how to deploy Keycloak as a Helm Release via lowcloud – including database setup, Ingress configuration, and Realm import.","md","2026-04-08",{},{"icon":1287},"i-lucide-shield-check","\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-keycloak",{"title":5,"description":1282},"en\u002F1.docs\u002F4.helm-releases\u002F7.deploy-keycloak","7yJeoDXX9KmDZnBf2dTZtDQGogFnGlMDK0YG7LQn7yE",[1293,1312,1324,1464,1491,1527],{"title":1294,"path":1295,"stem":1296,"children":1297,"icon":1311},"Getting Started","\u002Fhosting\u002Fdocs\u002Fgetting-started","en\u002F1.docs\u002F1.getting-started\u002F1.index",[1298,1301,1306],{"title":1299,"path":1295,"stem":1296,"icon":1300,"children":-1},"Introduction","i-lucide-house",{"title":1302,"path":1303,"stem":1304,"icon":1305,"children":-1},"Get Started","\u002Fhosting\u002Fdocs\u002Fgetting-started\u002Fget-started","en\u002F1.docs\u002F1.getting-started\u002F2.get-started","i-lucide-rocket",{"title":1307,"path":1308,"stem":1309,"icon":1310,"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":1313,"path":1314,"stem":1315,"children":1316,"icon":1311},"Guides","\u002Fhosting\u002Fdocs\u002Fguides","en\u002F1.docs\u002F2.guides\u002F1.index",[1317,1319],{"title":1313,"path":1314,"stem":1315,"icon":1318,"children":-1},"i-lucide-book-open",{"title":1320,"path":1321,"stem":1322,"icon":1323,"children":-1},"Connect a Container Registry","\u002Fhosting\u002Fdocs\u002Fguides\u002Fcontainer-registries","en\u002F1.docs\u002F2.guides\u002F2.container-registries","i-lucide-container",{"title":1325,"icon":1311,"path":1326,"stem":1327,"children":1328,"page":1311},"Platform","\u002Fhosting\u002Fdocs\u002Fplatform","en\u002F1.docs\u002F2.platform",[1329,1349,1415,1454],{"title":1299,"path":1330,"stem":1331,"children":1332,"icon":1311},"\u002Fhosting\u002Fdocs\u002Fplatform\u002Fintroduction","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F1.index",[1333,1336,1341,1346],{"title":1334,"path":1330,"stem":1331,"icon":1335,"children":-1},"Overview","i-lucide-cloud",{"title":1337,"path":1338,"stem":1339,"icon":1340,"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":1342,"path":1343,"stem":1344,"icon":1345,"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":1302,"path":1347,"stem":1348,"icon":1305,"children":-1},"\u002Fhosting\u002Fdocs\u002Fplatform\u002Fintroduction\u002Fget-started","en\u002F1.docs\u002F2.platform\u002F1.introduction\u002F4.get-started",{"title":1350,"path":1351,"stem":1352,"children":1353,"icon":1311},"Web Services","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F01.index",[1354,1357,1362,1366,1370,1375,1380,1385,1390,1395,1400,1405,1410],{"title":1355,"path":1351,"stem":1352,"icon":1356,"children":-1},"Source Options","i-lucide-app-window",{"title":1358,"path":1359,"stem":1360,"icon":1361,"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":208,"path":1363,"stem":1364,"icon":1365,"children":-1},"\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fconfiguration","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F03.configuration","i-lucide-settings",{"title":1367,"path":1368,"stem":1369,"icon":1305,"children":-1},"Deploying","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fdeploying","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F04.deploying",{"title":1371,"path":1372,"stem":1373,"icon":1374,"children":-1},"Scaling","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fscaling","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F05.scaling","i-lucide-scaling",{"title":1376,"path":1377,"stem":1378,"icon":1379,"children":-1},"Domains","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fdomains","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F06.domains","i-lucide-globe",{"title":1381,"path":1382,"stem":1383,"icon":1384,"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":1386,"path":1387,"stem":1388,"icon":1389,"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":1391,"path":1392,"stem":1393,"icon":1394,"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":1396,"path":1397,"stem":1398,"icon":1399,"children":-1},"Defaults","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Flimits","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F10.limits","i-lucide-gauge",{"title":1401,"path":1402,"stem":1403,"icon":1404,"children":-1},"Billing","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fbilling","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F11.billing","i-lucide-credit-card",{"title":1406,"path":1407,"stem":1408,"icon":1409,"children":-1},"Shell","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fweb-services\u002Fshell","en\u002F1.docs\u002F2.platform\u002F2.web-services\u002F12.shell","i-lucide-square-terminal",{"title":1411,"path":1412,"stem":1413,"icon":1414,"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":1416,"path":1417,"stem":1418,"children":1419,"icon":1311},"Databases","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F1.index",[1420,1423,1428,1433,1438,1441,1446,1451],{"title":1421,"path":1417,"stem":1418,"icon":1422,"children":-1},"Templates","i-lucide-database",{"title":1424,"path":1425,"stem":1426,"icon":1427,"children":-1},"Create","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fcreate","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F2.create","i-lucide-plus",{"title":1429,"path":1430,"stem":1431,"icon":1432,"children":-1},"Connect","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fconnect","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F3.connect","i-lucide-plug",{"title":1434,"path":1435,"stem":1436,"icon":1437,"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":1391,"path":1439,"stem":1440,"icon":1394,"children":-1},"\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fstorage","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F5.storage",{"title":1442,"path":1443,"stem":1444,"icon":1445,"children":-1},"Management","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fmanagement","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F6.management","i-lucide-sliders-horizontal",{"title":1447,"path":1448,"stem":1449,"icon":1450,"children":-1},"Operations","\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases\u002Foperational-notes","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F7.operational-notes","i-lucide-clipboard-list",{"title":1401,"path":1452,"stem":1453,"icon":1404,"children":-1},"\u002Fhosting\u002Fdocs\u002Fplatform\u002Fdatabases\u002Fbilling","en\u002F1.docs\u002F2.platform\u002F3.databases\u002F8.billing",{"title":1313,"path":1455,"stem":1456,"children":1457,"icon":1311},"\u002Fhosting\u002Fdocs\u002Fplatform\u002Fguides","en\u002F1.docs\u002F2.platform\u002F4.guides\u002F1.index",[1458,1459],{"title":1313,"path":1455,"stem":1456,"icon":1318,"children":-1},{"title":1460,"path":1461,"stem":1462,"icon":1463,"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":1465,"path":1466,"stem":1467,"children":1468,"icon":1311},"App Services","\u002Fhosting\u002Fdocs\u002Fapp-services","en\u002F1.docs\u002F3.app-services\u002F1.index",[1469,1470,1474,1478,1482,1487],{"title":1465,"path":1466,"stem":1467,"icon":1305,"children":-1},{"title":1471,"path":1472,"stem":1473,"icon":1365,"children":-1},"Build Settings","\u002Fhosting\u002Fdocs\u002Fapp-services\u002Fbuild-settings","en\u002F1.docs\u002F3.app-services\u002F2.build-settings",{"title":1386,"path":1475,"stem":1476,"icon":1477,"children":-1},"\u002Fhosting\u002Fdocs\u002Fapp-services\u002Fenvironment-variables","en\u002F1.docs\u002F3.app-services\u002F3.environment-variables","i-lucide-key",{"title":1479,"path":1480,"stem":1481,"icon":1379,"children":-1},"Custom Domains","\u002Fhosting\u002Fdocs\u002Fapp-services\u002Fcustom-domains","en\u002F1.docs\u002F3.app-services\u002F4.custom-domains",{"title":1483,"path":1484,"stem":1485,"icon":1486,"children":-1},"Health Checks","\u002Fhosting\u002Fdocs\u002Fapp-services\u002Fhealth-checks","en\u002F1.docs\u002F3.app-services\u002F5.health-checks","i-lucide-heart-pulse",{"title":1488,"path":1489,"stem":1490,"icon":1374,"children":-1},"Autoscaling","\u002Fhosting\u002Fdocs\u002Fapp-services\u002Fautoscaling","en\u002F1.docs\u002F3.app-services\u002F6.autoscaling",{"title":1492,"path":1493,"stem":1494,"children":1495,"icon":1311},"Helm Releases","\u002Fhosting\u002Fdocs\u002Fhelm-releases","en\u002F1.docs\u002F4.helm-releases\u002F1.index",[1496,1498,1502,1507,1511,1516,1520,1525],{"title":1492,"path":1493,"stem":1494,"icon":1497,"children":-1},"i-lucide-package",{"title":1499,"path":1500,"stem":1501,"icon":1422,"children":-1},"Deploy PostgreSQL","\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-postgresql","en\u002F1.docs\u002F4.helm-releases\u002F2.deploy-postgresql",{"title":1503,"path":1504,"stem":1505,"icon":1506,"children":-1},"Deploy Redis","\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-redis","en\u002F1.docs\u002F4.helm-releases\u002F3.deploy-redis","i-lucide-zap",{"title":1508,"path":1509,"stem":1510,"icon":1506,"children":-1},"Deploy Valkey","\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-valkey","en\u002F1.docs\u002F4.helm-releases\u002F3.deploy-valkey",{"title":1512,"path":1513,"stem":1514,"icon":1515,"children":-1},"Deploy n8n","\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-n8n","en\u002F1.docs\u002F4.helm-releases\u002F4.deploy-n8n","i-lucide-workflow",{"title":1517,"path":1518,"stem":1519,"icon":1394,"children":-1},"Deploy RustFS","\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-rustfs","en\u002F1.docs\u002F4.helm-releases\u002F5.deploy-rustfs",{"title":1521,"path":1522,"stem":1523,"icon":1524,"children":-1},"Deploy OpenSearch","\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-opensearch","en\u002F1.docs\u002F4.helm-releases\u002F6.deploy-opensearch","i-lucide-search",{"title":5,"path":1526,"stem":1290,"icon":1287,"children":-1},"\u002Fhosting\u002Fdocs\u002Fhelm-releases\u002Fdeploy-keycloak",{"title":1528,"path":1529,"stem":1530,"children":1531,"icon":1311},"Glossary","\u002Fhosting\u002Fdocs\u002Fglossary","en\u002F1.docs\u002F5.glossary\u002F1.index",[1532],{"title":1528,"path":1529,"stem":1530,"icon":1533,"children":-1},"i-lucide-book-a",[1535,1538],{"title":1521,"path":1536,"stem":1523,"description":1537,"icon":1524,"children":-1},"\u002Fen\u002Fdocs\u002Fhelm-releases\u002Fdeploy-opensearch","Learn how to deploy OpenSearch as a search and analytics engine on your Kubernetes cluster using lowcloud.",{"title":1528,"path":1539,"stem":1530,"description":1540,"icon":1533,"children":-1},"\u002Fen\u002Fdocs\u002Fglossary","Key terms from the fields of cloud computing, Kubernetes, and DevOps explained clearly.",1791184613406]