> 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/da/knowledge-base/how-to-articles/devolutions-server-docker-deployment/devolutions-server-deployment-to-azure-app-service-using-a-container.md).

# Udrulning af Devolutions Server til Azure App Service ved hjælp af en container

Udrul Devolutions Server til Azure App Service med en container, fra SQL-database og opsætning af App Service til Key Vault-hemmeligheder og overvågning.

Denne vejledning dækker udrulning af Devolutions Server til Azure App Service med en container og giver en fuldt administreret platform med automatisk skalering, indbygget TLS og integration med Azure-tjenester.

### Udrulning via Azure Portal

#### Forudsætninger

* Et Azure-abonnement.
* Azure CLI er installeret. `az --version` (eller brug Azure Cloud Shell).
* Administratoradgang til SQL Server (til oprettelse af databasen).
* Containerimage til Devolutions Server i et register (Docker Hub eller Azure Container Registry).

#### Opret en Azure SQL-database

1. Gå til Azure Portal.
2. Klik på **Opret en ressource**, og søg efter ***SQL-database*** – ***Opret***.
3. På fanen ***Grundlæggende*** skal De udfylde felterne som følger:

| Felter                      | Foreslået input                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| --------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Abonnement**              | Vælg Deres abonnement.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Ressourcegruppe**         | Opret en ny gruppe med navnet `rg-dvls-prod`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Databasenavn**            | Angiv `dvls`.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **Server**                  | <p>Klik på <em><strong>Opret ny</strong></em>, og udfyld felterne som følger:</p><ul><li><em><strong>Servernavn</strong></em>: <code>dvls-sql-server-\<unique></code>. Servernavnet skal være globalt entydigt.</li><li><em><strong>Placering</strong></em>: vælg et område.</li><li><em><strong>Godkendelse</strong></em>: angiv Deres SQL-godkendelse.</li><li><em><strong>Serveradministratorlogon</strong></em>: <code>sqladmin</code>.</li><li><em><strong>Adgangskode</strong></em>: vælg en stærk adgangskode.</li></ul><p>Klik på <em><strong>OK</strong></em>.</p> |
| **Arbejdsbelastningsmiljø** | Vælg ***Produktion***.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| **Beregning + lager**       | <p>Klik på <em><strong>Konfigurer database</strong></em>, og udfyld felterne således:</p><ul><li><em><strong>Tjenesteniveau</strong></em>: vælg <em><strong>Standard</strong></em>.</li><li><em><strong>DTU'er</strong></em>: SO (10 DTU'er) til test, 20+ DTU'er til produktion.</li></ul><p>Klik på <em><strong>Anvend</strong></em>.</p>                                                                                                                                                                                                                                 |

4. Derefter for fanen ***Netværk***:

| Felter                      | Foreslået input                                                   |
| --------------------------- | ----------------------------------------------------------------- |
| **Forbindelsesmetode**      | Vælg ***Offentligt slutpunkt***.                                  |
| **Tillad Azure-tjenester**  | Vælg ***Ja***, da det kræves, for at App Service kan fungere.     |
| **Tilføj aktuel klient-IP** | Vælg ***Ja***, da det er nødvendigt af hensyn til administration. |

5. Og fanen ***Yderligere indstillinger***:

| Felter                     | Foreslået input      |
| -------------------------- | -------------------- |
| **Brug eksisterende data** | Vælg ***Ingen***.    |
| **Sortering**              | Vælg ***Standard***. |

6. Klik på ***Gennemse + opret*** – ***Opret***, og vent på udrulningen. Det bør tage ca. 3-5 minutter.

#### Opret en databasebruger til Devolutions Server

1. Gå til SQL-databasens ***Forespørgselseditor***, og log på med legitimationsoplysningerne for serveradministratoren.
2. Kør følgende SQL-forespørgsel:

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

#### Opret en App Service-plan

1. Klik på ***Opret en ressource*** – ***App Service-plan*** – ***Opret***.
2. Udfyld fanen ***Grundlæggende*** som følger:

| Felter              | Foreslået input                                                                                                                                                                                                                                                                                                                                     |
| ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Abonnement**      | Vælg Deres abonnement.                                                                                                                                                                                                                                                                                                                              |
| **Ressourcegruppe** | Angiv det samme som databasens: `rg-dvls-prod`.                                                                                                                                                                                                                                                                                                     |
| **Navn**            | Angiv `asp-dvls-prod`.                                                                                                                                                                                                                                                                                                                              |
| **Operativsystem**  | Vælg det ønskede operativsystem.                                                                                                                                                                                                                                                                                                                    |
| **Område**          | Angiv det samme område som det, der blev valgt under konfigurationen af SQL-databasen.                                                                                                                                                                                                                                                              |
| **Prisniveau**      | <p>Klik på <em><strong>Skift størrelse</strong></em>, og vælg derefter prisniveauer for:</p><ul><li><em><strong>Produktion</strong></em>: POV3 (anbefalet minimum).</li><li><em><strong>Udvikling</strong></em>: B2 (grundlæggende niveau, lavere pris).</li></ul><p>Når valget er truffet, skal De klikke på <em><strong>Anvend</strong></em>.</p> |

3. Klik på ***Gennemse + opret*** – ***Opret***.

#### Opret app-tjenesten

1. Gå til ***Opret en ressource*** – ***Webapp*** – ***Opret***.
2. På fanen ***Grundlæggende*** skal De udfylde felterne som vist nedenfor:

| Felter              | Foreslået input                                                                    |
| ------------------- | ---------------------------------------------------------------------------------- |
| **Abonnement**      | Vælg Deres abonnement.                                                             |
| **Ressourcegruppe** | Angiv `rg-dvls-prod` som før.                                                      |
| **Navn**            | Angiv `dvls-prod-<unique>`. Det bliver til `dvls-prod-<unique>.azurewebsites.net`. |
| **Publicer**        | Vælg ***Container***.                                                              |
| **Operativsystem**  | Vælg det ønskede operativsystem.                                                   |
| **Område**          | Angiv det samme område som for SQL-databasen og App Service-planen.                |
| **Linux-plan**      | Vælg `asp-dvls-prod` (oprettet under oprettelsen af App Service-planen).           |

3. Og fanen ***Container***:

| Felter             | Foreslået input                                                                                  |
| ------------------ | ------------------------------------------------------------------------------------------------ |
| **Imagekilde**     | Vælg ***Docker Hub*** eller ***Azure Container Registry***.                                      |
| **Image og tag**   | Angiv `devolutions/devolutions-server:release-20XX.X` (erstat versionsnummeret med det seneste). |
| **Registeradgang** | Vælg ***Offentlig*** (til Docker Hub).                                                           |

4. Klik på ***Gennemse + opret*** – ***Opret***, og vent 2-3 minutter på udrulningen.
5. Når udrulningen er fuldført, skal De gå til indstillingerne ***Konfiguration*** – ***Generelt*** og slå **Altid til** til. Det forhindrer, at containeren går i inaktiv tilstand og kun starter som svar på den første indgående anmodning, hvilket ellers kan se ud som en start- eller timeoutfejl.

#### Konfigurer programmets indstillinger

1. Gå til ***App Service*** – ***Konfiguration*** – ***Programindstillinger***.
2. Klik på ***Ny programindstilling*** for hver variabel:

| Navn                | Værdi                                           | Noter                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| ------------------- | ----------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `DATABASE_ENCRYPT`  | `true`                                          | Påkrævet for Azure SQL. Krypterer SQL-forbindelsen (TLS). Azure SQL gennemtvinger altid kryptering, så forbindelsen mislykkes uden den.                                                                                                                                                                                                                                                                                                      |
| `DATABASE_HOST`     | `dvls-sql-server-<unique>.database.windows.net` | Deres SQL Server-værtsnavn.                                                                                                                                                                                                                                                                                                                                                                                                                  |
| `DATABASE_NAME`     | `dvls`                                          | Deres databasenavn.                                                                                                                                                                                                                                                                                                                                                                                                                          |
| `DATABASE_USERNAME` | `dvls_user`                                     | Den dedikerede SQL-bruger.                                                                                                                                                                                                                                                                                                                                                                                                                   |
| `DATABASE_PASSWORD` | `YourSecurePassword123!`                        | Brug en Key Vault-reference i produktion.                                                                                                                                                                                                                                                                                                                                                                                                    |
| `WEB_SCHEME`        | `http`                                          | Protokol (App Service håndterer HTTPS-afslutning).                                                                                                                                                                                                                                                                                                                                                                                           |
| `PORT`              | `5000`                                          | Containerens lytteport.                                                                                                                                                                                                                                                                                                                                                                                                                      |
| `DVLS_TELEMETRY`    | `true`                                          | Aktivér telemetri.                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `WEBSITES_PORT`     | `5000`                                          | <p>Specifikt for Azure (fortæller App Service, hvilken port der skal videresendes).<br><br>Nogle nye Azure-webapps har nu understøttelse af Sidecar aktiveret som standard. Når understøttelse af Sidecar er aktiveret, ignoreres <code>WEBSITES\_PORT</code>. Deaktiver enten understøttelse af Sidecar for at bruge <code>WEBSITES\_PORT=5000</code> som dokumenteret, eller lad den være aktiveret, og angiv porten til 5000 direkte.</p> |
|                     |                                                 |                                                                                                                                                                                                                                                                                                                                                                                                                                              |

3. Klik på ***Gem*** og derefter på ***Fortsæt*** for at bekræfte genstart.

#### Initialiser Devolutions Server, og hent krypteringskonfigurationen

* Gå til ***Konfiguration*** – ***Programindstillinger***.
* Tilføj ny indstilling:
  * **Navn**: `DVLS_INIT`
  * **Værdi**: `true`
* Klik på ***Gem*** – ***Fortsæt***. Det genstarter appen.
* Under ***Overvågning*** skal De gå til ***Logstream*** og vente 1-2 minutter på, at initialiseringen fuldføres.
* Aktivér SSH-adgang midlertidigt ved at gå til ***Udviklingsværktøjer*** – ***SSH*** og klikke på ***Gå***.
* Udtræk krypteringskonfigurationen:

  ```bash
  cat /opt/devolutions/dvls/App_Data/encryption.config | base64
  ```
* Kopiér base64-outputtet.
* Gå til ***Konfiguration*** – ***Programindstillinger*** – ***Ny programindstilling***. Angiv `DVLS_ENCRYPTION_CONFIG_B64` i feltet ***Navn***, og indsæt indholdet af den base64-fil, der blev kopieret i trin 7, i feltet ***Værdi***. Klik på ***OK***.
* Find indstillingen `DVLS_INIT`, og klik på ***Slet***.
* Klik på ***Gem*** og derefter på ***Fortsæt***.

#### Få adgang til Devolutions Server

1. Gå til ***Oversigt*** – ***URL***.
2. Klik på URL-adressen, eller gå til `https://devolutions-server-prod-<unique>.azurewebsites.net`
3. Log på med standardlegitimationsoplysningerne:
   * **Brugernavn**: `dvls-admin`
   * **Adgangskode**: `dvls-admin`

{% hint style="danger" %}
Skift standardadgangskoden umiddelbart efter logon ved at gå til ***Administration*** – ***Brugere***, klikke på knappen med den lodrette ellipse for brugeren `dvls-admin` og vælge ***Skift adgangskode***.
{% endhint %}

### Udrulning med Azure CLI

Azure CLI kan også bruges til automatiserede eller gentagelige udrulninger.

#### Forudsætninger

```
# Login to Azure
az login

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

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

#### Brugerdefineret domæne og TLS

**Tilføj brugerdefineret domæne**

1. Gå til ***App Service*** – ***Brugerdefinerede domæner*** – ***Tilføj brugerdefineret domæne***.
2. Angiv Deres domæne: `devolutions-server.company.com`
3. Følg vejledningen til DNS-konfiguration:
   * **CNAME**: `devolutions-server.company.com` → `devolutions-server-prod-<unique>.azurewebsites.net`.
   * Eller **A-post** + TXT-post for apex-domænet.
4. Klik på ***Valider*** og derefter på ***Tilføj***.

**Tilføj administreret certifikat (gratis, og det fornys automatisk)**

1. Gå til ***Certifikater*** – ***Administrerede certifikater*** – ***Tilføj certifikat***.
2. Vælg Deres brugerdefinerede domæne.
3. Klik på ***Valider*** og derefter på ***Tilføj***.
4. Gå til ***Brugerdefinerede domæner***, vælg Deres domæne, og klik på ***Tilføj binding***.
5. For ***Certifikat*** skal De vælge ***Administreret certifikat***.
6. For ***TLS/SSL-type*** skal De vælge ***SNI SSL***.
7. Klik på ***Tilføj***.

**Gennemtving HTTPS**

1. Gå til ***Konfiguration*** – ***Generelle indstillinger***.
2. Angiv ***Kun HTTPS*** til ***Til***, og klik på ***Gem***.

### Overvågning

#### Aktivér Application Insights

**Portal**

1. Gå til ***App Service*** – ***Application Insights*** – ***Slå Application Insights til***.
2. Ressourcer af typen Application Insights under ***Opret ny*** eller ***Vælg eksisterende***.
3. Klik på ***Anvend***.

**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" %}
Placeringen er angivet til East US som eksempel her. Sørg for at ændre værdien til Deres område.
{% endhint %}

### Vis logge

**Windows (PowerShell):**

**Stream logge**

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

**Download logge**

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

**macOS/Linux (Bash):**

**Stream logge**

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

**Download logge**

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

### Sikkerhed

#### Brug Azure Key Vault til hemmeligheder

**Windows (PowerShell):**

1. Aktivér ***Administreret identitet***:

   ```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. Opret en Key Vault, og gem hemmeligheden:

   ```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. Giv adgang:

   ```powershell
   az keyvault set-policy `
     --name kv-dvls-prod `
     --object-id "$PRINCIPAL_ID" `
     --secret-permissions get
   ```
4. Reference under ***Appindstillinger***:

   ```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. Aktivér ***Administreret identitet***:

   ```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. Opret en Key Vault, og gem hemmeligheden:

   ```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. Giv adgang:

   ```bash
   az keyvault set-policy \
     --name kv-dvls-prod \
     --object-id "$PRINCIPAL_ID" \
     --secret-permissions get
   ```
4. Reference under ***Appindstillinger***:

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

#### Se også

* [Avanceret Docker-konfiguration til Devolutions Server](/server/da/knowledge-base/how-to-articles/devolutions-server-docker-deployment/advanced-docker-configuration-for-devolutions-server.md)
* [Udrul Devolutions Server med Docker](/server/da/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/da/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.
