> 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/gateway/da/getting-started/devolutions-gateway-configuration-in-docker.md).

# Konfiguration af Devolutions Gateway i Docker

Kør Devolutions Gateway i Docker med det officielle image, konfigurer den med miljøvariabler og TLS, og knyt den til Devolutions Server eller Cloud.

Devolutions Gateway er tilgængelig som et officielt Linux-containerimage på Docker Hub: [devolutions/devolutions-gateway](https://hub.docker.com/r/devolutions/devolutions-gateway). Containeren konfigureres udelukkende med miljøvariabler. Ved hver start skriver startscriptet konfigurationsfilen `gateway.json` ud fra disse variabler og starter derefter Devolutions Gateway.

{% hint style="warning" %}
Devolutions Server eller Devolutions Cloud er påkrævet for at formidle sessioner gennem Devolutions Gateway, og der kræves en licens til Devolutions Gateway. Containeren kan også køre det selvstændige webprogram uden Devolutions Server eller Devolutions Cloud.
{% endhint %}

### Om imaget

* **Imagenavn**: `devolutions/devolutions-gateway`
* **Tags**: `latest` og ét tag pr. udgivelsesversion. Brug et versions-tag i produktion, så opgraderinger sker bevidst.
* **Arkitekturer**: `linux/amd64` og `linux/arm64`. Docker henter automatisk den variant, der matcher værten.
* **Basisimage**: Debian 12 (`bookworm-slim`) med PowerShell 7 og [PowerShell-modulet til Devolutions Gateway](https://www.powershellgallery.com/packages/DevolutionsGateway) forudinstalleret. Startscriptet bruger dette modul til at skrive konfigurationen.
* **Eksponerede porte**: `7171` (HTTP- eller HTTPS-lytter) og `8181` (TCP-lytter).
* **Konfigurationsmappe i containeren**: `/tmp/devolutions-gateway` (angivet af miljøvariablen `DGATEWAY_CONFIG_PATH`). Denne mappe indeholder `gateway.json`, klargøringsnøglen, TLS-certifikatet og, medmindre `RECORDING_PATH` er angivet, mappen `recordings`.
* **Slutpunkt for tilstandskontrol**: `/jet/health`.

Imagerne er signeret med [Cosign](https://github.com/sigstore/cosign).

### Forudsætninger

* En Linux-vært med Docker Engine (eller en hvilken som helst OCI-kompatibel runtime) og eventuelt Docker Compose.
* Portene `7171` og `8181` (eller de porte, De vælger) skal være åbne i værtens firewall.
* Et DNS-navn til Devolutions Gateway, som klienter kan opløse, for eksempel `gateway.contoso.com`.
* Til produktion et TLS-certifikat og den tilhørende private nøgle i formatet **PEM** til det DNS-navn. Certifikatet skal opfylde de samme krav som på andre platforme (Subject Alternative Name og Server Authentication EKU). Se [Konfiguration af Devolutions Gateway på Linux](/gateway/da/getting-started/devolutions-gateway-configuration-on-linux.md#configure-certificates).
* Den offentlige klargøringsnøgle til Deres instans af Devolutions Server eller Devolutions Cloud (filen **gateway\_public\_key.pem** eller **provisioner.pem**, der er downloadet fra ***Administration*** – ***Devolutions Gateway*** – ***Mere*** – ***Download offentlig nøgle***).
* Devolutions Gateway skal kunne opløse og nå de værter, den opretter forbindelse til, inde fra containeren.

### Hent imaget

```shell
docker pull devolutions/devolutions-gateway:latest
```

For at hente en bestemt version skal De erstatte `latest` med versionsnummeret, for eksempel `devolutions/devolutions-gateway:<version>`.

### Kør en minimal container

De miljøvariabler, der indeholder nøgler og certifikater, forventer det **Base64-kodede indhold** af PEM-filen. På Linux kodes en fil med `base64 -w0`:

```shell
export PROVISIONER_PUBLIC_KEY_B64=$(base64 -w0 provisioner.pem)
```

{% hint style="info" %}
På Windows skal De i stedet bruge PowerShell: `[Convert]::ToBase64String([IO.File]::ReadAllBytes("provisioner.pem"))`.
{% endhint %}

Følgende kommando starter Devolutions Gateway med en HTTPS-lytter på port `7171`, en TCP-lytter på port `8181` og den offentlige klargøringsnøgle til Deres Devolutions Server eller Devolutions Cloud. Da der ikke angives et certifikat, genererer containeren et selvsigneret certifikat for værdien af `HOSTNAME` (se [Konfigurer TLS](#configure-tls)).

```shell
docker run -d \
  --name devolutions-gateway \
  --restart unless-stopped \
  -p 7171:7171 \
  -p 8181:8181 \
  -e HOSTNAME=gateway.contoso.com \
  -e WEB_SCHEME=https \
  -e PROVISIONER_PUBLIC_KEY_B64="$PROVISIONER_PUBLIC_KEY_B64" \
  -v devolutions-gateway-data:/tmp/devolutions-gateway \
  devolutions/devolutions-gateway:latest
```

{% hint style="warning" %}
Angiv altid `HOSTNAME` eksplicit. Docker sætter automatisk variablen `HOSTNAME` i hver container til containerens eget værtsnavn (som standard container-id'et). Hvis De ikke tilsidesætter den, bruger Devolutions Gateway den værdi som værtsnavn, og det selvsignerede certifikat genereres til den.
{% endhint %}

Kontrollér, at Devolutions Gateway kører:

```shell
docker logs devolutions-gateway
curl -k https://localhost:7171/jet/health
```

### Brug Docker Compose

Følgende fil `compose.yaml` kører Devolutions Gateway med en HTTPS-lytter, et certifikat, den offentlige klargøringsnøgle og en navngiven volumen til permanente data. Base64-værdierne læses fra en `.env`-fil, der er placeret ved siden af `compose.yaml`.

```yaml
services:
  devolutions-gateway:
    image: devolutions/devolutions-gateway:latest
    container_name: devolutions-gateway
    restart: unless-stopped
    ports:
      - "7171:7171"
      - "8181:8181"
    environment:
      HOSTNAME: gateway.contoso.com
      WEB_SCHEME: https
      PROVISIONER_PUBLIC_KEY_B64: ${PROVISIONER_PUBLIC_KEY_B64}
      TLS_CERTIFICATE_B64: ${TLS_CERTIFICATE_B64}
      TLS_PRIVATE_KEY_B64: ${TLS_PRIVATE_KEY_B64}
    volumes:
      - devolutions-gateway-data:/tmp/devolutions-gateway
    healthcheck:
      test: ["CMD", "curl", "-fsk", "https://localhost:7171/jet/health"]
      interval: 30s
      timeout: 5s
      retries: 3

volumes:
  devolutions-gateway-data:
```

Sådan opretter De filen `.env` på Linux:

```shell
cat > .env <<EOF
PROVISIONER_PUBLIC_KEY_B64=$(base64 -w0 provisioner.pem)
TLS_CERTIFICATE_B64=$(base64 -w0 fullchain.pem)
TLS_PRIVATE_KEY_B64=$(base64 -w0 privkey.pem)
EOF
chmod 600 .env
```

Start derefter containeren med `docker compose up -d`.

### Miljøvariabler

#### Weblytter

| VARIABEL              | BESKRIVELSE                                                                                                                  | STANDARD                                 |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- |
| `HOSTNAME`            | Værtsnavn for Devolutions Gateway. Bruges også som emne for det selvsignerede certifikat.                                    | Angivet af Docker (se advarslen ovenfor) |
| `WEB_SCHEME`          | Skema for weblytteren i containeren: `http` eller `https`.                                                                   | `http`                                   |
| `WEB_PORT` or `PORT`  | Port for weblytteren i containeren. `PORT` har forrang frem for `WEB_PORT`.                                                  | `7171`                                   |
| `EXTERNAL_WEB_SCHEME` | Skema, som klienter bruger til at nå weblytteren, for eksempel `https` bag en omvendt proxy, der afslutter TLS.              | Værdien af `WEB_SCHEME`                  |
| `EXTERNAL_WEB_PORT`   | Port, som klienter bruger til at nå weblytteren. Angiv den, når den publicerede værtsport adskiller sig fra containerporten. | Værdien af `WEB_PORT`                    |

#### TCP-lytter

| VARIABEL            | BESKRIVELSE                                            | STANDARD                                              |
| ------------------- | ------------------------------------------------------ | ----------------------------------------------------- |
| `TCP_ENABLED`       | Aktiverer TCP-lytteren (`true` eller `false`).         | `true` eller `false`, når `WEB_APP_ENABLED` er `true` |
| `TCP_PORT`          | Port for TCP-lytteren i containeren.                   | `8181`                                                |
| `EXTERNAL_TCP_PORT` | Port, som klienter bruger til at nå TCP-lytteren.      | Værdien af `TCP_PORT`                                 |
| `TCP_HOSTNAME`      | Værtsnavn, som klienter bruger til at nå TCP-lytteren. | `*`                                                   |

#### Nøgler og certifikater

| VARIABEL                      | BESKRIVELSE                                                                                                  |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------ |
| `PROVISIONER_PUBLIC_KEY_B64`  | Base64-kodet offentlig klargøringsnøgle (PEM) til Devolutions Server eller Devolutions Cloud.                |
| `PROVISIONER_PRIVATE_KEY_B64` | Base64-kodet privat klargøringsnøgle (PEM). Kun nødvendig, hvis De genererer Deres eget klargøringsnøglepar. |
| `TLS_CERTIFICATE_B64`         | Base64-kodet TLS-certifikat (PEM). Det kan indeholde hele certifikatkæden.                                   |
| `TLS_PRIVATE_KEY_B64`         | Base64-kodet privat nøgle (PEM) til TLS-certifikatet.                                                        |
| `TLS_CERTIFICATE_PASSWORD`    | Adgangskode til den private nøgle, hvis den er krypteret.                                                    |

#### Selvstændigt webprogram, optagelser og logge

| VARIABEL                 | BESKRIVELSE                                                                         | STANDARD                                                                            |
| ------------------------ | ----------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| `WEB_APP_ENABLED`        | Aktiverer det selvstændige webprogram i Devolutions Gateway (`true` eller `false`). | `false`                                                                             |
| `WEB_APP_AUTHENTICATION` | Godkendelsestilstand for det selvstændige webprogram: `None` eller `Custom`.        | `None` eller `Custom`, når både `WEB_APP_USERNAME` og `WEB_APP_PASSWORD` er angivet |
| `WEB_APP_USERNAME`       | Brugernavn til godkendelse med `Custom`.                                            | Ikke angivet                                                                        |
| `WEB_APP_PASSWORD`       | Adgangskode til godkendelse med `Custom`.                                           | Ikke angivet                                                                        |
| `RECORDING_PATH`         | Mappe i containeren, hvor sessionsoptagelser gemmes.                                | `/tmp/devolutions-gateway/recordings`                                               |
| `VERBOSITY_PROFILE`      | Logdetaljeringsgrad: `Default`, `Debug`, `Tls`, `All` eller `Quiet`.                | Ikke angivet                                                                        |

{% hint style="info" %}
Når containeren kører som en Azure Web App for Containers, læses værtsnavnet fra `WEBSITE_HOSTNAME`, og det eksterne skema og den eksterne port gennemtvinges til `https` og `443`.
{% endhint %}

### Permanente data

Alt, hvad Devolutions Gateway skriver (konfiguration, nøgler, certifikat og optagelser), gemmes i `/tmp/devolutions-gateway` i containeren. Uden en volumen går disse data tabt, når containeren fjernes eller genskabes, for eksempel under en opgradering. Montér en navngiven volumen eller en værtsmappe på `/tmp/devolutions-gateway`, som vist i eksemplerne ovenfor. Hvis `RECORDING_PATH` peger på en anden mappe, skal De også montere en volumen på den mappe.

Husk følgende, når De bruger en permanent volumen:

* **Lytterne, værtsnavnet og indstillingerne for det selvstændige webprogram skrives om ved hver start** ud fra miljøvariablerne. Ændringer af disse værdier direkte i `gateway.json` overskrives.
* **Andre værdier i en eksisterende `gateway.json` bevares.** De kan tilføje indstillinger, der ikke har en miljøvariabel, direkte i filen `gateway.json` på voluminet og derefter genstarte containeren. Se [referencen til konfiguration af Devolutions Gateway på GitHub](https://github.com/Devolutions/devolutions-gateway#configuration) for de tilgængelige indstillinger.
* **Klargøringsnøgleparret gendannes ved hver start, når `PROVISIONER_PUBLIC_KEY_B64` ikke er angivet.** Angiv altid den offentlige klargøringsnøgle til Deres Devolutions Server eller Devolutions Cloud i miljøet. Ellers brydes forbindelsen til Devolutions Server eller Devolutions Cloud efter en genstart.
* **TLS-certifikatet importeres igen ved hver start**, når `TLS_CERTIFICATE_B64` og `TLS_PRIVATE_KEY_B64` er angivet. Et selvsigneret certifikat genereres kun, når `WEB_SCHEME` er `https`, og der ikke er konfigureret et certifikat.

### Konfigurer TLS

Der er tre måder at sikre weblytteren på:

* **Angiv Deres eget certifikat (anbefales)**: sæt `WEB_SCHEME=https`, og send certifikatet og den private nøgle i `TLS_CERTIFICATE_B64` og `TLS_PRIVATE_KEY_B64`. For at forny certifikatet skal De opdatere værdierne og genskabe containeren.
* **Brug et selvsigneret certifikat**: sæt `WEB_SCHEME=https` uden at angive et certifikat. Containeren genererer et selvsigneret certifikat, der er gyldigt i fem år, med værdien af `HOSTNAME` som common name. Klienter og Devolutions Server skal have tillid til dette certifikat. Se [Konfiguration af Devolutions Gateway på Linux](/gateway/da/getting-started/devolutions-gateway-configuration-on-linux.md#trust-the-self-signed-certificate-on-windows). Brug kun denne mulighed til test.
* **Afslut TLS på en omvendt proxy**: behold `WEB_SCHEME=http`, sæt `EXTERNAL_WEB_SCHEME=https` (og `EXTERNAL_WEB_PORT` om nødvendigt), og lad den omvendte proxy håndtere certifikatet. Se [Omvendt proxy](/gateway/da/knowledge-base/how-to-articles/reverse-proxying.md).

{% hint style="warning" %}
WebSockets, der bruges af de webbaserede sessioner, kræver et certifikat, som browseren har tillid til. Eksponér ikke HTTP-lytteren direkte for klienter i produktion.
{% endhint %}

### Forbind Devolutions Gateway til Devolutions Server eller Devolutions Cloud

1. I webgrænsefladen til Devolutions Server eller Devolutions Cloud skal De gå til ***Administration*** – ***Devolutions Gateway***.
2. Klik på ***Mere*** – ***Download offentlig nøgle***.
3. Send det Base64-kodede indhold af denne fil til containeren i `PROVISIONER_PUBLIC_KEY_B64`, og start eller genskab derefter containeren.
4. Tilbage under ***Administration*** – ***Devolutions Gateway*** skal De klikke på knappen ***Tilføj*** (***+***) og vælge ***Gateway***.
5. Angiv ***URL til Devolutions Gateway***, for eksempel `https://gateway.contoso.com:7171`, og ***TCP-værtsnavn***, for eksempel `gateway.contoso.com`. Brug det eksterne værtsnavn og de porte, som klienterne bruger, ikke containerens interne porte.
6. Klik på ***Test forbindelse***, og gem derefter.

Se følgende for detaljer om hver indstilling:

* [Konfiguration af Devolutions Gateway med Devolutions Server](/gateway/da/getting-started/devolutions-server/devolutions-gateway-configuration-with-devolutions-server.md)
* [Konfiguration af Devolutions Gateway med Devolutions Cloud](/gateway/da/getting-started/devolutions-cloud/devolutions-gateway-configuration-with-devolutions-cloud.md)
* [Konfiguration af Devolutions Gateway i Remote Desktop Manager](/gateway/da/getting-started/devolutions-server/devolutions-gateway-configuration-in-remote-desktop-manager.md)

### Kør det selvstændige webprogram

For at bruge Devolutions Gateway uden Devolutions Server eller Devolutions Cloud skal De aktivere det selvstændige webprogram:

```shell
docker run -d \
  --name devolutions-gateway \
  -p 7171:7171 \
  -e HOSTNAME=gateway.contoso.com \
  -e WEB_SCHEME=https \
  -e WEB_APP_ENABLED=true \
  -e WEB_APP_USERNAME=gatewayadmin \
  -e WEB_APP_PASSWORD='<password>' \
  -v devolutions-gateway-data:/tmp/devolutions-gateway \
  devolutions/devolutions-gateway:latest
```

Åbn derefter `https://gateway.contoso.com:7171` i en browser. I denne tilstand er TCP-lytteren slået fra, medmindre `TCP_ENABLED=true` er angivet.

{% hint style="danger" %}
Med `WEB_APP_AUTHENTICATION=None` (standarden, når der ikke er angivet brugernavn og adgangskode) kan alle, der kan nå weblytteren, bruge webprogrammet. Angiv altid `WEB_APP_USERNAME` og `WEB_APP_PASSWORD`, når containeren kan nås fra andre maskiner.
{% endhint %}

### Opgrader Devolutions Gateway

For at opgradere skal De hente det nye image og genskabe containeren. Konfigurationen bevares, hvis den er gemt på en volumen, og nøglerne og certifikatet importeres igen fra miljøvariablerne.

Med Docker Compose skal De om nødvendigt ændre versions-tagget i `compose.yaml` og derefter køre:

```shell
docker compose pull
docker compose up -d
```

Med `docker run` skal De hente det nye image, fjerne containeren og køre den igen med de samme parametre:

```shell
docker pull devolutions/devolutions-gateway:latest
docker stop devolutions-gateway
docker rm devolutions-gateway
# Run the same docker run command as before
```

{% hint style="info" %}
De opdateringsmetoder, der er beskrevet for Windows (masseopdatering fra Devolutions Server via Devolutions Agent eller PowerShell-scriptet til automatisk opdatering), gælder ikke for containere. Opgrader i stedet containerimaget.
{% endhint %}

### Begrænsninger

* Der publiceres kun Linux-containerimages. Der findes ikke et Windows-containerimage, så funktioner, der afhænger af Windows, såsom [Windows-certifikatlageret](/gateway/da/knowledge-base/how-to-articles/use-windows-certificate-store-for-devolutions-gateway.md), er ikke tilgængelige.
* TLS-certifikatet og nøglerne skal angives i PEM-format via miljøvariabler. PFX-filer understøttes ikke af disse variabler.
* Devolutions Gateway skal opløse målværtsnavne inde fra containeren. Konfigurer containerens DNS (for eksempel med indstillingen `--dns` i `docker run`), hvis målene kun kan opløses af en intern DNS-server.

### Se også

* [Konfiguration af Devolutions Gateway på Linux](/gateway/da/getting-started/devolutions-gateway-configuration-on-linux.md)
* [Fejlfinding af Devolutions Gateway](/gateway/da/knowledge-base/troubleshooting-articles/devolutions-gateway-troubleshooting.md)
* [devolutions/devolutions-gateway på Docker Hub](https://hub.docker.com/r/devolutions/devolutions-gateway)
* [Startpunkt for Devolutions Gateway-containeren på GitHub](https://github.com/Devolutions/devolutions-gateway/tree/master/package/Linux)


---

# 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/gateway/da/getting-started/devolutions-gateway-configuration-in-docker.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.
