22 KiB
v2-Docker Projekt Journal
Projektübersicht
Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker-basierter Architektur.
Technische Anforderungen
- Lokaler Betrieb: Docker mit 4GB RAM und 40GB Speicher
- Internet-Zugriff:
- Admin Panel: https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com
- API Server: https://api-software-undso.z5m7q9dk3ah2v1plx6ju.com
- Datenbank: PostgreSQL mit 2 Admin-Usern (rac00n, w@rh@mm3r)
- Ziel: PoC für spätere VPS-Migration
Aktueller Stand (2025-06-07)
✅ Implementiert
-
Docker-Infrastruktur
- docker-compose.yaml mit 4 Services (PostgreSQL, Admin Panel, License Server, Nginx)
- Interne Bridge-Netzwerkkommunikation
- Resource Limits konfiguriert (2 CPUs, 4GB RAM pro Service)
- Nginx Reverse Proxy für SSL-Termination
-
PostgreSQL Datenbank
- Tabellen: customers, licenses, sessions, audit_log, backup_history
- UTF-8 Support mit deutscher Locale (de_DE.UTF-8)
- Init-Script mit vollständigem Schema
- Persistente Datenspeicherung
-
Admin Panel (Vollständig)
- Flask-Anwendung mit Session-Management
- Login-Funktionalität für 2 Admin-User (rac00n, w@rh@mm3r)
- Dashboard mit Statistiken und Widgets
- Lizenz-CRUD (Create, Read, Update, Delete)
- Kunden-CRUD mit Lizenzzuordnung
- Session-Tracking und -Verwaltung
- Audit-Log für alle Aktionen
- Export-Funktion (CSV/Excel)
- Backup-System mit Verschlüsselung
- UTF-8 Support für deutsche Umlaute
- Suche und Filter mit Pagination
-
Internet-Zugriff
- Nginx Reverse Proxy mit SSL-Termination
- IONOS SSL-Zertifikate mit vollständiger Certificate Chain
- Subdomain-Routing funktioniert (admin-panel-undso, api-software-undso)
- DynDNS und Port-Forwarding konfiguriert
- Feste IP-Adresse (192.168.178.88)
❌ Noch nicht implementiert
- License Server API
- Nur Platzhalter-Container vorhanden
- Keine API-Endpunkte (/api/version, /api/validate, /api/heartbeat)
- Keine Lizenzvalidierung
- Kein aktives Session-Management
Offene Aufgaben (Priorität)
🔴 Hoch (Basis-Funktionalität)
- License Server API implementieren
/api/version- Versionscheck/api/validate- Lizenzvalidierung/api/heartbeat- Session-Management
- Reverse Proxy Setup (Nginx/Traefik) für Subdomain-Routing
- SSL-Zertifikate (Let's Encrypt) für beide Subdomains
- Session-Management (nur eine aktive Session pro Lizenz)
🟡 Mittel (Erweiterte Features)
-
Erweiterte Sicherheit
- Rate-Limiting für Login-Versuche (Brute-Force-Schutz)
- 2-Faktor-Authentifizierung (2FA)
- Session-Timeout konfigurierbar
- IP-Whitelist für Admin-Zugriff
- Passwort-Richtlinien (Komplexität, Ablauf)
-
Lizenz-Verwaltung Erweiterungen
- Bulk-Import von Lizenzen (CSV/Excel Upload)
- Lizenz-Templates für schnelle Erstellung
- Lizenz-Verlängerung mit einem Klick
- Lizenz-Historie (wer hatte welche Lizenz wann)
- Lizenz-Gruppen/Pakete
- Automatische Lizenzverlängerung
-
Benachrichtigungen
- E-Mail bei ablaufenden Lizenzen (Struktur bereits vorbereitet)
- Dashboard-Benachrichtigungen (Toast/Pop-ups)
- Webhook-Support für externe Systeme
- SMS-Benachrichtigungen
- Slack/Teams Integration
-
API für Automatisierung
- REST API für Admin-Funktionen
- API-Keys für programmatischen Zugriff
- Swagger/OpenAPI Dokumentation
- Rate Limiting für API
- Webhook Events
🟢 Niedrig (Nice-to-have)
-
Benutzeroberfläche
- Dark Mode Toggle
- Mobile-optimierte Ansicht (Responsive)
- Mehrsprachigkeit (Deutsch/Englisch)
- Anpassbare Dashboard-Widgets
- Drag & Drop Dashboard
- Keyboard Shortcuts
-
Erweiterte Statistiken
- Grafische Auswertungen (Chart.js/D3.js)
- Umsatz-Statistiken
- Nutzungsstatistiken pro Kunde
- Lizenz-Verlaufsdiagramme
- Geografische Verteilung
- Vorhersage-Analysen
-
Weitere Features
- Rechnungserstellung
- Mehrmandantenfähigkeit
- Benutzerverwaltung (verschiedene Admin-Rollen)
- Lizenz-Aktivierung per E-Mail
- QR-Code für Lizenzschlüssel
- Dokumentenverwaltung pro Kunde
- JWT-Authentifizierung für API
- Docker Resource-Optimierung
- VPS-Migrationsdokumentation
Bekannte Probleme
- PostgreSQL Volume-Pfad wurde von absolutem Windows-Pfad auf Docker Volume geändert
- Duplizierte .env Datei in templates/ Ordner
- Credentials im Klartext in .env Dateien
- Selbstsignierte SSL-Zertifikate verursachen Browser-Warnungen
Nächste Schritte
- UTF-8 Support implementieren
- Reverse Proxy mit SSL einrichten
- Admin Panel Funktionalität erweitern
- License Server API entwickeln
Änderungsprotokoll
2025-06-06 - Journal erstellt
- Initialer Projektstand dokumentiert
- Aufgabenliste priorisiert
- Technische Anforderungen festgehalten
2025-06-06 - UTF-8 Support implementiert
- Flask App Konfiguration für UTF-8 hinzugefügt (JSON_AS_ASCII=False)
- PostgreSQL Verbindung mit UTF-8 client_encoding
- HTML Forms mit accept-charset="UTF-8"
- Dockerfile mit deutschen Locale-Einstellungen (de_DE.UTF-8)
- PostgreSQL Container mit UTF-8 Initialisierung
- init.sql mit SET client_encoding = 'UTF8'
Geänderte Dateien:
- v2_adminpanel/app.py
- v2_adminpanel/templates/index.html
- v2_adminpanel/init.sql
- v2_adminpanel/Dockerfile
- v2/docker-compose.yaml
Nächster Test:
- Container neu bauen und starten
- Kundennamen mit Umlauten testen (z.B. "Müller GmbH", "Björn Schäfer")
- Email mit Umlauten testen
2025-06-06 - Lizenzübersicht implementiert
- Neue Route
/licensesfür Lizenzübersicht - SQL-Query mit JOIN zwischen licenses und customers
- Status-Berechnung (aktiv, läuft bald ab, abgelaufen)
- Farbcodierung für verschiedene Status
- Navigation zwischen Lizenz erstellen und Übersicht
Neue Features:
- Anzeige aller Lizenzen mit Kundeninformationen
- Status-Anzeige basierend auf Ablaufdatum
- Unterscheidung zwischen Voll- und Testversion
- Responsive Tabelle mit Bootstrap
- Link von Dashboard zur Übersicht und zurück
Geänderte/Neue Dateien:
- v2_adminpanel/app.py (neue Route hinzugefügt)
- v2_adminpanel/templates/licenses.html (neu erstellt)
- v2_adminpanel/templates/index.html (Navigation ergänzt)
Nächster Test:
- Container neu starten
- Mehrere Lizenzen mit verschiedenen Ablaufdaten erstellen
- Lizenzübersicht unter /licenses aufrufen
2025-06-06 - Lizenz bearbeiten/löschen implementiert
- Neue Routen für Bearbeiten und Löschen von Lizenzen
- Bearbeitungsformular mit vorausgefüllten Werten
- Aktiv/Inaktiv-Status kann geändert werden
- Lösch-Bestätigung per JavaScript confirm()
- Kunde kann nicht geändert werden (nur Lizenzdetails)
Neue Features:
/license/edit/<id>- Bearbeitungsformular/license/delete/<id>- Lizenz löschen (POST)- Aktionen-Spalte in der Lizenzübersicht
- Buttons für Bearbeiten und Löschen
- Checkbox für Aktiv-Status
Geänderte/Neue Dateien:
- v2_adminpanel/app.py (edit_license und delete_license Routen)
- v2_adminpanel/templates/licenses.html (Aktionen-Spalte hinzugefügt)
- v2_adminpanel/templates/edit_license.html (neu erstellt)
Sicherheit:
- Login-Required für alle Aktionen
- POST-only für Löschvorgänge
- Bestätigungsdialog vor dem Löschen
2025-06-06 - Kundenverwaltung implementiert
- Komplette CRUD-Funktionalität für Kunden
- Übersicht zeigt Anzahl aktiver/gesamter Lizenzen pro Kunde
- Kunden können nur gelöscht werden, wenn sie keine Lizenzen haben
- Bearbeitungsseite zeigt alle Lizenzen des Kunden
Neue Features:
/customers- Kundenübersicht mit Statistiken/customer/edit/<id>- Kunde bearbeiten (Name, E-Mail)/customer/delete/<id>- Kunde löschen (nur ohne Lizenzen)- Navigation zwischen allen drei Hauptbereichen
- Anzeige der Kundenlizenzen beim Bearbeiten
Geänderte/Neue Dateien:
- v2_adminpanel/app.py (customers, edit_customer, delete_customer Routen)
- v2_adminpanel/templates/customers.html (neu erstellt)
- v2_adminpanel/templates/edit_customer.html (neu erstellt)
- v2_adminpanel/templates/index.html (Navigation erweitert)
- v2_adminpanel/templates/licenses.html (Navigation erweitert)
Besonderheiten:
- Lösch-Button ist deaktiviert, wenn Kunde Lizenzen hat
- Aktive Lizenzen werden separat gezählt (nicht abgelaufen + aktiv)
- UTF-8 Support für Kundennamen mit Umlauten
2025-06-06 - Dashboard mit Statistiken implementiert
- Übersichtliches Dashboard als neue Startseite
- Statistik-Karten mit wichtigen Kennzahlen
- Listen für bald ablaufende und zuletzt erstellte Lizenzen
- Routing angepasst: Dashboard (/) und Lizenz erstellen (/create)
Neue Features:
- Statistik-Karten: Kunden, Lizenzen gesamt, Aktive, Ablaufende
- Aufteilung nach Lizenztypen (Vollversion/Testversion)
- Aufteilung nach Status (Aktiv/Abgelaufen)
- Top 10 bald ablaufende Lizenzen mit Restlaufzeit
- Letzte 5 erstellte Lizenzen mit Status
- Hover-Effekt auf Statistik-Karten
- Einheitliche Navigation mit Dashboard-Link
Geänderte/Neue Dateien:
- v2_adminpanel/app.py (dashboard() komplett überarbeitet, create_license() Route)
- v2_adminpanel/templates/dashboard.html (neu erstellt)
- v2_adminpanel/templates/index.html (Navigation erweitert)
- v2_adminpanel/templates/licenses.html (Navigation angepasst)
- v2_adminpanel/templates/customers.html (Navigation angepasst)
Dashboard-Inhalte:
- 4 Hauptstatistiken als Karten
- Lizenztyp-Verteilung
- Status-Verteilung
- Warnung für bald ablaufende Lizenzen
- Übersicht der neuesten Aktivitäten
2025-06-06 - Suchfunktion implementiert
- Volltextsuche für Lizenzen und Kunden
- Case-insensitive Suche mit LIKE-Operator
- Suchergebnisse mit Hervorhebung des Suchbegriffs
- Suche zurücksetzen Button
Neue Features:
- Lizenzsuche: Sucht in Lizenzschlüssel, Kundenname und E-Mail
- Kundensuche: Sucht in Kundenname und E-Mail
- Suchformular mit autofocus für schnelle Eingabe
- Anzeige des aktiven Suchbegriffs
- Unterschiedliche Meldungen für leere Ergebnisse
Geänderte Dateien:
- v2_adminpanel/app.py (licenses() und customers() mit Suchlogik erweitert)
- v2_adminpanel/templates/licenses.html (Suchformular hinzugefügt)
- v2_adminpanel/templates/customers.html (Suchformular hinzugefügt)
Technische Details:
- GET-Parameter für Suche
- SQL LIKE mit LOWER() für Case-Insensitive Suche
- Wildcards (%) für Teilstring-Suche
- UTF-8 kompatibel für deutsche Umlaute
2025-06-06 - Filter und Pagination implementiert
- Erweiterte Filteroptionen für Lizenzübersicht
- Pagination für große Datenmengen (20 Einträge pro Seite)
- Filter bleiben bei Seitenwechsel erhalten
Neue Features für Lizenzen:
- Filter nach Typ: Alle, Vollversion, Testversion
- Filter nach Status: Alle, Aktiv, Läuft bald ab, Abgelaufen, Deaktiviert
- Kombinierbar mit Suche: Filter und Suche funktionieren zusammen
- Pagination: Navigation durch mehrere Seiten
- Ergebnisanzeige: Zeigt Anzahl gefilterter Ergebnisse
Neue Features für Kunden:
- Pagination: 20 Kunden pro Seite
- Seitennavigation: Erste, Letzte, Vor, Zurück
- Kombiniert mit Suche: Suchparameter bleiben erhalten
Geänderte Dateien:
- v2_adminpanel/app.py (licenses() und customers() mit Filter/Pagination erweitert)
- v2_adminpanel/templates/licenses.html (Filter-Formular und Pagination hinzugefügt)
- v2_adminpanel/templates/customers.html (Pagination hinzugefügt)
Technische Details:
- SQL WHERE-Klauseln für Filter
- LIMIT/OFFSET für Pagination
- URL-Parameter bleiben bei Navigation erhalten
- Responsive Bootstrap-Komponenten
2025-06-06 - Session-Tracking implementiert
- Neue Tabelle für Session-Verwaltung
- Anzeige aktiver und beendeter Sessions
- Manuelles Beenden von Sessions möglich
- Dashboard zeigt Anzahl aktiver Sessions
Neue Features:
- Sessions-Tabelle: Speichert Session-ID, IP, User-Agent, Zeitstempel
- Aktive Sessions: Zeigt alle laufenden Sessions mit Inaktivitätszeit
- Session-Historie: Letzte 24 Stunden beendeter Sessions
- Session beenden: Admins können Sessions manuell beenden
- Farbcodierung: Grün (aktiv), Gelb (>5 Min inaktiv), Rot (lange inaktiv)
Geänderte/Neue Dateien:
- v2_adminpanel/init.sql (sessions Tabelle hinzugefügt)
- v2_adminpanel/app.py (sessions() und end_session() Routen)
- v2_adminpanel/templates/sessions.html (neu erstellt)
- v2_adminpanel/templates/dashboard.html (Session-Statistik)
- Alle Templates (Session-Navigation hinzugefügt)
Technische Details:
- Heartbeat-basiertes Tracking (last_heartbeat)
- Automatische Inaktivitätsberechnung
- Session-Dauer Berechnung
- Responsive Tabellen mit Bootstrap
Hinweis: Die Session-Daten werden erst gefüllt, wenn der License Server API implementiert ist und Clients sich verbinden.
2025-06-06 - Export-Funktion implementiert
- CSV und Excel Export für Lizenzen und Kunden
- Formatierte Ausgabe mit deutschen Datumsformaten
- UTF-8 Unterstützung für Sonderzeichen
Neue Features:
- Lizenz-Export: Alle Lizenzen mit Kundeninformationen
- Kunden-Export: Alle Kunden mit Lizenzstatistiken
- Format-Optionen: Excel (.xlsx) und CSV (.csv)
- Deutsche Formatierung: Datum als dd.mm.yyyy, Status auf Deutsch
- UTF-8 Export: Korrekte Kodierung für Umlaute
- Export-Buttons: Dropdown-Menüs in Lizenz- und Kundenübersicht
Geänderte Dateien:
- v2_adminpanel/app.py (export_licenses() und export_customers() Routen)
- v2_adminpanel/requirements.txt (pandas und openpyxl hinzugefügt)
- v2_adminpanel/templates/licenses.html (Export-Dropdown hinzugefügt)
- v2_adminpanel/templates/customers.html (Export-Dropdown hinzugefügt)
Technische Details:
- Pandas für Datenverarbeitung
- OpenPyXL für Excel-Export
- CSV mit Semikolon-Trennung für deutsche Excel-Kompatibilität
- Automatische Spaltenbreite in Excel
- BOM für UTF-8 CSV (Excel-Kompatibilität)
2025-06-06 - Audit-Log implementiert
- Vollständiges Änderungsprotokoll für alle Aktionen
- Filterbare Übersicht mit Pagination
- Detaillierte Anzeige von Änderungen
Neue Features:
- Audit-Log-Tabelle: Speichert alle Änderungen mit Zeitstempel, Benutzer, IP
- Protokollierte Aktionen: CREATE, UPDATE, DELETE, LOGIN, LOGOUT, EXPORT
- JSON-Speicherung: Alte und neue Werte als JSONB für flexible Abfragen
- Filter-Optionen: Nach Benutzer, Aktion und Entität
- Detail-Anzeige: Aufklappbare Änderungsdetails
- Navigation: Audit-Link in allen Templates
Geänderte/Neue Dateien:
- v2_adminpanel/init.sql (audit_log Tabelle mit Indizes)
- v2_adminpanel/app.py (log_audit() Funktion und audit_log() Route)
- v2_adminpanel/templates/audit_log.html (neu erstellt)
- Alle Templates (Audit-Navigation hinzugefügt)
Technische Details:
- JSONB für strukturierte Datenspeicherung
- Performance-Indizes auf timestamp, username und entity
- Farbcodierung für verschiedene Aktionen
- 50 Einträge pro Seite mit Pagination
- IP-Adresse und User-Agent Tracking
2025-06-06 - PostgreSQL UTF-8 Locale konfiguriert
- Eigenes PostgreSQL Dockerfile für deutsche Locale
- Sicherstellung der UTF-8 Unterstützung auf Datenbankebene
Neue Features:
- PostgreSQL Dockerfile: Installiert deutsche Locale (de_DE.UTF-8)
- Locale-Umgebungsvariablen: LANG, LANGUAGE, LC_ALL gesetzt
- Docker Compose Update: Verwendet jetzt eigenes PostgreSQL-Image
Neue Dateien:
- v2_postgres/Dockerfile (neu erstellt)
Geänderte Dateien:
- v2/docker-compose.yaml (postgres Service nutzt jetzt build statt image)
Technische Details:
- Basis-Image: postgres:14
- Locale-Installation über apt-get
- locale-gen für de_DE.UTF-8
- Vollständige UTF-8 Unterstützung für deutsche Sonderzeichen
2025-06-07 - Backup-Funktionalität implementiert
- Verschlüsselte Backups mit manueller und automatischer Ausführung
- Backup-Historie mit Download und Wiederherstellung
- Dashboard-Integration für Backup-Status
Neue Features:
- Backup-Erstellung: Manuell und automatisch (täglich 3:00 Uhr)
- Verschlüsselung: AES-256 mit Fernet, Key aus ENV oder automatisch generiert
- Komprimierung: GZIP-Komprimierung vor Verschlüsselung
- Backup-Historie: Vollständige Übersicht aller Backups
- Wiederherstellung: Mit optionalem Verschlüsselungs-Passwort
- Download-Funktion: Backups können heruntergeladen werden
- Dashboard-Widget: Zeigt letztes Backup-Status
- E-Mail-Vorbereitung: Struktur für Benachrichtigungen (deaktiviert)
Neue/Geänderte Dateien:
- v2_adminpanel/init.sql (backup_history Tabelle hinzugefügt)
- v2_adminpanel/requirements.txt (cryptography, apscheduler hinzugefügt)
- v2_adminpanel/app.py (Backup-Funktionen und Routen)
- v2_adminpanel/templates/backups.html (neu erstellt)
- v2_adminpanel/templates/dashboard.html (Backup-Status-Widget)
- v2_adminpanel/Dockerfile (PostgreSQL-Client installiert)
- v2/.env (EMAIL_ENABLED und BACKUP_ENCRYPTION_KEY)
- Alle Templates (Backup-Navigation hinzugefügt)
Technische Details:
- Speicherort: C:\Users\Administrator\Documents\GitHub\v2-Docker\backups\
- Dateiformat: backup_v2docker_YYYYMMDD_HHMMSS_encrypted.sql.gz.enc
- APScheduler für automatische Backups
- pg_dump/psql für Datenbank-Operationen
- Audit-Log für alle Backup-Aktionen
- Sicherheitsabfrage bei Wiederherstellung
2025-06-07 - HTTPS/SSL und Internet-Zugriff implementiert
- Nginx Reverse Proxy für externe Erreichbarkeit eingerichtet
- SSL-Zertifikate von IONOS mit vollständiger Certificate Chain integriert
- Netzwerkkonfiguration für feste IP-Adresse
- DynDNS und Port-Forwarding konfiguriert
Neue Features:
- Nginx Reverse Proxy: Leitet HTTPS-Anfragen an Container weiter
- SSL-Zertifikate: Wildcard-Zertifikat von IONOS für *.z5m7q9dk3ah2v1plx6ju.com
- Certificate Chain: Server-, Intermediate- und Root-Zertifikate kombiniert
- Subdomain-Routing: admin-panel-undso und api-software-undso
- Port-Forwarding: FRITZ!Box 443 → 192.168.178.88
- Feste IP: Windows-PC auf 192.168.178.88 konfiguriert
Neue/Geänderte Dateien:
- v2_nginx/nginx.conf (Reverse Proxy Konfiguration)
- v2_nginx/Dockerfile (Nginx Container mit SSL)
- v2_nginx/ssl/fullchain.pem (Certificate Chain)
- v2_nginx/ssl/privkey.pem (Private Key)
- v2/docker-compose.yaml (nginx Service hinzugefügt)
- set-static-ip.ps1 (PowerShell Script für feste IP)
- reset-to-dhcp.ps1 (PowerShell Script für DHCP)
Technische Details:
- SSL-Termination am Nginx Reverse Proxy
- Backend-Kommunikation über Docker-internes Netzwerk
- Admin-Panel nur noch über Nginx erreichbar (Port 443 nicht mehr exposed)
- License-Server behält externen Port 8443 für direkte API-Zugriffe
- Intermediate Certificates aus ZIP extrahiert und korrekt verkettet
Zugangsdaten:
- Admin-Panel: https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com
- Benutzer 1: rac00n / 1248163264
- Benutzer 2: w@rh@mm3r / Warhammer123!
Status:
- ✅ Admin-Panel extern erreichbar ohne SSL-Warnungen
- ✅ Reverse Proxy funktioniert
- ✅ SSL-Zertifikate korrekt konfiguriert
- ✅ Netzwerk-Setup abgeschlossen
2025-06-07 - Projekt-Cleanup durchgeführt
- Redundante und überflüssige Dateien entfernt
- Projektstruktur verbessert und organisiert
Durchgeführte Änderungen:
-
Entfernte Dateien:
- v2_adminpanel/templates/.env (Duplikat der Haupt-.env)
- v2_postgreSQL/ (leeres Verzeichnis)
- SSL-Zertifikate aus Root-Verzeichnis (7 Dateien)
- Ungenutzer
jsonImport aus app.py
-
Organisatorische Verbesserungen:
- PowerShell-Scripts in neuen
scripts/Ordner verschoben - SSL-Zertifikate nur noch in v2_nginx/ssl/
- Keine Konfigurationsdateien mehr in Template-Verzeichnissen
- PowerShell-Scripts in neuen
Technische Details:
- Docker-Container wurden gestoppt und nach Cleanup neu gestartet
- Alle Services laufen wieder normal
- Keine funktionalen Änderungen, nur Struktur-Verbesserungen
Ergebnis:
- Verbesserte Projektstruktur
- Erhöhte Sicherheit (keine SSL-Zertifikate im Root)
- Klarere Dateiorganisation
2025-06-07 - SSL "Nicht sicher" Problem behoben
- Chrome-Warnung trotz gültigem Zertifikat analysiert und behoben
- Ursache: Selbstsigniertes Zertifikat in der Admin Panel Flask-App
Durchgeführte Änderungen:
-
Admin Panel Konfiguration (app.py):
- Von HTTPS mit selbstsigniertem Zertifikat auf HTTP Port 5000 umgestellt
ssl_context='adhoc'entfernt- Flask läuft jetzt auf
0.0.0.0:5000statt HTTPS
-
Dockerfile Anpassung (v2_adminpanel/Dockerfile):
- EXPOSE Port von 443 auf 5000 geändert
- Container exponiert jetzt HTTP statt HTTPS
-
Nginx Konfiguration (nginx.conf):
- proxy_pass von
https://admin-panel:443aufhttp://admin-panel:5000geändert proxy_ssl_verify offentfernt (nicht mehr benötigt)- Sicherheits-Header für beide Domains hinzugefügt:
- Strict-Transport-Security (HSTS) - erzwingt HTTPS für 1 Jahr
- X-Content-Type-Options - verhindert MIME-Type Sniffing
- X-Frame-Options - Schutz vor Clickjacking
- X-XSS-Protection - aktiviert XSS-Filter
- Referrer-Policy - kontrolliert Referrer-Informationen
- proxy_pass von
Technische Details:
- Externer Traffic nutzt weiterhin HTTPS mit gültigen IONOS-Zertifikaten
- Interne Kommunikation zwischen Nginx und Admin Panel läuft über HTTP (sicher im Docker-Netzwerk)
- Kein selbstsigniertes Zertifikat mehr in der Zertifikatskette
- SSL-Termination erfolgt ausschließlich am Nginx Reverse Proxy
Docker Neustart:
- Container gestoppt (
docker-compose down) - Images neu gebaut (
docker-compose build) - Container neu gestartet (
docker-compose up -d) - Alle Services laufen normal
Ergebnis:
- ✅ "Nicht sicher" Warnung in Chrome behoben
- ✅ Saubere SSL-Konfiguration ohne Mixed Content
- ✅ Verbesserte Sicherheits-Header implementiert
- ✅ Admin Panel zeigt jetzt grünes Schloss-Symbol