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