Split in JOURNAL und Stand der Dinge
Dieser Commit ist enthalten in:
120
DEPLOYMENT.md
120
DEPLOYMENT.md
@@ -1,120 +0,0 @@
|
||||
# 🚀 Deployment-Anleitung für Internet-Zugriff
|
||||
|
||||
## Voraussetzungen
|
||||
- ✅ Docker und Docker Compose installiert
|
||||
- ✅ Subdomains bei IONOS eingerichtet
|
||||
- ✅ DynDNS in FRITZ!Box konfiguriert
|
||||
- ✅ Port-Weiterleitung in FRITZ!Box (Port 443 → 192.168.178.88)
|
||||
|
||||
## Schritt-für-Schritt Anleitung
|
||||
|
||||
### 1. Windows Firewall konfigurieren
|
||||
```powershell
|
||||
# PowerShell als Administrator öffnen
|
||||
cd C:\Users\Administrator\Documents\GitHub\v2-Docker
|
||||
.\setup-firewall.ps1
|
||||
```
|
||||
|
||||
### 2. Docker-Container stoppen (falls laufend)
|
||||
```bash
|
||||
cd v2
|
||||
docker-compose down
|
||||
```
|
||||
|
||||
### 3. Backup-Verzeichnis erstellen
|
||||
```bash
|
||||
mkdir C:\Users\Administrator\Documents\GitHub\v2-Docker\backups
|
||||
```
|
||||
|
||||
### 4. Docker Images neu bauen und starten
|
||||
```bash
|
||||
docker-compose build --no-cache
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
### 5. Container-Status prüfen
|
||||
```bash
|
||||
docker-compose ps
|
||||
```
|
||||
|
||||
Alle Container sollten "Up" sein:
|
||||
- db (PostgreSQL)
|
||||
- admin-panel
|
||||
- license-server
|
||||
- nginx-proxy
|
||||
|
||||
### 6. Logs prüfen
|
||||
```bash
|
||||
# Nginx Logs
|
||||
docker logs nginx-proxy
|
||||
|
||||
# Admin Panel Logs
|
||||
docker logs admin-panel
|
||||
```
|
||||
|
||||
### 7. Lokaler Test
|
||||
Öffnen Sie im Browser:
|
||||
- http://localhost (sollte auf HTTPS umleiten)
|
||||
- https://localhost (Zertifikatswarnung ist normal)
|
||||
|
||||
### 8. Internet-Test
|
||||
Ihr Kollege kann jetzt zugreifen über:
|
||||
- https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com
|
||||
|
||||
**Login-Daten:**
|
||||
- Benutzer: w@rh@mm3r
|
||||
- Passwort: Warhammer123!
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Problem: Seite nicht erreichbar
|
||||
1. **DynDNS prüfen:**
|
||||
```bash
|
||||
nslookup admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com
|
||||
```
|
||||
Die IP sollte Ihre aktuelle öffentliche IP sein.
|
||||
|
||||
2. **Port-Weiterleitung prüfen:**
|
||||
- FRITZ!Box → Internet → Freigaben
|
||||
- Port 443 muss auf 192.168.178.88 weitergeleitet werden
|
||||
|
||||
3. **Docker-Container prüfen:**
|
||||
```bash
|
||||
docker ps
|
||||
netstat -an | findstr :443
|
||||
```
|
||||
|
||||
### Problem: Zertifikatswarnung
|
||||
Das ist normal bei selbstsignierten Zertifikaten. Der Benutzer kann:
|
||||
1. "Erweitert" klicken
|
||||
2. "Weiter zu admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com (unsicher)" klicken
|
||||
|
||||
### Let's Encrypt aktivieren (optional)
|
||||
Wenn alles funktioniert, können Sie echte Zertifikate aktivieren:
|
||||
|
||||
1. E-Mail in docker-compose.yaml anpassen:
|
||||
```yaml
|
||||
LETSENCRYPT_EMAIL: "ihre-email@domain.de"
|
||||
```
|
||||
|
||||
2. Let's Encrypt aktivieren:
|
||||
```yaml
|
||||
LETSENCRYPT_ENABLED: "true"
|
||||
```
|
||||
|
||||
3. Container neu starten:
|
||||
```bash
|
||||
docker-compose up -d nginx
|
||||
```
|
||||
|
||||
## Sicherheitshinweise
|
||||
- 🔒 Ändern Sie die Standard-Passwörter in der .env Datei
|
||||
- 🔒 Aktivieren Sie Let's Encrypt für echte SSL-Zertifikate
|
||||
- 🔒 Überwachen Sie die Audit-Logs regelmäßig
|
||||
- 🔒 Erstellen Sie regelmäßige Backups
|
||||
|
||||
## Support
|
||||
Bei Problemen:
|
||||
1. Container-Logs prüfen: `docker logs <container-name>`
|
||||
2. Netzwerk-Konnektivität testen
|
||||
3. Firewall-Einstellungen überprüfen
|
||||
181
JOURNAL.md
181
JOURNAL.md
@@ -8,163 +8,11 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker
|
||||
- **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)
|
||||
- **Datenbank**: PostgreSQL mit 2 Admin-Usern
|
||||
- **Ziel**: PoC für spätere VPS-Migration
|
||||
|
||||
---
|
||||
|
||||
## Aktueller Stand (2025-06-09)
|
||||
|
||||
### ✅ Implementiert
|
||||
1. **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
|
||||
|
||||
2. **PostgreSQL Datenbank**
|
||||
- Tabellen: customers, licenses, sessions, audit_log, backup_history, resource_pools, resource_history, resource_metrics, license_resources
|
||||
- UTF-8 Support mit deutscher Locale (de_DE.UTF-8)
|
||||
- Init-Script mit vollständigem Schema
|
||||
- Persistente Datenspeicherung
|
||||
- Zeitzone Europe/Berlin konfiguriert
|
||||
|
||||
3. **Admin Panel (Vollständig)**
|
||||
- Flask-Anwendung mit Session-Management
|
||||
- Login-Funktionalität für 2 Admin-User
|
||||
- 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
|
||||
- Live-Filtering ohne Reload
|
||||
- Sortierbare Tabellen
|
||||
- Bulk-Operationen für Lizenzen
|
||||
- Session-Timeout mit Live-Timer (5 Minuten)
|
||||
- 2FA (Two-Factor Authentication) implementiert
|
||||
|
||||
4. **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)
|
||||
- Moderne SSL-Konfiguration mit Perfect Forward Secrecy
|
||||
|
||||
5. **Sicherheit**
|
||||
- Rate-Limiting und Brute-Force-Schutz (5 Versuche, dann 24h Sperre)
|
||||
- CAPTCHA nach 2 Fehlversuchen (Google reCAPTCHA v2 vorbereitet)
|
||||
- IP-Verwaltung mit manueller Entsperrung
|
||||
- Timing-Attack-Schutz
|
||||
- Security Headers (HSTS, X-Frame-Options, etc.)
|
||||
- Session-Cookie-Sicherheit konfiguriert
|
||||
|
||||
6. **Resource Pool System**
|
||||
- Verwaltung von Domains, IPv4-Adressen und Telefonnummern
|
||||
- 3-Status-System: available, allocated, quarantine
|
||||
- Vollständige UI für Resource Management
|
||||
- Historie-Tracking und Performance-Metriken
|
||||
- Integration in Lizenzerstellung (0-10 Ressourcen pro Typ)
|
||||
- Report-Generator für verschiedene Auswertungen
|
||||
|
||||
### ❌ Noch nicht implementiert
|
||||
1. **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)
|
||||
1. **License Server API implementieren**
|
||||
- `/api/version` - Versionscheck
|
||||
- `/api/validate` - Lizenzvalidierung
|
||||
- `/api/heartbeat` - Session-Management
|
||||
- API-Key Authentifizierung
|
||||
- Rate Limiting für API
|
||||
- Input-Validierung
|
||||
|
||||
### 🟡 Mittel (Erweiterte Features)
|
||||
1. **Erweiterte Sicherheit**
|
||||
- IP-Whitelist für Admin-Zugriff
|
||||
- Passwort-Richtlinien (Komplexität, Ablauf)
|
||||
- JWT-Authentifizierung für API
|
||||
|
||||
2. **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
|
||||
|
||||
3. **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
|
||||
|
||||
4. **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)
|
||||
1. **Benutzeroberfläche**
|
||||
- Dark Mode Toggle
|
||||
- Mobile-optimierte Ansicht (Responsive)
|
||||
- Mehrsprachigkeit (Deutsch/Englisch)
|
||||
- Anpassbare Dashboard-Widgets
|
||||
- Drag & Drop Dashboard
|
||||
- Keyboard Shortcuts
|
||||
|
||||
2. **Erweiterte Statistiken**
|
||||
- Grafische Auswertungen (Chart.js/D3.js)
|
||||
- Umsatz-Statistiken
|
||||
- Nutzungsstatistiken pro Kunde
|
||||
- Lizenz-Verlaufsdiagramme
|
||||
- Geografische Verteilung
|
||||
- Vorhersage-Analysen
|
||||
|
||||
3. **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
|
||||
1. Credentials im Klartext in .env Dateien (OK für PoC, siehe "Best Practices für Produktiv-Migration")
|
||||
2. Nginx proxy_pass zeigt noch auf https://license-server:8443 (sollte http:// sein)
|
||||
|
||||
---
|
||||
|
||||
## Nächste Schritte
|
||||
1. License Server API entwickeln mit Endpunkten:
|
||||
- `/api/version` - Versionscheck
|
||||
- `/api/validate` - Lizenzvalidierung
|
||||
- `/api/heartbeat` - Session-Management
|
||||
2. Nginx Config anpassen (proxy_pass auf HTTP)
|
||||
3. Testing und Dokumentation
|
||||
|
||||
---
|
||||
|
||||
## Best Practices für Produktiv-Migration
|
||||
|
||||
### Passwort-Management
|
||||
@@ -2243,6 +2091,33 @@ Ein Pool-System für Domains, IPv4-Adressen und Telefonnummern, wobei bei jeder
|
||||
|
||||
**Geänderte Dateien:**
|
||||
- `v2_adminpanel/create_users_table.sql` - SQL für Users-Tabelle (temporär)
|
||||
|
||||
### 2025-06-09: Journal-Umstrukturierung
|
||||
|
||||
**Durchgeführte Änderungen:**
|
||||
|
||||
1. **Dokumentation aufgeteilt:**
|
||||
- `JOURNAL.md` - Enthält nur noch chronologische Änderungen (wie ein Tagebuch)
|
||||
- `THE_ROAD_SO_FAR.md` - Neues Dokument mit aktuellem Status und Roadmap
|
||||
|
||||
2. **THE_ROAD_SO_FAR.md erstellt mit:**
|
||||
- Aktueller Status (was läuft bereits)
|
||||
- Nächste Schritte (Priorität Hoch)
|
||||
- Offene Aufgaben (Priorität Mittel)
|
||||
- Nice-to-have Features
|
||||
- Bekannte Probleme
|
||||
- Deployment-Hinweise
|
||||
|
||||
3. **JOURNAL.md bereinigt:**
|
||||
- Todo-Listen entfernt (jetzt in THE_ROAD_SO_FAR.md)
|
||||
- Nur noch chronologische Einträge
|
||||
- Fokus auf "Was wurde gemacht" statt "Was muss gemacht werden"
|
||||
|
||||
**Vorteile der Aufteilung:**
|
||||
- Journal bleibt übersichtlich und wächst linear
|
||||
- Status und Todos sind immer aktuell an einem Ort
|
||||
- Klare Trennung zwischen Historie und Planung
|
||||
- Einfacher für neue Entwickler einzusteigen
|
||||
- `v2_adminpanel/templates/profile.html` - Komplett überarbeitet
|
||||
- `v2_adminpanel/templates/setup_2fa.html` - Neues Step-by-Step Design
|
||||
- `v2_adminpanel/templates/backup_codes.html` - Modernisiertes Layout
|
||||
|
||||
138
THE_ROAD_SO_FAR.md
Normale Datei
138
THE_ROAD_SO_FAR.md
Normale Datei
@@ -0,0 +1,138 @@
|
||||
# The Road So Far
|
||||
Stand: 09.06.2025 - 14:45 Uhr
|
||||
|
||||
## 🚀 Aktueller Status
|
||||
|
||||
### ✅ Was bereits läuft
|
||||
|
||||
1. **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
|
||||
|
||||
2. **PostgreSQL Datenbank**
|
||||
- Alle Tabellen implementiert (customers, licenses, sessions, audit_log, backup_history, resource_pools, etc.)
|
||||
- UTF-8 Support mit deutscher Locale (de_DE.UTF-8)
|
||||
- Zeitzone Europe/Berlin konfiguriert
|
||||
- Persistente Datenspeicherung
|
||||
|
||||
3. **Admin Panel (Vollständig implementiert)**
|
||||
- Flask-Anwendung mit Session-Management
|
||||
- Login für 2 Admin-User (rac00n, w@rh@mm3r)
|
||||
- Dashboard mit Statistiken
|
||||
- Komplette CRUD-Funktionalität für Lizenzen und Kunden
|
||||
- Session-Tracking und -Verwaltung
|
||||
- Audit-Log für alle Aktionen
|
||||
- Export-Funktion (CSV/Excel)
|
||||
- Backup-System mit Verschlüsselung
|
||||
- Suche, Filter und Sortierung
|
||||
- Live-Filtering ohne Reload
|
||||
- Bulk-Operationen
|
||||
- Session-Timeout mit Live-Timer (5 Minuten)
|
||||
- 2FA (Two-Factor Authentication)
|
||||
- Passwort-Änderung
|
||||
- Resource Pool Management
|
||||
|
||||
4. **Internet-Zugriff**
|
||||
- Admin Panel: https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com ✅
|
||||
- API: https://api-software-undso.z5m7q9dk3ah2v1plx6ju.com (502 Bad Gateway - License Server fehlt)
|
||||
- IONOS SSL-Zertifikate konfiguriert
|
||||
- DynDNS aktiv
|
||||
- Feste IP: 192.168.178.88
|
||||
|
||||
5. **Sicherheit**
|
||||
- Rate-Limiting (5 Versuche, dann 24h Sperre)
|
||||
- CAPTCHA nach 2 Fehlversuchen (vorbereitet)
|
||||
- IP-Verwaltung mit manueller Entsperrung
|
||||
- Security Headers (HSTS, X-Frame-Options, etc.)
|
||||
- Timing-Attack-Schutz
|
||||
|
||||
6. **Resource Pool System**
|
||||
- Verwaltung von Domains, IPv4-Adressen, Telefonnummern
|
||||
- 3-Status-System: available, allocated, quarantine
|
||||
- UI für Management, Historie, Metriken
|
||||
- Integration in Lizenzerstellung (0-10 Ressourcen pro Typ)
|
||||
|
||||
### ❌ Was noch fehlt
|
||||
|
||||
1. **License Server API** (Hauptaufgabe!)
|
||||
- Nur Platzhalter-Container vorhanden
|
||||
- Keine API-Endpunkte implementiert
|
||||
- Keine Lizenzvalidierung
|
||||
- Kein Session-Management
|
||||
|
||||
## 🎯 Nächste Schritte (Priorität Hoch)
|
||||
|
||||
1. **Nginx Config Fix**
|
||||
- `proxy_pass https://license-server:8443` → `proxy_pass http://license-server:8443`
|
||||
- License Server wird auf HTTP laufen (SSL übernimmt Nginx)
|
||||
|
||||
2. **License Server API implementieren**
|
||||
- Flask-Anwendung mit PostgreSQL-Anbindung
|
||||
- `/api/version` - Versionscheck
|
||||
- `/api/validate` - Lizenzvalidierung
|
||||
- `/api/heartbeat` - Session-Management
|
||||
- API-Key Authentifizierung
|
||||
- Rate Limiting
|
||||
- Dockerfile anpassen
|
||||
- requirements.txt erstellen
|
||||
|
||||
3. **Testing**
|
||||
- API-Endpunkte testen
|
||||
- Integration mit Admin Panel verifizieren
|
||||
- Session-Management prüfen
|
||||
|
||||
## 📋 Offene Aufgaben (Priorität Mittel)
|
||||
|
||||
1. **Erweiterte Sicherheit**
|
||||
- IP-Whitelist für Admin-Zugriff
|
||||
- Passwort-Richtlinien (Komplexität, Ablauf)
|
||||
- JWT-Authentifizierung für API
|
||||
|
||||
2. **Lizenz-Features**
|
||||
- Bulk-Import (CSV/Excel Upload)
|
||||
- Lizenz-Templates
|
||||
- Automatische Verlängerung
|
||||
- Lizenz-Historie
|
||||
|
||||
3. **Benachrichtigungen**
|
||||
- E-Mail bei ablaufenden Lizenzen
|
||||
- Dashboard-Benachrichtigungen
|
||||
- Webhook-Support
|
||||
|
||||
## 🔧 Bekannte Probleme
|
||||
|
||||
1. **Credentials im Klartext in .env**
|
||||
- OK für PoC
|
||||
- Muss für Produktion geändert werden (siehe Best Practices im JOURNAL)
|
||||
|
||||
2. **Nginx proxy_pass**
|
||||
- Zeigt noch auf https:// statt http://
|
||||
- Muss angepasst werden
|
||||
|
||||
## 💡 Nice-to-have / Dokumentation
|
||||
|
||||
1. **README.md erstellen**
|
||||
- Projektübersicht
|
||||
- Installation
|
||||
- Quick Start
|
||||
|
||||
2. **API_DOCS.md**
|
||||
- License Server API Dokumentation
|
||||
- Beispiel-Requests
|
||||
- Response-Formate
|
||||
|
||||
3. **Weitere Features**
|
||||
- Dark Mode
|
||||
- Mobile Optimierung
|
||||
- Mehrsprachigkeit
|
||||
- Grafische Statistiken
|
||||
- Docker Resource-Optimierung
|
||||
|
||||
## 🚀 Deployment-Hinweise
|
||||
|
||||
- **Aktuell**: PoC läuft lokal auf Windows-PC mit Docker
|
||||
- **Ziel**: Migration auf Hetzner VPS
|
||||
- **Wichtig**: Neue Credentials für Produktion generieren!
|
||||
- **Domain**: Wird bei Migration geändert (feste IP statt DynDNS)
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren