VM Windows — Dynamics-Installation

Support DQE
Support DQE
  • Aktualisiert

1. Installation

Dieser Abschnitt beschreibt das Installationsprotokoll für die Bereitstellung des DQE Unify Servers auf einer Windows Virtual Machine mit Docker und Docker Compose. Der Anwendungsstack besteht aus Redis, RabbitMQ, Nginx, Unify Server und einem Queue Worker, die alle über Docker Compose orchestriert werden.

Hinweis: Alle Container laufen in einem einzigen Docker-Netzwerk auf der Windows-VM. Die Kommunikation zwischen den Containern erfolgt über die in docker-compose.yml definierten Servicenamen, nicht über localhost. Die Umgebungsvariablen sind entsprechend gesetzt.

1.1 Voraussetzungen

1.1.1 Hardwareanforderungen

Komponente Minimum Empfohlen
CPU 4 vCores 8 vCores
RAM 8 GB 16 GB
Festplatte (OS + Docker) 60 GB SSD 120 GB SSD
Netzwerk 100 Mbit/s 1 Gbit/s

1.1.2 Softwareanforderungen

Software Version / Hinweise
Betriebssystem Windows Server 2019 / 2022 (64-bit)
Docker Engine Neueste stabile Version – installiert innerhalb von WSL2 (Ubuntu)
WSL2 Windows Subsystem for Linux 2 – erforderlich, um Linux-Container auf Windows Server auszuführen
PowerShell 5.1 oder höher (in Windows enthalten)
Internetzugang Erforderlich, um Images aus der DQE Container Registry und Docker Hub abzurufen

1.2 Docker über WSL2 installieren

Warum WSL2? Docker CE unter Windows Server kann Linux-Container nicht nativ ausführen (LCOW wurde in Docker 20.10+ entfernt). WSL2 stellt einen echten Linux-Kernel unter Windows bereit, sodass Docker Linux-Container nahtlos ausführen kann.

1.2.1 Windows-Features aktivieren

Öffnen Sie PowerShell als Administrator und führen Sie jeden Befehl aus:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Enable-WindowsOptionalFeature -Online -FeatureName Containers -All -NoRestart

Neustart erforderlich: Starten Sie die VM nach der Aktivierung dieser Features neu, bevor Sie fortfahren.

1.2.2 WSL2 und Ubuntu installieren

Öffnen Sie nach dem Neustart PowerShell als Administrator:

  1. Legen Sie WSL2 als Standardversion fest:

    wsl --set-default-version 2
  2. Installieren Sie Ubuntu:

    wsl --install -d Ubuntu

    Ein Terminalfenster öffnet sich und fordert Sie auf, einen Unix-Benutzernamen und ein Passwort zu erstellen. Schließen Sie die Einrichtung ab, bevor Sie fortfahren.

1.2.3 Docker CE innerhalb von Ubuntu installieren

Öffnen Sie das Ubuntu-WSL2-Terminal und führen Sie Folgendes aus:

  1. Installieren Sie Docker CE:

    curl -fsSL https://get.docker.com | sudo sh

    Hinweis: Das Skript erkennt WSL und empfiehlt Docker Desktop. Ignorieren Sie die Meldung und warten Sie 20 Sekunden, bis die Installation automatisch fortgesetzt wird.

  2. Fügen Sie Ihren Benutzer der Docker-Gruppe hinzu und starten Sie den Dienst:

    sudo usermod -aG docker $USER
    sudo service docker start
  3. Schließen Sie das WSL2-Terminal und öffnen Sie es erneut, überprüfen Sie anschließend:

    docker --version
    docker compose version

    Hinweis: Der Docker-Dienst muss bei jedem Start einer WSL2-Sitzung manuell gestartet werden: sudo service docker start.

1.2.4 Bei der DQE Container Registry authentifizieren

Die DQE-Unify-Images werden in einer privaten Azure Container Registry gehostet. Melden Sie sich über das Ubuntu-WSL2-Terminal mit den von DQE Software bereitgestellten Zugangsdaten an:

docker login <registry-url> --username <Username provided by DQE> --password <Password provided by DQE>

Bei erfolgreicher Anmeldung wird Folgendes angezeigt: Login Succeeded.

1.3 Arbeitsverzeichnis vorbereiten

Erstellen Sie einen dedizierten Ordner, der die Docker-Compose-Datei, die Nginx-Konfiguration und die persistenten Volumes enthält.

# Create the main application directory
New-Item -ItemType Directory -Path "C:\dqe-unify"
New-Item -ItemType Directory -Path "C:\dqe-unify\nginxconf"
New-Item -ItemType Directory -Path "C:\dqe-unify\volumes\redisvol"
New-Item -ItemType Directory -Path "C:\dqe-unify\volumes\rabbitvol"

Die Verzeichnisstruktur sollte wie folgt aussehen:

C:\dqe-unify\
├── docker-compose.yml          ← main orchestration file
├── nginxconf\
│   └── default.conf            ← Nginx reverse-proxy configuration
└── volumes\
    ├── redisvol\               ← Redis persistent data
    └── rabbitvol\              ← RabbitMQ persistent data

Hinweis: Docker Compose bindet diese lokalen Verzeichnisse als Bind-Mounts in die Container ein.

1.4 Nginx konfigurieren

Nginx fungiert als Reverse-Proxy und leitet eingehende HTTP/HTTPS-Anfragen an den Unify-Server-Container auf Port 8000 weiter.

Führen Sie den folgenden Befehl aus, um die Datei in Notepad zu öffnen, fügen Sie dann die untenstehende Konfiguration ein und speichern Sie sie:

notepad C:\dqe-unify\nginxconf\default.conf

Die Datei C:\dqe-unify\nginxconf\default.conf muss Folgendes enthalten:

server {
    listen 80;

    location / {
        proxy_pass         http://unify-server:8000;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_read_timeout 300s;
    }
}

Hinweis: In Docker Compose besitzt jeder Service einen eigenen Hostnamen, der seinem Servicenamen entspricht. Das Proxy-Ziel ist daher http://unify-server:8000 und nicht http://localhost:8000.

HTTPS

Fügen Sie einen zweiten Server-Block in default.conf hinzu und binden Sie Ihr SSL-Zertifikat sowie Ihren privaten Schlüssel in den Nginx-Container ein. Aktualisieren Sie docker-compose.yml, um Port 443 freizugeben und die Zertifikatsdateien einzubinden.

server {
    listen 443 ssl;

    ssl_certificate      /etc/nginx/ssl/cert.crt;
    ssl_certificate_key  /etc/nginx/ssl/cert.key;

    location / {
        proxy_pass         http://unify-server:8000;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_read_timeout 300s;
    }
}

1.5 Docker-Compose-Konfigurationsdatei

Erstellen Sie die Datei C:\dqe-unify\docker-compose.yml mit dem untenstehenden Inhalt. Ersetzen Sie den Platzhalter <registry-url> durch die von DQE Software bereitgestellte URL.

services:
  redis:
    image: <registry-url>/dqe-unify-redis:latest
    platform: linux/amd64
    restart: always
    volumes:
      - redis-data:/data
    networks:
      - unify-net

  rabbitmq:
    image: <registry-url>/dqe-unify-rabbitmq:latest
    platform: linux/amd64
    restart: always
    ports:
      - "5672:5672"
    volumes:
      - rabbitmq-data:/bitnami
    networks:
      - unify-net

  nginx:
    image: <registry-url>/dqe-unify-nginx:latest
    platform: linux/amd64
    restart: always
    ports:
      - "80:80"
    volumes:
      - /mnt/c/dqe-unify/nginxconf:/etc/nginx/conf.d:ro
    depends_on:
      - unify-server
    networks:
      - unify-net

  unify-server:
    image: <registry-url>/unify-server-web-ms-dynamics:<version>
    restart: always
    command: ["python", "-u", "app.pyc"]
    ports:
      - "8000:8000"
    environment:
      - REDIS_URL=redis://redis:6379
      - CLOUDAMQP_URL=amqp://guest:guest@rabbitmq:5672/
      - PORT=8000
    depends_on:
      - redis
      - rabbitmq
    networks:
      - unify-net
    deploy:
      resources:
        limits:
          memory: 1g
          cpus: "0.25"

  queue-worker:
    image: <registry-url>/unify-server-web-ms-dynamics:<version>
    restart: always
    command: ["python", "-u", "queue_worker.pyc"]
    environment:
      - REDIS_URL=redis://redis:6379
      - CLOUDAMQP_URL=amqp://guest:guest@rabbitmq:5672/
    depends_on:
      - redis
      - rabbitmq
    networks:
      - unify-net
    deploy:
      resources:
        limits:
          memory: 5g
          cpus: "1.0"

volumes:
  redis-data:
  rabbitmq-data:

networks:
  unify-net:
    driver: bridge

Wichtige Konfigurationshinweise:

  • Die Services kommunizieren über ihren Servicenamen, zum Beispiel redis oder rabbitmq, nicht über 127.0.0.1.
  • redis-data und rabbitmq-data sind benannte Docker-Volumes, die im WSL2-Linux-Dateisystem gespeichert werden. Dadurch werden NTFS-Berechtigungsprobleme vermieden.
  • Die Nginx-Konfiguration wird aus /mnt/c/dqe-unify/nginxconf gelesen, dem über WSL2 zugänglichen Windows-Ordner.
  • Die Zugangsdaten für die Image-Registry werden über docker login verwaltet, wie in Abschnitt 1.2.4 beschrieben, und nicht in der Compose-Datei hinterlegt.

1.6 Anwendung bereitstellen

Alle folgenden Befehle müssen im Ubuntu-WSL2-Terminal ausgeführt werden.

  1. Schritt 1 — Starten Sie den Docker-Dienst und wechseln Sie in das Anwendungsverzeichnis:

    sudo service docker start
    cd /mnt/c/dqe-unify
  2. Schritt 2 — Laden Sie die erforderlichen Images herunter:

    docker compose pull
  3. Schritt 3 — Starten Sie alle Services im Hintergrundmodus:

    docker compose up -d
  4. Schritt 4 — Überprüfen Sie, dass alle Container laufen:

    docker compose ps

    Erwartete Ausgabe: Alle Services sollten den Status running anzeigen:

    NAME                        IMAGE                                                  STATUS
    dqe-unify-nginx-1           nginx:latest                                           running
    dqe-unify-rabbitmq-1        rabbitmq:3.13-management                               running (healthy)
    dqe-unify-redis-1           redis:alpine                                           running
    dqe-unify-unify-server-1    <registry-url>/unify-server-web-ms-dynamics:v3.0      running
    dqe-unify-queue-worker-1    <registry-url>/unify-server-web-ms-dynamics:v3.0      running

Wichtig: Wenn ein Container den Status exited oder restarting anzeigt, überprüfen Sie sofort seine Logs mit docker compose logs <service-name>.

1.7 Windows-Firewall konfigurieren

Öffnen Sie die erforderlichen eingehenden Ports in der Windows-Firewall, damit externe Clients die Anwendung erreichen können. Führen Sie die folgenden Befehle in PowerShell als Administrator aus:

New-NetFirewallRule -DisplayName "DQE Unify - HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "DQE Unify - HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow

Hinweis: Port 8000 (Unify Server) und Port 5672 (RabbitMQ) müssen nicht extern geöffnet werden. Sie werden nur intern über das Docker-Netzwerk angesprochen.

Dynamics 365 — Eingehende IP-Bereiche autorisieren

Der DQE Unify Server empfängt Anfragen von Microsoft Dynamics 365, das auf einer Azure-Infrastruktur läuft. Sie müssen die entsprechenden Azure-IP-Bereiche sowohl in der Windows-Firewall als auch in der NSG autorisieren.

Die vollständige und aktuelle Liste der Microsoft-Azure-IP-Bereiche steht zum Download bereit unter:
Microsoft Azure IP Ranges and Service Tags

Laden Sie die JSON-Datei herunter, identifizieren Sie die für Ihre Region relevanten Service-Tags Dynamics365 und AzureCloud und fügen Sie die entsprechenden IP-Bereiche als eingehende Allow-Regeln auf Port 443 hinzu.

Azure-VM — Netzwerksicherheitsgruppe (NSG)

Wenn die VM in Azure gehostet wird, müssen Sie außerdem eingehende Sicherheitsregeln in der zugehörigen Netzwerksicherheitsgruppe (NSG) hinzufügen:

  1. Gehen Sie zu Azure Portal → Virtual Machines → [Ihre VM] → Networking.
  2. Klicken Sie auf Add inbound port rule.
  3. Setzen Sie Destination port ranges auf 80,443.
  4. Setzen Sie Protocol auf TCP und Action auf Allow.
  5. Um Dynamics-365-Datenverkehr zu autorisieren, setzen Sie Source auf Service Tag und wählen Sie Dynamics365 aus.
  6. Klicken Sie auf Add.

1.8 Optional: IIS als Reverse-Proxy konfigurieren

Wenn Ihre Organisation IIS als Einstiegspunkt benötigt, zum Beispiel für das Zertifikatsmanagement oder die Integration in eine bestehende IIS-basierte Infrastruktur, können Sie IIS so konfigurieren, dass der Datenverkehr an das auf Port 80 laufende Nginx weitergeleitet wird. Dies ist ein optionaler Schritt. Nginx allein ist ausreichend.

1.8.1 IIS und ARR installieren

In PowerShell als Administrator:

# Install IIS with management tools
Install-WindowsFeature -Name Web-Server, Web-Mgmt-Tools -IncludeManagementTools

# Install URL Rewrite module (required for reverse proxy)
# Download from: https://www.iis.net/downloads/microsoft/url-rewrite
# Then install Application Request Routing (ARR):
# Download from: https://www.iis.net/downloads/microsoft/application-request-routing

1.8.2 Proxy in ARR aktivieren

  1. Öffnen Sie den IIS Manager.
  2. Klicken Sie auf den Serverknoten → Application Request Routing Cache.
  3. Klicken Sie im Bereich Actions auf Server Proxy Settings.
  4. Aktivieren Sie Enable proxy und klicken Sie auf Apply.

1.8.3 Eine URL-Rewrite-Regel hinzufügen

Bearbeiten Sie C:\inetpub\wwwroot\web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="DQE Unify Proxy" stopProcessing="true">
          <match url="(.*)" />
          <action type="Rewrite"
                  url="http://localhost:80/{R:1}" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

1.9 DNS einrichten

Wenden Sie sich an Ihre DNS-Administratoren und bitten Sie sie, einen A-Eintrag zu erstellen, der auf die öffentliche IP-Adresse der Windows-VM verweist.

Eintragstyp Name Wert
A unify.yourdomain.com Öffentliche IP-Adresse der Windows-VM

Wenn sich die VM in Azure befindet, finden Sie ihre öffentliche IP-Adresse unter Azure Portal → Virtual Machines → [Ihre VM] → Overview → Public IP address.

1.10 Bereitstellung überprüfen

Sobald sich die DNS-Änderungen verbreitet haben, öffnen Sie einen Browser und navigieren Sie zu:

http://unify.yourdomain.com

Sie können dies auch lokal von der VM aus testen:

# Test Nginx is reachable
curl http://localhost

# Test the Unify Server is reachable
curl http://localhost:8000

Wenn die Anwendung antwortet, ist die Bereitstellung abgeschlossen und der Server ist korrekt konfiguriert.

2. Anwendungseinrichtung

Sobald die Anwendung läuft, müssen die Windows-Firewall sowie vorgelagerte Firewalls oder Proxys so konfiguriert werden, dass die unten aufgeführten IP-Bereiche zugelassen werden.

2.1 Zu autorisierende IP-Adressen

DQE Software Office Server

Wenden Sie sich an den DQE Software Support, um die zu autorisierende IP-Adresse zu erhalten.

DQE – Deduplizierungsdienst

Wenden Sie sich an den DQE Software Support, um die zu autorisierende IP-Adresse zu erhalten.

DQE – Qualitätsdienst

Wenden Sie sich an den DQE Software Support, um die zu autorisierende IP-Adresse zu erhalten.

Erforderliche Maßnahme: Lassen Sie Ihr IT-/Netzwerkteam die öffentliche IP-Adresse der Windows-VM auch auf Seiten von DQE Software autorisieren. Teilen Sie DQE die ausgehende öffentliche IP-Adresse der VM mit.

Azure-IP-Bereiche (IPv4) — Falls der ausgehende Datenverkehr über Azure geleitet wird

4.175.0.0/16, 4.180.0.0/16, 4.210.128.0/17, 4.231.0.0/17, 4.245.0.0/17, 13.69.0.0/17,
13.73.128.0/18, 13.73.224.0/21, 13.80.0.0/15, 13.88.200.0/21, 13.93.0.0/17, 13.94.128.0/17,
13.95.0.0/16, 20.4.0.0/16, 20.8.0.0/16, 20.13.0.0/17, 20.16.0.0/16, 20.23.0.0/16,
20.31.0.0/16, 20.50.0.0/18, 20.50.88.0/21, 20.50.128.0/17, 20.54.128.0/17, 20.56.0.0/16,
20.61.0.0/16, 20.67.0.0/17, 20.71.0.0/16, 20.73.0.0/16, 20.76.0.0/16, 20.82.0.0/17,
20.86.0.0/16, 20.93.128.0/17, 20.101.0.0/16, 20.103.0.0/16, 20.105.128.0/17, 20.107.0.0/17,
20.123.128.0/17, 20.126.0.0/16, 20.160.0.0/16, 20.224.0.0/16, 20.229.0.0/16,
20.234.128.0/17, 20.238.128.0/17, 23.97.128.0/17, 23.98.46.0/24, 23.100.0.0/20,
23.101.64.0/20, 40.67.192.0/19, 40.68.0.0/16, 40.74.0.0/18, 40.91.192.0/18,
40.114.128.0/17, 40.115.0.0/18, 40.118.0.0/17, 51.124.0.0/16, 51.136.0.0/16,
51.137.0.0/17, 51.138.0.0/17, 51.144.0.0/16, 51.145.128.0/17, 52.136.192.0/18,
52.137.0.0/18, 52.142.192.0/18, 52.143.0.0/18, 52.148.192.0/18, 52.149.64.0/18,
52.157.64.0/18, 52.157.128.0/17, 52.166.0.0/16, 52.174.0.0/16, 52.178.0.0/17,
52.232.0.0/17, 52.233.128.0/17, 52.236.128.0/17, 65.52.128.0/19, 98.64.0.0/16,
104.40.128.0/17, 104.45.0.0/18, 104.45.64.0/20, 104.46.32.0/19, 137.116.192.0/19,
137.117.128.0/17, 168.61.56.0/21, 168.63.0.0/19, 172.201.0.0/16, 172.205.128.0/17,
172.211.0.0/16, 191.233.64.0/18, 191.237.232.0/22, 191.239.200.0/22, 213.199.128.0/20

Azure-IP-Bereiche (IPv6) — Falls der ausgehende Datenverkehr über Azure geleitet wird

2603:1020:200::/46, 2603:1020:205::/48, 2603:1020:206::/47, 2603:1020:208::/56,
2603:1026:900:7::/64, 2603:1026:900:8::/63, 2603:1026:900:1a::/63, 2603:1026:900:1c::/64,
2603:1026:2405::/48, 2603:1026:2500:24::/64, 2603:1026:3000:140::/59, 2603:1027:1:140::/59,
2a01:111:f403:c201::/64, 2a01:111:f403:ca05::/64, 2a01:111:f403:ca06::/63,
2a01:111:f403:ca08::/63, 2a01:111:f403:d201::/64, 2a01:111:f403:da01::/64,
2a01:111:f403:e201::/64

Verknüpfung mit

War dieser Beitrag hilfreich?

0 von 0 fanden dies hilfreich