[{"data":1,"prerenderedAt":632},["ShallowReactive",2],{"navigation":3,"-deploy-providers-koyeb":224,"-deploy-providers-koyeb-surround":627},[4,83,208,214,221],{"title":5,"path":6,"stem":7,"children":8,"icon":82},"","/docs","1.docs/1.index",[9,12,17,22,27,32,37,42,47,52,57,62,67,72,77],{"title":10,"path":6,"stem":7,"icon":11},"Introduction","i-lucide-compass",{"title":13,"path":14,"stem":15,"icon":16},"Quick Start","/docs/quick-start","1.docs/2.quick-start","i-lucide-zap",{"title":18,"path":19,"stem":20,"icon":21},"Renderer","/docs/renderer","1.docs/4.renderer","ri:layout-masonry-line",{"title":23,"path":24,"stem":25,"icon":26},"Routing","/docs/routing","1.docs/5.routing","ri:direction-line",{"title":28,"path":29,"stem":30,"icon":31},"Assets","/docs/assets","1.docs/50.assets","ri:image-2-line",{"title":33,"path":34,"stem":35,"icon":36},"Configuration","/docs/configuration","1.docs/50.configuration","ri:settings-3-line",{"title":38,"path":39,"stem":40,"icon":41},"Database","/docs/database","1.docs/50.database","ri:database-2-line",{"title":43,"path":44,"stem":45,"icon":46},"Lifecycle","/docs/lifecycle","1.docs/50.lifecycle","i-lucide-layers",{"title":48,"path":49,"stem":50,"icon":51},"Plugins","/docs/plugins","1.docs/50.plugins","ri:plug-line",{"title":53,"path":54,"stem":55,"icon":56},"Tasks","/docs/tasks","1.docs/50.tasks","codicon:run-all",{"title":58,"path":59,"stem":60,"icon":61},"Server Entry","/docs/server-entry","1.docs/6.server-entry","ri:server-line",{"title":63,"path":64,"stem":65,"icon":66},"Cache","/docs/cache","1.docs/7.cache","ri:speed-line",{"title":68,"path":69,"stem":70,"icon":71},"KV Storage","/docs/storage","1.docs/8.storage","carbon:datastore",{"title":73,"path":74,"stem":75,"icon":76},"Migration Guide","/docs/migration","1.docs/99.migration","ri:arrow-right-up-line",{"title":78,"path":79,"stem":80,"icon":81},"Nightly Channel","/docs/nightly","1.docs/99.nightly","ri:moon-fill","i-lucide-book-open",{"title":84,"path":85,"stem":86,"children":87,"icon":89},"Deploy","/deploy","2.deploy/0.index",[88,90,111],{"title":84,"path":85,"stem":86,"icon":89},"ri:upload-cloud-2-line",{"title":91,"path":92,"stem":93,"children":94,"page":110},"Runtimes","/deploy/runtimes","2.deploy/10.runtimes",[95,100,105],{"title":96,"path":97,"stem":98,"icon":99},"Node.js","/deploy/runtimes/node","2.deploy/10.runtimes/1.node","akar-icons:node-fill",{"title":101,"path":102,"stem":103,"icon":104},"Bun","/deploy/runtimes/bun","2.deploy/10.runtimes/bun","simple-icons:bun",{"title":106,"path":107,"stem":108,"icon":109},"Deno","/deploy/runtimes/deno","2.deploy/10.runtimes/deno","simple-icons:deno",false,{"title":112,"path":113,"stem":114,"children":115,"page":110},"Providers","/deploy/providers","2.deploy/20.providers",[116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184,188,192,196,200,204],{"title":117,"path":118,"stem":119},"Alwaysdata","/deploy/providers/alwaysdata","2.deploy/20.providers/alwaysdata",{"title":121,"path":122,"stem":123},"AWS Lambda","/deploy/providers/aws","2.deploy/20.providers/aws",{"title":125,"path":126,"stem":127},"AWS Amplify","/deploy/providers/aws-amplify","2.deploy/20.providers/aws-amplify",{"title":129,"path":130,"stem":131},"Azure","/deploy/providers/azure","2.deploy/20.providers/azure",{"title":133,"path":134,"stem":135},"Cleavr","/deploy/providers/cleavr","2.deploy/20.providers/cleavr",{"title":137,"path":138,"stem":139},"Cloudflare","/deploy/providers/cloudflare","2.deploy/20.providers/cloudflare",{"title":141,"path":142,"stem":143},"Deno Deploy","/deploy/providers/deno-deploy","2.deploy/20.providers/deno-deploy",{"title":145,"path":146,"stem":147},"DigitalOcean","/deploy/providers/digitalocean","2.deploy/20.providers/digitalocean",{"title":149,"path":150,"stem":151},"Firebase","/deploy/providers/firebase","2.deploy/20.providers/firebase",{"title":153,"path":154,"stem":155},"Flightcontrol","/deploy/providers/flightcontrol","2.deploy/20.providers/flightcontrol",{"title":157,"path":158,"stem":159},"Genezio","/deploy/providers/genezio","2.deploy/20.providers/genezio",{"title":161,"path":162,"stem":163},"GitHub Pages","/deploy/providers/github-pages","2.deploy/20.providers/github-pages",{"title":165,"path":166,"stem":167},"GitLab Pages","/deploy/providers/gitlab-pages","2.deploy/20.providers/gitlab-pages",{"title":169,"path":170,"stem":171},"Heroku","/deploy/providers/heroku","2.deploy/20.providers/heroku",{"title":173,"path":174,"stem":175},"IIS","/deploy/providers/iis","2.deploy/20.providers/iis",{"title":177,"path":178,"stem":179},"Koyeb","/deploy/providers/koyeb","2.deploy/20.providers/koyeb",{"title":181,"path":182,"stem":183},"Netlify","/deploy/providers/netlify","2.deploy/20.providers/netlify",{"title":185,"path":186,"stem":187},"Platform.sh","/deploy/providers/platform-sh","2.deploy/20.providers/platform-sh",{"title":189,"path":190,"stem":191},"Render.com","/deploy/providers/render","2.deploy/20.providers/render",{"title":193,"path":194,"stem":195},"StormKit","/deploy/providers/stormkit","2.deploy/20.providers/stormkit",{"title":197,"path":198,"stem":199},"Vercel","/deploy/providers/vercel","2.deploy/20.providers/vercel",{"title":201,"path":202,"stem":203},"Zeabur","/deploy/providers/zeabur","2.deploy/20.providers/zeabur",{"title":205,"path":206,"stem":207},"Zerops","/deploy/providers/zerops","2.deploy/20.providers/zerops",{"title":209,"path":210,"stem":211,"children":212,"icon":36},"Config","/config","3.config/0.index",[213],{"title":209,"path":210,"stem":211,"icon":36},{"title":215,"path":216,"stem":217,"children":218,"icon":220},"Examples","/examples","4.examples/0.index",[219],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-folder-code",{"title":5,"path":222,"stem":223},"/","index",{"id":225,"title":177,"body":226,"description":621,"extension":622,"meta":623,"navigation":624,"path":178,"seo":625,"stem":179,"__hash__":626},"content/2.deploy/20.providers/koyeb.md",{"type":227,"value":228,"toc":616},"minimark",[229,241,245,250,356,360,551,555,585,612],[230,231,232,236,237],"p",{},[233,234,235],"strong",{},"Preset:"," ",[238,239,240],"code",{},"koyeb",[242,243],"read-more",{"to":244},"https://www.koyeb.com",[246,247,249],"h2",{"id":248},"using-the-control-panel","Using the control panel",[251,252,254,270,277,288,291,331,347,350],"steps",{"level":253},"4",[255,256,257,258,265,266,269],"h4",{},"In the ",[259,260,264],"a",{"href":261,"rel":262},"https://app.koyeb.com/",[263],"nofollow","Koyeb control panel",", click ",[233,267,268],{},"Create App",".",[255,271,272,273,276],{},"Choose ",[233,274,275],{},"GitHub"," as your deployment method.",[255,278,279,280,283,284,287],{},"Choose the GitHub ",[233,281,282],{},"repository"," and ",[233,285,286],{},"branch"," containing your application code.",[255,289,290],{},"Name your Service.",[255,292,293,294,297,298,301,302,305,306,309,310],{},"If you did not add a ",[238,295,296],{},"start"," command to your ",[238,299,300],{},"package.json"," file, under the ",[233,303,304],{},"Build and deployment settings",", toggle the override switch associated with the run command field.  In the ",[233,307,308],{},"Run command"," field, enter:",[311,312,316],"pre",{"className":313,"code":314,"language":315,"meta":5,"style":5},"language-bash shiki shiki-themes github-light github-dark github-dark","node .output/server/index.mjs`\n","bash",[238,317,318],{"__ignoreMap":5},[319,320,323,327],"span",{"class":321,"line":322},"line",1,[319,324,326],{"class":325},"shcOC","node",[319,328,330],{"class":329},"sfrk1"," .output/server/index.mjs`\n",[255,332,257,333,336,337,340,341,344,345,269],{},[233,334,335],{},"Advanced"," section, click ",[233,338,339],{},"Add Variable"," and add a ",[238,342,343],{},"NITRO_PRESET"," variable set to ",[238,346,240],{},[255,348,349],{},"Name the App.",[255,351,352,353,355],{},"Click the ",[233,354,84],{}," button.",[246,357,359],{"id":358},"using-the-koyeb-cli","Using the Koyeb CLI",[251,361,362,377,386,405],{"level":253},[255,363,364,365,370,371,376],{},"Follow the instructions targeting your operating system to ",[259,366,369],{"href":367,"rel":368},"https://www.koyeb.com/docs/cli/installation",[263],"install the Koyeb CLI client"," with an installer.  Alternatively, visit the ",[259,372,375],{"href":373,"rel":374},"https://github.com/koyeb/koyeb-cli/releases",[263],"releases page on GitHub"," to directly download required files.",[255,378,379,380,385],{},"Create a Koyeb API access token by visiting the ",[259,381,384],{"href":382,"rel":383},"https://app.koyeb.com/settings/api",[263],"API settings for your organization"," in the Koyeb control panel.",[255,387,388,389,401,404],{},"Log into your account with the Koyeb CLI by typing:",[311,390,392],{"className":313,"code":391,"language":315,"meta":5,"style":5},"koyeb login\n",[238,393,394],{"__ignoreMap":5},[319,395,396,398],{"class":321,"line":322},[319,397,240],{"class":325},[319,399,400],{"class":329}," login\n",[402,403],"br",{},"Paste your API credentials when prompted.",[255,406,407,408,411,412,415,416,419,420],{},"Deploy your Nitro application from a GitHub repository with the following command.  Be sure to substitute your own values for ",[238,409,410],{},"\u003CAPPLICATION_NAME>",", ",[238,413,414],{},"\u003CYOUR_GITHUB_USERNAME>",", and ",[238,417,418],{},"\u003CYOUR_REPOSITORY_NAME>",":",[311,421,423],{"className":313,"code":422,"language":315,"meta":5,"style":5},"koyeb app init \u003CAPPLICATION_NAME> \\\n   --git github.com/\u003CYOUR_GITHUB_USERNAME>/\u003CYOUR_REPOSITORY_NAME> \\\n   --git-branch main \\\n   --git-run-command \"node .output/server/index.mjs\" \\\n   --ports 3000:http \\\n   --routes /:3000 \\\n   --env PORT=3000 \\\n   --env NITRO_PRESET=koyeb\n",[238,424,425,453,485,496,507,518,529,543],{"__ignoreMap":5},[319,426,427,429,432,435,439,442,446,449],{"class":321,"line":322},[319,428,240],{"class":325},[319,430,431],{"class":329}," app",[319,433,434],{"class":329}," init",[319,436,438],{"class":437},"so5gQ"," \u003C",[319,440,441],{"class":329},"APPLICATION_NAM",[319,443,445],{"class":444},"slsVL","E",[319,447,448],{"class":437},">",[319,450,452],{"class":451},"suiK_"," \\\n",[319,454,456,459,462,465,468,470,472,474,476,479,481,483],{"class":321,"line":455},2,[319,457,458],{"class":451},"   --git",[319,460,461],{"class":329}," github.com/",[319,463,464],{"class":437},"\u003C",[319,466,467],{"class":329},"YOUR_GITHUB_USERNAM",[319,469,445],{"class":444},[319,471,448],{"class":437},[319,473,222],{"class":329},[319,475,464],{"class":437},[319,477,478],{"class":329},"YOUR_REPOSITORY_NAM",[319,480,445],{"class":444},[319,482,448],{"class":437},[319,484,452],{"class":451},[319,486,488,491,494],{"class":321,"line":487},3,[319,489,490],{"class":451},"   --git-branch",[319,492,493],{"class":329}," main",[319,495,452],{"class":451},[319,497,499,502,505],{"class":321,"line":498},4,[319,500,501],{"class":451},"   --git-run-command",[319,503,504],{"class":329}," \"node .output/server/index.mjs\"",[319,506,452],{"class":451},[319,508,510,513,516],{"class":321,"line":509},5,[319,511,512],{"class":451},"   --ports",[319,514,515],{"class":329}," 3000:http",[319,517,452],{"class":451},[319,519,521,524,527],{"class":321,"line":520},6,[319,522,523],{"class":451},"   --routes",[319,525,526],{"class":329}," /:3000",[319,528,452],{"class":451},[319,530,532,535,538,541],{"class":321,"line":531},7,[319,533,534],{"class":451},"   --env",[319,536,537],{"class":329}," PORT=",[319,539,540],{"class":451},"3000",[319,542,452],{"class":451},[319,544,546,548],{"class":321,"line":545},8,[319,547,534],{"class":451},[319,549,550],{"class":329}," NITRO_PRESET=koyeb\n",[246,552,554],{"id":553},"using-a-docker-container","Using a docker container",[251,556,557,572],{"level":253},[255,558,559,560,563,564],{},"Create a ",[238,561,562],{},".dockerignore"," file in the root of your project and add the following lines:",[311,565,570],{"className":566,"code":568,"language":569},[567],"language-text","Dockerfile\n.dockerignore\nnode_modules\nnpm-debug.log\n.nitro\n.output\n.git\ndist\nREADME.md\n","text",[238,571,568],{"__ignoreMap":5},[255,573,574,575,578,579],{},"Add a ",[238,576,577],{},"Dockerfile"," to the root of your project:",[311,580,583],{"className":581,"code":582,"language":569},[567],"FROM node:18-alpine AS base\n\nFROM base AS deps\nRUN apk add --no-cache libc6-compat\nWORKDIR /app\nCOPY package.json package-lock.json ./\nRUN npm ci\n\nFROM base AS builder\nWORKDIR /app\nCOPY --from=deps /app/node_modules ./node_modules\nCOPY . .\nRUN npm run build && npm cache clean --force\n\nFROM base AS runner\nWORKDIR /app\nRUN addgroup --system --gid 1001 nodejs\nRUN adduser --system --uid 1001 nitro\nCOPY --from=builder /app .\nUSER nitro\nEXPOSE 3000\nENV PORT 3000\nCMD [\"npm\", \"run\", \"start\"]\n",[238,584,582],{"__ignoreMap":5},[230,586,587,588,593,594,599,600,605,606,611],{},"The Dockerfile above provides the minimum requirements to run the Nitro application. You can easily extend it depending on your needs.\nYou will then need to push your Docker image to a registry. You can use ",[259,589,592],{"href":590,"rel":591},"https://hub.docker.com/",[263],"Docker Hub"," or ",[259,595,598],{"href":596,"rel":597},"https://docs.github.com/en/packages/guides/about-github-container-registry",[263],"GitHub Container Registry"," for example.\nIn the Koyeb control panel, use the image and the tag field to specify the image you want to deploy.\nYou can also use the ",[259,601,604],{"href":602,"rel":603},"https://www.koyeb.com/docs/build-and-deploy/cli/installation",[263],"Koyeb CLI","\nRefer to the Koyeb ",[259,607,610],{"href":608,"rel":609},"https://www.koyeb.com/docs/build-and-deploy/prebuilt-docker-images",[263],"Docker documentation"," for more information.",[613,614,615],"style",{},"html pre.shiki code .shcOC, html code.shiki .shcOC{--shiki-light:#6F42C1;--shiki-default:#B392F0;--shiki-dark:#B392F0}html pre.shiki code .sfrk1, html code.shiki .sfrk1{--shiki-light:#032F62;--shiki-default:#9ECBFF;--shiki-dark:#9ECBFF}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);}html pre.shiki code .so5gQ, html code.shiki .so5gQ{--shiki-light:#D73A49;--shiki-default:#F97583;--shiki-dark:#F97583}html pre.shiki code .slsVL, html code.shiki .slsVL{--shiki-light:#24292E;--shiki-default:#E1E4E8;--shiki-dark:#E1E4E8}html pre.shiki code .suiK_, html code.shiki .suiK_{--shiki-light:#005CC5;--shiki-default:#79B8FF;--shiki-dark:#79B8FF}",{"title":5,"searchDepth":455,"depth":455,"links":617},[618,619,620],{"id":248,"depth":455,"text":249},{"id":358,"depth":455,"text":359},{"id":553,"depth":455,"text":554},"Deploy Nitro apps to Koyeb.","md",{},{},{"title":177,"description":621},"OHJRqUVeoa6zPLM11SspIDyzh_OyUlc28iKLr6OatMk",[628,630],{"title":173,"path":174,"stem":175,"description":629,"children":-1},"Deploy Nitro apps to IIS.",{"title":181,"path":182,"stem":183,"description":631,"children":-1},"Deploy Nitro apps to Netlify functions or edge.",1773050452745]