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:
-
Docker Desktop für Windows oder Docker Engine
- Download: https://www.docker.com/products/docker-desktop
- Alternativ: Docker Engine über WSL2
-
Port-Freigaben:
- Port
80für Frontend (oder ein anderer Port deiner Wahl) - Port
5000für Backend
- Port
🚀 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
- Docker Desktop für Windows installieren
- 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:
- Download: https://www.iis.net/downloads/microsoft/url-rewrite
- Installieren
IIS Application Request Routing (ARR) installieren:
- Download: https://www.iis.net/downloads/microsoft/application-request-routing
- Installieren
- ARR aktivieren: IIS Manager → Server → Application Request Routing → Server Proxy Settings → "Enable proxy" aktivieren
Neue Website in IIS erstellen:
-
IIS Manager öffnen
-
Rechtsklick auf "Sites" → "Add Website"
-
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
- Site name:
-
web.configinC:\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)
- Zertifikat in IIS importieren
- HTTPS Binding hinzufügen
- 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.ymlgeä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:
- Logs prüfen:
docker-compose logs - Container-Status prüfen:
docker-compose ps - Docker-Version prüfen:
docker --version - Docker neu starten
🎉 Fertig!
Deine Anwendung läuft jetzt in Docker-Containern und kann einfach auf jedem Server bereitgestellt werden!
Zugriff:
- Frontend: http://localhost oder http://server-ip
- Backend API: http://localhost:5000 oder http://server-ip:5000
- Health Check: http://localhost:5000/health