> 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 sur Azure App Service à l'aide d'un conteneur

Déployez Devolutions Server sur Azure App Service à l'aide d'un conteneur, de la configuration de la base de données SQL et de l'App Service jusqu'aux secrets Key Vault et à la surveillance.

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 par 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 Devolutions Server dans un registre (Docker Hub ou Azure Container Registry).

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

1. Naviguez vers le portail Azure.
2. Cliquez sur **Créer une ressource**, puis recherchez ***SQL Database*** – ***Create***.
3. Dans l'onglet ***Basics***, remplissez les champs comme suit :

| Champs                   | Saisie 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 unique à l'échelle mondiale.</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 fort.</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 DTU) pour les tests, 20+ DTU pour la production.</li></ul><p>Cliquez sur <em><strong>Apply</strong></em>.</p>                                                                                                                                                                                                                                                             |

4. Ensuite, pour l'onglet ***Networking*** :

| Champs                    | Saisie suggérée                                                           |
| ------------------------- | ------------------------------------------------------------------------- |
| **Connectivity method**   | Sélectionnez ***Public endpoint***.                                       |
| **Allow Azure services**  | Choisissez ***Yes***, car c'est requis pour que l'App Service fonctionne. |
| **Add current client IP** | Choisissez ***Yes***, car c'est nécessaire à des fins de gestion.         |

5. Et l'onglet ***Additional settings*** :

| Champs                | Saisie suggérée           |
| --------------------- | ------------------------- |
| **Use existing data** | Sélectionnez ***None***.  |
| **Collation**         | Choisissez ***Default***. |

6. Cliquez sur ***Review + create*** – ***Create*** et attendez le déploiement. Cela devrait prendre environ 3 à 5 minutes.

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

1. Naviguez vers le ***Query editor*** 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 App Service Plan

1. Cliquez sur ***Créer une ressource*** – ***App Service Plan*** – ***Create***.
2. Remplissez l'onglet ***Basics*** comme suit :

| Champs               | Saisie suggérée                                                                                                                                                                                                                                                                                                                                                      |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Subscription**     | Sélectionnez votre abonnement.                                                                                                                                                                                                                                                                                                                                       |
| **Resource Group**   | Entrez le même que celui de 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 de tarification 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 plus faible).</li></ul><p>Une fois votre choix fait, cliquez sur <em><strong>Apply</strong></em>.</p> |

3. Cliquez sur ***Review + create*** – ***Create***.

#### Créer l'app service

1. Rendez-vous dans ***Créer une ressource*** – ***Web App*** – ***Create***.
2. Dans l'onglet ***Basics***, remplissez les champs comme indiqué ci-dessous :

| Champs               | Saisie suggérée                                                                     |
| -------------------- | ----------------------------------------------------------------------------------- |
| **Subscription**     | Sélectionnez votre abonnement.                                                      |
| **Resource Group**   | Entrez `rg-dvls-prod`, comme précédemment.                                          |
| **Name**             | Entrez `dvls-prod-<unique>`. Cela 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 l'App Service Plan.        |
| **Linux Plan**       | Sélectionnez `asp-dvls-prod` (créé lors de la création de l'App Service Plan).      |

3. Et l'onglet ***Container*** :

| Champs              | Saisie 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.
5. Une fois le déploiement terminé, naviguez vers ***Configuration*** – paramètres ***General*** et activez **Always on**. Cela empêche le conteneur de rester inactif et de ne démarrer qu'en réponse à la première requête entrante, ce qui pourrait autrement apparaître comme un échec de démarrage ou un dépassement de délai.

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

1. Naviguez vers ***App Service*** – ***Configuration*** – ***Application settings***.
2. Cliquez sur ***New application setting*** pour chaque variable :

| Nom                 | Valeur                                          | Notes                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| ------------------- | ----------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `DATABASE_ENCRYPT`  | `true`                                          | Requis pour Azure SQL. Chiffre la connexion SQL (TLS). Azure SQL impose toujours le chiffrement, donc la connexion échoue sans cela.                                                                                                                                                                                                                                                                                                                 |
| `DATABASE_HOST`     | `dvls-sql-server-<unique>.database.windows.net` | Le nom d'hôte de votre SQL Server.                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `DATABASE_NAME`     | `dvls`                                          | Le 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`                                          | Le port d'écoute du conteneur.                                                                                                                                                                                                                                                                                                                                                                                                                       |
| `DVLS_TELEMETRY`    | `true`                                          | Activer la télémétrie.                                                                                                                                                                                                                                                                                                                                                                                                                               |
| `WEBSITES_PORT`     | `5000`                                          | <p>Spécifique à Azure (indique à App Service quel port rediriger).<br><br>Certaines nouvelles applications web Azure ont maintenant la prise en charge Sidecar activée par défaut. Lorsque la prise en charge Sidecar est activée, <code>WEBSITES\_PORT</code> est ignoré. Désactivez la prise en charge Sidecar pour utiliser <code>WEBSITES\_PORT=5000</code> comme documenté, ou laissez-la activée et définissez le port directement à 5000.</p> |
|                     |                                                 |                                                                                                                                                                                                                                                                                                                                                                                                                                                      |

3. Cliquer sur ***Save***, puis sur ***Continue*** pour confirmer le redémarrage.

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

* Aller dans ***Configuration*** – ***Application settings***.
* Ajouter un nouveau paramètre :
  * **Nom** : `DVLS_INIT`
  * **Valeur** : `true`
* Cliquer sur ***Save*** – ***Continue***. Cela redémarre l'appli.
* Sous ***Monitoring***, naviguer vers ***Log stream***, et attendre 1 à 2 minutes que l'initialisation se termine.
* Activer temporairement l'accès SSH en allant dans ***Development Tools*** – ***SSH***, et en cliquant sur ***Go***.
* Extraire la configuration de chiffrement :

  ```bash
  cat /opt/devolutions/dvls/App_Data/encryption.config | base64
  ```
* Copier la sortie base64.
* Aller dans ***Configuration*** – ***Application settings*** – ***New application setting***. Saisir `DVLS_ENCRYPTION_CONFIG_B64` dans le champ ***Name*** et coller le contenu du fichier base64 copié à l'étape #7 dans le champ ***Value***. Cliquer sur ***OK***.
* Trouver le paramètre `DVLS_INIT` et cliquer sur ***Delete***.
* Cliquer sur ***Save***, puis sur ***Continue***.

#### Accéder à Devolutions Server

1. Naviguer vers ***Overview*** – ***URL***.
2. Cliquer sur l'URL ou visiter : `https://devolutions-server-prod-<unique>.azurewebsites.net`
3. Se connecter avec les identifiants par défaut :
   * **Nom d'utilisateur** : `dvls-admin`
   * **Mot de passe** : `dvls-admin`

{% hint style="danger" %}
Immédiatement après la connexion, changer le mot de passe par défaut en allant dans ***Administration*** – ***Utilisateurs***, en cliquant sur le bouton de points de suspension verticaux de l'utilisateur `dvls-admin`, et en sélectionnant ***Changer le mot de passe***.
{% endhint %}

### Déploiement avec Azure CLI

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

#### Prérequis

```
# Login to Azure
az login

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

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

#### Domaine personnalisé et TLS

**Ajouter un domaine personnalisé**

1. Naviguer vers ***App Service*** – ***Custom domains*** – ***Add custom domain***.
2. Saisir votre domaine : `devolutions-server.company.com`
3. Suivre 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. Cliquer sur ***Validate***, puis sur ***Add***.

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

1. Naviguer vers ***Certificates*** – ***Managed certificates*** – ***Add certificate***.
2. Sélectionner votre domaine personnalisé.
3. Cliquer sur ***Validate***, puis sur ***Add***.
4. Naviguer vers ***Custom domains***, sélectionner votre domaine, et cliquer sur ***Add binding***.
5. Pour le ***Certificate***, sélectionner ***Managed certificate***.
6. Pour le ***TLS/SSL type***, choisir ***SNI SSL***.
7. Cliquer sur ***Add***.

**Forcer HTTPS**

1. Naviguer vers ***Configuration*** – ***General settings***.
2. Régler ***HTTPS Only*** à ***On***, et cliquer sur ***Save***.

### Surveillance

#### Activer Application Insights

**Portail**

1. Naviguer vers ***App Service*** – ***Application Insights*** – ***Turn on Application Insights***.
2. ***Create new*** ou ***Select existing*** pour les ressources Application Insights.
3. Cliquer sur ***Apply***.

**CLI**

**Windows (PowerShell) :**

```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"
```

**macOS/Linux (Bash) :**

```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"
```

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

### Consulter les journaux

**Windows (PowerShell) :**

**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
```

**macOS/Linux (Bash) :**

**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
```

### Sécurité

#### Utiliser Azure Key Vault pour les secrets

**Windows (PowerShell) :**

1. Activer ***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éer un Key Vault et stocker 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. Accorder un accès :

   ```powershell
   az keyvault set-policy `
     --name kv-dvls-prod `
     --object-id "$PRINCIPAL_ID" `
     --secret-permissions get
   ```
4. Référencer 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})"
   ```

**macOS/Linux (Bash) :**

1. Activer ***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éer un Key Vault et stocker 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. Accorder un accès :

   ```bash
   az keyvault set-policy \
     --name kv-dvls-prod \
     --object-id "$PRINCIPAL_ID" \
     --secret-permissions get
   ```
4. Référencer 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})"
   ```

#### Voir aussi

* [Configuration Docker avancée pour Devolutions Server](/server/fr/knowledge-base/how-to-articles/devolutions-server-docker-deployment/advanced-docker-configuration-for-devolutions-server.md)
* [Déployer Devolutions Server avec Docker](/server/fr/knowledge-base/how-to-articles/devolutions-server-docker-deployment.md)


---

# 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
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>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
