[{"data":1,"prerenderedAt":371},["ShallowReactive",2],{"navigation_docs":3,"-docs-deploy-environment-variables":130,"-docs-deploy-environment-variables-surround":366},[4,25,70,90,115],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"Getting started",false,"\u002Fdocs\u002Fgetting-started","docs\u002F1.getting-started",[10,15,20],{"title":11,"path":12,"stem":13,"icon":14},"Introduction","\u002Fdocs\u002Fgetting-started\u002Fintroduction","docs\u002F1.getting-started\u002F1.introduction","i-lucide-house",{"title":16,"path":17,"stem":18,"icon":19},"Installation","\u002Fdocs\u002Fgetting-started\u002Finstallation","docs\u002F1.getting-started\u002F2.installation","i-lucide-terminal",{"title":21,"path":22,"stem":23,"icon":24},"Quickstart","\u002Fdocs\u002Fgetting-started\u002Fquickstart","docs\u002F1.getting-started\u002F3.quickstart","i-lucide-rocket",{"title":26,"icon":6,"path":27,"stem":28,"children":29,"page":6},"Deploy","\u002Fdocs\u002Fdeploy","docs\u002F2.deploy",[30,35,40,45,50,55,60,65],{"title":31,"path":32,"stem":33,"icon":34},"Projects and services","\u002Fdocs\u002Fdeploy\u002Fprojects-and-services","docs\u002F2.deploy\u002F1.projects-and-services","i-lucide-folder-kanban",{"title":36,"path":37,"stem":38,"icon":39},"Docker images","\u002Fdocs\u002Fdeploy\u002Fdocker-images","docs\u002F2.deploy\u002F2.docker-images","i-lucide-container",{"title":41,"path":42,"stem":43,"icon":44},"Git repositories","\u002Fdocs\u002Fdeploy\u002Fgit-repositories","docs\u002F2.deploy\u002F3.git-repositories","i-lucide-git-branch",{"title":46,"path":47,"stem":48,"icon":49},"Databases","\u002Fdocs\u002Fdeploy\u002Fdatabases","docs\u002F2.deploy\u002F4.databases","i-lucide-database",{"title":51,"path":52,"stem":53,"icon":54},"Environment variables","\u002Fdocs\u002Fdeploy\u002Fenvironment-variables","docs\u002F2.deploy\u002F5.environment-variables","i-lucide-key-round",{"title":56,"path":57,"stem":58,"icon":59},"Deployments and logs","\u002Fdocs\u002Fdeploy\u002Fdeployments","docs\u002F2.deploy\u002F6.deployments","i-lucide-scroll-text",{"title":61,"path":62,"stem":63,"icon":64},"Deploy hooks","\u002Fdocs\u002Fdeploy\u002Fdeploy-hooks","docs\u002F2.deploy\u002F7.deploy-hooks","i-lucide-webhook",{"title":66,"path":67,"stem":68,"icon":69},"Domains and HTTPS","\u002Fdocs\u002Fdeploy\u002Fdomains","docs\u002F2.deploy\u002F8.domains","i-lucide-lock",{"title":71,"icon":6,"path":72,"stem":73,"children":74,"page":6},"Backups","\u002Fdocs\u002Fbackups","docs\u002F3.backups",[75,80,85],{"title":76,"path":77,"stem":78,"icon":79},"Backup destinations","\u002Fdocs\u002Fbackups\u002Fbackup-destinations","docs\u002F3.backups\u002F1.backup-destinations","i-lucide-hard-drive-upload",{"title":81,"path":82,"stem":83,"icon":84},"Database backups","\u002Fdocs\u002Fbackups\u002Fdatabase-backups","docs\u002F3.backups\u002F2.database-backups","i-lucide-archive-restore",{"title":86,"path":87,"stem":88,"icon":89},"Backing up Harblet","\u002Fdocs\u002Fbackups\u002Fharblet-backups","docs\u002F3.backups\u002F3.harblet-backups","i-lucide-shield-check",{"title":91,"icon":6,"path":92,"stem":93,"children":94,"page":6},"Administration","\u002Fdocs\u002Fadministration","docs\u002F4.administration",[95,100,105,110],{"title":96,"path":97,"stem":98,"icon":99},"Harblet's domain","\u002Fdocs\u002Fadministration\u002Fharblet-domain","docs\u002F4.administration\u002F1.harblet-domain","i-lucide-globe",{"title":101,"path":102,"stem":103,"icon":104},"Servers","\u002Fdocs\u002Fadministration\u002Fservers","docs\u002F4.administration\u002F2.servers","i-lucide-server",{"title":106,"path":107,"stem":108,"icon":109},"Team and account","\u002Fdocs\u002Fadministration\u002Fteam","docs\u002F4.administration\u002F3.team","i-lucide-users",{"title":111,"path":112,"stem":113,"icon":114},"Updates","\u002Fdocs\u002Fadministration\u002Fupdates","docs\u002F4.administration\u002F4.updates","i-lucide-refresh-cw",{"title":116,"icon":6,"path":117,"stem":118,"children":119,"page":6},"Reference","\u002Fdocs\u002Freference","docs\u002F5.reference",[120,125],{"title":121,"path":122,"stem":123,"icon":124},"Troubleshooting","\u002Fdocs\u002Freference\u002Ftroubleshooting","docs\u002F5.reference\u002F1.troubleshooting","i-lucide-life-buoy",{"title":126,"path":127,"stem":128,"icon":129},"License","\u002Fdocs\u002Freference\u002Flicense","docs\u002F5.reference\u002F2.license","i-lucide-scale",{"id":131,"title":51,"body":132,"description":359,"extension":360,"links":361,"meta":362,"navigation":363,"path":52,"seo":364,"stem":53,"__hash__":365},"docs\u002Fdocs\u002F2.deploy\u002F5.environment-variables.md",{"type":133,"value":134,"toc":348},"minimark",[135,139,144,205,211,215,234,242,246,264,312,316,338,344],[136,137,138],"p",{},"Environment variables give a service its API keys, database URLs and other settings. Image and Git services have them. Databases don't, since Harblet configures them for you.",[140,141,143],"h2",{"id":142},"add-variables","Add variables",[145,146,148,153,160,164,171,192,196],"steps",{"level":147},"3",[149,150,152],"h3",{"id":151},"open-the-tab","Open the tab",[136,154,155,156,159],{},"Open the service and go to ",[157,158,51],"strong",{},".",[149,161,163],{"id":162},"add-a-row-per-variable","Add a row per variable",[136,165,166,167,170],{},"Click ",[157,168,169],{},"Add variable"," and enter a key and a value.",[172,173,174,186],"ul",{},[175,176,177,180,181,185],"li",{},[157,178,179],{},"Keys"," use letters, digits and underscores, don't start with a digit and have at most 253 characters, for example ",[182,183,184],"code",{},"DATABASE_URL",". Each key can be used once.",[175,187,188,191],{},[157,189,190],{},"Values"," can't be empty, hold up to 32,768 characters and can span several lines, for example for a PEM key.",[149,193,195],{"id":194},"save-and-deploy","Save and deploy",[136,197,166,198,201,202,204],{},[157,199,200],{},"Save",", then click ",[157,203,26],{},". Variables apply on the next deployment.",[136,206,207,208,210],{},"Saved values are hidden. Click the eye button to show a value, and the trash button to remove a variable. ",[157,209,200],{}," stores the list as you see it, so removed rows are deleted.",[140,212,214],{"id":213},"where-variables-reach","Where variables reach",[172,216,217,223],{},[175,218,219,222],{},[157,220,221],{},"The running service"," reads them as environment variables.",[175,224,225,228,229,159],{},[157,226,227],{},"Builds of Git services"," get them as well. See ",[230,231,233],"a",{"href":232},"\u002Fdocs\u002Fdeploy\u002Fgit-repositories#variables-during-the-build","Variables during the build",[136,235,236,237,241],{},"Each deployment keeps the variables it was deployed with. ",[230,238,240],{"href":239},"\u002Fdocs\u002Fdeploy\u002Fdeployments#redeploy-an-earlier-deployment","Redeploying"," an earlier deployment brings back its variables too.",[140,243,245],{"id":244},"connect-to-other-services","Connect to other services",[136,247,248,249,253,254,257,258,261,262,159],{},"Use the ",[230,250,252],{"href":251},"\u002Fdocs\u002Fdeploy\u002Fprojects-and-services#connect-services-to-each-other","internal address"," of another service in the project. For a database, copy the ",[157,255,256],{},"Connection URL"," from its ",[157,259,260],{},"Overview"," tab. See ",[230,263,46],{"href":47},[265,266,271],"pre",{"className":267,"code":268,"language":269,"meta":270,"style":270},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","DATABASE_URL=postgresql:\u002F\u002Fpostgres:\u003Cpassword>@postgresql-x7k2:5432\u002Fapp\nREDIS_URL=redis:\u002F\u002Fcache-p4n1:6379\n","bash","",[182,272,273,301],{"__ignoreMap":270},[274,275,278,281,285,289,292,295,298],"span",{"class":276,"line":277},"line",1,[274,279,184],{"class":280},"sTEyZ",[274,282,284],{"class":283},"sMK4o","=",[274,286,288],{"class":287},"sfazB","postgresql:\u002F\u002Fpostgres:",[274,290,291],{"class":283},"\u003C",[274,293,294],{"class":287},"password",[274,296,297],{"class":283},">",[274,299,300],{"class":287},"@postgresql-x7k2:5432\u002Fapp\n",[274,302,304,307,309],{"class":276,"line":303},2,[274,305,306],{"class":280},"REDIS_URL",[274,308,284],{"class":283},[274,310,311],{"class":287},"redis:\u002F\u002Fcache-p4n1:6379\n",[140,313,315],{"id":314},"security","Security",[172,317,318,325,331],{},[175,319,320,321,324],{},"Harblet stores values ",[157,322,323],{},"encrypted"," in its database, with a key derived from its app secret.",[175,326,327,330],{},[157,328,329],{},"Every member"," of your Harblet can see and change the variables of every service.",[175,332,333,334,337],{},"References such as ",[182,335,336],{},"$OTHER_KEY"," aren't expanded. Each value reaches the service exactly as you entered it.",[339,340,341,342,159],"warning",{},"Restoring Harblet from a backup needs the app secret, or the variables can't be decrypted. See ",[230,343,86],{"href":87},[345,346,347],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}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 .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":270,"searchDepth":303,"depth":303,"links":349},[350,356,357,358],{"id":142,"depth":303,"text":143,"children":351},[352,354,355],{"id":151,"depth":353,"text":152},3,{"id":162,"depth":353,"text":163},{"id":194,"depth":353,"text":195},{"id":213,"depth":303,"text":214},{"id":244,"depth":303,"text":245},{"id":314,"depth":303,"text":315},"Give your services API keys, database URLs and other settings, stored encrypted.","md",null,{},{"icon":54},{"title":51,"description":359},"GHO6h7QO6Vgo5czpZZrweBqo_hBTMixIJelwAtZLUXo",[367,369],{"title":46,"path":47,"stem":48,"description":368,"icon":49,"children":-1},"Create a PostgreSQL or MySQL database in one click and connect your services to it.",{"title":56,"path":57,"stem":58,"description":370,"icon":59,"children":-1},"Follow builds and rollouts, read live logs, and redeploy earlier versions.",1794744117334]