Files
IT-Nexus/DOCKER-DEPLOYMENT.md

8.3 KiB

Docker Deployment Anleitung für Windows Server / IIS

Diese Anleitung zeigt dir, wie du das FIDO-Key Management System mit Docker auf einem Windows Server bereitstellst.


📋 Voraussetzungen

Auf dem Windows Server:

  1. Docker Desktop für Windows oder Docker Engine

  2. Port-Freigaben:

    • Port 80 für Frontend (oder ein anderer Port deiner Wahl)
    • Port 5000 für Backend

🚀 Schnellstart (Lokaler Test)

1. Projekt vorbereiten

Öffne PowerShell im Projektordner:

cd "C:\Users\gruessing\OneDrive - Cereda Systems GmbH\Desktop\IT Tool"

2. Docker Container bauen und starten

docker-compose up -d --build

Was passiert:

  • Backend und Frontend werden gebaut
  • Container werden gestartet
  • Datenbank wird automatisch initialisiert

3. Anwendung öffnen

Öffne im Browser: http://localhost

Standard-Login:

  • Benutzername: superadmin
  • Passwort: Admin123!

4. Container verwalten

Status prüfen:

docker-compose ps

Logs anzeigen:

docker-compose logs -f

Container stoppen:

docker-compose down

Container neustarten:

docker-compose restart

🌐 Deployment auf Windows Server mit IIS

Option 1: Docker + IIS Reverse Proxy (EMPFOHLEN)

IIS kann als Reverse Proxy vor Docker verwendet werden.

Schritt 1: Docker auf Windows Server installieren

  1. Docker Desktop für Windows installieren
  2. Sicherstellen, dass Docker läuft: docker --version

Schritt 2: Projekt auf Server kopieren

Kopiere den kompletten IT Tool Ordner auf den Server, z.B.:

C:\inetpub\fido-key-manager\

Schritt 3: Container starten

cd C:\inetpub\fido-key-manager
docker-compose up -d --build

Schritt 4: IIS als Reverse Proxy konfigurieren

IIS URL Rewrite installieren:

  1. Download: https://www.iis.net/downloads/microsoft/url-rewrite
  2. Installieren

IIS Application Request Routing (ARR) installieren:

  1. Download: https://www.iis.net/downloads/microsoft/application-request-routing
  2. Installieren
  3. ARR aktivieren: IIS Manager → Server → Application Request Routing → Server Proxy Settings → "Enable proxy" aktivieren

Neue Website in IIS erstellen:

  1. IIS Manager öffnen

  2. Rechtsklick auf "Sites" → "Add Website"

  3. Einstellungen:

    • Site name: FIDO-Key-Manager
    • Physical path: C:\inetpub\wwwroot\fido (leerer Ordner)
    • Binding: HTTP, Port 80 (oder 443 für HTTPS)
    • Host name: your-domain.com
  4. web.config in C:\inetpub\wwwroot\fido\ erstellen:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <!-- Backend API Requests -->
                <rule name="Backend API" stopProcessing="true">
                    <match url="^api/(.*)" />
                    <action type="Rewrite" url="http://localhost:5000/api/{R:1}" />
                </rule>

                <!-- Frontend Requests -->
                <rule name="Frontend" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://localhost:80/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

Option 2: Docker ohne IIS (Direkter Zugriff)

Docker kann auch direkt ohne IIS laufen.

Ports in docker-compose.yml anpassen

Wenn Port 80 bereits von IIS belegt ist, ändere die Ports:

services:
  frontend:
    ports:
      - "8080:80"  # Frontend auf Port 8080

  backend:
    ports:
      - "5000:5000"  # Backend auf Port 5000

Dann: http://server-ip:8080


⚙️ Konfiguration

JWT Secret ändern (WICHTIG für Produktion!)

Bearbeite docker-compose.yml:

environment:
  - JWT_SECRET=IHR-SICHERES-ZUFÄLLIGES-SECRET-MINDESTENS-32-ZEICHEN

Sicheres Secret generieren:

# PowerShell
-join ((65..90) + (97..122) + (48..57) + (33,35,36,37,38,42,43,45,61,63,64) | Get-Random -Count 32 | % {[char]$_})

Frontend URL anpassen

In docker-compose.yml:

environment:
  - FRONTEND_URL=http://ihre-domain.com

💾 Datenbank & Backups

Datenbank-Speicherort

Die Datenbank wird im Docker Volume fido-data gespeichert und bleibt auch nach Container-Neustarts erhalten.

Backup erstellen

# Container-ID finden
docker ps

# Backup erstellen
docker cp fido-backend:/app/data/database.sqlite C:\Backups\database-backup-$(Get-Date -Format "yyyy-MM-dd").sqlite

Backup wiederherstellen

# Container stoppen
docker-compose down

# Volume löschen
docker volume rm it-tool_fido-data

# Container neu starten
docker-compose up -d

# Backup einspielen
docker cp C:\Backups\database-backup.sqlite fido-backend:/app/data/database.sqlite

# Container neustarten
docker-compose restart backend

🔒 HTTPS / SSL einrichten

Variante A: SSL Zertifikat über IIS (wenn IIS als Reverse Proxy verwendet wird)

  1. Zertifikat in IIS importieren
  2. HTTPS Binding hinzufügen
  3. Fertig - IIS übernimmt SSL-Terminierung

Variante B: SSL direkt in Docker (mit nginx)

Erstelle nginx-ssl.conf im Frontend-Ordner:

server {
    listen 443 ssl;
    server_name ihre-domain.com;

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

    root /usr/share/nginx/html;
    index index.html;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

Passe docker-compose.yml an:

frontend:
  ports:
    - "443:443"
  volumes:
    - ./ssl-certs:/etc/nginx/ssl:ro

🔧 Troubleshooting

Container starten nicht

# Logs prüfen
docker-compose logs

# Spezifischen Container prüfen
docker-compose logs backend
docker-compose logs frontend

Port bereits belegt

# Prüfen, welcher Prozess Port 80 verwendet
netstat -ano | findstr :80

# Prozess beenden (Vorsicht!)
taskkill /PID <PID> /F

Datenbank-Fehler

# Container komplett neu aufsetzen
docker-compose down -v
docker-compose up -d --build

Container läuft, aber nicht erreichbar

# Windows Firewall prüfen
New-NetFirewallRule -DisplayName "Docker Frontend" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow
New-NetFirewallRule -DisplayName "Docker Backend" -Direction Inbound -Protocol TCP -LocalPort 5000 -Action Allow

📊 Monitoring

Container-Status überwachen

# Status aller Container
docker-compose ps

# Ressourcennutzung
docker stats

Logs in Echtzeit

docker-compose logs -f --tail=100

🔄 Updates durchführen

Wenn du Änderungen am Code vornimmst:

# Container stoppen
docker-compose down

# Neu bauen und starten
docker-compose up -d --build

# Alte Images aufräumen
docker image prune -f

📝 Wichtige Befehle im Überblick

# Starten
docker-compose up -d

# Stoppen
docker-compose down

# Neu bauen
docker-compose up -d --build

# Logs anzeigen
docker-compose logs -f

# Status prüfen
docker-compose ps

# Container neustarten
docker-compose restart

# In Container einsteigen (Debugging)
docker exec -it fido-backend sh
docker exec -it fido-frontend sh

# Alle Container und Volumes löschen (VORSICHT - Datenverlust!)
docker-compose down -v

🎯 Production Checklist

Vor dem produktiven Einsatz:

  • JWT_SECRET in docker-compose.yml geändert
  • FRONTEND_URL angepasst
  • HTTPS/SSL eingerichtet
  • Firewall-Regeln konfiguriert
  • Backup-Strategie implementiert
  • Standard-Passwort des Super Admins geändert
  • Windows Server Updates installiert
  • Docker Desktop so konfiguriert, dass es automatisch startet

📞 Support

Bei Problemen:

  1. Logs prüfen: docker-compose logs
  2. Container-Status prüfen: docker-compose ps
  3. Docker-Version prüfen: docker --version
  4. Docker neu starten

🎉 Fertig!

Deine Anwendung läuft jetzt in Docker-Containern und kann einfach auf jedem Server bereitgestellt werden!

Zugriff: