Repository navigation
Deploying the Functions runtime as a private site extension
Mathew Charles edited this page Oct 31, 2025
·
25 revisions
⚠️ If you're on the Azure Functions team, please to refer to these docs
If you already have a Function App, you can use the following steps to deploy your own Functions runtime as a private site extension. Note: these steps only work on Functions Apps on a regular App Service Plan and not on Function Apps on a Consumption Plan.
- First you need a Functions.Private.zip site extension package in the proper format
- you can get one from the release assets of the specific version on github, e.g. https://github.com/Azure/azure-functions-host/releases/tag/v3.0.14916 and
Functions.Private.3.0.14916.win-x32.inproc.zipis the specific asset in this case. - or you can build the private package yourself:
-
V1:
- In VS, right click the WebJobs.Script.WebHost project and choose Publish
- Select the existing FolderProfile profile and click Publish. This will create the bits under
.\src\WebJobs.Script.WebHost\bin\Release\SiteExtensions - Zip up the SiteExtensions folder to produce a Functions.Private.zip file (Right-click > Send to Zip on the SiteExtensions folder - you can double check it looks like the zip from AppVeyor if you're unsure)
-
V2:
- From root, run build.ps1
- Use
./buildoutput/Functions.Private.2.0.0-prerelease.no-runtime.zip - Note: if you're a functions team member, you probably want to use the
win-x32.inprocbuild. See the internal instructions for private site extensions for more details on using that.
-
V3:
- From root, run build/build-extensions.ps1
- Use
./buildoutput/Functions.Private.2.0.0-prerelease.no-runtime.zip - Note: if you're a functions team member, you probably want to use the
win-x32.inprocbuild. See the internal instructions for private site extensions for more details on using that.
-
V1:
- you can get one from the release assets of the specific version on github, e.g. https://github.com/Azure/azure-functions-host/releases/tag/v3.0.14916 and
- Go to the Kudu Console for the Function App that you want to use your bits on. Make sure you use a Function App on a regular App Service Plan (i.e. not Consumption), or it will not work. (You can determine this by looking at the WEBSITE_SKU environment variable in kudu. It should be "standard", not "dynamic".)
- Drag and drop the
Functions.Private.zipinto the root of your Kudu Console. i.e. this should created:\home\SiteExtensions\Functions- Access the file root from Debug Console -> (CMD or PowerShell) and drag the zip file into the right-hand side of the file list (there will be a hover indicating you're in the right place)
- In the Functions Portal, restart the Function App so that it picks up the new version
- To verify that you are running the runtime version you expect, browse to the host status endpoint at
https://and check the version returned. You can get the master key from the Azure Functions Portal, under the "Manage" tab of any function..azurewebsites.net/admin/host/status?code=
You are now using your private Functions runtime.
- Configuration Settings
- function.json
- host.json
- host.json (v2)
- Http Functions
- Function Runtime Versioning
- Official Functions developers guide
- Host Health Monitor
- Managing Connections
- Renaming a Function
- Retrieving information about the currently running function
- Site Extension Resolution
- Linux Consumption Regions
- Using LinuxFxVersion for Linux Function apps
- Out-of-proc Cancellation Tokens
- Assembly Resolution in Azure Functions
- ILogger
- Precompiled functions
- Official Functions C# developer reference
- Contributor Onboarding
- Development Process
- Deploying the Functions runtime as a private site extension
- Authoring & Testing Language Extensions
- Bindings in out-of-proc
- Language Extensibility
- Worker Capabilities
- Investigating and reporting issues with timer triggered functions not firing
- Sharing Your Function App name privately
- Azure Functions CLI release notes [moved here]
- Function App Zipped Deployment [deprecated]