> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/server/fr/knowledge-base/how-to-articles/devolutions-server-docker-deployment/devolutions-server-deployment-to-azure-app-service-using-a-container.md).

# Déploiement de Devolutions Server vers Azure App Service à l'aide d'un conteneur

Ce guide couvre le déploiement de Devolutions Server sur Azure App Service à l'aide d'un conteneur, offrant une plateforme entièrement gérée avec mise à l'échelle automatique, TLS intégré et intégration des services Azure.

### Déploiement via le portail Azure

#### Prérequis

* Un abonnement Azure.
* Azure CLI installé : `az --version` (ou utilisez Azure Cloud Shell).
* Accès administrateur à SQL Server (pour la création de la base de données).
* Image de conteneur de Devolutions Server dans un registre (Docker Hub ou Azure Container Registry).

#### Créer une base de données Azure SQL

1. Accédez au portail Azure.
2. Cliquez sur **Create a resource**, puis recherchez ***SQL Database*** – ***Créer***.
3. Dans l'onglet ***Basics***, remplissez les champs comme suit :

   | Champs                   | Valeur suggérée                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
   | **Subscription**         | Sélectionnez votre abonnement.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | **Resource Group**       | Créez un nouveau groupe nommé `rg-dvls-prod`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
   | **Database name**        | Entrez `dvls`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | **Server**               | <p>Cliquez sur <em><strong>Create new</strong></em> et remplissez les champs comme suit :</p><ul><li><em><strong>Server name</strong></em> : <code>dvls-sql-server-\<unique></code>. Le nom du serveur doit être globalement unique.</li><li><em><strong>Location</strong></em> : sélectionnez une région.</li><li><em><strong>Authentication</strong></em> : entrez votre authentification SQL.</li><li><em><strong>Server admin login</strong></em> : <code>sqladmin</code>.</li><li><em><strong>Password</strong></em> : choisissez un mot de passe robuste.</li></ul><p>Cliquez sur <em><strong>OK</strong></em>.</p> |
   | **Workload environment** | Sélectionnez ***Production***.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | **Compute + storage**    | <p>Cliquez sur <em><strong>Configure database</strong></em>, et remplissez les champs comme suit :</p><ul><li><em><strong>Service tier</strong></em> : choisissez <em><strong>Standard</strong></em>.</li><li><em><strong>DTUs</strong></em> : SO (10 DTUs) pour les tests, 20+ DTUs pour la production.</li></ul><p>Cliquez sur <em><strong>Appliquer</strong></em>.</p>                                                                                                                                                                                                                                                 |
4. Ensuite, pour l'onglet ***Networking*** :

   | Champs                    | Valeur suggérée                                                                  |
   | ------------------------- | -------------------------------------------------------------------------------- |
   | **Connectivity method**   | Sélectionnez ***Public endpoint***.                                              |
   | **Allow Azure services**  | Choisissez ***Yes***, car cela est requis pour le fonctionnement du App Service. |
   | **Add current client IP** | Choisissez ***Yes***, car cela est nécessaire à des fins de gestion.             |
5. Et l'onglet ***Additional settings*** :

   | Champs                | Valeur suggérée              |
   | --------------------- | ---------------------------- |
   | **Use existing data** | Sélectionnez ***None***.     |
   | **Collation**         | Choisissez ***Par défaut***. |
6. Cliquez sur ***Review + create*** – ***Create*** et attendez la fin du déploiement. Cela devrait prendre environ 3 à 5 minutes.

#### Créer un utilisateur de base de données pour Devolutions Server

1. Accédez à l'***éditeur de requête*** de votre base de données SQL et connectez-vous avec les identifiants de l'administrateur du serveur.
2. Exécutez la requête SQL suivante :

```sql
-- Create dedicated DVLS user
CREATE LOGIN dvls_user WITH PASSWORD = 'YourSecurePassword123!';

-- Switch to DVLS database
USE dvls;

-- Create user and grant permissions
CREATE USER dvls_user FOR LOGIN dvls_user;
ALTER ROLE db_owner ADD MEMBER dvls_user;
```

#### Créer un plan App Service

1. Cliquez sur ***Create a resource*** – ***App Service Plan*** – ***Create***.
2. Remplissez l'onglet ***Basics*** comme suit :

   | Champs               | Valeur suggérée                                                                                                                                                                                                                                                                                                                                                    |
   | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
   | **Subscription**     | Sélectionnez votre abonnement.                                                                                                                                                                                                                                                                                                                                     |
   | **Resource Group**   | Entrez le même que pour la base de données : `rg-dvls-prod`.                                                                                                                                                                                                                                                                                                       |
   | **Name**             | Entrez `asp-dvls-prod`.                                                                                                                                                                                                                                                                                                                                            |
   | **Operating System** | Sélectionnez le système d'exploitation souhaité.                                                                                                                                                                                                                                                                                                                   |
   | **Region**           | Entrez la même région que celle choisie lors de la configuration de la base de données SQL.                                                                                                                                                                                                                                                                        |
   | **Pricing tier**     | <p>Cliquez sur <em><strong>Change size</strong></em>, puis choisissez les niveaux tarifaires pour :</p><ul><li><em><strong>Production</strong></em> : POV3 (minimum recommandé).</li><li><em><strong>Development</strong></em> : B2 (niveau de base, coût réduit).</li></ul><p>Une fois votre choix effectué, cliquez sur <em><strong>Appliquer</strong></em>.</p> |
3. Cliquez sur ***Review + create*** – ***Create***.

#### Créer le App Service

1. Accédez à ***Create a resource*** – ***Web App*** – ***Create***.
2. Dans l'onglet ***Basics***, remplissez les champs comme indiqué ci-dessous :

   | Champs               | Valeur suggérée                                                                   |
   | -------------------- | --------------------------------------------------------------------------------- |
   | **Subscription**     | Sélectionnez votre abonnement.                                                    |
   | **Resource Group**   | Entrez `rg-dvls-prod`, comme précédemment.                                        |
   | **Name**             | Entrez `dvls-prod-<unique>`. Il deviendra `dvls-prod-<unique>.azurewebsites.net`. |
   | **Publish**          | Choisissez ***Container***.                                                       |
   | **Operating System** | Sélectionnez le système d'exploitation souhaité.                                  |
   | **Region**           | Entrez la même région que pour la base de données SQL et le App Service Plan.     |
   | **Linux Plan**       | Sélectionnez `asp-dvls-prod` (créé lors de la création du App Service Plan).      |
3. Et l'onglet ***Container*** :

   | Champs              | Valeur suggérée                                                                                             |
   | ------------------- | ----------------------------------------------------------------------------------------------------------- |
   | **Image Source**    | Choisissez ***Docker Hub*** ou ***Azure Container Registry***.                                              |
   | **Image and tag**   | Entrez `devolutions/devolutions-server:release-20XX.X` (remplacez le numéro de version par le plus récent). |
   | **Registry access** | Sélectionnez ***Public*** (pour Docker Hub).                                                                |
4. Cliquez sur ***Review + create*** – ***Create***, et attendez 2 à 3 minutes pour le déploiement.

#### Configurer les paramètres de l'application

1. Accédez à ***App Service*** – ***Configuration*** – ***Application settings***.
2. Cliquez sur ***New application setting*** pour chaque variable :

   | Nom                 | Valeur                                          | Remarques                                                                 |
   | ------------------- | ----------------------------------------------- | ------------------------------------------------------------------------- |
   | `DATABASE_HOST`     | `dvls-sql-server-<unique>.database.windows.net` | Nom d'hôte de votre SQL Server.                                           |
   | `DATABASE_NAME`     | `dvls`                                          | Nom de votre base de données.                                             |
   | `DATABASE_USERNAME` | `dvls_user`                                     | L'utilisateur SQL dédié.                                                  |
   | `DATABASE_PASSWORD` | `YourSecurePassword123!`                        | Utilisez une référence Key Vault en production.                           |
   | `WEB_SCHEME`        | `http`                                          | Protocole (App Service gère la terminaison HTTPS).                        |
   | `PORT`              | `5000`                                          | Port d'écoute du conteneur.                                               |
   | `DVLS_TELEMETRY`    | `true`                                          | Activer la télémétrie.                                                    |
   | `WEBSITES_PORT`     | `5000`                                          | Spécifique à Azure (indique à App Service le port vers lequel rediriger). |
3. Cliquez sur ***Enregistrer***, puis sur ***Continue*** pour confirmer le redémarrage.

#### Initialiser Devolutions Server et récupérer la configuration de chiffrement

{% tabs %}
{% tab title="Windows" %}

* Accédez à ***Configuration*** – ***Application settings***.
* Ajoutez un nouveau paramètre :
  * **Name** : `DVLS_INIT`
  * **Value** : `true`
* Cliquez sur ***Enregistrer*** – ***Continue***. Cela redémarre l'application.
* Sous ***Monitoring***, accédez à ***Log stream***, et attendez 1 à 2 minutes que l'initialisation se termine.
* Activez temporairement l'accès SSH en accédant à ***Development Tools*** – ***SSH***, et en cliquant sur ***Go***.
* Extrayez la configuration de chiffrement :

  ```powershell
  cat /opt/devolutions/dvls/App_Data/encryption.config | base64
  ```
* Copiez la sortie base64.
* Accédez à ***Configuration*** – ***Application settings*** – ***New application setting***. Entrez `DVLS_ENCRYPTION_CONFIG_B64` dans le champ ***Name*** et collez le contenu du fichier base64 copié à l'étape 7 dans le champ ***Value***. Cliquez sur ***OK***.
* Trouvez le paramètre `DVLS_INIT` et cliquez sur ***Supprimer***.
* Cliquez sur ***Enregistrer***, puis sur ***Continue***.
  {% endtab %}

{% tab title="macOS" %}

* Accédez à ***Configuration*** – ***Application settings***.
* Ajoutez un nouveau paramètre :
  * **Name** : `DVLS_INIT`
  * **Value** : `true`
* Cliquez sur ***Enregistrer*** – ***Continue***. Cela redémarre l'application.
* Sous ***Monitoring***, accédez à ***Log stream***, et attendez 1 à 2 minutes que l'initialisation se termine.
* Activez temporairement l'accès SSH en accédant à ***Development Tools*** – ***SSH***, et en cliquant sur ***Go***.
* Extrayez la configuration de chiffrement :

  ```bash
  cat /opt/devolutions/dvls/App_Data/encryption.config | base64
  ```
* Copiez la sortie base64.
* Accédez à ***Configuration*** – ***Application settings*** – ***New application setting***. Entrez `DVLS_ENCRYPTION_CONFIG_B64` dans le champ ***Name*** et collez le contenu du fichier base64 copié à l'étape 7 dans le champ ***Value***. Cliquez sur ***OK***.
* Trouvez le paramètre `DVLS_INIT` et cliquez sur ***Supprimer***.
* Cliquez sur ***Enregistrer***, puis sur ***Continue***.
  {% endtab %}

{% tab title="Linux" %}

* Accédez à ***Configuration*** – ***Application settings***.
* Ajoutez un nouveau paramètre :
  * **Name** : `DVLS_INIT`
  * **Value** : `true`
* Cliquez sur ***Enregistrer*** – ***Continue***. Cela redémarre l'application.
* Sous ***Monitoring***, accédez à ***Log stream***, et attendez 1 à 2 minutes que l'initialisation se termine.
* Activez temporairement l'accès SSH en accédant à ***Development Tools*** – ***SSH***, et en cliquant sur ***Go***.
* Extrayez la configuration de chiffrement :

  ```bash
  cat /opt/devolutions/dvls/App_Data/encryption.config | base64
  ```
* Copiez la sortie base64.
* Accédez à ***Configuration*** – ***Application settings*** – ***New application setting***. Entrez `DVLS_ENCRYPTION_CONFIG_B64` dans le champ ***Name*** et collez le contenu du fichier base64 copié à l'étape 7 dans le champ ***Value***. Cliquez sur ***OK***.
* Trouvez le paramètre `DVLS_INIT` et cliquez sur ***Supprimer***.
* Cliquez sur ***Enregistrer***, puis sur ***Continue***.
  {% endtab %}
  {% endtabs %}

#### Accéder à Devolutions Server

1. Accédez à ***Overview*** – ***URL***.
2. Cliquez sur l'URL ou visitez : `https://devolutions-server-prod-<unique>.azurewebsites.net`
3. Connectez-vous avec les identifiants par défaut :
   * **Username** : `devolutions-server-admin`
   * **Password** : `devolutions-server-admin`

{% hint style="danger" %}
Immédiatement après la connexion, changez le mot de passe par défaut en accédant à ***Administration*** – ***Utilisateurs***, en cliquant sur le bouton représentant une ellipse verticale de l'utilisateur `devolutions-server-admin`, puis en sélectionnant ***Change password***.
{% endhint %}

### Déploiement via Azure CLI

Azure CLI est également disponible pour des déploiements automatisés ou reproductibles.

#### Prérequis

{% tabs %}
{% tab title="Windows" %}

```
# Login to Azure
az login

# Set subscription
az account set --subscription "Your Subscription Name"

# Verify Azure CLI version (2.50+ recommended)
az --version
```

{% endtab %}

{% tab title="macOS" %}

```
# Login to Azure
az login

# Set subscription
az account set --subscription "Your Subscription Name"

# Verify Azure CLI version (2.50+ recommended)
az --version
```

{% endtab %}

{% tab title="Linux" %}

```
# Login to Azure
az login

# Set subscription
az account set --subscription "Your Subscription Name"

# Verify Azure CLI version (2.50+ recommended)
az --version
```

{% endtab %}
{% endtabs %}

#### Domaine personnalisé et TLS

**Ajouter un domaine personnalisé**

1. Accédez à ***App Service*** – ***Custom domains*** – ***Add custom domain***.
2. Entrez votre domaine : `devolutions-server.company.com`
3. Suivez les instructions de configuration DNS :
   * **CNAME** : `devolutions-server.company.com` → `devolutions-server-prod-<unique>.azurewebsites.net`.
   * Ou **enregistrement A** + enregistrement TXT pour le domaine apex.
4. Cliquez sur ***Validate***, puis sur ***Add***.

**Ajouter un certificat géré (gratuit et renouvelé automatiquement)**

1. Accédez à ***Certificates*** – ***Managed certificates*** – ***Add certificate***.
2. Sélectionnez votre domaine personnalisé.
3. Cliquez sur ***Validate***, puis sur ***Add***.
4. Accédez à ***Custom domains***, sélectionnez votre domaine, et cliquez sur ***Add binding***.
5. Pour le ***Certificate***, sélectionnez ***Managed certificate***.
6. Pour le ***TLS/SSL type***, choisissez ***SNI SSL***.
7. Cliquez sur ***Add***.

**Forcer HTTPS**

1. Accédez à ***Configuration*** – ***General settings***.
2. Définissez ***HTTPS Only*** sur ***On***, et cliquez sur ***Enregistrer***.

### Surveillance

#### Activer Application Insights

**Portail**

1. Accédez à ***App Service*** – ***Application Insights*** – ***Turn on Application Insights***.
2. ***Create new*** ou ***Select existing*** pour les ressources Application Insights.
3. Cliquez sur ***Appliquer***.

**CLI**

{% tabs %}
{% tab title="Windows" %}

```powershell
# Create Application Insights
az monitor app-insights component create `
  --app dvls-insights `
  --location eastus `
  --resource-group rg-dvls-prod `
  --application-type web

# Get connection string
$CONN_STRING = az monitor app-insights component show `
  --app dvls-insights `
  --resource-group rg-dvls-prod `
  --query connectionString -o tsv

# Configure App Service
az webapp config appsettings set `
  --resource-group rg-dvls-prod `
  --name dvls-prod-<unique> `
  --settings "APPLICATIONINSIGHTS_CONNECTION_STRING=$CONN_STRING"
```

{% endtab %}

{% tab title="macOS" %}

```bash
# Create Application Insights
az monitor app-insights component create \
  --app dvls-insights \
  --location eastus \
  --resource-group rg-dvls-prod \
  --application-type web

# Get connection string
CONN_STRING=$(az monitor app-insights component show \
  --app dvls-insights \
  --resource-group rg-dvls-prod \
  --query connectionString -o tsv)

# Configure App Service
az webapp config appsettings set \
  --resource-group rg-dvls-prod \
  --name dvls-prod-<unique> \
  --settings \
    APPLICATIONINSIGHTS_CONNECTION_STRING="$CONN_STRING"
```

{% endtab %}

{% tab title="Linux" %}

```bash
# Create Application Insights
az monitor app-insights component create \
  --app dvls-insights \
  --location eastus \
  --resource-group rg-dvls-prod \
  --application-type web

# Get connection string
CONN_STRING=$(az monitor app-insights component show \
  --app dvls-insights \
  --resource-group rg-dvls-prod \
  --query connectionString -o tsv)

# Configure App Service
az webapp config appsettings set \
  --resource-group rg-dvls-prod \
  --name dvls-prod-<unique> \
  --settings \
    APPLICATIONINSIGHTS_CONNECTION_STRING="$CONN_STRING"
```

{% endtab %}
{% endtabs %}

{% hint style="info" %}
L'emplacement est défini sur East US à titre d'exemple ici. Assurez-vous de modifier la valeur selon votre région.
{% endhint %}

### Afficher les journaux

{% tabs %}
{% tab title="Windows" %}
**Diffuser les journaux**

```powershell
az webapp log tail `
  --resource-group rg-dvls-prod `
  --name dvls-prod-<unique>
```

**Télécharger les journaux**

```powershell
az webapp log download `
  --resource-group rg-dvls-prod `
  --name dvls-prod-<unique> `
  --log-file dvls-logs.zip
```

{% endtab %}

{% tab title="macOS" %}
**Diffuser les journaux**

```bash
az webapp log tail \
  --resource-group rg-dvls-prod \
  --name dvls-prod-<unique>
```

**Télécharger les journaux**

```bash
az webapp log download \
  --resource-group rg-dvls-prod \
  --name dvls-prod-<unique> \
  --log-file dvls-logs.zip
```

{% endtab %}

{% tab title="Linux" %}
**Diffuser les journaux**

```bash
az webapp log tail \
  --resource-group rg-dvls-prod \
  --name dvls-prod-<unique>
```

**Télécharger les journaux**

```bash
az webapp log download \
  --resource-group rg-dvls-prod \
  --name dvls-prod-<unique> \
  --log-file dvls-logs.zip
```

{% endtab %}
{% endtabs %}

### Sécurité

#### Utiliser Azure Key Vault pour les secrets

{% tabs %}
{% tab title="Windows" %}

1. Activez ***Managed Identity*** :

   ```powershell
   az webapp identity assign `
     --resource-group rg-dvls-prod `
     --name dvls-prod-<unique>

   PRINCIPAL_ID=$(az webapp identity show `
     --resource-group rg-dvls-prod `
     --name dvls-prod-<unique> `
     --query principalId -o tsv)
   ```
2. Créez un Key Vault et stockez le secret :

   ```powershell
   az keyvault create `
     --name kv-dvls-prod `
     --resource-group rg-dvls-prod `
     --location eastus

   az keyvault secret set `
     --vault-name kv-dvls-prod `
     --name dvls-db-password `
     --value 'YourSecurePassword123!'
   ```
3. Accordez l'accès :

   ```powershell
   az keyvault set-policy `
     --name kv-dvls-prod `
     --object-id "$PRINCIPAL_ID" `
     --secret-permissions get
   ```
4. Référencez dans ***App Settings*** :

   ```powershell
   SECRET_URI=$(az keyvault secret show `
     --vault-name kv-dvls-prod `
     --name dvls-db-password `
     --query id -o tsv)

   az webapp config appsettings set `
     --resource-group rg-dvls-prod `
     --name dvls-prod-<unique> `
     --settings `
       DATABASE_PASSWORD="@Microsoft.KeyVault(SecretUri=${SECRET_URI})"
   ```

{% endtab %}

{% tab title="macOS" %}

1. Activez ***Managed Identity*** :

   ```bash
   az webapp identity assign \
     --resource-group rg-dvls-prod \
     --name dvls-prod-<unique>

   PRINCIPAL_ID=$(az webapp identity show \
     --resource-group rg-dvls-prod \
     --name dvls-prod-<unique> \
     --query principalId -o tsv)
   ```
2. Créez un Key Vault et stockez le secret :

   ```bash
   az keyvault create \
     --name kv-dvls-prod \
     --resource-group rg-dvls-prod \
     --location eastus

   az keyvault secret set \
     --vault-name kv-dvls-prod \
     --name dvls-db-password \
     --value 'YourSecurePassword123!'
   ```
3. Accordez l'accès :

   ```bash
   az keyvault set-policy \
     --name kv-dvls-prod \
     --object-id "$PRINCIPAL_ID" \
     --secret-permissions get
   ```
4. Référencez dans ***App Settings*** :

   ```bash
   SECRET_URI=$(az keyvault secret show \
     --vault-name kv-dvls-prod \
     --name dvls-db-password \
     --query id -o tsv)

   az webapp config appsettings set \
     --resource-group rg-dvls-prod \
     --name dvls-prod-<unique> \
     --settings \
       DATABASE_PASSWORD="@Microsoft.KeyVault(SecretUri=${SECRET_URI})"
   ```

{% endtab %}

{% tab title="Linux" %}

1. Activez ***Managed Identity*** :

   ```bash
   az webapp identity assign \
     --resource-group rg-dvls-prod \
     --name dvls-prod-<unique>

   PRINCIPAL_ID=$(az webapp identity show \
     --resource-group rg-dvls-prod \
     --name dvls-prod-<unique> \
     --query principalId -o tsv)
   ```
2. Créez un Key Vault et stockez le secret :

   ```bash
   az keyvault create \
     --name kv-dvls-prod \
     --resource-group rg-dvls-prod \
     --location eastus

   az keyvault secret set \
     --vault-name kv-dvls-prod \
     --name dvls-db-password \
     --value 'YourSecurePassword123!'
   ```
3. Accordez l'accès :

   ```bash
   az keyvault set-policy \
     --name kv-dvls-prod \
     --object-id "$PRINCIPAL_ID" \
     --secret-permissions get
   ```
4. Référencez dans ***App Settings*** :

   ```bash
   SECRET_URI=$(az keyvault secret show \
     --vault-name kv-dvls-prod \
     --name dvls-db-password \
     --query id -o tsv)

   az webapp config appsettings set \
     --resource-group rg-dvls-prod \
     --name dvls-prod-<unique> \
     --settings \
       DATABASE_PASSWORD="@Microsoft.KeyVault(SecretUri=${SECRET_URI})"
   ```

{% endtab %}
{% endtabs %}

#### Voir aussi

* [Advanced Docker configuration for Devolutions Server](https://docs.devolutions.net/fr/server/kb/how-to-articles/devolutions-server-docker-deployment/advanced-docker-configuration/)
* [Deploy Devolutions Server with Docker](https://docs.devolutions.net/fr/server/kb/how-to-articles/devolutions-server-docker-deployment/)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.devolutions.net/server/fr/knowledge-base/how-to-articles/devolutions-server-docker-deployment/devolutions-server-deployment-to-azure-app-service-using-a-container.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
