Über das Internet erreichbar gemacht

Dieser Commit ist enthalten in:
2025-06-07 19:08:14 +02:00
Ursprung a37d68838a
Commit 94148f10a8
21 geänderte Dateien mit 933 neuen und 55 gelöschten Zeilen

Datei anzeigen

@@ -17,7 +17,28 @@
"Bash(mkdir:*)",
"Bash(sudo touch:*)",
"Bash(docker volume rm:*)",
"Bash(rm:*)"
"Bash(rm:*)",
"Bash(docker-compose stop:*)",
"Bash(docker-compose rm:*)",
"Bash(docker-compose down:*)",
"Bash(docker stop:*)",
"Bash(docker rm:*)",
"Bash(docker-compose build:*)",
"Bash(docker-compose up:*)",
"Bash(docker-compose ps:*)",
"Bash(docker logs:*)",
"Bash(nslookup:*)",
"Bash(getent:*)",
"Bash(ipconfig:*)",
"Bash(ss:*)",
"Bash(curl:*)",
"Bash(powershell.exe:*)",
"Bash(cp:*)",
"Bash(chmod:*)",
"Bash(unzip:*)",
"Bash(python3:*)",
"Bash(grep:*)",
"Bash(docker exec:*)"
],
"deny": []
}

120
DEPLOYMENT.md Normale Datei
Datei anzeigen

@@ -0,0 +1,120 @@
# 🚀 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

Datei anzeigen

@@ -13,69 +13,118 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker
---
## Aktueller Stand (2025-01-06)
## Aktueller Stand (2025-06-07)
### ✅ Implementiert
1. **Docker-Infrastruktur**
- docker-compose.yaml mit 3 Services (PostgreSQL, Admin Panel, License Server)
- 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
- Init-Script vorhanden
- 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
3. **Admin Panel (Basis)**
3. **Admin Panel (Vollständig)**
- Flask-Anwendung mit Session-Management
- Login-Funktionalität für 2 Admin-User
- Lizenz-Erstellungsformular
- Automatische Kundenerstellung
- Läuft auf Port 443 mit selbstsigniertem SSL
- 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
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)
### ❌ Noch nicht implementiert
1. **License Server API**
- Nur Platzhalter-Container vorhanden
- Keine API-Endpunkte
- Keine API-Endpunkte (/api/version, /api/validate, /api/heartbeat)
- Keine Lizenzvalidierung
- Kein Heartbeat/Session-Management
2. **Admin Panel Erweiterungen**
- Keine Lizenzübersicht
- Keine Bearbeitungs-/Löschfunktionen
- Keine Kundenverwaltung
- Kein UTF-8 Support für deutsche Umlaute
3. **Internet-Zugriff**
- Kein Reverse Proxy
- Keine gültigen SSL-Zertifikate
- Subdomain-Routing nicht konfiguriert
- Kein aktives Session-Management
---
## Offene Aufgaben (Priorität)
### 🔴 Hoch
1. **UTF-8 Support** für deutsche Sonderzeichen (äöüß)
2. **Reverse Proxy Setup** (Nginx/Traefik) für Subdomain-Routing
3. **SSL-Zertifikate** (Let's Encrypt) für beide Subdomains
4. **License Server API implementieren**
### 🔴 Hoch (Basis-Funktionalität)
1. **License Server API implementieren**
- `/api/version` - Versionscheck
- `/api/validate` - Lizenzvalidierung
- `/api/heartbeat` - Session-Management
5. **Admin Panel: Lizenzübersicht**
2. **Reverse Proxy Setup** (Nginx/Traefik) für Subdomain-Routing
3. **SSL-Zertifikate** (Let's Encrypt) für beide Subdomains
4. **Session-Management** (nur eine aktive Session pro Lizenz)
### 🟡 Mittel
1. **Admin Panel: Lizenz bearbeiten/löschen**
2. **Admin Panel: Kundenverwaltung**
3. **Session-Tracking** (nur eine aktive Session pro Lizenz)
4. **Logging-System** für Audit-Trail
### 🟡 Mittel (Erweiterte Features)
1. **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)
### 🟢 Niedrig
1. **Email-Benachrichtigungen**
2. **JWT-Authentifizierung für API**
3. **Backup-Strategie**
4. **VPS-Migrationsdokumentation**
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
---
@@ -97,12 +146,12 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker
## Änderungsprotokoll
### 2025-01-06 - Journal erstellt
### 2025-06-06 - Journal erstellt
- Initialer Projektstand dokumentiert
- Aufgabenliste priorisiert
- Technische Anforderungen festgehalten
### 2025-01-06 - UTF-8 Support implementiert
### 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"
@@ -122,7 +171,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker
- Kundennamen mit Umlauten testen (z.B. "Müller GmbH", "Björn Schäfer")
- Email mit Umlauten testen
### 2025-01-06 - Lizenzübersicht implementiert
### 2025-06-06 - Lizenzübersicht implementiert
- Neue Route `/licenses` für Lizenzübersicht
- SQL-Query mit JOIN zwischen licenses und customers
- Status-Berechnung (aktiv, läuft bald ab, abgelaufen)
@@ -146,7 +195,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker
- Mehrere Lizenzen mit verschiedenen Ablaufdaten erstellen
- Lizenzübersicht unter /licenses aufrufen
### 2025-01-06 - Lizenz bearbeiten/löschen implementiert
### 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
@@ -170,7 +219,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker
- POST-only für Löschvorgänge
- Bestätigungsdialog vor dem Löschen
### 2025-01-06 - Kundenverwaltung implementiert
### 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
@@ -195,7 +244,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker
- Aktive Lizenzen werden separat gezählt (nicht abgelaufen + aktiv)
- UTF-8 Support für Kundennamen mit Umlauten
### 2025-01-06 - Dashboard mit Statistiken implementiert
### 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
@@ -224,7 +273,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker
- Warnung für bald ablaufende Lizenzen
- Übersicht der neuesten Aktivitäten
### 2025-01-06 - Suchfunktion implementiert
### 2025-06-06 - Suchfunktion implementiert
- Volltextsuche für Lizenzen und Kunden
- Case-insensitive Suche mit LIKE-Operator
- Suchergebnisse mit Hervorhebung des Suchbegriffs
@@ -248,7 +297,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker
- Wildcards (%) für Teilstring-Suche
- UTF-8 kompatibel für deutsche Umlaute
### 2025-01-06 - Filter und Pagination implementiert
### 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
@@ -276,7 +325,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker
- URL-Parameter bleiben bei Navigation erhalten
- Responsive Bootstrap-Komponenten
### 2025-01-06 - Session-Tracking implementiert
### 2025-06-06 - Session-Tracking implementiert
- Neue Tabelle für Session-Verwaltung
- Anzeige aktiver und beendeter Sessions
- Manuelles Beenden von Sessions möglich
@@ -305,7 +354,7 @@ Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker
**Hinweis:**
Die Session-Daten werden erst gefüllt, wenn der License Server API implementiert ist und Clients sich verbinden.
### 2025-01-06 - Export-Funktion implementiert
### 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
@@ -331,7 +380,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- Automatische Spaltenbreite in Excel
- BOM für UTF-8 CSV (Excel-Kompatibilität)
### 2025-01-06 - Audit-Log implementiert
### 2025-06-06 - Audit-Log implementiert
- Vollständiges Änderungsprotokoll für alle Aktionen
- Filterbare Übersicht mit Pagination
- Detaillierte Anzeige von Änderungen
@@ -357,7 +406,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- 50 Einträge pro Seite mit Pagination
- IP-Adresse und User-Agent Tracking
### 2025-01-06 - PostgreSQL UTF-8 Locale konfiguriert
### 2025-06-06 - PostgreSQL UTF-8 Locale konfiguriert
- Eigenes PostgreSQL Dockerfile für deutsche Locale
- Sicherstellung der UTF-8 Unterstützung auf Datenbankebene
@@ -378,7 +427,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- locale-gen für de_DE.UTF-8
- Vollständige UTF-8 Unterstützung für deutsche Sonderzeichen
### 2025-01-07 - Backup-Funktionalität implementiert
### 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
@@ -409,4 +458,45 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- APScheduler für automatische Backups
- pg_dump/psql für Datenbank-Operationen
- Audit-Log für alle Backup-Aktionen
- Sicherheitsabfrage bei Wiederherstellung
- 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

Datei anzeigen

@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAqmWkzm5LZrm74xZv04oKnuVso1bBn5n2qp2fECbS9N6LM1w9
0MkY/H3z5JBX4QN/L6Lrp2rJwPZb4JA7Ci9jH11w53+duuUNkw8s1sl7KjZkis/G
7+EJlYWwzodbOzzhxsJ3NSAzS0KFMM/l9L+0XcmrU7vYyiegq3+bvBXiCh/osKwS
qSQ9SGLNMkw5y+jpbmdnGkTKvraFXpREIx2IDYLv7R+kKwqO10By475OhnzwsnLc
pW6kwkst2Mm/nV4unhhEJ2xseCkWpNTulAgV8k1GkBTQQ2Ja7JVG1QXHI1Tj2+Xr
U4CtiETl7JMogO0jjJfL1YPFxKMsDJsMkVFSSQIDAQABAoIBADQVXYq7q9B6dTO0
Z/oA974Z4lsK6aQfK4Z7J2OIenLeky3fxAVNcpW66hGzDSl6KCYnZmCGA6U3qF27
uFAkq+eqaBhaqZu2569LtCjy7PK6LYFAgU5ROty5QJHgTcKNmXVne4iBjywx6QRC
h8eH0VnZisTNZjZkZngFSVT0W2M8XZjzXBkAH448KhRssMLB5WzJ/jToWdTqA/zg
M4dLnhSWQfgrZyzI1TA8rUu3v3UAdd37g8KCnq9+7Vtfr0rEe6K5c3JJIwKJWcXv
9GM6kC82otpHFGVXjZC040nESyeWUESaHphO3UUlQStgmUak3Bav0mniV/+6pCCq
DZL5nQECgYEA4SpSXfrD6OoJhcjT5fqBqEg6wKB8IDfy05zNqAvg5VKDylG1x+ir
umXD6znDmMSdODjHpIJR+El1Qp2DbRkDdJ3x3TTDclqFA9p7zcLBmS2FTnEfXX6o
R3M9LgkDNdqVgyzEK3e9LNZi6xCSMrRp/32eRGJqqs+KEDydBvj4eA8CgYEAwbtL
8QwSuZqEubRsz4f2sJqG4wODxl6jenYRPLXrL9BpLzzGsw460UKjaUtyzBYeJoBm
Fc+bBcyzMt6vsarzlyXpmEfDsf3+f1/l4MbcUoW3YWmrPdsQ8JuqCheRbl84h5lT
MOaiGjPlK7hnIxlq+mcnn6hnmUuObUCuGHHQeCcCgYBMQVwBzfJZSCGPeHMi+NK+
Xi/fmrpO4wPO3NTda6BvqaFOfJu2pzq5dsuCN17htvyT1M7wDN6b2qzmsZeX9Bey
f+cwhjUG3lcb9ftltOaB7OOvrCn2LPXqtMFsfMrkizGFajzJh9S+gaCggU0x9N3N
FArsl/QOAxl75Ds96EWlywKBgCZH8kuhTRnr1Io1gsLHZRGklz7IdQN/s+IA7osG
j4CVOBOjeMfs6eZruoqV5As7251UBdgNe957gnVs117OHvAhB7WViK/lNqLIuk3e
Pa74yTGwhavlW8WPnNv9qDkdC7iPrYaeLC3tTz2CZK7k2OS9+XBtAHukGHKyMzSV
WNJFAoGAMO81Vw+bw0c4twBhRvQhpXsXT5gCiDxtS+I+9neXcmEo0JvB+JM96j7I
UNKGFVcx22LgLIJb+77Euq42x8TpLIbnxCbLsT2GKxqqrB0z+YSixXrNotqV8/FB
EYo1D+bSB7wnFbLRh4dKJ8rFAu7MSt5/KH9qRHGNtDFLETxAvmE=
-----END RSA PRIVATE KEY-----

Binäre Datei nicht angezeigt.

27
fullchain.pem Normale Datei
Datei anzeigen

@@ -0,0 +1,27 @@
-----BEGIN CERTIFICATE-----
MIIEhTCCA22gAwIBAgIUUH8qfFuR1gBrFIPMSLR3KQsXmsEwDQYJKoZIhvcNAQEL
BQAwazELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0JhdmFyaWExDzANBgNVBAcMBk11
bmljaDEUMBIGA1UECgwLRGV2ZWxvcG1lbnQxIzAhBgNVBAMMGiouejVtN3E5ZGsz
YWgydjFwbHg2anUuY29tMB4XDTI1MDYwNzE1NTMwOFoXDTI2MDYwNzE1NTMwOFow
azELMAkGA1UEBhMCREUxEDAOBgNVBAgMB0JhdmFyaWExDzANBgNVBAcMBk11bmlj
aDEUMBIGA1UECgwLRGV2ZWxvcG1lbnQxIzAhBgNVBAMMGiouejVtN3E5ZGszYWgy
djFwbHg2anUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy1+S
sbsTsWM/tpJIYPuxld0Y7gQtmhO/YgeZf/2WAUmrDOuAY0mHZvc7Q8rrQ+B0Fviz
qs04/66A9L/f2puCJ/kE5U3dRKRWR0D+mDGgYmQlvaIFiSUknauJTue5zk6WE4LW
mvacuQAQaUgxYOUWu/lbLWYNaT7ZOlXGGPRgxuikjRQRyP4kdLLPJMNTCzD+yWqH
5MLdfOWmlphhLiuAk+vUbyZ45Bi1imxYc4e5RmWfE3OHwOE4oEihSvhpIqGgqIqK
iknXL04uobi/ZfKpy45Zz2RwgRk4OTlxH0uWAnWR3h7TyKY0K2mUZrQd/SvcOhRp
ZtKdFyWgXKMXzLWVFwIDAQABo4IBHzCCARswHQYDVR0OBBYEFH12zcUUPblwagft
F5rTsvWsHuG4MB8GA1UdIwQYMBaAFH12zcUUPblwagftF5rTsvWsHuG4MA8GA1Ud
EwEB/wQFMAMBAf8wgccGA1UdEQSBvzCBvIIaKi56NW03cTlkazNhaDJ2MXBseDZq
dS5jb22CGHo1bTdxOWRrM2FoMnYxcGx4Nmp1LmNvbYIqYWRtaW4tcGFuZWwtdW5k
c28uejVtN3E5ZGszYWgydjFwbHg2anUuY29tgitzZXJ2ZXItYWRtaW4tdW5kc28u
ejVtN3E5ZGszYWgydjFwbHg2anUuY29tgithcGktc29mdHdhcmUtdW5kc28uejVt
N3E5ZGszYWgydjFwbHg2anUuY29tMA0GCSqGSIb3DQEBCwUAA4IBAQBimBut+xPO
vpnmCRqSwn4M7omqqyOOaMFxIjfKbboBbFv2ViL47HVqgNougr2GFLIAxJjjR8CM
SMp6EW7syUG/WW2ttzOjr3bWGMH3x0K61bBLdZU3vEuyBXbHPK+yyaTEa1C1kpmw
hsxB38iAePAABsIqDf77STV5t+ZvFe+1RLFaFfUIu5b39g/U8x026igtKcCjOEsI
90jn3GQs2rJHOe4+ZoSbzNntnoDakCcpfVX9exr5G5aOTycxmct1TvSFpY0Y+zvl
Oy7US0zl78BHGLFn48C1aAi6Vb8Cc6KdUOAQWOm/OJqsbxo6ymjB0T/3Cw6knvB9
L8ZdoF36eAps
-----END CERTIFICATE-----

38
intermediate1.cer Normale Datei
Datei anzeigen

@@ -0,0 +1,38 @@
-----BEGIN CERTIFICATE-----
MIIGlTCCBH2gAwIBAgIRANJ/u8HeNZ5SFq1hSVhgmcQwDQYJKoZIhvcNAQEMBQAw
gYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtK
ZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYD
VQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTIx
MDMyMjAwMDAwMFoXDTM4MDExODIzNTk1OVowXzELMAkGA1UEBhMCR0IxGDAWBgNV
BAoTD1NlY3RpZ28gTGltaXRlZDE2MDQGA1UEAxMtU2VjdGlnbyBQdWJsaWMgU2Vy
dmVyIEF1dGhlbnRpY2F0aW9uIFJvb3QgUjQ2MIICIjANBgkqhkiG9w0BAQEFAAOC
Ag8AMIICCgKCAgEAk77VNlJ12AEjoBxHQknuY7a3If3EldVIKyZ8FFMQ2nn9K7ct
pNQs+uoy3UnCub0PSD17WphUr55dMXRPB/xQId2kz2hPGxJjbSWZTCqZ80gwYfqB
fB6nCErcPiscHxhMcao1jK34bug7StnllALWiYQTqm3ITzPMUJY3kjPcX4jnn1TZ
SPCYQ9Zm/Z8XOEPFAVEL1+MjDxRdWxTnS77d9MjaAzfR1jmhIVEwg7Bt1zBOlluR
8HAkq79FgWRDDb0hOi886Z4NyyC1QifM2m+b7mQwkDnNk2WBITG1I1AzNyLjOO34
MTDMRf5i+dFdMnlCh99qzFYZQE3Oqrv5tXZJlPEn+JGlg+UGs2MOgNzgElWApjtm
tDmHLcjw0NEU6eQNTQ72XVdyxTscR1ad4tX7gWGMzE2AkDRbt9cUddzYBEifwMEo
iLTpHMqnsfFWt3tJTFnlIBWohAIp+jiUaZpJBo/NH3kUFxIMg3reH7GX7vmXeCik
yESS6X0mBaZYcpt5E9gRX67FOGI0aLKGMI74kGGeMmz1BzbNokxu7Io27fLmmRVE
cMN8vJw5wLTha/eDJSNX2RKA5UnwdQ/vjescm1QotCE8/HwK/+97a3X/ix2gGQWr
+vgrgULoOLq7+6r9PeDzyt9Ol5cp7fMYVumllqy9w5CYsuD5otSmR0N8bc8CAwEA
AaOCASAwggEcMB8GA1UdIwQYMBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1Ud
DgQWBBRWc1hklfmSGrASKgRieaFAFYghSTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwEQYDVR0g
BAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRy
dXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDA1
BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVz
dC5jb20wDQYJKoZIhvcNAQEMBQADggIBADpvBIlq7bMU0cFDT/9P9+BsgCkRgQs0
S6Bf7vJSlWMHwby0VGvxCS0hrbi0K2BINZbEbsVsgpQq04431yyoVn3Hldorgq24
RldRDOOipEZDTFB9wC9HYt1thHF00XeG2C8KC1plwoEzKAIhPvefI/C3cT0CfTXJ
uFjUbKIgSwjNjw6YHtLgoy/hd5+JLUlLco/gzFX/qWbT7tEquOMYpsNKWZj8TLqP
q6zMiG4Na6feEZte6YPXGrMWlTWN341vDedc+yxQqSug79HJUQcOZs7KyDWztmae
QxsPE49UV/8XwrfZtZaYyrs4FpD94Z4Q8dzXGL8+qEJjxgcza7W6PROaClubavd1
VKPm8+aCW77u7SxpR2TFGL6kPdxsKyFijpcunR5V79sUyROfNdzjrAcFWZXK8sbb
9FlnwuVG677JLv+ZVTX5AxLvW5OB4zt5uS+zB62wJ/Wv+jXGAttSAcJec4iFgCWH
Rvdi/jJoSzRLa3nEzx6pFIzclSCnh0u1xCeLcUBypSiPga8W+6PkuoyQq8U9qs9E
oxG5NvrvlyshwUS9yvcZRGw7Ljlx4jJH/BhIPR8kIBCQj1vna9TziZOrw1Of8hDU
bHKFG9Pm8Dp2vbjz/2JH39qvxshPKVllGfq+5klPm7yZRUYTiCMAbqwNdL/nsqF2
Rnnyp58XRStJ
-----END CERTIFICATE-----

36
intermediate2.cer Normale Datei
Datei anzeigen

@@ -0,0 +1,36 @@
-----BEGIN CERTIFICATE-----
MIIGTDCCBDSgAwIBAgIQOXpmzCdWNi4NqofKbqvjsTANBgkqhkiG9w0BAQwFADBf
MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD
Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw
HhcNMjEwMzIyMDAwMDAwWhcNMzYwMzIxMjM1OTU5WjBgMQswCQYDVQQGEwJHQjEY
MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFB1Ymxp
YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gQ0EgRFYgUjM2MIIBojANBgkqhkiG9w0B
AQEFAAOCAY8AMIIBigKCAYEAljZf2HIz7+SPUPQCQObZYcrxLTHYdf1ZtMRe7Yeq
RPSwygz16qJ9cAWtWNTcuICc++p8Dct7zNGxCpqmEtqifO7NvuB5dEVexXn9RFFH
12Hm+NtPRQgXIFjx6MSJcNWuVO3XGE57L1mHlcQYj+g4hny90aFh2SCZCDEVkAja
EMMfYPKuCjHuuF+bzHFb/9gV8P9+ekcHENF2nR1efGWSKwnfG5RawlkaQDpRtZTm
M64TIsv/r7cyFO4nSjs1jLdXYdz5q3a4L0NoabZfbdxVb+CUEHfB0bpulZQtH1Rv
38e/lIdP7OTTIlZh6OYL6NhxP8So0/sht/4J9mqIGxRFc0/pC8suja+wcIUna0HB
pXKfXTKpzgis+zmXDL06ASJf5E4A2/m+Hp6b84sfPAwQ766rI65mh50S0Di9E3Pn
2WcaJc+PILsBmYpgtmgWTR9eV9otfKRUBfzHUHcVgarub/XluEpRlTtZudU5xbFN
xx/DgMrXLUAPaI60fZ6wA+PTAgMBAAGjggGBMIIBfTAfBgNVHSMEGDAWgBRWc1hk
lfmSGrASKgRieaFAFYghSTAdBgNVHQ4EFgQUaMASFhgOr872h6YyV6NGUV3LBycw
DgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0lBBYwFAYI
KwYBBQUHAwEGCCsGAQUFBwMCMBsGA1UdIAQUMBIwBgYEVR0gADAIBgZngQwBAgEw
VAYDVR0fBE0wSzBJoEegRYZDaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdv
UHVibGljU2VydmVyQXV0aGVudGljYXRpb25Sb290UjQ2LmNybDCBhAYIKwYBBQUH
AQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3Rp
Z29QdWJsaWNTZXJ2ZXJBdXRoZW50aWNhdGlvblJvb3RSNDYucDdjMCMGCCsGAQUF
BzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEA
YtOC9Fy+TqECFw40IospI92kLGgoSZGPOSQXMBqmsGWZUQ7rux7cj1du6d9rD6C8
ze1B2eQjkrGkIL/OF1s7vSmgYVafsRoZd/IHUrkoQvX8FZwUsmPu7amgBfaY3g+d
q1x0jNGKb6I6Bzdl6LgMD9qxp+3i7GQOnd9J8LFSietY6Z4jUBzVoOoz8iAU84OF
h2HhAuiPw1ai0VnY38RTI+8kepGWVfGxfBWzwH9uIjeooIeaosVFvE8cmYUB4TSH
5dUyD0jHct2+8ceKEtIoFU/FfHq/mDaVnvcDCZXtIgitdMFQdMZaVehmObyhRdDD
4NQCs0gaI9AAgFj4L9QtkARzhQLNyRf87Kln+YU0lgCGr9HLg3rGO8q+Y4ppLsOd
unQZ6ZxPNGIfOApbPVf5hCe58EZwiWdHIMn9lPP6+F404y8NNugbQixBber+x536
WrZhFZLjEkhp7fFXf9r32rNPfb74X/U90Bdy4lzp3+X1ukh1BuMxA/EEhDoTOS3l
7ABvc7BYSQubQ2490OcdkIzUh3ZwDrakMVrbaTxUM2p24N6dB+ns2zptWCva6jzW
r8IWKIMxzxLPv5Kt3ePKcUdvkBU/smqujSczTzzSjIoR5QqQA6lN1ZRSnuHIWCvh
JEltkYnTAH41QJ6SAWO66GrrUESwN/cgZzL4JLEqz1Y=
-----END CERTIFICATE-----

28
privkey.pem Normale Datei
Datei anzeigen

@@ -0,0 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDLX5KxuxOxYz+2
kkhg+7GV3RjuBC2aE79iB5l//ZYBSasM64BjSYdm9ztDyutD4HQW+LOqzTj/roD0
v9/am4In+QTlTd1EpFZHQP6YMaBiZCW9ogWJJSSdq4lO57nOTpYTgtaa9py5ABBp
SDFg5Ra7+VstZg1pPtk6VcYY9GDG6KSNFBHI/iR0ss8kw1MLMP7Jaofkwt185aaW
mGEuK4CT69RvJnjkGLWKbFhzh7lGZZ8Tc4fA4TigSKFK+GkioaCoioqKSdcvTi6h
uL9l8qnLjlnPZHCBGTg5OXEfS5YCdZHeHtPIpjQraZRmtB39K9w6FGlm0p0XJaBc
oxfMtZUXAgMBAAECggEAIeiSfd2yP95LbjZfqQPuLQ2LLYw2yjzGqSKZPlTaoOZW
hbXyVxuYXtuT3w7DQTL4SCg5VJ4ZBdBjoesn+Lv67I1BerYL0XkRBZpZmKiVlDIc
dMzB3Yb63usN3sEWIsbJkQE8pOO/Z70R/2vRB9XKf5bo093zGHwpHefVOq3sQN2X
BWeYMnlcmxp4JM+PlTJzU0EhW85f40+MccI9UbbeEEAfuNDfAKt0DC3B653zfTpy
YBD03WKAXAPWwHu4ax3EYhYz7KSdSwdSNMTO4QV0GOWiatp/QyV8PwArNwV8gMgO
R7zWPvRuiMDavdaRdriVm334dUBtmtKnUgv/PHhvSQKBgQDs//E9O71R/L8i0f71
5rU+dWMqiNzVG1tYvJQVO1fT1MJBYLYYmmeg++OCn7AU/wvlCy+xCuTfKwh6hNv7
XSiR+r25TALeXwU4CXmDx8XkwigsNkwovh0Wa5EPsB3Tee6rl+fs6chwbqU3q2Bs
iOAkTPpbrrlSdxvWQC8LOIv5HQKBgQDbrX/Zflb7vPg2YRCvB557qsXSVmYxM0hi
BB/qrPumBSNX2tAPqKKztpPwGu0xc++VMO233xH6y8Qsw5Hab2qvJGFCGb1zKgAq
lG2JB1YYINtnzkFk5CpGwvz5jJaQvfoeM8YSbbExVIaeCIn+IMXpi5p8+XdV72Iu
RhPqpM3kwwKBgQC18hO458kDTV9Lkx4CmDiil6om+GVY8aSiLjwdRK67gIYVfPKv
VrKiA175ZDDhHaB7Gahmaa+lqLrcnGzpv+4qi+3leHZnU1mFWLjCM7c4VNpUfubf
DHz2PmRiP9nWBbD2aStzVVM9BaSvZVEkYbx6AeLeSfgaWDi1thanraS//QKBgQCs
mJWBqWzoHuGZwAueqUrQeS0yBGYIM/Wj5P+6nyyclR7esPGVy/YBYuq61D0WBLPx
MN8k/yOeO6inTwTybWWRs/CiQZ0CtbYpvjKNXfE7xdz8oyXoAghhTmP6IYZOtKSm
RCFUa1CzpGicE7NvsgotY1z+4fXr08f8+Vw+mDuYhwKBgANotZFPsaWbwtiYtmEY
buN4TpL0AlxoFVlV+ZI5GX7NGT3pTBn/sneRW9MRmAqM2Ey9O96ISlZsI2RVIQ6P
EU2BwIY0Ojy5UswQit0R3QHNL6v0lXRb5IVlnAvIW3N2SpofdDyGNnnWsCzUOqNQ
ktCuQZblIfgpmCpeSe2QF1pX
-----END PRIVATE KEY-----

38
reset-to-dhcp.ps1 Normale Datei
Datei anzeigen

@@ -0,0 +1,38 @@
# PowerShell Script zum Zurücksetzen auf DHCP
# MUSS ALS ADMINISTRATOR AUSGEFÜHRT WERDEN!
Write-Host "=== Zurücksetzen auf DHCP (automatische IP) ===" -ForegroundColor Green
# Aktive WLAN-Adapter finden
$adapters = Get-NetAdapter | Where-Object {$_.Status -eq 'Up' -and ($_.Name -like '*WLAN*' -or $_.Name -like '*Wi-Fi*')}
if ($adapters.Count -eq 0) {
Write-Host "Kein aktiver WLAN-Adapter gefunden!" -ForegroundColor Red
exit
}
# Den ersten aktiven WLAN-Adapter nehmen
$adapter = $adapters[0]
Write-Host "`nSetze Adapter zurück auf DHCP: $($adapter.Name)" -ForegroundColor Cyan
# Statische IP entfernen
Write-Host "`nEntferne statische IP-Konfiguration..." -ForegroundColor Yellow
Remove-NetIPAddress -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 -Confirm:$false -ErrorAction SilentlyContinue
Remove-NetRoute -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 -Confirm:$false -ErrorAction SilentlyContinue
# DHCP aktivieren
Write-Host "`nAktiviere DHCP..." -ForegroundColor Green
Set-NetIPInterface -InterfaceIndex $adapter.InterfaceIndex -Dhcp Enabled
# DNS auf automatisch setzen
Write-Host "`nSetze DNS auf automatisch..." -ForegroundColor Green
Set-DnsClientServerAddress -InterfaceIndex $adapter.InterfaceIndex -ResetServerAddresses
Write-Host "`n✅ Fertig! Der Adapter nutzt jetzt wieder DHCP (automatische IP-Vergabe)" -ForegroundColor Green
# Kurz warten
Start-Sleep -Seconds 3
# Neue IP anzeigen
Write-Host "`nNeue IP-Adresse:" -ForegroundColor Yellow
Get-NetIPAddress -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 | Format-Table IPAddress, PrefixLength

54
set-static-ip.ps1 Normale Datei
Datei anzeigen

@@ -0,0 +1,54 @@
# PowerShell Script für statische IP-Konfiguration
# MUSS ALS ADMINISTRATOR AUSGEFÜHRT WERDEN!
Write-Host "=== Statische IP 192.168.178.88 einrichten ===" -ForegroundColor Green
# Aktive WLAN-Adapter finden
$adapters = Get-NetAdapter | Where-Object {$_.Status -eq 'Up' -and ($_.Name -like '*WLAN*' -or $_.Name -like '*Wi-Fi*')}
if ($adapters.Count -eq 0) {
Write-Host "Kein aktiver WLAN-Adapter gefunden!" -ForegroundColor Red
exit
}
Write-Host "`nGefundene WLAN-Adapter:" -ForegroundColor Yellow
$adapters | Format-Table Name, Status, InterfaceIndex
# Den ersten aktiven WLAN-Adapter nehmen
$adapter = $adapters[0]
Write-Host "`nKonfiguriere Adapter: $($adapter.Name)" -ForegroundColor Cyan
# Aktuelle Konfiguration anzeigen
Write-Host "`nAktuelle IP-Konfiguration:" -ForegroundColor Yellow
Get-NetIPAddress -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 | Format-Table IPAddress, PrefixLength
# Alte IP-Konfiguration entfernen
Write-Host "`nEntferne alte IP-Konfiguration..." -ForegroundColor Yellow
Remove-NetIPAddress -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 -Confirm:$false -ErrorAction SilentlyContinue
Remove-NetRoute -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 -Confirm:$false -ErrorAction SilentlyContinue
# Neue statische IP setzen
Write-Host "`nSetze neue statische IP: 192.168.178.88" -ForegroundColor Green
New-NetIPAddress -InterfaceIndex $adapter.InterfaceIndex -IPAddress "192.168.178.88" -PrefixLength 24 -DefaultGateway "192.168.178.1" -AddressFamily IPv4
# DNS-Server setzen (FRITZ!Box und Google)
Write-Host "`nSetze DNS-Server..." -ForegroundColor Green
Set-DnsClientServerAddress -InterfaceIndex $adapter.InterfaceIndex -ServerAddresses "192.168.178.1", "8.8.8.8"
# Neue Konfiguration anzeigen
Write-Host "`nNeue IP-Konfiguration:" -ForegroundColor Green
Get-NetIPAddress -InterfaceIndex $adapter.InterfaceIndex -AddressFamily IPv4 | Format-Table IPAddress, PrefixLength
Get-NetRoute -InterfaceIndex $adapter.InterfaceIndex -DestinationPrefix "0.0.0.0/0" | Format-Table DestinationPrefix, NextHop
Write-Host "`n✅ Fertig! Ihre IP ist jetzt: 192.168.178.88" -ForegroundColor Green
Write-Host "Die FRITZ!Box Port-Weiterleitung sollte jetzt funktionieren!" -ForegroundColor Green
# Test
Write-Host "`nTeste Internetverbindung..." -ForegroundColor Yellow
Test-NetConnection google.com -Port 80 -InformationLevel Quiet
if ($?) {
Write-Host "✅ Internetverbindung funktioniert!" -ForegroundColor Green
} else {
Write-Host "❌ Keine Internetverbindung - prüfen Sie die Einstellungen!" -ForegroundColor Red
}

16
setup-firewall.ps1 Normale Datei
Datei anzeigen

@@ -0,0 +1,16 @@
# PowerShell-Script für Windows Firewall Konfiguration
# Als Administrator ausführen!
Write-Host "Konfiguriere Windows Firewall für Docker..." -ForegroundColor Green
# Firewall-Regeln für HTTP und HTTPS
New-NetFirewallRule -DisplayName "Docker HTTP" -Direction Inbound -Protocol TCP -LocalPort 80 -Action Allow -ErrorAction SilentlyContinue
New-NetFirewallRule -DisplayName "Docker HTTPS" -Direction Inbound -Protocol TCP -LocalPort 443 -Action Allow -ErrorAction SilentlyContinue
Write-Host "Firewall-Regeln erstellt." -ForegroundColor Green
# Docker-Service neustarten (optional)
Write-Host "Starte Docker-Service neu..." -ForegroundColor Yellow
Restart-Service docker
Write-Host "Fertig! Ports 80 und 443 sind jetzt offen." -ForegroundColor Green

Datei anzeigen

@@ -48,19 +48,35 @@ services:
context: ../v2_adminpanel
container_name: admin-panel
restart: always
ports:
- "443:443" # Admin-Panel über HTTPS erreichbar
# Port-Mapping entfernt - nur über nginx erreichbar
env_file: .env
depends_on:
- postgres
networks:
- internal_net
volumes:
# Backup-Verzeichnis
- ../backups:/app/backups
deploy:
resources:
limits:
cpus: '2'
memory: 4g
nginx:
build:
context: ../v2_nginx
container_name: nginx-proxy
restart: always
ports:
- "80:80"
- "443:443"
depends_on:
- admin-panel
- license-server
networks:
- internal_net
networks:
internal_net:
driver: bridge

21
v2_nginx/Dockerfile Normale Datei
Datei anzeigen

@@ -0,0 +1,21 @@
FROM nginx:alpine
# SSL-Verzeichnis erstellen
RUN mkdir -p /etc/nginx/ssl
# Default config entfernen
RUN rm -f /etc/nginx/conf.d/default.conf
# Nginx-Konfiguration kopieren
COPY nginx.conf /etc/nginx/nginx.conf
# SSL-Zertifikate kopieren
COPY ssl/fullchain.pem /etc/nginx/ssl/
COPY ssl/privkey.pem /etc/nginx/ssl/
# Berechtigungen setzen
RUN chmod 600 /etc/nginx/ssl/privkey.pem
EXPOSE 80 443
CMD ["nginx", "-g", "daemon off;"]

Datei anzeigen

@@ -0,0 +1,21 @@
FROM nginx:alpine
# Certbot für Let's Encrypt installieren
RUN apk add --no-cache certbot certbot-nginx
# SSL-Verzeichnis erstellen
RUN mkdir -p /etc/nginx/ssl
# Default config entfernen
RUN rm -f /etc/nginx/conf.d/default.conf
# Nginx-Konfiguration kopieren
COPY nginx.conf /etc/nginx/nginx.conf
# Entrypoint für Certbot
COPY entrypoint-letsencrypt.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
EXPOSE 80 443
ENTRYPOINT ["/entrypoint.sh"]

Datei anzeigen

@@ -0,0 +1,47 @@
#!/bin/sh
# Temporäre Nginx config für Let's Encrypt Challenge
cat > /etc/nginx/conf.d/default.conf << EOF
server {
listen 80;
server_name admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com api-software-undso.z5m7q9dk3ah2v1plx6ju.com;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://\$host\$request_uri;
}
}
EOF
# Nginx starten
nginx
# Let's Encrypt Zertifikate holen
echo "Requesting Let's Encrypt certificates..."
certbot certonly --webroot -w /var/www/certbot \
-d admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com \
-d api-software-undso.z5m7q9dk3ah2v1plx6ju.com \
--non-interactive \
--agree-tos \
--email admin@z5m7q9dk3ah2v1plx6ju.com \
--no-eff-email
# Prüfen ob erfolgreich
if [ $? -eq 0 ]; then
echo "Certificates obtained successfully!"
# Nginx stoppen
nginx -s stop
# Kopiere die echte config
cp /etc/nginx/nginx.conf.real /etc/nginx/nginx.conf
# Nginx mit SSL starten
nginx -g "daemon off;"
else
echo "Failed to obtain certificates"
nginx -g "daemon off;"
fi

30
v2_nginx/entrypoint.sh Normale Datei
Datei anzeigen

@@ -0,0 +1,30 @@
#!/bin/sh
# Nginx im Hintergrund starten
nginx
# Warte bis Nginx läuft
sleep 5
# Versuche Let's Encrypt Zertifikate zu holen (nur in Produktion)
if [ "$LETSENCRYPT_ENABLED" = "true" ]; then
echo "Requesting Let's Encrypt certificates..."
# Admin Panel Zertifikat
certbot --nginx -d admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com \
--non-interactive --agree-tos --email ${LETSENCRYPT_EMAIL} \
--redirect --expand --no-eff-email
# API Server Zertifikat
certbot --nginx -d api-software-undso.z5m7q9dk3ah2v1plx6ju.com \
--non-interactive --agree-tos --email ${LETSENCRYPT_EMAIL} \
--redirect --expand --no-eff-email
# Auto-renewal einrichten
echo "0 0,12 * * * root certbot renew --quiet" >> /etc/crontabs/root
crond
fi
# Nginx im Vordergrund halten
nginx -s stop
nginx -g "daemon off;"

71
v2_nginx/nginx.conf Normale Datei
Datei anzeigen

@@ -0,0 +1,71 @@
events {
worker_connections 1024;
}
http {
# SSL-Einstellungen
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# Admin Panel
server {
listen 80;
server_name admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com;
# Redirect HTTP to HTTPS
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com;
# SSL-Zertifikate (echte Zertifikate)
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
# Proxy-Einstellungen
location / {
proxy_pass https://admin-panel:443;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# WebSocket support (falls benötigt)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# SSL-Verifizierung für selbstsignierte Zertifikate deaktivieren
proxy_ssl_verify off;
}
}
# API Server (für später)
server {
listen 80;
server_name api-software-undso.z5m7q9dk3ah2v1plx6ju.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name api-software-undso.z5m7q9dk3ah2v1plx6ju.com;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
location / {
proxy_pass https://license-server:8443;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_ssl_verify off;
}
}
}

112
v2_nginx/ssl/fullchain.pem Normale Datei
Datei anzeigen

@@ -0,0 +1,112 @@
-----BEGIN CERTIFICATE-----
MIIGqDCCBRCgAwIBAgIRAP++iWUqjw7yOtqdDe3DXdcwDQYJKoZIhvcNAQEMBQAw
YDELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE3MDUGA1UE
AxMuU2VjdGlnbyBQdWJsaWMgU2VydmVyIEF1dGhlbnRpY2F0aW9uIENBIERWIFIz
NjAeFw0yNTA2MDcwMDAwMDBaFw0yNjA2MDcyMzU5NTlaMCUxIzAhBgNVBAMMGiou
ejVtN3E5ZGszYWgydjFwbHg2anUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAqmWkzm5LZrm74xZv04oKnuVso1bBn5n2qp2fECbS9N6LM1w90MkY
/H3z5JBX4QN/L6Lrp2rJwPZb4JA7Ci9jH11w53+duuUNkw8s1sl7KjZkis/G7+EJ
lYWwzodbOzzhxsJ3NSAzS0KFMM/l9L+0XcmrU7vYyiegq3+bvBXiCh/osKwSqSQ9
SGLNMkw5y+jpbmdnGkTKvraFXpREIx2IDYLv7R+kKwqO10By475OhnzwsnLcpW6k
wkst2Mm/nV4unhhEJ2xseCkWpNTulAgV8k1GkBTQQ2Ja7JVG1QXHI1Tj2+XrU4Ct
iETl7JMogO0jjJfL1YPFxKMsDJsMkVFSSQIDAQABo4IDFjCCAxIwHwYDVR0jBBgw
FoAUaMASFhgOr872h6YyV6NGUV3LBycwHQYDVR0OBBYEFD2tx0mT4AtPU2ISB5ui
xdaBPrXKMA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQG
CCsGAQUFBwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUw
IwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCB
hAYIKwYBBQUHAQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28u
Y29tL1NlY3RpZ29QdWJsaWNTZXJ2ZXJBdXRoZW50aWNhdGlvbkNBRFZSMzYuY3J0
MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTCCAX4GCisGAQQB
1nkCBAIEggFuBIIBagFoAHcAlpdkv1VYl633Q4doNwhCd+nwOtX2pPM2bkakPw/K
qcYAAAGXSz80dwAABAMASDBGAiEAwqN1tMQQth342Rir/V/0PdCs2MH0OmuoT2xZ
8tiwaikCIQCnKukR44Tt6ZJaZ+hcleqT77ug7XRIXpgEtei6avNbLgB2ABmG1Mco
qm/+ugNveCpNAZGqzi1yMQ+uzl1wQS0lTMfUAAABl0s/Mm4AAAQDAEcwRQIgEifW
JKtue9T6SyDo21oG3kX3BWzFS3b+EA0aBpe7+8YCIQC8dXbuLYzaOinK7JDtLwWT
QSveqzYirRlHT2E9OswywQB1AA5XlLzzrqk+MxssmQez95Dfm8I9cTIl3SGpJaxh
xU4hAAABl0s/MrwAAAQDAEYwRAIgK52ai/UeJMdBo/aSkvlm6jLmVIHN4/IiidX+
AEP5A5UCIGCLtmAlmj+G3m+Qci2ex6iwW/JkpeSTCns2gCvYhcNsMD8GA1UdEQQ4
MDaCGiouejVtN3E5ZGszYWgydjFwbHg2anUuY29tghh6NW03cTlkazNhaDJ2MXBs
eDZqdS5jb20wDQYJKoZIhvcNAQEMBQADggGBAC/vgQ15loW1Sb2gEPc00aHzxL0S
QrBFyyJAhYAu1bJRnDVZTuRsrheyKJgZJUSRUMv9j7Row4EcclNRKjzdCCK0K7wv
HFK5O1npeC0WFIKu+Wescy/a0rxXV6vSadtE/2R5NI4gZW1KW7n8+g5lcB1bqBth
JuiUKtddMCi/d04UQOasJ35OK61yHi893RnVpfs52wNik++PWPDvVahdCLMqQ6KY
SngLKlmIfuYDfTmwftTJsRGnTMsw1lUI+L9D4MeqcYmakWUcqD/v3SyijcL/M7ag
lkZoyQPy8qd/Kjgoh+hs1vscU6jotP40ZhSnCBZZZ9bw7h7RvhQY6uOgLIwKfjRG
NXbG4FkQBPLhkLwFmGnC/aZui1Eholi9h1Rz4cFZ5VDqdjsN/YIjpH/t2LHMh9Lu
njibo1dOyQqNSdILZfUGo/kii5ZMI2+TRyOZOACvbLU9mZmyGjXS4l5tc4PRhjUE
2V3Apslo+pviTCIinLPng15mzTOQxlUokLf5yg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGTDCCBDSgAwIBAgIQOXpmzCdWNi4NqofKbqvjsTANBgkqhkiG9w0BAQwFADBf
MQswCQYDVQQGEwJHQjEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTYwNAYDVQQD
Ey1TZWN0aWdvIFB1YmxpYyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gUm9vdCBSNDYw
HhcNMjEwMzIyMDAwMDAwWhcNMzYwMzIxMjM1OTU5WjBgMQswCQYDVQQGEwJHQjEY
MBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFB1Ymxp
YyBTZXJ2ZXIgQXV0aGVudGljYXRpb24gQ0EgRFYgUjM2MIIBojANBgkqhkiG9w0B
AQEFAAOCAY8AMIIBigKCAYEAljZf2HIz7+SPUPQCQObZYcrxLTHYdf1ZtMRe7Yeq
RPSwygz16qJ9cAWtWNTcuICc++p8Dct7zNGxCpqmEtqifO7NvuB5dEVexXn9RFFH
12Hm+NtPRQgXIFjx6MSJcNWuVO3XGE57L1mHlcQYj+g4hny90aFh2SCZCDEVkAja
EMMfYPKuCjHuuF+bzHFb/9gV8P9+ekcHENF2nR1efGWSKwnfG5RawlkaQDpRtZTm
M64TIsv/r7cyFO4nSjs1jLdXYdz5q3a4L0NoabZfbdxVb+CUEHfB0bpulZQtH1Rv
38e/lIdP7OTTIlZh6OYL6NhxP8So0/sht/4J9mqIGxRFc0/pC8suja+wcIUna0HB
pXKfXTKpzgis+zmXDL06ASJf5E4A2/m+Hp6b84sfPAwQ766rI65mh50S0Di9E3Pn
2WcaJc+PILsBmYpgtmgWTR9eV9otfKRUBfzHUHcVgarub/XluEpRlTtZudU5xbFN
xx/DgMrXLUAPaI60fZ6wA+PTAgMBAAGjggGBMIIBfTAfBgNVHSMEGDAWgBRWc1hk
lfmSGrASKgRieaFAFYghSTAdBgNVHQ4EFgQUaMASFhgOr872h6YyV6NGUV3LBycw
DgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0lBBYwFAYI
KwYBBQUHAwEGCCsGAQUFBwMCMBsGA1UdIAQUMBIwBgYEVR0gADAIBgZngQwBAgEw
VAYDVR0fBE0wSzBJoEegRYZDaHR0cDovL2NybC5zZWN0aWdvLmNvbS9TZWN0aWdv
UHVibGljU2VydmVyQXV0aGVudGljYXRpb25Sb290UjQ2LmNybDCBhAYIKwYBBQUH
AQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28uY29tL1NlY3Rp
Z29QdWJsaWNTZXJ2ZXJBdXRoZW50aWNhdGlvblJvb3RSNDYucDdjMCMGCCsGAQUF
BzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTANBgkqhkiG9w0BAQwFAAOCAgEA
YtOC9Fy+TqECFw40IospI92kLGgoSZGPOSQXMBqmsGWZUQ7rux7cj1du6d9rD6C8
ze1B2eQjkrGkIL/OF1s7vSmgYVafsRoZd/IHUrkoQvX8FZwUsmPu7amgBfaY3g+d
q1x0jNGKb6I6Bzdl6LgMD9qxp+3i7GQOnd9J8LFSietY6Z4jUBzVoOoz8iAU84OF
h2HhAuiPw1ai0VnY38RTI+8kepGWVfGxfBWzwH9uIjeooIeaosVFvE8cmYUB4TSH
5dUyD0jHct2+8ceKEtIoFU/FfHq/mDaVnvcDCZXtIgitdMFQdMZaVehmObyhRdDD
4NQCs0gaI9AAgFj4L9QtkARzhQLNyRf87Kln+YU0lgCGr9HLg3rGO8q+Y4ppLsOd
unQZ6ZxPNGIfOApbPVf5hCe58EZwiWdHIMn9lPP6+F404y8NNugbQixBber+x536
WrZhFZLjEkhp7fFXf9r32rNPfb74X/U90Bdy4lzp3+X1ukh1BuMxA/EEhDoTOS3l
7ABvc7BYSQubQ2490OcdkIzUh3ZwDrakMVrbaTxUM2p24N6dB+ns2zptWCva6jzW
r8IWKIMxzxLPv5Kt3ePKcUdvkBU/smqujSczTzzSjIoR5QqQA6lN1ZRSnuHIWCvh
JEltkYnTAH41QJ6SAWO66GrrUESwN/cgZzL4JLEqz1Y=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGlTCCBH2gAwIBAgIRANJ/u8HeNZ5SFq1hSVhgmcQwDQYJKoZIhvcNAQEMBQAw
gYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtK
ZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYD
VQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTIx
MDMyMjAwMDAwMFoXDTM4MDExODIzNTk1OVowXzELMAkGA1UEBhMCR0IxGDAWBgNV
BAoTD1NlY3RpZ28gTGltaXRlZDE2MDQGA1UEAxMtU2VjdGlnbyBQdWJsaWMgU2Vy
dmVyIEF1dGhlbnRpY2F0aW9uIFJvb3QgUjQ2MIICIjANBgkqhkiG9w0BAQEFAAOC
Ag8AMIICCgKCAgEAk77VNlJ12AEjoBxHQknuY7a3If3EldVIKyZ8FFMQ2nn9K7ct
pNQs+uoy3UnCub0PSD17WphUr55dMXRPB/xQId2kz2hPGxJjbSWZTCqZ80gwYfqB
fB6nCErcPiscHxhMcao1jK34bug7StnllALWiYQTqm3ITzPMUJY3kjPcX4jnn1TZ
SPCYQ9Zm/Z8XOEPFAVEL1+MjDxRdWxTnS77d9MjaAzfR1jmhIVEwg7Bt1zBOlluR
8HAkq79FgWRDDb0hOi886Z4NyyC1QifM2m+b7mQwkDnNk2WBITG1I1AzNyLjOO34
MTDMRf5i+dFdMnlCh99qzFYZQE3Oqrv5tXZJlPEn+JGlg+UGs2MOgNzgElWApjtm
tDmHLcjw0NEU6eQNTQ72XVdyxTscR1ad4tX7gWGMzE2AkDRbt9cUddzYBEifwMEo
iLTpHMqnsfFWt3tJTFnlIBWohAIp+jiUaZpJBo/NH3kUFxIMg3reH7GX7vmXeCik
yESS6X0mBaZYcpt5E9gRX67FOGI0aLKGMI74kGGeMmz1BzbNokxu7Io27fLmmRVE
cMN8vJw5wLTha/eDJSNX2RKA5UnwdQ/vjescm1QotCE8/HwK/+97a3X/ix2gGQWr
+vgrgULoOLq7+6r9PeDzyt9Ol5cp7fMYVumllqy9w5CYsuD5otSmR0N8bc8CAwEA
AaOCASAwggEcMB8GA1UdIwQYMBaAFFN5v1qqK0rPVIDh2JvAnfKyA2bLMB0GA1Ud
DgQWBBRWc1hklfmSGrASKgRieaFAFYghSTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0T
AQH/BAUwAwEB/zAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwEQYDVR0g
BAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRy
dXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDA1
BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVz
dC5jb20wDQYJKoZIhvcNAQEMBQADggIBADpvBIlq7bMU0cFDT/9P9+BsgCkRgQs0
S6Bf7vJSlWMHwby0VGvxCS0hrbi0K2BINZbEbsVsgpQq04431yyoVn3Hldorgq24
RldRDOOipEZDTFB9wC9HYt1thHF00XeG2C8KC1plwoEzKAIhPvefI/C3cT0CfTXJ
uFjUbKIgSwjNjw6YHtLgoy/hd5+JLUlLco/gzFX/qWbT7tEquOMYpsNKWZj8TLqP
q6zMiG4Na6feEZte6YPXGrMWlTWN341vDedc+yxQqSug79HJUQcOZs7KyDWztmae
QxsPE49UV/8XwrfZtZaYyrs4FpD94Z4Q8dzXGL8+qEJjxgcza7W6PROaClubavd1
VKPm8+aCW77u7SxpR2TFGL6kPdxsKyFijpcunR5V79sUyROfNdzjrAcFWZXK8sbb
9FlnwuVG677JLv+ZVTX5AxLvW5OB4zt5uS+zB62wJ/Wv+jXGAttSAcJec4iFgCWH
Rvdi/jJoSzRLa3nEzx6pFIzclSCnh0u1xCeLcUBypSiPga8W+6PkuoyQq8U9qs9E
oxG5NvrvlyshwUS9yvcZRGw7Ljlx4jJH/BhIPR8kIBCQj1vna9TziZOrw1Of8hDU
bHKFG9Pm8Dp2vbjz/2JH39qvxshPKVllGfq+5klPm7yZRUYTiCMAbqwNdL/nsqF2
Rnnyp58XRStJ
-----END CERTIFICATE-----

27
v2_nginx/ssl/privkey.pem Normale Datei
Datei anzeigen

@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAqmWkzm5LZrm74xZv04oKnuVso1bBn5n2qp2fECbS9N6LM1w9
0MkY/H3z5JBX4QN/L6Lrp2rJwPZb4JA7Ci9jH11w53+duuUNkw8s1sl7KjZkis/G
7+EJlYWwzodbOzzhxsJ3NSAzS0KFMM/l9L+0XcmrU7vYyiegq3+bvBXiCh/osKwS
qSQ9SGLNMkw5y+jpbmdnGkTKvraFXpREIx2IDYLv7R+kKwqO10By475OhnzwsnLc
pW6kwkst2Mm/nV4unhhEJ2xseCkWpNTulAgV8k1GkBTQQ2Ja7JVG1QXHI1Tj2+Xr
U4CtiETl7JMogO0jjJfL1YPFxKMsDJsMkVFSSQIDAQABAoIBADQVXYq7q9B6dTO0
Z/oA974Z4lsK6aQfK4Z7J2OIenLeky3fxAVNcpW66hGzDSl6KCYnZmCGA6U3qF27
uFAkq+eqaBhaqZu2569LtCjy7PK6LYFAgU5ROty5QJHgTcKNmXVne4iBjywx6QRC
h8eH0VnZisTNZjZkZngFSVT0W2M8XZjzXBkAH448KhRssMLB5WzJ/jToWdTqA/zg
M4dLnhSWQfgrZyzI1TA8rUu3v3UAdd37g8KCnq9+7Vtfr0rEe6K5c3JJIwKJWcXv
9GM6kC82otpHFGVXjZC040nESyeWUESaHphO3UUlQStgmUak3Bav0mniV/+6pCCq
DZL5nQECgYEA4SpSXfrD6OoJhcjT5fqBqEg6wKB8IDfy05zNqAvg5VKDylG1x+ir
umXD6znDmMSdODjHpIJR+El1Qp2DbRkDdJ3x3TTDclqFA9p7zcLBmS2FTnEfXX6o
R3M9LgkDNdqVgyzEK3e9LNZi6xCSMrRp/32eRGJqqs+KEDydBvj4eA8CgYEAwbtL
8QwSuZqEubRsz4f2sJqG4wODxl6jenYRPLXrL9BpLzzGsw460UKjaUtyzBYeJoBm
Fc+bBcyzMt6vsarzlyXpmEfDsf3+f1/l4MbcUoW3YWmrPdsQ8JuqCheRbl84h5lT
MOaiGjPlK7hnIxlq+mcnn6hnmUuObUCuGHHQeCcCgYBMQVwBzfJZSCGPeHMi+NK+
Xi/fmrpO4wPO3NTda6BvqaFOfJu2pzq5dsuCN17htvyT1M7wDN6b2qzmsZeX9Bey
f+cwhjUG3lcb9ftltOaB7OOvrCn2LPXqtMFsfMrkizGFajzJh9S+gaCggU0x9N3N
FArsl/QOAxl75Ds96EWlywKBgCZH8kuhTRnr1Io1gsLHZRGklz7IdQN/s+IA7osG
j4CVOBOjeMfs6eZruoqV5As7251UBdgNe957gnVs117OHvAhB7WViK/lNqLIuk3e
Pa74yTGwhavlW8WPnNv9qDkdC7iPrYaeLC3tTz2CZK7k2OS9+XBtAHukGHKyMzSV
WNJFAoGAMO81Vw+bw0c4twBhRvQhpXsXT5gCiDxtS+I+9neXcmEo0JvB+JM96j7I
UNKGFVcx22LgLIJb+77Euq42x8TpLIbnxCbLsT2GKxqqrB0z+YSixXrNotqV8/FB
EYo1D+bSB7wnFbLRh4dKJ8rFAu7MSt5/KH9qRHGNtDFLETxAvmE=
-----END RSA PRIVATE KEY-----

Datei anzeigen

@@ -0,0 +1,38 @@
-----BEGIN CERTIFICATE-----
MIIGqDCCBRCgAwIBAgIRAP++iWUqjw7yOtqdDe3DXdcwDQYJKoZIhvcNAQEMBQAw
YDELMAkGA1UEBhMCR0IxGDAWBgNVBAoTD1NlY3RpZ28gTGltaXRlZDE3MDUGA1UE
AxMuU2VjdGlnbyBQdWJsaWMgU2VydmVyIEF1dGhlbnRpY2F0aW9uIENBIERWIFIz
NjAeFw0yNTA2MDcwMDAwMDBaFw0yNjA2MDcyMzU5NTlaMCUxIzAhBgNVBAMMGiou
ejVtN3E5ZGszYWgydjFwbHg2anUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
MIIBCgKCAQEAqmWkzm5LZrm74xZv04oKnuVso1bBn5n2qp2fECbS9N6LM1w90MkY
/H3z5JBX4QN/L6Lrp2rJwPZb4JA7Ci9jH11w53+duuUNkw8s1sl7KjZkis/G7+EJ
lYWwzodbOzzhxsJ3NSAzS0KFMM/l9L+0XcmrU7vYyiegq3+bvBXiCh/osKwSqSQ9
SGLNMkw5y+jpbmdnGkTKvraFXpREIx2IDYLv7R+kKwqO10By475OhnzwsnLcpW6k
wkst2Mm/nV4unhhEJ2xseCkWpNTulAgV8k1GkBTQQ2Ja7JVG1QXHI1Tj2+XrU4Ct
iETl7JMogO0jjJfL1YPFxKMsDJsMkVFSSQIDAQABo4IDFjCCAxIwHwYDVR0jBBgw
FoAUaMASFhgOr872h6YyV6NGUV3LBycwHQYDVR0OBBYEFD2tx0mT4AtPU2ISB5ui
xdaBPrXKMA4GA1UdDwEB/wQEAwIFoDAMBgNVHRMBAf8EAjAAMB0GA1UdJQQWMBQG
CCsGAQUFBwMBBggrBgEFBQcDAjBJBgNVHSAEQjBAMDQGCysGAQQBsjEBAgIHMCUw
IwYIKwYBBQUHAgEWF2h0dHBzOi8vc2VjdGlnby5jb20vQ1BTMAgGBmeBDAECATCB
hAYIKwYBBQUHAQEEeDB2ME8GCCsGAQUFBzAChkNodHRwOi8vY3J0LnNlY3RpZ28u
Y29tL1NlY3RpZ29QdWJsaWNTZXJ2ZXJBdXRoZW50aWNhdGlvbkNBRFZSMzYuY3J0
MCMGCCsGAQUFBzABhhdodHRwOi8vb2NzcC5zZWN0aWdvLmNvbTCCAX4GCisGAQQB
1nkCBAIEggFuBIIBagFoAHcAlpdkv1VYl633Q4doNwhCd+nwOtX2pPM2bkakPw/K
qcYAAAGXSz80dwAABAMASDBGAiEAwqN1tMQQth342Rir/V/0PdCs2MH0OmuoT2xZ
8tiwaikCIQCnKukR44Tt6ZJaZ+hcleqT77ug7XRIXpgEtei6avNbLgB2ABmG1Mco
qm/+ugNveCpNAZGqzi1yMQ+uzl1wQS0lTMfUAAABl0s/Mm4AAAQDAEcwRQIgEifW
JKtue9T6SyDo21oG3kX3BWzFS3b+EA0aBpe7+8YCIQC8dXbuLYzaOinK7JDtLwWT
QSveqzYirRlHT2E9OswywQB1AA5XlLzzrqk+MxssmQez95Dfm8I9cTIl3SGpJaxh
xU4hAAABl0s/MrwAAAQDAEYwRAIgK52ai/UeJMdBo/aSkvlm6jLmVIHN4/IiidX+
AEP5A5UCIGCLtmAlmj+G3m+Qci2ex6iwW/JkpeSTCns2gCvYhcNsMD8GA1UdEQQ4
MDaCGiouejVtN3E5ZGszYWgydjFwbHg2anUuY29tghh6NW03cTlkazNhaDJ2MXBs
eDZqdS5jb20wDQYJKoZIhvcNAQEMBQADggGBAC/vgQ15loW1Sb2gEPc00aHzxL0S
QrBFyyJAhYAu1bJRnDVZTuRsrheyKJgZJUSRUMv9j7Row4EcclNRKjzdCCK0K7wv
HFK5O1npeC0WFIKu+Wescy/a0rxXV6vSadtE/2R5NI4gZW1KW7n8+g5lcB1bqBth
JuiUKtddMCi/d04UQOasJ35OK61yHi893RnVpfs52wNik++PWPDvVahdCLMqQ6KY
SngLKlmIfuYDfTmwftTJsRGnTMsw1lUI+L9D4MeqcYmakWUcqD/v3SyijcL/M7ag
lkZoyQPy8qd/Kjgoh+hs1vscU6jotP40ZhSnCBZZZ9bw7h7RvhQY6uOgLIwKfjRG
NXbG4FkQBPLhkLwFmGnC/aZui1Eholi9h1Rz4cFZ5VDqdjsN/YIjpH/t2LHMh9Lu
njibo1dOyQqNSdILZfUGo/kii5ZMI2+TRyOZOACvbLU9mZmyGjXS4l5tc4PRhjUE
2V3Apslo+pviTCIinLPng15mzTOQxlUokLf5yg==
-----END CERTIFICATE-----