[{"data":1,"prerenderedAt":545},["ShallowReactive",2],{"docs:navigation":3,"docs:page:\u002Fdocs\u002Fdeployment\u002Fazure":115},[4],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Introduction","\u002Fdocs","docs\u002F1.index",[9,11,16,21,38,95,110],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-house",{"title":12,"path":13,"stem":14,"icon":15},"Quickstart","\u002Fdocs\u002Fquickstart","docs\u002F2.quickstart","i-lucide-rocket",{"title":17,"path":18,"stem":19,"icon":20},"Essentials","\u002Fdocs\u002Fconfiguration","docs\u002F3.configuration","i-lucide-book-open",{"title":22,"path":23,"stem":24,"children":25,"icon":27},"Authentication","\u002Fdocs\u002Fauthentication","docs\u002F4.authentication\u002Findex",[26,28,33],{"title":22,"path":23,"stem":24,"icon":27},"i-lucide-shield-check",{"title":29,"path":30,"stem":31,"icon":32},"Protect User Data","\u002Fdocs\u002Fauthentication\u002Fuser-data","docs\u002F4.authentication\u002F1.user-data","i-lucide-user-lock",{"title":34,"path":35,"stem":36,"icon":37},"Two-Factor Verification","\u002Fdocs\u002Fauthentication\u002Ftwo-factor","docs\u002F4.authentication\u002F2.two-factor","i-lucide-key-round",{"title":39,"path":40,"stem":41,"children":42,"icon":44},"Deployment","\u002Fdocs\u002Fdeployment","docs\u002F5.deployment\u002Findex",[43,45,50,55,60,65,70,75,80,85,90],{"title":39,"path":40,"stem":41,"icon":44},"i-lucide-cloud-upload",{"title":46,"path":47,"stem":48,"icon":49},"Deploy to Cloudflare","\u002Fdocs\u002Fdeployment\u002Fcloudflare","docs\u002F5.deployment\u002F1.cloudflare","i-simple-icons-cloudflare",{"title":51,"path":52,"stem":53,"icon":54},"Platform Support","\u002Fdocs\u002Fdeployment\u002Fsupport","docs\u002F5.deployment\u002F10.support","i-lucide-list-checks",{"title":56,"path":57,"stem":58,"icon":59},"Deploy to Vercel","\u002Fdocs\u002Fdeployment\u002Fvercel","docs\u002F5.deployment\u002F2.vercel","i-simple-icons-vercel",{"title":61,"path":62,"stem":63,"icon":64},"Deploy to Azure","\u002Fdocs\u002Fdeployment\u002Fazure","docs\u002F5.deployment\u002F3.azure","i-simple-icons-microsoftazure",{"title":66,"path":67,"stem":68,"icon":69},"Switch Hosts","\u002Fdocs\u002Fdeployment\u002Fswitch-hosts","docs\u002F5.deployment\u002F4.switch-hosts","i-lucide-arrow-right-left",{"title":71,"path":72,"stem":73,"icon":74},"Database and File Storage","\u002Fdocs\u002Fdeployment\u002Fdata-services","docs\u002F5.deployment\u002F5.data-services","i-lucide-database",{"title":76,"path":77,"stem":78,"icon":79},"Domains and Secrets","\u002Fdocs\u002Fdeployment\u002Fsettings","docs\u002F5.deployment\u002F6.settings","i-lucide-settings",{"title":81,"path":82,"stem":83,"icon":84},"Troubleshoot Deployment","\u002Fdocs\u002Fdeployment\u002Ftroubleshooting","docs\u002F5.deployment\u002F7.troubleshooting","i-lucide-wrench",{"title":86,"path":87,"stem":88,"icon":89},"Deploy Agents","\u002Fdocs\u002Fdeployment\u002Fagents","docs\u002F5.deployment\u002F8.agents","i-lucide-bot",{"title":91,"path":92,"stem":93,"icon":94},"Deploy Automations","\u002Fdocs\u002Fdeployment\u002Fautomations","docs\u002F5.deployment\u002F9.automations","i-lucide-workflow",{"title":96,"path":97,"stem":98,"children":99,"icon":101},"Connect Accounts","\u002Fdocs\u002Fconnect","docs\u002F6.connect\u002Findex",[100,102,106],{"title":96,"path":97,"stem":98,"icon":101},"i-lucide-plug",{"title":103,"path":104,"stem":105,"icon":37},"Connection Credentials","\u002Fdocs\u002Fconnect\u002Fcredentials","docs\u002F6.connect\u002F1.credentials",{"title":107,"path":108,"stem":109,"icon":84},"Connect MCP Servers","\u002Fdocs\u002Fconnect\u002Fmcp","docs\u002F6.connect\u002F2.mcp",{"title":111,"path":112,"stem":113,"icon":114},"Project Reference","\u002Fdocs\u002Freference","docs\u002F7.reference","i-lucide-terminal",{"page":116,"surround":540},{"id":117,"title":61,"body":118,"description":533,"extension":534,"links":535,"meta":536,"navigation":537,"path":62,"seo":538,"stem":63,"__hash__":539},"docs\u002Fdocs\u002F5.deployment\u002F3.azure.md",{"type":119,"value":120,"toc":526},"minimark",[121,141,148,160,165,174,214,221,254,257,260,264,267,304,307,398,405,409,412,445,448,451,455,462,473,477,484,491,498,514,522],[122,123,124,125,129,130,133,134,137,138,140],"p",{},"Nuxt projects with ",[126,127,128],"code",{},"deploy.agent"," or ",[126,131,132],{},"deploy.automations"," also build and deploy\none separate native Durable Functions app and its private Storage account. See\n",[135,136,86],"a",{"href":87}," for dependencies, state storage, and\ngateway credentials, and ",[135,139,91],{"href":92}," for\nscheduled jobs, event waits, and integration housekeeping. Both workloads share\nthe Function app; the application database and uploaded files remain separate.",[122,142,143,144,147],{},"This guide deploys a working standalone, Nuxt, or Next.js application to Azure\nApp Service. You need an active Azure subscription, committed migrations, and\n",[135,145,146],{"href":72},"data credentials",".",[122,149,150,151,155,156,159],{},"The default App Service plan is ",[152,153,154],"strong",{},"B1",", in ",[126,157,158],{},"westeurope",". It is billable and\nremains in Azure until removed.",[161,162,164],"h2",{"id":163},"_1-select-an-active-subscription","1. Select an Active Subscription",[122,166,167,173],{},[135,168,172],{"href":169,"rel":170},"https:\u002F\u002Flearn.microsoft.com\u002Fcli\u002Fazure\u002Finstall-azure-cli",[171],"nofollow","Install Azure CLI",",\nthen sign in and list your subscriptions:",[175,176,181],"pre",{"className":177,"code":178,"language":179,"meta":180,"style":180},"language-bash shiki shiki-themes github-light github-light github-dark","az login\naz account list --output table\n","bash","",[126,182,183,196],{"__ignoreMap":180},[184,185,188,192],"span",{"class":186,"line":187},"line",1,[184,189,191],{"class":190},"snPdu","az",[184,193,195],{"class":194},"sIIMD"," login\n",[184,197,199,201,204,207,211],{"class":186,"line":198},2,[184,200,191],{"class":190},[184,202,203],{"class":194}," account",[184,205,206],{"class":194}," list",[184,208,210],{"class":209},"sBjJW"," --output",[184,212,213],{"class":194}," table\n",[122,215,216,217,220],{},"Select the subscription you want to use, replacing ",[126,218,219],{},"YOUR_SUBSCRIPTION_ID",":",[175,222,224],{"className":177,"code":223,"language":179,"meta":180,"style":180},"az account set --subscription YOUR_SUBSCRIPTION_ID\naz account show --output table\n",[126,225,226,241],{"__ignoreMap":180},[184,227,228,230,232,235,238],{"class":186,"line":187},[184,229,191],{"class":190},[184,231,203],{"class":194},[184,233,234],{"class":194}," set",[184,236,237],{"class":209}," --subscription",[184,239,240],{"class":194}," YOUR_SUBSCRIPTION_ID\n",[184,242,243,245,247,250,252],{"class":186,"line":198},[184,244,191],{"class":190},[184,246,203],{"class":194},[184,248,249],{"class":194}," show",[184,251,210],{"class":209},[184,253,213],{"class":194},[122,255,256],{},"A portal login or an Entra directory without a subscription cannot create App\nService resources. If Azure asks you to upgrade an expired free account,\ncomplete that step in the portal first. CloudConfig stops a tenant-only login\nbefore building.",[122,258,259],{},"The subscription also needs permission and regional quota to create a resource\ngroup and Linux App Service plan.",[161,261,263],{"id":262},"_2-select-azure","2. Select Azure",[122,265,266],{},"Set the host in your existing config:",[175,268,273],{"className":269,"code":270,"filename":271,"language":272,"meta":180,"style":180},"language-ts shiki shiki-themes github-light github-light github-dark","deploy: {\n  target: 'azure',\n}\n","cloud.config.ts","ts",[126,274,275,284,298],{"__ignoreMap":180},[184,276,277,280],{"class":186,"line":187},[184,278,279],{"class":190},"deploy",[184,281,283],{"class":282},"sxrX7",": {\n",[184,285,286,289,292,295],{"class":186,"line":198},[184,287,288],{"class":190},"  target",[184,290,291],{"class":282},": ",[184,293,294],{"class":194},"'azure'",[184,296,297],{"class":282},",\n",[184,299,301],{"class":186,"line":300},3,[184,302,303],{"class":282},"}\n",[122,305,306],{},"To choose a resource group, region, or subscription explicitly, add those values:",[175,308,310],{"className":269,"code":309,"filename":271,"language":272,"meta":180,"style":180},"deploy: {\n  target: 'azure',\n  azure: {\n    subscription: 'your-subscription-id',\n    resourceGroup: 'blog-production',\n    location: 'westeurope',\n    sku: 'B1',\n  },\n}\n",[126,311,312,318,328,335,348,361,374,387,393],{"__ignoreMap":180},[184,313,314,316],{"class":186,"line":187},[184,315,279],{"class":190},[184,317,283],{"class":282},[184,319,320,322,324,326],{"class":186,"line":198},[184,321,288],{"class":190},[184,323,291],{"class":282},[184,325,294],{"class":194},[184,327,297],{"class":282},[184,329,330,333],{"class":186,"line":300},[184,331,332],{"class":190},"  azure",[184,334,283],{"class":282},[184,336,338,341,343,346],{"class":186,"line":337},4,[184,339,340],{"class":190},"    subscription",[184,342,291],{"class":282},[184,344,345],{"class":194},"'your-subscription-id'",[184,347,297],{"class":282},[184,349,351,354,356,359],{"class":186,"line":350},5,[184,352,353],{"class":190},"    resourceGroup",[184,355,291],{"class":282},[184,357,358],{"class":194},"'blog-production'",[184,360,297],{"class":282},[184,362,364,367,369,372],{"class":186,"line":363},6,[184,365,366],{"class":190},"    location",[184,368,291],{"class":282},[184,370,371],{"class":194},"'westeurope'",[184,373,297],{"class":282},[184,375,377,380,382,385],{"class":186,"line":376},7,[184,378,379],{"class":190},"    sku",[184,381,291],{"class":282},[184,383,384],{"class":194},"'B1'",[184,386,297],{"class":282},[184,388,390],{"class":186,"line":389},8,[184,391,392],{"class":282},"  },\n",[184,394,396],{"class":186,"line":395},9,[184,397,303],{"class":282},[122,399,400,401,404],{},"App Service names are globally unique. By default, CloudConfig adds a stable\nsuffix based on the subscription and resource group. Set ",[126,402,403],{},"deploy.name"," only if\nyou want to supply your own globally unique app name.",[161,406,408],{"id":407},"_3-preview-and-deploy","3. Preview and Deploy",[122,410,411],{},"Run the deployment commands:",[175,413,415],{"className":177,"code":414,"language":179,"meta":180,"style":180},"pnpm exec cloudconfig deploy --dry-run\npnpm exec cloudconfig deploy\n",[126,416,417,434],{"__ignoreMap":180},[184,418,419,422,425,428,431],{"class":186,"line":187},[184,420,421],{"class":190},"pnpm",[184,423,424],{"class":194}," exec",[184,426,427],{"class":194}," cloudconfig",[184,429,430],{"class":194}," deploy",[184,432,433],{"class":209}," --dry-run\n",[184,435,436,438,440,442],{"class":186,"line":198},[184,437,421],{"class":190},[184,439,424],{"class":194},[184,441,427],{"class":194},[184,443,444],{"class":194}," deploy\n",[122,446,447],{},"The dry run validates local configuration, migration metadata, and required\nsettings. It makes no provider calls or remote schema checks.",[122,449,450],{},"Deployment builds locally and packages the runtime before applying migrations.\nIt creates or reuses the resource group, Linux App Service plan, and app, then\nmigrates the database, applies settings, and uploads the archive.",[161,452,454],{"id":453},"_4-check-the-running-app","4. Check the Running App",[122,456,457,458,461],{},"Open the printed Azure URL and ",[126,459,460],{},"\u002Fapi\u002F_docs",". Test sign-in and a write followed\nby a read.",[122,463,464,465,468,469,472],{},"If the upload succeeds but the app does not start, open ",[152,466,467],{},"App Service → Log\nstream"," and ",[152,470,471],{},"Deployment Center → Logs",". Check the first startup error and\ndatabase credentials before redeploying.",[161,474,476],{"id":475},"how-your-framework-runs","How Your Framework Runs",[122,478,479,480,483],{},"Standalone and Nuxt applications run as Node.js servers. Next.js uses its\nofficial standalone output. CloudConfig adds ",[126,481,482],{},"output: 'standalone'"," to standard\nNext config shapes when needed. Conflicting output settings and custom config\nfunctions are preserved; the CLI explains the required setup.",[122,485,486,487,490],{},"In a Next.js monorepo, set ",[126,488,489],{},"outputFileTracingRoot"," to include workspace\ndependencies. Dependencies outside the packaged runtime stop deployment before\nmigrations, so broken links are not uploaded.",[122,492,493,494,497],{},"The archive includes built files and runtime dependencies. Local ",[126,495,496],{},".env",", SQLite\ndatabases, and uploads are excluded from traced standalone and Next.js runtimes.\nSettings go through a temporary private file that is removed after use.",[122,499,500,501,504,505,508,509,147],{},"CloudConfig sets the startup command and binds the server to ",[126,502,503],{},"0.0.0.0"," on App\nService's ",[126,506,507],{},"PORT",". Azure does not reinstall or rebuild the source. The adapter\nuses the ",[135,510,513],{"href":511,"rel":512},"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fcli\u002Fazure\u002Fwebapp",[171],"App Service CLI",[122,515,516,517,521],{},"Use the Azure hostname for the first deployment. See\n",[135,518,520],{"href":519},"\u002Fdocs\u002Fdeployment\u002Fsettings#use-your-own-domain","domain setup"," before moving traffic.",[523,524,525],"style",{},"html pre.shiki code .snPdu, html code.shiki .snPdu{--shiki-light:#6F42C1;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sIIMD, html code.shiki .sIIMD{--shiki-light:#032F62;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sBjJW, html code.shiki .sBjJW{--shiki-light:#005CC5;--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .sxrX7, html code.shiki .sxrX7{--shiki-light:#24292E;--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":180,"searchDepth":198,"depth":198,"links":527},[528,529,530,531,532],{"id":163,"depth":198,"text":164},{"id":262,"depth":198,"text":263},{"id":407,"depth":198,"text":408},{"id":453,"depth":198,"text":454},{"id":475,"depth":198,"text":476},"Publish a locally built application to a Linux App Service running Node.js 22.","md",null,{},{"icon":64},{"title":61,"description":533},"pvc1tUOzYMCFD7e8HLgVkTfmvSKPKkGZlMKMyR16Y04",[541,543],{"title":56,"path":57,"stem":58,"description":542,"icon":59},"Publish your application as production Vercel Functions.",{"title":66,"path":67,"stem":68,"description":544,"icon":69},"Move the application first while keeping the same production database and files.",1792122403883]