Configurare le RemoteApp con i Remote Desktop Services di Windows Server 2016, Windows Server 2019 e Windows Server 2022

I Remote Desktop Services (RDS) sono una piattaforma di presentation virtualization che permette agli utenti di poter accedere in desktop remoto alle applicazioni, senza che queste vengano installate sulle proprie macchine. La tecnologia esiste fin da NT 4.0 (NT 4.0 Terminal server è stato rilasciato nel 1998) ed è sicuramente una tecnologia matura, che offre il vantaggio di poter utilizzare le applicazioni e dati indipendentemente da dove si stia effettuando la connessione. È possibile collegarsi direttamente all’intero desktop remoto (jn questo caso si parla di VDI – Virtual Desktop Infrastructure) oppure è possibile visualizzare solo l’applicazione remota (RemoteApp – Session based virtualization).

In questa guida ci occuperemo di configurare proprio le RemoteApp, applicazioni installate ed eseguite in remoto in un server terminal, che quando vengono lanciate sembra che siano eseguite sul pc dell’utente come se fossero delle applicazioni locali, migliorando di molto l’esperienza utente visto che non c’è possibilità di confondersi come quando le connessioni terminal visualizzano due desktop (uno locale del pc da cui ci si connette ed uno remoto del server terminal).

Figura 1: Ruoli e server utilizzati dai Remote Desktop Services

Per creare un RDS Session-based deployment abbiamo bisogno di installare in Windows Server 2016 i seguenti ruoli dei Remote Desktop Services:

  • Remote Desktop Session Host – è il server in cui sono installate le applicazioni che vogliamo utilizzare
  • Remote Desktop Connection Broker – è il server che si occupa di gestire le connessioni verso i Session Host e verso le RemoteApp
  • Remote Desktop Web Access – consente agli utenti di accedere alla RemoteApp tramite un portale web ed un browser
  • Remote Desktop Licensing Server – è il server che controlla che abbiate le licenze per potervi collegare (RDS CAL)
  • Remote Desktop Gateway (opzionale) – questo server utilizza il Remote Desktop Protocol (RDP) su HTTPS per stabilire una connessione sicura e crittografata tra utenti remoti in Internet e i Session Host interni alla nostra rete in cui vengono eseguiti le applicazioni

Installazione dei Remote Desktop Services

Già in Windows Server 2012 è stata migliorata molto l’installazione dei servizi necessari a creare una RDS Farm. Nella nostra guida utilizzerò un solo server (chiamato RDS01), che ho aggiunto al dominio demo.lab, che ospiterà i ruoli di Session Host, Connection Server e Web Access. È possibile installare i ruoli su server diversi, anche per poterne moltiplicare il numero ed evitare i single point of failure. Se volete maggiori informazioni su come realizzare un’infrastruttura RDS altamente disponibile vi consiglio di leggere la guida Configurare l’alta disponibilità dei Remote Desktop Services in Windows Server 2016 e Windows Server 2019

Sul mio server RDS01, dopo averlo aggiunto al dominio, ho lanciato il wizard per l’aggiunta dei ruoli e ho scelto Remote Desktop Services installation, come mostrato in figura:

Figura 2: Scelta dell’installazione Remote Desktop Serrvices

Nel passaggio successivo vi verrà chiesto in che modo volete configurare il vostro deployment. La scelta si può fare utilizzando la modalità Quick Start, che installa tutti i ruoli su una sola macchina, la modalità Standard, che vi permette di differenziare i ruoli su macchine diverse (utile per l’alta disponibilità) e i servizi MultiPoint, una novità di Windows Server 2016. Scegliete Standard Deployment e fate clic su Next

Figura 3: Scelta della modalità Standard per la creazione dell’infrastruttura RDS

Nel passaggio successivo dovrete scegliere se volete utilizzare delle macchine virtuali (VDI) per accedere alle vostre applicazioni o se volete utilizzare dei Terminal Server che ospiteranno le vostre RemoteApp. Scegliete Session-based desktop deployment e fate clic su Next

Figura 4: Session-based deployment

Il wizard a questo punto vi confermerà quali ruoli sono necessari per la vostra infrastruttura. Come potete notate dalla figura sotto, dovrete installare 3 ruoli: Session Host, Connection Broker e Web Access.

Figura 5: Ruoli che sono necessari alla creazione della nostra infrastruttura RDS

NOTA: Se volete distribuire i ruoli su più server è necessario aggiungerli preventivamente al Server Pool che Windows Server potrà gestire. Maggiori informazioni sono reperibili leggendo l’articolo add Servers to Server Manager

Proseguite il vostro wizard e aggiungete quindi il server RDS01 alla lista dei server su cui installare il ruolo di Connecion Broker, come mostrato in figura:

Figura 7: Scelta dei server su cui installare il ruolo di Connection Broker

Nel passaggio successivo indicate su quali server installare il ruolo di Web Access. Io ho scelto di installare il Web Access sul Connection Broker server.

Figura 8: Scelta del server su cui installare il ruolo di Web Access

Terminate il wizard scegliendo su quali server installare il ruolo di Session Host. Avendo più server collegati al Server Manager le operazioni vengono enormemente semplificate, visto che non è necessario ripeterle per ogni server che deve far parte della nostra infrastruttura RDS.

Figura 9: Aggiunta del server su cui verrà installato il ruolo di Session Host

Nella pagina di conferma vi viene segnalato che per completare l’installazione del ruolo Session Host sarà necessario il riavvio del server. Mettete un segno di spunta nella casella se volete che dopo l’installazione del ruolo il riavvio del server avvenga in automatico.

Figura 10: Schermata finale del wizard di creazione dello standard deployment RDS

Dopo qualche minuto, l’installazione dei ruoli sarà completata e il server si riavvierà. Subito dopo il riavvio, loggatevi al server RDS01 e si riaprirà in automatico il wizard, che dopo aver completato le ultime operazioni di configurazione, vi segnalerà che il deployment è terminato.

Figura 11: Completamento del deployment

Installazione delle applicazioni su server Session Host

Procedete ad installare le applicazioni sul server Session Host. Io ho deciso di distribuire Office 2016. Per installare qualsiasi applicazione su un Terminal Server è necessario andare nel pannello di controllo e scegliere la voce Install Application on Remote Desktop Server. Prima di installare qualsiasi applicazione, infatti, il server Session Host deve essere posto in una speciale modalità (Install Mode) per assicurarsi che l’applicazione possa essere eseguita in un ambiente multi-utente. Scegliete l’eseguibile dell’applicazione utilizzando il pulsante Browse e fate clic su Next.

Figura 12: Il Session Host deve esser emesso in modalità Install Mode prima di installare qualsiasi applicazione

Dopo aver terminato l’installazione dell’applicazione fate clic su Finish nella finestra del Finish Admin install, che si illuminerà da solo. Installate tutte le altre applicazioni seguendo lo stesso metodo. Nella figura è mostrato il setup di Office 2016 che sta per iniziare e la schermata del Finish Admin Install, che vi invita a cliccare il pulsante Finish
solo al termine dell’installazione.

Figura 13: Installazione dell’applicazione e Finish Admin Install

Creazione della Session Collection

Una Session Collection è un insieme di applicazioni o di desktop che volete rendere disponibili ai vostri utenti. Gran parte delle operazioni di configurazione dei servizi RDS si fanno direttamente dal Server Manager. Cliccate sul nodo relativo ai Remote Desktop Services e dalla scheda Overview cliccate su Create session collection. Si aprirà immediatamente il wizard di creazione, come mostrato in figura:

Figura 14: Creazione della Session Collection

Nella schermata successiva date un nome indicativo alla vostra Session Collection

Figura 15: Nome della Session Collection

Nel passaggio successivo dovrete indicare quali server Session Host saranno aggiunti alla Collection e a cui gli utenti si collegheranno quando vorranno utilizzare le applicazioni.

Figura 16: aggiunta dei server Session Host alla Session Collection

Specificate quali sono gli utenti o i gruppi di utenti che dovranno accedere alla Session Collection. In genere io preferisco creare dei gruppi in Active Directory che abbiano il nome dell’applicazione (in questo caso Office2016Users), in modo tale da poter concedere l’accesso alle RemoteApp semplicemente aggiungendo l’utente al gruppo autorizzato.

Figura 17: Gruppo autorizzato all’accesso della Session Collection

Nel passaggio successivo vi verrà chiesto se volete abilitare gli User Profile Disks. Gli User Profile Disks, negli scenari RDS, sono un’alternativa ai Roaming Profile e alla Folder Redirection. Il profilo dell’utente (Desktop, Documenti, Application data, ecc.) viene inserito in un disco virtuale (con estensione .VHDX) che ha il nome UVHD-SIDutente e, quando un utente si connette in sessione remota, questo disco virtuale viene agganciato al Session Host dove l’utente si collega, facendo in modo che l’utente possa accedere sempre ai propri file indipendentemente a quale Session Host si sia collegato (se ne avete più di uno nel vostro deployment).

Figura 18: Aggiunta degli User Profile Disks

Completate il wizard di creazione della Session Collection facendo clic sul pulsante Create.

Figura 19: Completamento del wizard di creazione della Session Collection

Aggiunta delle applicazioni alla Session Collection

Per poter aggiungere le applicazioni alla Session Collection e permettere ai vostri utenti di utilizzare le RemoteApp è necessario selezionare la collection dal Server Manager e cliccare, nel riquadro RemoteApp Programs su Tasks e su Publish RemoteApp Programs, come mostrato in figura:

Figura 20: Aggiunta delle RemoteApp

Il wizard di pubblicazione delle RemoteApp andrà ad interrogare uno dei Session Host che avete precedentemente aggiunto alla Collection per sapere quali applicazioni sono installate. Se avete diversi Session Host aggiunti al vostro deployment assicuratevi ovviamente che tutti abbiano le stesse applicazioni installate!

Figura 21: Scelta delle applicazioni da esporre come Remote App

Confermate la scelta delle applicazioni cliccando sul pulsate Publish.

Figura 22: Conferma della scelta delle applicazioni

Aggiunta dei certificati digitali ai Remote Desktop Services

I Remote Desktop Services utilizzano i certificati digitali per firmare il traffico e le comunicazioni che avvengono tra i computer. Quando un client si connette al server, l’identità del server viene verificata tramite certificato. Maggiori informazioni sui certificati da utilizzare con I remote Desktop Services possono essere reperite al link Using certificates in Remote Desktop Services

Io ho provveduto a comprare un certificato digitale di tipo wildcard valido per *.nicolaferrini.it e quindi utilizzabile per qualsiasi nome host. Se volete potete utilizzare una Certification Authority interna oppure utilizzare un certificato Self-Signed (anche se lo sconsiglio).

Per aggiungere un certificato al vostro deployment spostatevi nella scheda Overview e da Tasks scegliete Edit Deployment Properties, come mostrato in figura:

Figura 23: Modifica del deployment per l’aggiunta dei certificati digitali

In Configure the deployment provvedete ad installare i certificati per i diversi ruoli del vostro deployment (Connection Broker e Web Access). La procedura è mostrata in figura.

Figura 24: Aggiunta dei certificati digitali ai diversi ruoli RDS

Figura 25: Aggiunta dei certificati digitali completata

A questo punto il deployment è terminato. Siete pronti per verificarne il funzionamento.

Connessione alle RemoteApp della Session Collection

Loggatevi all’indirizzo del vostro Web Access. Nel mio caso l’host si chiama rds01.demo.lab, ma l’ho anche pubblicato esternamente con il nome apps.nicolaferrini.it. L’indirizzo completo a cui collegarvi è quindi https://apps.nicolaferrini.it/rdweb. Avendo installato un certificato valido non ottengo nessun messaggio di errore. Dalla schermata di login inserite le credenziali di un utente che avete aggiunto al gruppo autorizzato ad accedere alla vostra Session Collection, come mostrato in figura:

Figura 26: Connessione al Web Access

Dopo aver inserito le credenziali vi appariranno le icone delle applicazioni (RemoteApp) che avete deciso di aggiungere alla vostra Session Collection. Cliccate su una delle icone per aprire la connessione verso il Session Host e lanciare il programma.

Figura 27: RemoteApp disponibili per la connessione

Dopo aver lanciato la connessione verso l’applicazione, vi apparirà un messaggio in cui vi verrà chiesto se considerare attendibile il Publisher dell’applicazione. In più vi verranno date indicazioni anche sul computer remoto a cui vi state connettendo.

Figura 28: Avviso sull’attendibilità del Publisher dell’applicazione

Reinserite le credenziali di accesso alla RemoteApp e finalmente vi si aprirà una finestra con l’applicazione che avete lanciato.

Figura 29: Inserimento delle credenziali di accesso all’applicazione

Sulla barra delle applicazioni sarà visibile l’icona di Word 2016 con il simbolo dell’RDP e la finestra di Word sarà ridimensionabile e riducibile ad icona, come se l’applicazione fosse installata localmente. In realtà l’applicazione è eseguita in remoto sul Session Host.

Figura 30: La RemoteApp viene aperta ed è possibile lavorarci

Subito dopo la connessione viene anche visualizzato un popup che vi avvisa a quale computer siete connessi. Da questo momento in poi potete lanciare tutte le applicazioni che volete, anche più volte la stessa applicazione. Se volete disconnettervi da Remote Desktop Session Host è possibile cliccare col tasto destro sull’icona nella barra delle applicazioni e scegliere una delle opzioni, come mostrato in figura:

Figura 31: Disconnessione dal Remote Desktop Session Host

Se avete deciso di usare gli User Profile Disks potete anche visualizzare cosa è stato creato nella cartella condivisa dove avete deciso di posizionarli, come mostrato in figura:

Figura 32: User Profile Disks creati dopo le connessioni al Session Host

Invece di utilizzare un browser, per poter accedere alle RemoteApp è anche possibile far apparire l’elenco delle applicazioni direttamente nel menù avvio di Windows. Collegatevi al Pannello di Controllo del vostro client e cliccate sull’icona RemoteApp and Desktop Connections.

Figura 33: Aggiunta delle RemoteApp al menù avvio di Windows

Nel wizard di configurazione inserite l’indirizzo del vostro server Web Access, formattandolo come richiesto.

Figura 34: indirizzo del Web Access da contattare

Dopo la richiesta di autenticazione, che va fatta solo la prima volta, vi verrà mostrato il numero di applicazioni che siete abilitati ad eseguire.

Figura 35: Connessione al Web Access completata

Da questo momento in poi le applicazioni potranno essere lanciate direttamente dal menu avvio di Windows.

Figura 36: RemoteApp presenti nel menù avvio di Windows

Aggiunta del Remote Desktop Gateway per proteggere le connessioni

Per permettere l’accesso da Internet all’infrastruttura RemoteApp  è necessario implementare il ruolo di Remote Desktop Gateway. Vi rimando alla lettura della guida Configurare Remote Desktop Gateway in Windows Server 2016 per conoscere la modalità di implemtentazione.

Alta disponibilità dei servizi di Remote Desktop

Per abilitare l’alta disponibilità dei ruoli di Remote Desktop Services vi rimando alla lettura della mia guida Configurare l’alta disponibilità dei Remote Desktop Services in Windows Server 2016 e Windows Server 2019 – ICT Power

Conclusioni

Le RemoteApp fanno in modo che i programmi a cui si accede in remoto tramite i Remote Desktop Services vengano visualizzati come se venissero eseguiti nel computer locale dell’utente. Questo offre un’esperienza utente notevole e facilita l’interazione con le applicazioni remote. La RemoteApp ha una finestra ridimensionabile, può essere spostata su più monitor e ha una propria icona sulla barra delle applicazioni. Davvero utile!