[{"data":1,"prerenderedAt":625},["ShallowReactive",2],{"navigation":3,"-deploy-providers-koyeb":217,"-deploy-providers-koyeb-surround":620},[4,83,208,214],{"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":5,"path":215,"stem":216},"/","index",{"id":218,"title":177,"body":219,"description":614,"extension":615,"meta":616,"navigation":617,"path":178,"seo":618,"stem":179,"__hash__":619},"content/2.deploy/20.providers/koyeb.md",{"type":220,"value":221,"toc":609},"minimark",[222,234,238,243,349,353,544,548,578,605],[223,224,225,229,230],"p",{},[226,227,228],"strong",{},"Preset:"," ",[231,232,233],"code",{},"koyeb",[235,236],"read-more",{"to":237},"https://www.koyeb.com",[239,240,242],"h2",{"id":241},"using-the-control-panel","Using the control panel",[244,245,247,263,270,281,284,324,340,343],"steps",{"level":246},"4",[248,249,250,251,258,259,262],"h4",{},"In the ",[252,253,257],"a",{"href":254,"rel":255},"https://app.koyeb.com/",[256],"nofollow","Koyeb control panel",", click ",[226,260,261],{},"Create App",".",[248,264,265,266,269],{},"Choose ",[226,267,268],{},"GitHub"," as your deployment method.",[248,271,272,273,276,277,280],{},"Choose the GitHub ",[226,274,275],{},"repository"," and ",[226,278,279],{},"branch"," containing your application code.",[248,282,283],{},"Name your Service.",[248,285,286,287,290,291,294,295,298,299,302,303],{},"If you did not add a ",[231,288,289],{},"start"," command to your ",[231,292,293],{},"package.json"," file, under the ",[226,296,297],{},"Build and deployment settings",", toggle the override switch associated with the run command field.  In the ",[226,300,301],{},"Run command"," field, enter:",[304,305,309],"pre",{"className":306,"code":307,"language":308,"meta":5,"style":5},"language-bash shiki shiki-themes github-light github-dark github-dark","node .output/server/index.mjs`\n","bash",[231,310,311],{"__ignoreMap":5},[312,313,316,320],"span",{"class":314,"line":315},"line",1,[312,317,319],{"class":318},"shcOC","node",[312,321,323],{"class":322},"sfrk1"," .output/server/index.mjs`\n",[248,325,250,326,329,330,333,334,337,338,262],{},[226,327,328],{},"Advanced"," section, click ",[226,331,332],{},"Add Variable"," and add a ",[231,335,336],{},"NITRO_PRESET"," variable set to ",[231,339,233],{},[248,341,342],{},"Name the App.",[248,344,345,346,348],{},"Click the ",[226,347,84],{}," button.",[239,350,352],{"id":351},"using-the-koyeb-cli","Using the Koyeb CLI",[244,354,355,370,379,398],{"level":246},[248,356,357,358,363,364,369],{},"Follow the instructions targeting your operating system to ",[252,359,362],{"href":360,"rel":361},"https://www.koyeb.com/docs/cli/installation",[256],"install the Koyeb CLI client"," with an installer.  Alternatively, visit the ",[252,365,368],{"href":366,"rel":367},"https://github.com/koyeb/koyeb-cli/releases",[256],"releases page on GitHub"," to directly download required files.",[248,371,372,373,378],{},"Create a Koyeb API access token by visiting the ",[252,374,377],{"href":375,"rel":376},"https://app.koyeb.com/settings/api",[256],"API settings for your organization"," in the Koyeb control panel.",[248,380,381,382,394,397],{},"Log into your account with the Koyeb CLI by typing:",[304,383,385],{"className":306,"code":384,"language":308,"meta":5,"style":5},"koyeb login\n",[231,386,387],{"__ignoreMap":5},[312,388,389,391],{"class":314,"line":315},[312,390,233],{"class":318},[312,392,393],{"class":322}," login\n",[395,396],"br",{},"Paste your API credentials when prompted.",[248,399,400,401,404,405,408,409,412,413],{},"Deploy your Nitro application from a GitHub repository with the following command.  Be sure to substitute your own values for ",[231,402,403],{},"\u003CAPPLICATION_NAME>",", ",[231,406,407],{},"\u003CYOUR_GITHUB_USERNAME>",", and ",[231,410,411],{},"\u003CYOUR_REPOSITORY_NAME>",":",[304,414,416],{"className":306,"code":415,"language":308,"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",[231,417,418,446,478,489,500,511,522,536],{"__ignoreMap":5},[312,419,420,422,425,428,432,435,439,442],{"class":314,"line":315},[312,421,233],{"class":318},[312,423,424],{"class":322}," app",[312,426,427],{"class":322}," init",[312,429,431],{"class":430},"so5gQ"," \u003C",[312,433,434],{"class":322},"APPLICATION_NAM",[312,436,438],{"class":437},"slsVL","E",[312,440,441],{"class":430},">",[312,443,445],{"class":444},"suiK_"," \\\n",[312,447,449,452,455,458,461,463,465,467,469,472,474,476],{"class":314,"line":448},2,[312,450,451],{"class":444},"   --git",[312,453,454],{"class":322}," github.com/",[312,456,457],{"class":430},"\u003C",[312,459,460],{"class":322},"YOUR_GITHUB_USERNAM",[312,462,438],{"class":437},[312,464,441],{"class":430},[312,466,215],{"class":322},[312,468,457],{"class":430},[312,470,471],{"class":322},"YOUR_REPOSITORY_NAM",[312,473,438],{"class":437},[312,475,441],{"class":430},[312,477,445],{"class":444},[312,479,481,484,487],{"class":314,"line":480},3,[312,482,483],{"class":444},"   --git-branch",[312,485,486],{"class":322}," main",[312,488,445],{"class":444},[312,490,492,495,498],{"class":314,"line":491},4,[312,493,494],{"class":444},"   --git-run-command",[312,496,497],{"class":322}," \"node .output/server/index.mjs\"",[312,499,445],{"class":444},[312,501,503,506,509],{"class":314,"line":502},5,[312,504,505],{"class":444},"   --ports",[312,507,508],{"class":322}," 3000:http",[312,510,445],{"class":444},[312,512,514,517,520],{"class":314,"line":513},6,[312,515,516],{"class":444},"   --routes",[312,518,519],{"class":322}," /:3000",[312,521,445],{"class":444},[312,523,525,528,531,534],{"class":314,"line":524},7,[312,526,527],{"class":444},"   --env",[312,529,530],{"class":322}," PORT=",[312,532,533],{"class":444},"3000",[312,535,445],{"class":444},[312,537,539,541],{"class":314,"line":538},8,[312,540,527],{"class":444},[312,542,543],{"class":322}," NITRO_PRESET=koyeb\n",[239,545,547],{"id":546},"using-a-docker-container","Using a docker container",[244,549,550,565],{"level":246},[248,551,552,553,556,557],{},"Create a ",[231,554,555],{},".dockerignore"," file in the root of your project and add the following lines:",[304,558,563],{"className":559,"code":561,"language":562},[560],"language-text","Dockerfile\n.dockerignore\nnode_modules\nnpm-debug.log\n.nitro\n.output\n.git\ndist\nREADME.md\n","text",[231,564,561],{"__ignoreMap":5},[248,566,567,568,571,572],{},"Add a ",[231,569,570],{},"Dockerfile"," to the root of your project:",[304,573,576],{"className":574,"code":575,"language":562},[560],"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",[231,577,575],{"__ignoreMap":5},[223,579,580,581,586,587,592,593,598,599,604],{},"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 ",[252,582,585],{"href":583,"rel":584},"https://hub.docker.com/",[256],"Docker Hub"," or ",[252,588,591],{"href":589,"rel":590},"https://docs.github.com/en/packages/guides/about-github-container-registry",[256],"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 ",[252,594,597],{"href":595,"rel":596},"https://www.koyeb.com/docs/build-and-deploy/cli/installation",[256],"Koyeb CLI","\nRefer to the Koyeb ",[252,600,603],{"href":601,"rel":602},"https://www.koyeb.com/docs/build-and-deploy/prebuilt-docker-images",[256],"Docker documentation"," for more information.",[606,607,608],"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":448,"depth":448,"links":610},[611,612,613],{"id":241,"depth":448,"text":242},{"id":351,"depth":448,"text":352},{"id":546,"depth":448,"text":547},"Deploy Nitro apps to Koyeb.","md",{},{},{"title":177,"description":614},"OHJRqUVeoa6zPLM11SspIDyzh_OyUlc28iKLr6OatMk",[621,623],{"title":173,"path":174,"stem":175,"description":622,"children":-1},"Deploy Nitro apps to IIS.",{"title":181,"path":182,"stem":183,"description":624,"children":-1},"Deploy Nitro apps to Netlify functions or edge.",1764005315291]