Starting from SP 2013 we have to have application catalog in order to host SharePoint hosted apps which is part of SP App Model which replaces solutions you used to use in older versions of SharePoint.
This topic is documented both by MSFT and by IT community but the problem with any documentation that you have to internalize it to get clear understanding and even properly written explanations sometimes does not click for you until you do some hands on practice and, yes, internalize this information. Recently I finally decided to do some practice and create an app catalog from scratch in my test environment as well as jot down the steps which are easy to follow and more appropriate for those whose sole question is “I need an app catalog. How can I quickly set it up?”
Here is the steps:
1) Provision required service applications. You need to have Subscription Settings Service and App Management Service Applications provisioned and running. You need to use PowerShell to provision service apps:
#Adjust -Identity parameter as necessary
$msa = Get-SPManagedAccount -Identity conundrum\sp_serviceapps
#Create the App Management Service Application
$AppPool = New-SPServiceApplicationPool -Name "AppManagementAppPool" -Account $msa
$AppManagement = New-SPAppManagementServiceApplication -Name "App Management Service" -ApplicationPool $AppPool
$AppManagementProxy = New-SPAppManagementServiceApplicationProxy -Name "App Management Service Proxy" -ServiceApplication $AppManagement
#Create the Subscription Settings Service Application
$AppPool2 = New-SPServiceApplicationPool -Name "SubSettingsAppPool" -Account $msa
$SubSettings = New-SPSubscriptionSettingsServiceApplication -Name "Subscription Settings Service" -ApplicationPool $AppPool2
$SubSettingsProxy = New-SPSubscriptionSettingsServiceApplicationProxy -ServiceApplication $SubSettings
Once this script has been executed make sure to start services from CA.
2) DNS part. You have to have separate app domain or wildcard CNAME entry in existing domain (the latter is no go in production environments for security reasons). We need wildcard DNS entry just because we want dedicated DNS domain names for our apps but we don’t want to create new DNS records for each and every app which comes online. We also want to have our apps running in their own isolated DNS domain (separate TLD) outside of SharePoint – this is better isolation approach which comes with SP app model.
You can just create wildcard CNAME record in existing domain like that:
Once again this is “no go” from security POV and you either want separate TLD or sub-domain for your apps. Steps below describe how to create DNS sub-domain and wildcard CNAME entry in it.
Start DNS Manager snap-in, right-click on Forward Lookup Zones and select “New Zone…”
Next you just go through New Zone wizard mostly accepting defaults with exception of the page where you have to specify your sub-domain name, which in my case is “apps.conundrum.com”:
Once DNS sub-domain is created you can create wildcard CNAME entry which have to point to your SharePoint app server in your parent/main domain:
Here is how end result should look like in DNS Manager:
What it gives you in the end? Thanks to wildcard CNANE DNS entry in sub-domain you can ping any name in this sub-domain and it always will be resolved to your SharePoint app server IP. Example:
3) Create new App Catalog site collection. Go to CA > Apps > Manage App Catalog:
Then select Create a new app catalog site and click OK:
On the next page specify required values – Title, Web Site Address, Primary Site Collection Administrator and End Users, and click OK:
After this App Catalog sites collection will be created and you will be able to browse it:
4) Last touch 🙂 Configure App URLs. Go to CA and click on Apps to get to Configure App URLs link:
On the next page you have to specify App domain and App prefix and click OK These settings will shape your apps URLs.
This concludes App Catalog configuration and you can now test your App Catalog. As proverb puts it “The proof of pudding is in eating” and by extension we can say that “The proof of App Catalog is adding some app(s) into it”.