Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit

6 min read


Remote Desktop Services (RDS) is the platform of choice to cost-effectively host Windows desktops and applications. You can use an Azure Marketplace offering to quickly create a full-blown RDS farm on Azure IaaS deployment. The good news is that the Azure Stack team was busy on bringing the same experience and offering to Azure Stack as well.

What actually does the Azure marketplace, it creates a domain for you, so making it a simple and easy mechanism for testing and proof-of-concepts scenarios. The quick start ARM templates, on the other hand, allow you to use an existing domain, so you can build out a production environment. Once the set up is completed, you can connect to the published desktops and applications from various platforms and devices, using the Microsoft Remote Desktop apps for Windows, Mac, iOS, and Android.

In this blog post, I will show you how to quickly deploy and publish a remote application using Remote Desktop Services on Azure Stack.


In order to deploy Remote Desktop Services on Azure Stack as described in this article, you need to have the following:

  • Azure Stack deployed in a connected scenario. The same applies to Azure Stack Integrated Systems and Azure Stack Development Kit (ASDK).
  • Azure Stack tenant subscription (plan/offer).
  • Download Remote Desktop Services template from the Marketplace.
  • Download Windows Server 2012 R2 image from the Marketplace.
  • Download Windows Server 2016 image from the Marketplace.

This deployment will create a small-footprint RDS deployment, with the following components:

  • 1 domain controller VM (Windows Server 2016).
  • 2 Remote Desktop Session Hosts (RDSH) VMs (Windows Server 2016).
  • 1 Remote Desktop Connection Broker (RDCB) VM (Windows Server 2016).
  • 1 Remote Desktop Gateway (RDGW) VM (Windows Server 2016).
  • A public IP address, virtual network, load balancer, and other required networking components.

Deploy Remote Desktop Services on Azure Stack

Assume you already have all the prerequisites in place. Take now the following steps:

As an Azure Stack operator, login to the Azure Stack admin portal and download the Remote Desktop Services (RDS) – Basic – Dev/Test from the Azure marketplace.

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 1

As an Azure Stack tenant, login to the Azure Stack portal and Create Remote Desktop Services deployment by taking the following steps:

In the Basics page, provide an Admin username, password, create or select an existing resource group, and then select the location. Click OK to continue.

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 2

In the Domain and network settings page, create a public IP address name, provide a DNS name to access the RD gateway, and then provide a desired domain name for the Active Directory VM. Click OK to continue.

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 3

In the RDSH and VM settings page, select which Windows Server SKU image do you want to use (assuming you already have downloaded Windows Server 2016 Datacenter or Windows Server 2012 R2 Datacenter images), specify how many RD Session Host instances do you need (the default is 2), and then select the size for each VM. Click OK to continue.

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 4

In the Summary page, review the settings and wait until the validation passed and then click OK to continue.

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 5

In the Buy page, read the Terms of use and click Create.

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 6

After approximately one hour and a half, you will see 20 resources deployed and created successfully a shown in the next screenshot.

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 7

When the deployment is completed, you can check the output of the deployment in the resource group under Deployments. Note the RD WEB URL, you need this web link to access your Remote Apps (more on that in the next section).

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 8

Publish RemoteApp Programs on Azure Stack

As part of the deployment, the domain controller is automatically configured and ready to use as well as all VMs are joined to the domain and configured with the necessary RDS roles (RD Connection Broker, RD Licensing, RD Gateway, RD Web Access, and RD Session Host).

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 9

The next step is to select the RemoteApp program that you want to publish for the users to access.

Sign in to GW-VM on Azure Stack. Select Server Manager > right-click All Servers > Add Servers.

Add the following servers: Broker, Gateway, RDSH-0, and RDSH-1.

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 10

Once added, browse to the Remote Desktop Services view in Server Manager, the RDS Deployment Overview displays.

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 11

Browse to the Desktop Collection under Collections and click Publish RemoteApp programs. In this example, I will publish WordPad and Calculator programs (of course, you can install your preferred application on each RDS host and then publish it). Click Publish and then click Close.

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 12

Now your application is ready for the users to access.

Open your web browser and type the RD WEB URL that you get from the output of the deployment above. In my example, it’s https://rds.local.cloudapp.azurestack.external/RdWeb

Enter your domain user name and password, and click Sign in. As a side note, the RD Web Access page can be fully customized based on your organization needs.

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 13

Select your application and click connect.

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 14

As a side note, if you are validating Remote Desktop Services on Azure Stack by using a Self-Signed Certificate and not using a third-party certificate, then you need to export the certificate manually from the RD Gateway machine and import it on the machine from where you want to access the applications. If you don’t do that, you will get an error stating that “This computer can’t verify the identity of the RD Gateway. It’s not safe to connect to servers that can’t be identified“. For production, it’s recommended to update the certificate on the RD Gateway and use a third-party certificate.

Deploy Remote Desktop Services (RDS) On #AzureStack #Azure #AzureStackDevKit 15

Finally, you can connect to the remote application and verify it’s accessible. You can also test the load balancing by turning off one of the RD Session Host (RDSH-0 or RDSH-1) and ensure that you are still able to access Remote App sessions.


Remote Desktop Services on Azure Stack is a great solution for organizations that need workloads to stay on-premises while providing Desktop as a Service (DaaS) solution for remote users.

At the time of this writing, you can only host remote application and remote desktop session based on RD Session Host. Virtual Desktop Infrastructure (VDI) based on RD Virtualization Host is not yet available on Azure Stack.

Microsoft announced at Ignite 2018 conference in Orlando, Florida that they are working on GPU support for Azure Stack. Azure Stack GPU support will bring Azure n-series virtual machines to Azure Stack which then can be used for various scenarios. Microsoft was not mentioning the exact timeline, but it looks like we can expect this in the near future.

Thank you for reading my blog.

If you have any questions or feedback, please leave a comment.

-Charbel Nemnom-

About Charbel Nemnom 579 Articles
Charbel Nemnom is a Cloud Architect, Swiss Certified ICT Security Expert, Microsoft Most Valuable Professional (MVP), and Microsoft Certified Trainer (MCT), totally fan of the latest's IT platform solutions, accomplished hands-on technical professional with over 17 years of broad IT Infrastructure experience serving on and guiding technical teams to optimize the performance of mission-critical enterprise systems. Excellent communicator is adept at identifying business needs and bridging the gap between functional groups and technology to foster targeted and innovative IT project development. Well respected by peers through demonstrating passion for technology and performance improvement. Extensive practical knowledge of complex systems builds, network design, business continuity, and cloud security.

Be the first to comment

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.