> 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/de/knowledge-base/how-to-articles/devolutions-server-docker-deployment.md).

# Devolutions Server mit Docker bereitstellen

Stellen Sie Devolutions Server mit Docker auf SQL Server oder PostgreSQL bereit, inklusive Ersteinrichtung, Verschlüsselungskonfiguration, benutzerdefinierten Ports und TLS-Zertifikaten.

Dieser Artikel zeigt, wie Sie Devolutions Server mit Docker und einer SQL Server- oder PostgreSQL-Datenbank bereitstellen. Das Devolutions Server-Docker-Image ist ein Linux-Image, das für die Plattformen `linux/amd64` und `linux/arm64` verfügbar ist.

{% hint style="info" %}
Zur Vereinfachung wird die Docker-Image-Version von Devolutions Server in den Codeblöcken dieses Artikels als `20XX.X` geschrieben. Ändern Sie diese Variable auf die Version, die Sie verwenden möchten.
{% endhint %}

### Voraussetzungen

* Docker-Version `20.10.X` oder höher.
* Eine Datenbankinstanz:
  * Eine SQL Server-Instanz, einschließlich Azure SQL Database, ordnungsgemäß [für Devolutions Server eingerichtet](/server/de/getting-started/installation/database-setup.md).
  * Oder eine [PostgreSQL](/server/de/getting-started/installation/database-setup/database-instance/postgresql.md)-Instanz der Version 14 oder höher, selbst gehostet oder verwaltet, mit einer Rolle, die das Attribut `SUPERUSER` besitzt.
* Die minimalen [Systemanforderungen](/server/de/overview-of-devolutions-server/system-requirements.md) für den Betrieb von Devolutions Server.

### Datenbank vorbereiten

Der Container verbindet sich mit der Datenbank über ein einziges Konto, das für die Initialisierung, die Schemaupgrades und den normalen Betrieb verwendet wird. Erstellen Sie ein dediziertes Konto für Devolutions Server, anstatt ein Administratorkonto wie `sa` oder `postgres` zu verwenden.

#### SQL Server

Erstellen Sie mit einem Administratorkonto (zum Beispiel `sa` oder ein Azure SQL-Administrator) einen dedizierten Anmeldnamen und die Devolutions Server-Datenbank, und fügen Sie den Anmeldnamen dann der Rolle `db_owner` dieser Datenbank hinzu.

Wenn die Datenbank nicht vorhanden ist, erstellt die Initialisierung sie mit der Sortierung `Latin1_General_CS_AS`. Dafür benötigt der Anmeldname die Berechtigung, Datenbanken zu erstellen.

#### PostgreSQL

Erstellen Sie mit einem Administratorkonto eine dedizierte Anmeldungsrolle für Devolutions Server. Die Initialisierung verbindet sich mit der Wartungsdatenbank `postgres`, um zu prüfen, ob die Devolutions Server-Datenbank vorhanden ist. Die Rolle benötigt daher das Privileg `CONNECT` für `postgres` (PostgreSQL gewährt es standardmäßig allen Rollen).

{% hint style="warning" %}
Die Rolle muss das Attribut `SUPERUSER` besitzen, um das Datenbankschema während der Initialisierung zu erstellen. Die Schemaerstellung ändert PostgreSQL-Typumwandlungen, was nur ein Superuser tun kann.
{% endhint %}

```sql
CREATE ROLE dvls_user WITH LOGIN SUPERUSER PASSWORD 'YourSecurePassword!';
```

Nach der Initialisierung erfordern die Schemaupgrades und der normale Betrieb von Devolutions Server das Attribut `SUPERUSER` nicht. Um die Privilegien der Rolle einzuschränken, entfernen Sie das Attribut. Die Rolle bleibt Eigentümer der Datenbank:

```sql
ALTER ROLE dvls_user NOSUPERUSER;
```

### Variablen für die Datenbankverbindung

Die Beispiele in diesem Artikel stellen eine Verbindung mit SQL Server her. Um eine Verbindung mit PostgreSQL herzustellen, fügen Sie `-e DATABASE_TYPE=PostgreSQL` und `-e DATABASE_ENCRYPT=true` zu den Initialisierungs- und Laufzeitbefehlen hinzu und setzen Sie `DATABASE_HOST` auf den Namen des PostgreSQL-Servers. Die übrigen Variablen sind für beide Datenbankmodule gleich.

| Variable                            | SQL Server                                                                      | PostgreSQL                                                                                                                     |
| ----------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| `DATABASE_TYPE`                     | `SqlServer` (Standard).                                                         | `PostgreSQL`.                                                                                                                  |
| `DATABASE_HOST`                     | Servername. Ein Port kann im Format `host,port` hinzugefügt werden.             | Servername. Ein Port kann im Format `host:port` hinzugefügt werden. Dieses Format hat Vorrang vor `DATABASE_PORT`.             |
| `DATABASE_PORT`                     | `1433` (Standard).                                                              | `5432` (Standard).                                                                                                             |
| `DATABASE_ENCRYPT`                  | `true` verschlüsselt die Verbindung. Standard: `false`.                         | `true` verschlüsselt die Verbindung und überprüft das Serverzertifikat. Standard: `false` (nicht verschlüsselt).               |
| `DATABASE_TRUST_SERVER_CERTIFICATE` | `true` vertraut dem Serverzertifikat, ohne es zu überprüfen. Standard: `false`. | Mit `DATABASE_ENCRYPT=true` behält `true` die Verschlüsselung bei, ohne das Serverzertifikat zu überprüfen. Standard: `false`. |

{% hint style="warning" %}
Bei PostgreSQL deaktiviert der Standardwert `DATABASE_ENCRYPT=false` SSL: Die Verbindung zur Datenbank ist nicht verschlüsselt. Mit `DATABASE_ENCRYPT=true` muss das Zertifikat des PostgreSQL-Servers von einer Zertifizierungsstelle ausgestellt sein, der der Container vertraut, und mit dem Namen `DATABASE_HOST` übereinstimmen. Andernfalls setzen Sie auch `DATABASE_TRUST_SERVER_CERTIFICATE=true`.
{% endhint %}

Die vollständige Liste der Variablen finden Sie unter [Erweiterte Docker-Konfiguration für Devolutions Server](/server/de/knowledge-base/how-to-articles/devolutions-server-docker-deployment/advanced-docker-configuration-for-devolutions-server.md).

### Erstmalige Einrichtung von Devolutions Server

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

1. Laden Sie das neueste [Devolutions Server Docker-Image](https://hub.docker.com/r/devolutions/devolutions-server) herunter:

   ```powershell
   docker pull devolutions/devolutions-server:release-20XX.X
   ```
2. Führen Sie Devolutions Server im Initialisierungsmodus aus, um die Datenbank zu erstellen, falls sie nicht vorhanden ist, ihr Schema und den ersten Administrator anzulegen, die Verschlüsselungsschlüssel zu erzeugen und HTTPS mit einem selbstsignierten Zertifikat zu konfigurieren. Das Volume `dvls-init-data` behält `App_Data`, damit die Verschlüsselungskonfiguration anschließend extrahiert werden kann. Fügen Sie bei PostgreSQL `-e DATABASE_TYPE=PostgreSQL` und `-e DATABASE_ENCRYPT=true` hinzu und setzen Sie `DATABASE_HOST` auf den Namen des PostgreSQL-Servers.

   ```powershell
   docker volume create dvls-init-data

   docker run --rm `
     -e DATABASE_HOST=your-sql-server.database.windows.net `
     -e DATABASE_NAME=dvls `
     -e DATABASE_USERNAME=dvls_user `
     -e DATABASE_PASSWORD='YourSecurePassword!' `
     -e HOSTNAME=localhost `
     -e WEB_SCHEME=https `
     -e PORT=5000 `
     -e DVLS_INIT=true `
     -v dvls-init-data:/opt/devolutions/dvls/App_Data `
     -p 5000:5000 `
     devolutions/devolutions-server:release-20XX.X
   ```
3. Warten Sie auf die Meldung `Initialization completed successfully.` und drücken Sie dann <kbd>Strg</kbd>+<kbd>C</kbd>, um den Container zu beenden. Nach der Initialisierung führt der Container Devolutions Server weiter aus, bis er beendet wird. Die Option `--rm` entfernt den Container und behält das Volume `dvls-init-data`.
4. Extrahieren Sie `encryption.config` aus dem Initialisierungsvolume und konvertieren Sie die Datei in Base64. Bewahren Sie die Datei `encryption.config.b64` sicher auf: Jeder Start im Laufzeitmodus benötigt sie.

   ```powershell
   docker run --rm `
     -v dvls-init-data:/data `
     alpine `
     cat /data/encryption.config > $env:TEMP\encryption.config

   $content = Get-Content -Path "$env:TEMP\encryption.config" -Raw
   $bytes = [System.Text.Encoding]::UTF8.GetBytes($content)
   $base64 = [System.Convert]::ToBase64String($bytes)
   $base64 | Out-File -FilePath "$env:TEMP\encryption.config.b64" -NoNewline -Encoding ASCII
   ```
5. Starten Sie Devolutions Server im Laufzeitmodus mit der Base64-Verschlüsselungskonfiguration. Fügen Sie bei PostgreSQL dieselben Variablen `DATABASE_TYPE` und `DATABASE_ENCRYPT` wie im Initialisierungsbefehl hinzu. Verwenden Sie anschließend die Befehle `docker ps` und `docker logs dvls-server`, um zu prüfen, ob alles ordnungsgemäß funktioniert.

   ```powershell
   $encryptionConfig = Get-Content "$env:TEMP\encryption.config.b64" -Raw

   docker run -d --name dvls-server `
     -e DATABASE_HOST=your-sql-server.database.windows.net `
     -e DATABASE_NAME=dvls `
     -e DATABASE_USERNAME=dvls_user `
     -e DATABASE_PASSWORD='YourSecurePassword!' `
     -e HOSTNAME=localhost `
     -e WEB_SCHEME=https `
     -e PORT=5000 `
     -e DVLS_ENCRYPTION_CONFIG_B64="$encryptionConfig" `
     -p 5000:5000 `
     devolutions/devolutions-server:release-20XX.X
   ```
6. Öffnen Sie die Weboberfläche, indem Sie `https://localhost:5000` in Ihrem Browser öffnen. Umgehen Sie die Sicherheitswarnung zum selbstsignierten Zertifikat, indem Sie auf ***Erweitert*** – ***Fortfahren*** klicken. Ein benutzerdefiniertes TLS-Zertifikat kann später eingebunden werden.
7. Melden Sie sich an, indem Sie `dvls-admin` sowohl als Benutzernamen als auch als Passwort verwenden. Devolutions Server fordert anschließend ein neues Passwort für dieses Konto an.
8. Stellen Sie sicher, dass Devolutions Server mit `DVLS_ENCRYPTION_CONFIG_B64` ausgeführt wird, dass die Weboberfläche erreichbar ist und dass `encryption.config.b64` an einem sicheren Ort gespeichert ist (die Datei wird bei jedem Neustart und jeder erneuten Bereitstellung benötigt). Entfernen Sie anschließend das temporäre Initialisierungsvolume:

   ```powershell
   docker volume rm dvls-init-data
   ```

{% endtab %}

{% tab title="macOS" %}

1. Laden Sie das neueste [Devolutions Server Docker-Image](https://hub.docker.com/r/devolutions/devolutions-server) herunter:

   ```bash
   docker pull devolutions/devolutions-server:release-20XX.X
   ```
2. Führen Sie Devolutions Server im Initialisierungsmodus aus, um die Datenbank zu erstellen, falls sie nicht vorhanden ist, ihr Schema und den ersten Administrator anzulegen, die Verschlüsselungsschlüssel zu erzeugen und HTTPS mit einem selbstsignierten Zertifikat zu konfigurieren. Das Volume `dvls-init-data` behält `App_Data`, damit die Verschlüsselungskonfiguration anschließend extrahiert werden kann. Fügen Sie bei PostgreSQL `-e DATABASE_TYPE=PostgreSQL` und `-e DATABASE_ENCRYPT=true` hinzu und setzen Sie `DATABASE_HOST` auf den Namen des PostgreSQL-Servers.

   ```bash
   docker volume create dvls-init-data

   docker run --rm \
     -e DATABASE_HOST=your-sql-server.database.windows.net \
     -e DATABASE_NAME=dvls \
     -e DATABASE_USERNAME=dvls_user \
     -e DATABASE_PASSWORD='YourSecurePassword!' \
     -e HOSTNAME=localhost \
     -e WEB_SCHEME=https \
     -e PORT=5000 \
     -e DVLS_INIT=true \
     -v dvls-init-data:/opt/devolutions/dvls/App_Data \
     -p 5000:5000 \
     devolutions/devolutions-server:release-20XX.X
   ```
3. Warten Sie auf die Meldung `Initialization completed successfully.` und drücken Sie dann <kbd>Strg</kbd>+<kbd>C</kbd>, um den Container zu beenden. Nach der Initialisierung führt der Container Devolutions Server weiter aus, bis er beendet wird. Die Option `--rm` entfernt den Container und behält das Volume `dvls-init-data`.
4. Extrahieren Sie `encryption.config` aus dem Initialisierungsvolume und konvertieren Sie die Datei in Base64. Bewahren Sie die Datei `encryption.config.b64` sicher auf: Jeder Start im Laufzeitmodus benötigt sie.

   ```bash
   docker run --rm \
     -v dvls-init-data:/data \
     alpine \
     cat /data/encryption.config > /tmp/encryption.config

   base64 -i /tmp/encryption.config -o /tmp/encryption.config.b64
   ```
5. Starten Sie Devolutions Server im Laufzeitmodus mit der Base64-Verschlüsselungskonfiguration. Fügen Sie bei PostgreSQL dieselben Variablen `DATABASE_TYPE` und `DATABASE_ENCRYPT` wie im Initialisierungsbefehl hinzu. Verwenden Sie anschließend die Befehle `docker ps` und `docker logs dvls-server`, um zu prüfen, ob alles ordnungsgemäß funktioniert.

   ```bash
   docker run -d --name dvls-server \
     -e DATABASE_HOST=your-sql-server.database.windows.net \
     -e DATABASE_NAME=dvls \
     -e DATABASE_USERNAME=dvls_user \
     -e DATABASE_PASSWORD='YourSecurePassword!' \
     -e HOSTNAME=localhost \
     -e WEB_SCHEME=https \
     -e PORT=5000 \
     -e DVLS_ENCRYPTION_CONFIG_B64="$(cat /tmp/encryption.config.b64)" \
     -p 5000:5000 \
     devolutions/devolutions-server:release-20XX.X
   ```
6. Öffnen Sie die Weboberfläche, indem Sie `https://localhost:5000` in Ihrem Browser öffnen. Umgehen Sie die Sicherheitswarnung zum selbstsignierten Zertifikat, indem Sie auf ***Erweitert*** – ***Fortfahren*** klicken. Ein benutzerdefiniertes TLS-Zertifikat kann später eingebunden werden.
7. Melden Sie sich an, indem Sie `dvls-admin` sowohl als Benutzernamen als auch als Passwort verwenden. Devolutions Server fordert anschließend ein neues Passwort für dieses Konto an.
8. Stellen Sie sicher, dass Devolutions Server mit `DVLS_ENCRYPTION_CONFIG_B64` ausgeführt wird, dass die Weboberfläche erreichbar ist und dass `encryption.config.b64` an einem sicheren Ort gespeichert ist (die Datei wird bei jedem Neustart und jeder erneuten Bereitstellung benötigt). Entfernen Sie anschließend das temporäre Initialisierungsvolume:

   ```bash
   docker volume rm dvls-init-data
   ```

{% endtab %}

{% tab title="Linux" %}

1. Laden Sie das neueste [Devolutions Server Docker-Image](https://hub.docker.com/r/devolutions/devolutions-server) herunter:

   ```bash
   docker pull devolutions/devolutions-server:release-20XX.X
   ```
2. Führen Sie Devolutions Server im Initialisierungsmodus aus, um die Datenbank zu erstellen, falls sie nicht vorhanden ist, ihr Schema und den ersten Administrator anzulegen, die Verschlüsselungsschlüssel zu erzeugen und HTTPS mit einem selbstsignierten Zertifikat zu konfigurieren. Das Volume `dvls-init-data` behält `App_Data`, damit die Verschlüsselungskonfiguration anschließend extrahiert werden kann. Fügen Sie bei PostgreSQL `-e DATABASE_TYPE=PostgreSQL` und `-e DATABASE_ENCRYPT=true` hinzu und setzen Sie `DATABASE_HOST` auf den Namen des PostgreSQL-Servers.

   ```bash
   docker volume create dvls-init-data

   docker run --rm \
     -e DATABASE_HOST=your-sql-server.database.windows.net \
     -e DATABASE_NAME=dvls \
     -e DATABASE_USERNAME=dvls_user \
     -e DATABASE_PASSWORD='YourSecurePassword!' \
     -e HOSTNAME=localhost \
     -e WEB_SCHEME=https \
     -e PORT=5000 \
     -e DVLS_INIT=true \
     -v dvls-init-data:/opt/devolutions/dvls/App_Data \
     -p 5000:5000 \
     devolutions/devolutions-server:release-20XX.X
   ```
3. Warten Sie auf die Meldung `Initialization completed successfully.` und drücken Sie dann <kbd>Strg</kbd>+<kbd>C</kbd>, um den Container zu beenden. Nach der Initialisierung führt der Container Devolutions Server weiter aus, bis er beendet wird. Die Option `--rm` entfernt den Container und behält das Volume `dvls-init-data`.
4. Extrahieren Sie `encryption.config` aus dem Initialisierungsvolume und konvertieren Sie die Datei in Base64. Bewahren Sie die Datei `encryption.config.b64` sicher auf: Jeder Start im Laufzeitmodus benötigt sie.

   ```bash
   docker run --rm \
     -v dvls-init-data:/data \
     alpine \
     cat /data/encryption.config > /tmp/encryption.config

   base64 -w 0 /tmp/encryption.config > /tmp/encryption.config.b64
   ```
5. Starten Sie Devolutions Server im Laufzeitmodus mit der Base64-Verschlüsselungskonfiguration. Fügen Sie bei PostgreSQL dieselben Variablen `DATABASE_TYPE` und `DATABASE_ENCRYPT` wie im Initialisierungsbefehl hinzu. Verwenden Sie anschließend die Befehle `docker ps` und `docker logs dvls-server`, um zu prüfen, ob alles ordnungsgemäß funktioniert.

   ```bash
   docker run -d --name dvls-server \
     -e DATABASE_HOST=your-sql-server.database.windows.net \
     -e DATABASE_NAME=dvls \
     -e DATABASE_USERNAME=dvls_user \
     -e DATABASE_PASSWORD='YourSecurePassword!' \
     -e HOSTNAME=localhost \
     -e WEB_SCHEME=https \
     -e PORT=5000 \
     -e DVLS_ENCRYPTION_CONFIG_B64="$(cat /tmp/encryption.config.b64)" \
     -p 5000:5000 \
     devolutions/devolutions-server:release-20XX.X
   ```
6. Öffnen Sie die Weboberfläche, indem Sie `https://localhost:5000` in Ihrem Browser öffnen. Umgehen Sie die Sicherheitswarnung zum selbstsignierten Zertifikat, indem Sie auf ***Erweitert*** – ***Fortfahren*** klicken. Ein benutzerdefiniertes TLS-Zertifikat kann später eingebunden werden.
7. Melden Sie sich an, indem Sie `dvls-admin` sowohl als Benutzernamen als auch als Passwort verwenden. Devolutions Server fordert anschließend ein neues Passwort für dieses Konto an.
8. Stellen Sie sicher, dass Devolutions Server mit `DVLS_ENCRYPTION_CONFIG_B64` ausgeführt wird, dass die Weboberfläche erreichbar ist und dass `encryption.config.b64` an einem sicheren Ort gespeichert ist (die Datei wird bei jedem Neustart und jeder erneuten Bereitstellung benötigt). Entfernen Sie anschließend das temporäre Initialisierungsvolume:

   ```bash
   docker volume rm dvls-init-data
   ```

{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Führen Sie die Initialisierung nur einmal pro Datenbank aus. Ein erneutes Ausführen für eine bereits initialisierte Datenbank schlägt fehl, weil das Administratorkonto bereits vorhanden ist.
{% endhint %}

### Betriebsmodi

Der Devolutions Server-Container arbeitet in drei verschiedenen Modi:

| Modus                      | Umgebungsvariable          | Zweck                  | Verhalten                                                                                                                                                                 |
| -------------------------- | -------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Runtime** **(Standard)** | Keine speziellen Variablen | Normalbetrieb          | Wendet ausstehende Datenbankschema-Upgrades an, startet dann den Webserver und läuft weiter.                                                                              |
| **Initialisierung**        | `DVLS_INIT=true`           | Erstmalige Einrichtung | Erstellt die Datenbank, falls sie nicht vorhanden ist, ihr Schema, die Verschlüsselungsschlüssel und das Administratorkonto, startet dann den Webserver und läuft weiter. |
| **Update**                 | `DVLS_UPDATE_MODE=true`    | Datenbank-Upgrade      | Sichert die Konfigurationsdateien und den Installationsordner, migriert die Datenbank und beendet sich dann.                                                              |

{% hint style="info" %}
Die Modi **Initialisierung** und **Update** schließen sich gegenseitig aus.

Um den Laufzeitmodus zu starten, ohne die ausstehenden Schemaupgrades anzuwenden, setzen Sie `DVLS_DATABASE_UPGRADE_ON_STARTUP=false`.
{% endhint %}

{% hint style="warning" %}
Der Updatemodus sichert keine SQL Server- oder PostgreSQL-Datenbanken. Sichern Sie die Datenbank, bevor Sie ihn ausführen, zum Beispiel mit `BACKUP DATABASE` unter SQL Server oder `pg_dump` unter PostgreSQL.
{% endhint %}

{% hint style="warning" %}
Das Devolutions Server-Image enthält nicht die PostgreSQL-Clienttools `pg_dump` und `pg_restore`, die der integrierte Sicherungsauftrag mit PostgreSQL verwendet. Um diesen Auftrag zu verwenden, erstellen Sie ein abgeleitetes Image, das das Paket `postgresql-client` installiert, mit einer Hauptversion, die der des PostgreSQL-Servers entspricht oder neuer ist, oder binden Sie die Tools im Container ein und setzen Sie ihre vollständigen Pfade in den Variablen `DVLS_PG_DUMP_PATH` und `DVLS_PG_RESTORE_PATH`.
{% endhint %}

### Benutzerdefinierter Port

Devolutions Server lauscht standardmäßig auf Port `5000`. Um den Port zu ändern, setzen Sie die Umgebungsvariable `PORT` und veröffentlichen Sie denselben Port im Befehl `docker run`. Um beispielsweise Port `8080` zu verwenden, ersetzen Sie `-e PORT=5000` und `-p 5000:5000` durch `-e PORT=8080` und `-p 8080:8080` und öffnen Sie dann `https://localhost:8080`.

`PORT` hat Vorrang vor `WEB_PORT`. Die Variable `ASPNETCORE_URLS` hat keine Wirkung: Der Container setzt die Abhöradresse aus `WEB_SCHEME` und `PORT`.

### Benutzerdefiniertes TLS-Zertifikat einbinden

Binden Sie Ihre eigenen Zertifikatsdateien ein, anstatt das automatisch generierte selbstsignierte Zertifikat zu verwenden:

1. Kopieren Sie das Zertifikat und seinen privaten Schlüssel im PEM-Format in einen Ordner des Docker-Hosts, zum Beispiel `/host/path/certs`.
2. Fügen Sie diese Optionen zum Laufzeitbefehl hinzu, mit `WEB_SCHEME=https` und `HOSTNAME` auf den Namen im Zertifikat gesetzt (zum Beispiel `devolutions-server.company.com`):

   ```bash
   -e TLS_CERTIFICATE_FILE=/opt/devolutions/dvls/certs/server.pem
   -e TLS_PRIVATE_KEY_FILE=/opt/devolutions/dvls/certs/server.key
   -v /host/path/certs:/opt/devolutions/dvls/certs:ro
   ```

{% hint style="info" %}
Wenn keine der beiden Dateien unter diesen Pfaden gefunden wird, erzeugt Devolutions Server stattdessen ein selbstsigniertes Zertifikat. Wird nur eine der beiden Dateien gefunden, beendet sich der Container mit einem Fehler.
{% endhint %}

### Container-Verwaltung

| Befehle                    | Funktionen              |
| -------------------------- | ----------------------- |
| `docker start dvls-server` | Startet den Container.  |
| `docker stop dvls-server`  | Stoppt den Container.   |
| `docker rm dvls-server`    | Entfernt den Container. |

{% hint style="info" %}
Das Entfernen des Containers ist unbedenklich, solange Sie die Datei `encryption.config.b64`, den Zugriff auf Ihre Datenbank und die dokumentierten Umgebungsvariablen haben.
{% endhint %}

#### Siehe auch

* [Sicherheitscheckliste](/server/de/getting-started/security-checklist.md)
* [PostgreSQL](/server/de/getting-started/installation/database-setup/database-instance/postgresql.md)
* [Devolutions Server deployment to Azure App Service using a container](/server/de/knowledge-base/how-to-articles/devolutions-server-docker-deployment/devolutions-server-deployment-to-azure-app-service-using-a-container.md)
* [Erweiterte Docker-Konfiguration für Devolutions Server](/server/de/knowledge-base/how-to-articles/devolutions-server-docker-deployment/advanced-docker-configuration-for-devolutions-server.md)
* [Devolutions Server und SQL Server mit Docker Compose unter Windows bereitstellen](/server/de/knowledge-base/how-to-articles/devolutions-server-docker-deployment/deploy-devolutions-server-and-sql-server-with-docker-compose-on-windows.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/de/knowledge-base/how-to-articles/devolutions-server-docker-deployment.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.
