1"use strict";(globalThis.webpackChunkkurtosis_docs=globalThis.webpackChunkkurtosis_docs||[]).push([[5311],{7205(e,s,i){i.r(s),i.d(s,{assets:()=>u,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>n,toc:()=>l});const n=JSON.parse('{"id":"guides/self-cloud-hosting","title":"Running Kurtosis in your own Cloud","description":"This guide will help you set up Kurtosis in your own cloud and exposing it using one of your subdomains e.g. kurtosis..com","source":"@site/docs/guides/self-cloud-hosting.md","sourceDirName":"guides","slug":"/self-hosting","permalink":"/self-hosting","draft":false,"unlisted":false,"tags":[],"version":"current","sidebarPosition":14,"frontMatter":{"title":"Running Kurtosis in your own Cloud","sidebar_label":"Running in your own Cloud","slug":"/self-hosting","sidebar_position":14},"sidebar":"main","previous":{"title":"Running Private Packages","permalink":"/private-packages"},"next":{"title":"Exporting logs to external service","permalink":"/exporting-logs"}}');var o=i(4848),t=i(8453);const r={title:"Running Kurtosis in your own Cloud",sidebar_label:"Running in your own Cloud",slug:"/self-hosting",sidebar_position:14},a=void 0,u={},l=[{value:"I. Prerequisites",id:"i-prerequisites",level:2},{value:"II. Kurtosis Installation",id:"ii-kurtosis-installation",level:2}];function c(e){const s={code:"code",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",...(0,t.R)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsxs)(s.p,{children:["This guide will help you set up Kurtosis in your own cloud and exposing it using one of your subdomains e.g. ",(0,o.jsx)(s.code,{children:"kurtosis.<your domain>.com"})]}),"\n",(0,o.jsx)(s.h2,{id:"i-prerequisites",children:"I. Prerequisites"}),"\n",(0,o.jsxs)(s.ol,{children:["\n",(0,o.jsxs)(s.li,{children:["Public facing gateway (e.g. AWS ALB) supporting the Kurtosis subdomain with certificate. The certificate should support the subdomain name and a wildcard subdomain prefix ",(0,o.jsx)(s.code,{children:"*.<subdomain>"})," since the service port URLs format is ",(0,o.jsx)(s.code,{children:"port-service-enclave.<subdomain>"}),". The gateway should terminate TLS."]}),"\n",(0,o.jsxs)(s.li,{children:["Host running Ubuntu to install and configure Kurtosis on. The host should be on a private subnet receiving traffic from the Gateway on port 80. Healthchecks should use the ",(0,o.jsx)(s.code,{children:"/status"})," URL."]}),"\n"]}),"\n",(0,o.jsx)(s.p,{children:(0,o.jsx)(s.img,{alt:"self-hosting-overview",src:i(8546).A+"",width:"1398",height:"358"})}),"\n",(0,o.jsx)(s.h2,{id:"ii-kurtosis-installation",children:"II. Kurtosis Installation"}),"\n",(0,o.jsx)(s.p,{children:"We provide an install script setting up Docker, Nginx and Kurtosis. The script takes as arguments your subdomain name, a username and password for HTTP basic authentication."}),"\n",(0,o.jsx)(s.pre,{children:(0,o.jsx)(s.code,{className:"language-bash",children:"curl -s https://raw.githubusercontent.com/kurtosis-tech/kurtosis-cloud-config/main/self-hosting-setup.sh | bash -s <subdomain name> <username> <password>\n"})})]})}function d(e={}){const{wrapper:s}={...(0,t.R)(),...e.components};return s?(0,o.jsx)(s,{...e,children:(0,o.jsx)(c,{...e})}):c(e)}},8546(e,s,i){i.d(s,{A:()=>n});const n=i.p+"assets/images/self-hosting-overview-c6a9efeaf7b528de572056a5422a7bea.png"},8453(e,s,i){i.d(s,{R:()=>r,x:()=>a});var n=i(6540);const o={},t=n.createContext(o);function r(e){const s=n.useContext(t);return n.useMemo(function(){return"function"==typeof e?e(s):{...s,...e}},[s,e])}function a(e){let s;return s=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),n.createElement(t.Provider,{value:s},e.children)}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.