📚 Improved IHK Projektdokumentation and logs for better clarity and organization.
This commit is contained in:
parent
19951ba6e4
commit
4d5ae2cceb
@ -168,28 +168,30 @@ neben den Druckern überhaupt so nennen möchte – führte zu systematischen
|
||||
Problemen. Doppelbuchungen waren an der Tagesordnung, die manuelle
|
||||
Aktivierung und Deaktivierung der Geräte wurde regelmäßig vergessen (was
|
||||
zu unnötigem Energieverbrauch und erhöhtem Verschleiß führte), und eine
|
||||
verlässliche Dokumentation der tatsächlichen Nutzungszeiten?
|
||||
Fehlanzeige. Weder Verantwortungszuordnung für Aufräumarbeiten noch
|
||||
verlässliche Dokumentation der tatsächlichen Nutzungszeiten existierte
|
||||
schlichtweg nicht. Weder Verantwortungszuordnung für Aufräumarbeiten noch
|
||||
verursachungsgerechte Kostenzuordnung waren möglich.
|
||||
|
||||
Ein erstmaliger Lösungsansatz durch den ehemaligen Auszubildenden Torben
|
||||
Haack – Fachrichtung Daten- und Prozessanalyse – hatte einen
|
||||
vielversprechenden Frontend-Prototyp auf Basis von Next.js
|
||||
hervorgebracht. Der Prototyp verfügte über eine moderne
|
||||
Benutzeroberfläche mit umfangreichen Analysefunktionen. Nur fehlte
|
||||
dummerweise die komplette Backend-Funktionalität. Ohne Backend blieb
|
||||
Benutzeroberfläche mit umfangreichen Analysefunktionen. Allerdings fehlte
|
||||
die essenzielle Backend-Funktionalität vollständig. Ohne Backend blieb
|
||||
die Projektarbeit des Herrn Haack in der praktischen Anwendung
|
||||
funktionslos. Ursprünglich war angedacht, API-Endpunkte zu
|
||||
implementieren, welche die Daten- und Prozessanalyse seines Frontends
|
||||
ermöglicht hätten – eine Aufgabe, die naturgemäß außerhalb meines
|
||||
Fachgebiets der digitalen Vernetzung lag.
|
||||
|
||||
Ich sah die Chance, die Idee aufzugreifen und im Rahmen meiner
|
||||
Ich erkannte die Chance, die Idee aufzugreifen und im Rahmen meiner
|
||||
Projektarbeit weiterzuentwickeln. Die Schnittstelle der Vernetzung zum
|
||||
cyber-physischen System lag im Backend – genau mein Ding. Mehrere
|
||||
Möglichkeiten zur Einbringung meiner Fachrichtung sprangen mir direkt
|
||||
ins Auge. Keine lästige Pflichtaufgabe wie bei anderen Projektoptionen,
|
||||
sondern echtes Interesse. Es kitzelte meine Leidenschaft.
|
||||
cyber-physischen System lag im Backend – exakt in meinem
|
||||
Kompetenzbereich. Mehrere Möglichkeiten zur Einbringung meiner
|
||||
Fachrichtung waren unmittelbar ersichtlich. Im Gegensatz zu anderen
|
||||
verfügbaren Projektoptionen, die eher pflichtgemäßen Charakter hatten,
|
||||
weckte dieses Vorhaben mein genuines fachliches Interesse und meine
|
||||
intrinsische Motivation. Es kitzelte meine Leidenschaft.
|
||||
|
||||
## 1.2 Ableitung der Projektziele
|
||||
|
||||
@ -300,8 +302,9 @@ Funktionsumfang und Benutzerfreundlichkeit.
|
||||
Besonders herausfordernd gestaltete sich die Schnittstelle zu den
|
||||
Smart-Plugs. Die ursprüngliche Annahme, dass sich die TAPO P110-Steckdosen
|
||||
von TP-Link problemlos integrieren lassen würden, erwies sich als
|
||||
naiv. Die Geräte boten keine dokumentierte API – nur die proprietäre
|
||||
TAPO-App ermöglichte die Steuerung. Das war ein Problem.
|
||||
zu optimistisch. Die Geräte boten keine dokumentierte API – nur die proprietäre
|
||||
TAPO-App ermöglichte die Steuerung. Dies stellte eine erhebliche technische
|
||||
Herausforderung für die geplante Integration dar.
|
||||
|
||||
## 1.6 Analyse der IT-sicherheitsrelevante Bedingungen
|
||||
|
||||
@ -529,24 +532,27 @@ kategorisch aus, was die Optionen erheblich einschränkte. Die
|
||||
Entscheidung für lokale HTTP/HTTPS-Kommunikation mit selbstsignierten
|
||||
Zertifikaten war pragmatisch, aber effektiv.
|
||||
|
||||
Die Kommunikation mit den Smart-Plugs stellte die größte Herausforderung
|
||||
dar. Die TAPO-Geräte boten keine dokumentierte Schnittstelle – nur die
|
||||
proprietäre App konnte sie steuern. Also griff ich zu Wireshark und
|
||||
analysierte den Netzwerkverkehr zwischen App und Steckdosen. Was ich
|
||||
fand, war ernüchternd: verschlüsselte Kommunikation mit sich ständig
|
||||
ändernden Session-Keys.
|
||||
Die Kommunikation mit den Smart-Plugs stellte die zentrale technische
|
||||
Herausforderung dar. Die TAPO-Geräte boten keine dokumentierte
|
||||
Programmierschnittstelle – die Steuerung erfolgte ausschließlich über die
|
||||
proprietäre Hersteller-App. Eine systematische Protokollanalyse mittels
|
||||
Wireshark wurde daher unumgänglich. Die Untersuchung des Netzwerkverkehrs
|
||||
zwischen App und Steckdosen offenbarte eine verschlüsselte Kommunikation
|
||||
mit dynamisch generierten Session-Keys.
|
||||
|
||||
Mein erster Versuch mit einem vielversprechenden Python-Modul schlug
|
||||
fehl – es funktionierte einfach nicht mit meinen Geräten. Der
|
||||
Wireshark-Mitschnitt offenbarte immer dieselben verschlüsselten
|
||||
Responses. Ohne Erfolg beim Simulieren einzelner Anfragen dämmerte
|
||||
es mir: Die Anfragensequenz musste stimmen! Die Verbindung nutzte
|
||||
temporäre Cookies und proprietäre Verschlüsselung.
|
||||
Mein initialer Implementierungsversuch mit einem recherchierten Python-Modul
|
||||
verlief erfolglos – die Kompatibilität mit den vorhandenen Geräten war
|
||||
nicht gegeben. Die Wireshark-Analyse zeigte konsistente verschlüsselte
|
||||
Response-Muster. Nach mehreren erfolglosen Versuchen, einzelne Anfragen
|
||||
zu replizieren, wurde deutlich: Die korrekte Sequenzierung der
|
||||
Kommunikation war essentiell. Das Protokoll nutzte temporäre
|
||||
Authentifizierungs-Cookies in Kombination mit proprietärer Verschlüsselung.
|
||||
|
||||
Nach tagelangen Experimenten stieß ich auf PyP100 – ein alternatives
|
||||
Python-Modul, versteckt in den Tiefen von GitHub. Dieses Modul löste
|
||||
die Session-Key-Problematik elegant und ermöglichte endlich eine
|
||||
stabile Integration.
|
||||
Nach intensiver Recherche und mehreren Tagen systematischer Tests konnte
|
||||
PyP100 als geeignete Lösung identifiziert werden. Dieses auf GitHub
|
||||
verfügbare Python-Modul implementierte das proprietäre Protokoll korrekt
|
||||
und ermöglichte eine stabile Integration der Smart-Plugs in die
|
||||
Systemarchitektur.
|
||||
|
||||
## 2.6 Planung der Prozess-/ und Systemschnittstellen
|
||||
|
||||
@ -554,23 +560,25 @@ Die Schnittstellenplanung erforderte eine sorgfältige Balance zwischen
|
||||
Funktionalität und Sicherheit. Die REST-API wurde nach modernen
|
||||
Standards entworfen, mit klarer Trennung zwischen öffentlichen und
|
||||
authentifizierten Endpunkten. Über 100 Endpunkte wurden spezifiziert –
|
||||
eine Zahl, die zunächst übertrieben erschien, sich aber als notwendig
|
||||
erwies; jeder Endpunkt ein kleines Kunstwerk der Funktionalität.
|
||||
eine Anzahl, die zunächst umfangreich erschien, sich jedoch als
|
||||
notwendig für die vollständige Funktionsabdeckung erwies. Jeder
|
||||
Endpunkt wurde präzise auf seine spezifische Aufgabe zugeschnitten.
|
||||
|
||||
Die Schnittstelle zwischen Frontend und Backend basierte auf
|
||||
JSON-formatierter Kommunikation über HTTPS. Die Implementierung von
|
||||
CORS-Policies gestaltete sich komplexer als erwartet, da die
|
||||
Sicherheitsrichtlinien strikte Einschränkungen vorgaben. Die Lösung –
|
||||
eine Whitelist-basierte CORS-Konfiguration – erfüllte die
|
||||
Sicherheitsanforderungen ohne die Funktionalität einzuschränken; ein
|
||||
Drahtseilakt zwischen Sicherheit und Usability.
|
||||
Sicherheitsanforderungen ohne die Funktionalität einzuschränken. Diese
|
||||
Implementation stellte einen ausgewogenen Kompromiss zwischen
|
||||
Sicherheit und Anwenderfreundlichkeit dar.
|
||||
|
||||
Besondere Aufmerksamkeit erforderte die Scheduler-Schnittstelle. Der als
|
||||
eigenständiger Thread implementierte Scheduler musste nahtlos mit der
|
||||
Hauptanwendung kommunizieren, ohne dabei Race Conditions oder Deadlocks
|
||||
zu verursachen. Die Verwendung von Thread-sicheren Queues und explizitem
|
||||
Locking löste diese Herausforderung – eine Lösung, die in ihrer
|
||||
Eleganz bestach.
|
||||
Locking löste diese Herausforderung mit einer technisch eleganten
|
||||
Architektur.
|
||||
|
||||
## 2.7 Planung der IT-Sicherheitsmaßnahmen
|
||||
|
||||
@ -609,23 +617,26 @@ iterativen, problemgetriebenen Herangehensweise.
|
||||
### 3.1.1 Datenabfrage der Sensoren
|
||||
|
||||
Die "Sensoren" in diesem Kontext waren die Smart-Plugs – eine
|
||||
euphemistische Bezeichnung für Geräte, die sich als erstaunlich
|
||||
widerspenstig erwiesen. Meine erste Hoffnung, ein bestehendes
|
||||
Python-Modul zur Steuerung zu finden, zerschlug sich schnell.
|
||||
Das gefundene Modul funktionierte schlicht nicht.
|
||||
euphemistische Bezeichnung für Geräte, die sich als technisch
|
||||
anspruchsvoll in der Integration erwiesen. Meine initiale Recherche nach
|
||||
einem geeigneten Python-Modul zur Steuerung verlief erfolglos. Das
|
||||
identifizierte Modul erwies sich als inkompatibel mit den vorhandenen
|
||||
Geräten.
|
||||
|
||||
Also Plan B: Wireshark. Ich schnitt den Netzwerkverkehr zwischen
|
||||
TAPO-App und Smart-Plugs mit. Die Analyse offenbarte das komplexe
|
||||
Authentifizierungsprotokoll der TAPO-Geräte – verschlüsselte
|
||||
Kommunikation mit Session-Tokens, die sich bei jeder Anmeldung
|
||||
änderten. Die Verschlüsselung basierte auf einer Kombination aus
|
||||
RSA und AES. Respektabel für Consumer-Hardware, aber auch verdammt
|
||||
nervig für meine Zwecke.
|
||||
Daraufhin erfolgte eine Protokollanalyse mittels Wireshark. Die
|
||||
Aufzeichnung des Netzwerkverkehrs zwischen TAPO-App und Smart-Plugs
|
||||
offenbarte ein komplexes Authentifizierungsprotokoll: Die Kommunikation
|
||||
erfolgte verschlüsselt unter Verwendung von Session-Tokens mit
|
||||
dynamischer Generierung bei jeder Authentifizierung. Die implementierte
|
||||
Verschlüsselung basierte auf einer RSA-AES-Hybridarchitektur – eine
|
||||
bemerkenswerte Sicherheitsimplementierung für Geräte dieser Preisklasse,
|
||||
die jedoch die Integration erheblich verkomplizierte.
|
||||
|
||||
Nach tagelangen Experimenten stieß ich endlich auf PyP100 – ein
|
||||
Python-Modul, das die lokale Kommunikation mit den TAPO-Geräten
|
||||
tatsächlich beherrschte. Versteckt in den Tiefen von GitHub, löste
|
||||
es die Session-Key-Problematik elegant. Endlich.
|
||||
Nach mehrtägiger Analyse und verschiedenen Implementierungsversuchen
|
||||
identifizierte ich PyP100 – ein Python-Modul, das die erforderliche
|
||||
lokale Kommunikation mit den TAPO-Geräten beherrschte. Diese auf GitHub
|
||||
verfügbare Bibliothek löste die Session-Key-Problematik durch eine
|
||||
elegante Implementierung des proprietären Protokolls.
|
||||
|
||||
Die Implementierung der Datenabfrage erfolgte über eine
|
||||
selbstentwickelte Wrapper-Klasse, die die Komplexität der Kommunikation
|
||||
@ -653,8 +664,10 @@ bei Fehlern.
|
||||
Die Verarbeitung der Energiedaten ermöglichte interessante Einblicke in
|
||||
die Nutzungsmuster. Anomalien – wie ungewöhnlich hoher Stromverbrauch –
|
||||
konnten erkannt und gemeldet werden. Diese Funktion, ursprünglich nicht
|
||||
geplant, erwies sich als wertvolles Feature für die präventive Wartung;
|
||||
ein glücklicher Zufall, der zur Kernfunktionalität wurde.
|
||||
in der Projektspezifikation vorgesehen, entwickelte sich zu einem
|
||||
wertvollen Feature für die präventive Wartung. Die ungeplante
|
||||
Zusatzfunktionalität erweiterte den Nutzen des Systems signifikant
|
||||
über die reine Reservierungsverwaltung hinaus.
|
||||
|
||||
## 3.2 Abweichung, Anpassung und Entscheidungen
|
||||
|
||||
@ -773,8 +786,10 @@ geprüft.
|
||||
Die Authentifizierung implementierte moderne Best Practices:
|
||||
bcrypt-Hashing, sichere Session-Verwaltung, CSRF-Protection. Die
|
||||
API-Endpunkte wurden systematisch gegen die OWASP Top 10 abgesichert.
|
||||
Input-Validation erfolgte auf mehreren Ebenen – Client-seitig für UX,
|
||||
Server-seitig für Sicherheit; Vertrauen ist gut, Kontrolle ist besser.
|
||||
Input-Validation erfolgte auf mehreren Ebenen – Client-seitig für die
|
||||
Benutzerfreundlichkeit, Server-seitig für die Sicherheit. Diese
|
||||
mehrschichtige Validierung gewährleistete sowohl eine positive
|
||||
Nutzererfahrung als auch robuste Sicherheit.
|
||||
|
||||
Die Implementierung eines Rate-Limiters erschwerte
|
||||
Brute-Force-Angriffe. Nach fünf fehlgeschlagenen Login-Versuchen wurde
|
||||
|
@ -30,3 +30,43 @@ DNS-Test Details: Teste DNS für 8.8.8.8: Erfolg mit nslookup.
|
||||
Externe IP ermittelt über ifconfig.me: 163.116.179.142
|
||||
---
|
||||
|
||||
[2025-06-03 21:34:22] DEBUG von setup.sh:1168
|
||||
sysctl-Konfiguration erstellt: /etc/sysctl.d/99-myp-security.conf
|
||||
---
|
||||
|
||||
[2025-06-03 21:34:22] DEBUG von setup.sh:1224
|
||||
Sysctl-Phase abgeschlossen - fahre mit Installation fort
|
||||
---
|
||||
|
||||
[2025-06-03 21:34:22] DEBUG von setup.sh:1250
|
||||
systemd-networkd nicht aktiv - überspringe
|
||||
---
|
||||
|
||||
[2025-06-03 21:34:23] DEBUG von setup.sh:1276
|
||||
NetworkManager nicht aktiv - überspringe
|
||||
---
|
||||
|
||||
[2025-06-03 21:34:23] DEBUG von setup.sh:1282
|
||||
IPv6 Einträge in /etc/hosts auskommentiert
|
||||
---
|
||||
|
||||
[2025-06-03 21:34:23] DEBUG von setup.sh:1299
|
||||
Netzwerk-Sicherheit ohne Blockierung abgeschlossen
|
||||
---
|
||||
|
||||
[2025-06-03 21:36:04] DEBUG von setup.sh:1605
|
||||
SSL-Verzeichnis erstellt: /usr/local/share/ca-certificates/myp
|
||||
---
|
||||
|
||||
[2025-06-03 21:36:06] DEBUG von setup.sh:1713
|
||||
SSL-Konfiguration abgeschlossen ohne hängende Prozesse
|
||||
---
|
||||
|
||||
[2025-06-03 21:36:07] DEBUG von setup.sh:998
|
||||
flask erfolgreich importiert
|
||||
---
|
||||
|
||||
[2025-06-03 21:36:08] DEBUG von setup.sh:998
|
||||
requests erfolgreich importiert
|
||||
---
|
||||
|
||||
|
@ -42,3 +42,154 @@ System: Linux raspberrypi 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1
|
||||
[0;34m[DEBUG] Externe IP ermittelt über ifconfig.me: 163.116.179.142[0m
|
||||
[0;32m[2025-06-03 21:34:04] === KONFIGURIERE HOSTNAME ===[0m
|
||||
[0;32m[2025-06-03 21:34:04] ✅ Hostname bereits korrekt: 'raspberrypi'[0m
|
||||
[0;32m[2025-06-03 21:34:14] ✅ Hostname-Auflösung funktioniert: raspberrypi -> 127.0.1.1[0m
|
||||
[0;32m[2025-06-03 21:34:14] === ROBUSTE SYSTEM-UPDATE ===[0m
|
||||
[0;35m[FORTSCHRITT] Konfiguriere APT für bessere Zuverlässigkeit...[0m
|
||||
[0;35m[FORTSCHRITT] Validiere APT-Repositories...[0m
|
||||
[0;32m[2025-06-03 21:34:14] ✅ Source-Repositories deaktiviert (nicht benötigt)[0m
|
||||
[0;35m[FORTSCHRITT] Aktualisiere Paketlisten mit Retry...[0m
|
||||
[0;35m[FORTSCHRITT] Führe System-Upgrade durch...[0m
|
||||
[0;35m[FORTSCHRITT] Installiere essenzielle System-Tools...[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: ca-certificates[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: gnupg[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: curl[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: wget[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: git[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: nano[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: htop[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: rsync[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: unzip[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: sudo[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: systemd[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: lsb-release[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: apt-transport-https[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: software-properties-common[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: bc[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: dbus[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: systemd-timesyncd[0m
|
||||
[0;35m[FORTSCHRITT] Synchronisiere Systemzeit...[0m
|
||||
[0;32m[2025-06-03 21:34:22] ✅ Robustes System-Update abgeschlossen[0m
|
||||
[0;32m[2025-06-03 21:34:22] === KONFIGURIERE OPTIONALE NETZWERK-SICHERHEIT ===[0m
|
||||
[0;35m[FORTSCHRITT] Deaktiviere IPv6 (robust)...[0m
|
||||
[0;35m[FORTSCHRITT] Deaktiviere IPv6 in GRUB...[0m
|
||||
[0;34m[INFO] IPv6 bereits in GRUB deaktiviert[0m
|
||||
[0;35m[FORTSCHRITT] Erstelle robuste sysctl-Konfiguration...[0m
|
||||
[0;36m[ERFOLG] ✅ Basis-sysctl-Konfiguration erstellt[0m
|
||||
[0;34m[DEBUG] sysctl-Konfiguration erstellt: /etc/sysctl.d/99-myp-security.conf[0m
|
||||
[0;35m[FORTSCHRITT] OPTIONAL: Versuche sysctl-Einstellungen anzuwenden...[0m
|
||||
[0;36m[ERFOLG] ✅ MYP sysctl-Einstellungen angewendet[0m
|
||||
[0;34m[DEBUG] Sysctl-Phase abgeschlossen - fahre mit Installation fort[0m
|
||||
[0;35m[FORTSCHRITT] Deaktiviere IPv6 in Netzwerk-Interfaces (vorsichtig)...[0m
|
||||
[0;34m[DEBUG] systemd-networkd nicht aktiv - überspringe[0m
|
||||
[0;34m[DEBUG] NetworkManager nicht aktiv - überspringe[0m
|
||||
[0;34m[DEBUG] IPv6 Einträge in /etc/hosts auskommentiert[0m
|
||||
[0;32m[2025-06-03 21:34:23] ✅ Optionale Netzwerk-Sicherheit konfiguriert:[0m
|
||||
[0;32m[2025-06-03 21:34:23] 📝 Sysctl-Konfiguration erstellt: /etc/sysctl.d/99-myp-security.conf[0m
|
||||
[0;32m[2025-06-03 21:34:23] ⚙️ Einstellungen werden beim nächsten Boot aktiv[0m
|
||||
[0;32m[2025-06-03 21:34:23] 🔧 Netzwerk-Konfiguration vorbereitet[0m
|
||||
[0;34m[INFO] 💡 Tipp: Netzwerk-Sicherheit kann manuell aktiviert werden:[0m
|
||||
[0;34m[INFO] → sudo sysctl -p /etc/sysctl.d/99-myp-security.conf[0m
|
||||
[0;34m[INFO] → Oder automatisch beim nächsten Neustart[0m
|
||||
[0;34m[DEBUG] Netzwerk-Sicherheit ohne Blockierung abgeschlossen[0m
|
||||
[0;32m[2025-06-03 21:34:23] === ROBUSTE PYTHON-INSTALLATION ===[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Python 3 und Build-Abhängigkeiten...[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: python3[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: python3-pip[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: python3-dev[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: python3-setuptools[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: python3-venv[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: python3-wheel[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: build-essential[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: libssl-dev[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: libffi-dev[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: libbz2-dev[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: libreadline-dev[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: libsqlite3-dev[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: libncurses5-dev[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: libncursesw5-dev[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: zlib1g-dev[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: sqlite3[0m
|
||||
[0;35m[FORTSCHRITT] Validiere Python-Installation...[0m
|
||||
[0;32m[2025-06-03 21:34:28] ✅ Python Version: 3.11.2[0m
|
||||
[0;35m[FORTSCHRITT] Konfiguriere pip für bessere Zuverlässigkeit...[0m
|
||||
[0;35m[FORTSCHRITT] Erstelle systemweite pip-Konfiguration...[0m
|
||||
[0;35m[FORTSCHRITT] Konfiguriere pip für alle Benutzer...[0m
|
||||
[0;32m[2025-06-03 21:34:28] ✅ pip konfiguriert für Benutzer: user[0m
|
||||
[0;35m[FORTSCHRITT] Aktualisiere pip mit Retry...[0m
|
||||
[0;32m[2025-06-03 21:34:29] ✅ pip Version: 25.1.1[0m
|
||||
[0;32m[2025-06-03 21:34:29] ✅ Robuste Python-Umgebung installiert[0m
|
||||
[0;32m[2025-06-03 21:34:29] === ROBUSTE NODE.JS UND NPM INSTALLATION ===[0m
|
||||
[0;35m[FORTSCHRITT] Bereinige alte Node.js-Installationen...[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Node.js mit Fallback-Strategie...[0m
|
||||
[0;35m[FORTSCHRITT] Verwende Debian Repository als Fallback...[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: nodejs npm[0m
|
||||
[0;32m[2025-06-03 21:36:00] ✅ Node.js via Debian Repository installiert[0m
|
||||
[0;35m[FORTSCHRITT] Validiere Node.js Installation...[0m
|
||||
[0;32m[2025-06-03 21:36:00] ✅ Node.js Version: v18.19.0[0m
|
||||
[0;32m[2025-06-03 21:36:01] ✅ npm Version: 9.2.0[0m
|
||||
[0;35m[FORTSCHRITT] Optimiere npm-Konfiguration...[0m
|
||||
[0;32m[2025-06-03 21:36:02] ✅ Node.js und npm erfolgreich installiert[0m
|
||||
[0;32m[2025-06-03 21:36:02] === TIMEOUT-GESICHERTE SSL-ZERTIFIKATE KONFIGURATION ===[0m
|
||||
[0;35m[FORTSCHRITT] Installiere SSL-Grundkomponenten...[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Pakete: ca-certificates openssl[0m
|
||||
[0;35m[FORTSCHRITT] Aktualisiere CA-Zertifikate (timeout-gesichert)...[0m
|
||||
[0;36m[ERFOLG] ✅ CA-Zertifikate erfolgreich aktualisiert[0m
|
||||
[0;34m[DEBUG] SSL-Verzeichnis erstellt: /usr/local/share/ca-certificates/myp[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Mercedes Corporate Zertifikate (timeout-gesichert)...[0m
|
||||
[0;35m[FORTSCHRITT] Lade CA-Zertifikate nach Mercedes-Import neu (timeout-gesichert)...[0m
|
||||
[0;36m[ERFOLG] ✅ Mercedes-Zertifikate erfolgreich in CA-Store integriert[0m
|
||||
[0;35m[FORTSCHRITT] Konfiguriere SSL-Umgebungsvariablen...[0m
|
||||
[0;35m[FORTSCHRITT] Validiere SSL-Konfiguration...[0m
|
||||
[0;32m[2025-06-03 21:36:06] ✅ SSL-Zertifikate verfügbar: 144 CA-Zertifikate[0m
|
||||
[0;35m[FORTSCHRITT] Finalisiere SSL-Konfiguration...[0m
|
||||
[0;32m[2025-06-03 21:36:06] ✅ SSL-Zertifikate timeout-gesichert konfiguriert[0m
|
||||
[0;34m[DEBUG] SSL-Konfiguration abgeschlossen ohne hängende Prozesse[0m
|
||||
[0;32m[2025-06-03 21:36:06] === PYTHON-PAKETE INSTALLATION ===[0m
|
||||
[0;35m[FORTSCHRITT] Installiere Python-Pakete...[0m
|
||||
[0;35m[FORTSCHRITT] Installiere requirements.txt...[0m
|
||||
[0;36m[ERFOLG] ✅ requirements.txt erfolgreich installiert[0m
|
||||
[0;35m[FORTSCHRITT] Validiere essenzielle Python-Module...[0m
|
||||
[0;34m[DEBUG] flask erfolgreich importiert[0m
|
||||
[0;34m[DEBUG] requests erfolgreich importiert[0m
|
||||
[0;36m[ERFOLG] ✅ Essenzielle Python-Module verfügbar[0m
|
||||
[0;32m[2025-06-03 21:36:08] ✅ Python-Pakete Installation abgeschlossen[0m
|
||||
[0;35m[FORTSCHRITT] Zeige installierte Python-Pakete...[0m
|
||||
[0;32m[2025-06-03 21:36:08] === ROBUSTES ANWENDUNGS-DEPLOYMENT ===[0m
|
||||
[0;35m[FORTSCHRITT] Erstelle sicheres Zielverzeichnis: /opt/myp[0m
|
||||
[0;35m[FORTSCHRITT] Validiere Source-Dateien...[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere Anwendungsdateien (robust)...[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere kritische Datei: app.py[0m
|
||||
[0;36m[ERFOLG] ✅ app.py erfolgreich kopiert[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere kritische Datei: models.py[0m
|
||||
[0;36m[ERFOLG] ✅ models.py erfolgreich kopiert[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere kritische Datei: requirements.txt[0m
|
||||
[0;36m[ERFOLG] ✅ requirements.txt erfolgreich kopiert[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere Verzeichnis: blueprints[0m
|
||||
[0;36m[ERFOLG] ✅ blueprints erfolgreich kopiert[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere Verzeichnis: config[0m
|
||||
[0;36m[ERFOLG] ✅ config erfolgreich kopiert[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere Verzeichnis: database[0m
|
||||
[0;36m[ERFOLG] ✅ database erfolgreich kopiert[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere Verzeichnis: static[0m
|
||||
[0;36m[ERFOLG] ✅ static erfolgreich kopiert[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere Verzeichnis: templates[0m
|
||||
[0;36m[ERFOLG] ✅ templates erfolgreich kopiert[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere Verzeichnis: uploads[0m
|
||||
[0;36m[ERFOLG] ✅ uploads erfolgreich kopiert[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere Verzeichnis: utils[0m
|
||||
[0;36m[ERFOLG] ✅ utils erfolgreich kopiert[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere Verzeichnis: logs[0m
|
||||
[0;36m[ERFOLG] ✅ logs erfolgreich kopiert[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere Verzeichnis: certs[0m
|
||||
[0;36m[ERFOLG] ✅ certs erfolgreich kopiert[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere optionale Datei: package.json[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere optionale Datei: package-lock.json[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere optionale Datei: tailwind.config.js[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere optionale Datei: postcss.config.js[0m
|
||||
[0;35m[FORTSCHRITT] Kopiere optionale Datei: README.md[0m
|
||||
[0;35m[FORTSCHRITT] Erstelle Verzeichnisstruktur...[0m
|
||||
[0;35m[FORTSCHRITT] Setze sichere Berechtigungen...[0m
|
||||
[0;35m[FORTSCHRITT] Konfiguriere robuste Python-Umgebung...[0m
|
||||
[0;32m[2025-06-03 21:36:18] ✅ Python-Pfad konfiguriert: /usr/local/lib/python3.11/dist-packages/myp-app.pth[0m
|
||||
[0;35m[FORTSCHRITT] Konfiguriere Umgebungsvariablen...[0m
|
||||
[0;35m[FORTSCHRITT] Aktualisiere Bash-Profile...[0m
|
||||
|
Loading…
x
Reference in New Issue
Block a user