Initial commit: IT Nexus Web-App

This commit is contained in:
2026-06-01 20:49:07 +02:00
commit 8023765e6c
387 changed files with 106900 additions and 0 deletions

418
DOCKER-DEPLOYMENT.md Normal file
View File

@@ -0,0 +1,418 @@
# 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**
- Download: https://www.docker.com/products/docker-desktop
- Alternativ: Docker Engine über WSL2
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:
```powershell
cd "C:\Users\gruessing\OneDrive - Cereda Systems GmbH\Desktop\IT Tool"
```
### 2. Docker Container bauen und starten
```powershell
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:**
```powershell
docker-compose ps
```
**Logs anzeigen:**
```powershell
docker-compose logs -f
```
**Container stoppen:**
```powershell
docker-compose down
```
**Container neustarten:**
```powershell
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
```powershell
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
<?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:
```yaml
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`:
```yaml
environment:
- JWT_SECRET=IHR-SICHERES-ZUFÄLLIGES-SECRET-MINDESTENS-32-ZEICHEN
```
**Sicheres Secret generieren:**
```powershell
# 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`:
```yaml
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
```powershell
# 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
```powershell
# 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:
```nginx
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:
```yaml
frontend:
ports:
- "443:443"
volumes:
- ./ssl-certs:/etc/nginx/ssl:ro
```
---
## 🔧 Troubleshooting
### Container starten nicht
```powershell
# Logs prüfen
docker-compose logs
# Spezifischen Container prüfen
docker-compose logs backend
docker-compose logs frontend
```
### Port bereits belegt
```powershell
# Prüfen, welcher Prozess Port 80 verwendet
netstat -ano | findstr :80
# Prozess beenden (Vorsicht!)
taskkill /PID <PID> /F
```
### Datenbank-Fehler
```powershell
# Container komplett neu aufsetzen
docker-compose down -v
docker-compose up -d --build
```
### Container läuft, aber nicht erreichbar
```powershell
# 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
```powershell
# Status aller Container
docker-compose ps
# Ressourcennutzung
docker stats
```
### Logs in Echtzeit
```powershell
docker-compose logs -f --tail=100
```
---
## 🔄 Updates durchführen
Wenn du Änderungen am Code vornimmst:
```powershell
# 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
```powershell
# 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:**
- Frontend: http://localhost oder http://server-ip
- Backend API: http://localhost:5000 oder http://server-ip:5000
- Health Check: http://localhost:5000/health