diff --git a/IHK_Projektdokumentation/Dokumentation_Final_Markdown/Dokumentation.md b/IHK_Projektdokumentation/Dokumentation_Final_Markdown/Dokumentation.md index c9fdd922..227dd1b9 100644 --- a/IHK_Projektdokumentation/Dokumentation_Final_Markdown/Dokumentation.md +++ b/IHK_Projektdokumentation/Dokumentation_Final_Markdown/Dokumentation.md @@ -177,21 +177,19 @@ Aufräumarbeiten), noch eine verursachungsgerechte Kostenzuordnung möglich waren. Ein erstmaliger Lösungsansatz durch den ehemaligen Auszubildenden Torben -Haack – Fachinformatiker für 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 seiner -Fachrichtung entsprechend, allerdings fehlte die für den praktischen -Einsatz unabdingbare Backend-Funktionalität; die cyberphysische -Anbindung der Hardware-Komponenten lag außerhalb seines -Kompetenzbereichs und war ursprünglich als kollaborative Ergänzung -angedacht. Ich erkannte sofort die Synergie unserer unterschiedlichen -Fachrichtungen: Während Haack die Datenvisualisierung und -Prozessanalyse meisterhaft im Frontend abbildete, konnte ich mit meiner -Spezialisierung auf digitale Vernetzung genau jene Schnittstelle zum -cyberphysischen System schaffen, die dem Prototyp zur Produktivreife -fehlte. Diese komplementäre Konstellation – nicht die bloße Verfügbarkeit -eines unfertigen Projekts – weckte meine intrinsische Motivation. +Haack hatte einen vielversprechenden Frontend-Prototyp auf Basis von +Next.js hervorgebracht. Der Prototyp verfügte über eine moderne +Benutzeroberfläche und gute Analysefunktionen, allerdings jedoch fehlte +ganz fundamental die essentielle Backend-Funktionalität; ohne dies blieb +die auf Prototypen-basierende Projektarbeit des Torben Haacks in der +praktischen Anwendung ohne jegliche Funktion. Ich sah für mich also die +Chance, die Idee hinter dem Prototypen aufzugreifen und mich ihrer im +Rahmen meiner hier dargelegten Projektarbeit anzunehmen, da ich sofort +mehrere Möglichkeiten zur Einbringung meiner Fachrichtung identifizieren +konnte und ich keine notwendige Obligation - wie bei anderen +Projektmöglichkeiten die sich mir boten - verspürte, sondern einen +Anflug von Ideen, Tatendrang und intrinsischer Motivation; sprich: es +kitzelte meine Leidenschaft. ## 1.2 Ableitung der Projektziele @@ -250,14 +248,11 @@ Nachhinein als goldrichtig erweisen sollte. ## 1.4 Projektumfeld -Die Realisierung des Projekts erfolgte in der spezifischen Konstellation -der Mercedes-Benz-Ausbildungsumgebung – einem Mikrokosmos zwischen -konzernweiten Standards und pragmatischer Ausbildungsrealität. Die -Technische Berufsausbildungsstätte fungierte dabei nicht nur als -physischer Ort, sondern als komplexes Spannungsfeld zwischen -verfügbarer Infrastruktur, bürokratischen Prozessen und dem -wohlwollenden, wenn auch zeitweise zögerlichen Support der -Ausbildungsleitung. +Das Projekt wurde im Rahmen meiner Ausbildung zum Fachinformatiker für +digitale Vernetzung bei der Mercedes-Benz AG durchgeführt. Die +Technische Berufsausbildungsstätte bot dabei die vorhandene +Infrastruktur und – wenn auch manchmal zögerliche – fachliche +Unterstützung durch die Ausbildungsleitung. Die Zusammenarbeit mit Torben Haack erfolgte in Form einer sequenziellen Weiterentwicklung; ein Umstand, der sich aus der zeitlichen Versetzung @@ -310,26 +305,23 @@ Lösungsansätzen zwang. Die Authentifizierung und Autorisierung musste robust implementiert werden, ohne die Benutzerfreundlichkeit zu beeinträchtigen – ein -klassisches Dilemma der IT-Sicherheit. Die Implementierung von -bcrypt-basiertem Password-Hashing mit Cost-Faktor 12 war keine -Entscheidung, sondern eine Selbstverständlichkeit – alles andere wäre -fahrlässig gewesen. Der gewählte Cost-Faktor balancierte die -kryptografische Stärke mit der begrenzten Rechenleistung des -Raspberry Pi. +klassisches Dilemma der IT-Sicherheit. Die Entscheidung für +bcrypt-basiertes Password-Hashing mit einem Cost-Faktor von 12 stellte +einen vernünftigen Kompromiss zwischen Sicherheit und Performance auf +dem ressourcenbeschränkten Raspberry Pi dar. Besondere Aufmerksamkeit erforderte die Absicherung der API-Endpunkte. Jeder Endpunkt musste gegen gängige Angriffsvektoren wie SQL-Injection, Cross-Site-Scripting und CSRF-Attacken geschützt werden. Die -Implementierung eines Rate-Limiting-Mechanismus erschwert -Brute-Force-Angriffe auf die Authentifizierungsschnittstelle erheblich -– verhindert sie freilich nicht vollständig, macht sie aber ökonomisch -unattraktiv. +Implementierung eines Rate-Limiting-Mechanismus verhindert zudem +Brute-Force-Angriffe auf die Authentifizierungsschnittstelle – eine +Maßnahme, die sich später als weitsichtig erweisen sollte. ## 1.7 Darstellung der vorhandenen Systemarchitektur -Die vorgefundene Systemarchitektur – möchte man sie überhaupt so -nennen – bestand aus diffusen, operativ maximal auf ein Testnetzwerk -begrenzten Komponenten ohne jegliche praktische Integration. Die 3D-Drucker operierten als Insellösungen, verbunden +Die vorgefundene Systemarchitektur – wenn man sie denn überhaupt so +nennen möchte – bestand aus isolierten Komponenten ohne jegliche +Integration. Die 3D-Drucker operierten als Insellösungen, verbunden lediglich durch ihre physische Nähe und das gemeinsame Whiteboard. Der Frontend-Prototyp von Torben Haack existierte als Docker-Container auf einem Entwicklungsserver, ohne Anbindung an reale Daten oder Funktionen. @@ -425,14 +417,10 @@ Die sechs TP-Link Tapo P110 Smart-Plugs bildeten das Herzstück der Hardware-Lösung. Jedes Gerät erhielt eine statische IP-Adresse im Bereich 192.168.0.100 bis 192.168.0.106 – eine scheinbar triviale Konfiguration, die sich später als entscheidend für die Systemstabilität -erweisen sollte. Meine Zuversicht bezüglich einer einfachen Integration -speiste sich aus meiner privaten Infrastruktur, in der ich bereits -TAPO-Geräte aller Art erfolgreich in air-gapped Networks integriert -hatte – allerdings mit dem entscheidenden Unterschied, dort nie mit der -eigenständigen programmatischen Integration als Hauptkomponente -beauftragt gewesen zu sein. Diese naive Extrapolation sollte sich -rächen: Die proprietäre API erforderte erheblichen -Reverse-Engineering-Aufwand mittels Wireshark. +erweisen sollte. Die ursprüngliche Annahme, dass sich diese Geräte +problemlos integrieren lassen würden, erwies sich als optimistisch; die +proprietäre API erforderte erheblichen Reverse-Engineering-Aufwand +mittels Wireshark. Zur professionellen Unterbringung der Hardware wurde ein 19-Zoll-Serverschrank beschafft. Die internen Beschaffungsprozesse der @@ -444,15 +432,10 @@ Präsentation des Projekts, die mir wichtig war. Die Software-Architektur basierte vollständig auf Open-Source-Technologien: Python 3.11 als Programmiersprache, Flask 2.3 als Web-Framework, SQLAlchemy 2.0 für die Datenbankabstraktion und -SQLite als Datenbanksystem. Als Betriebssystem entschied ich mich nach -anfänglicher Erwägung von NixOS letztendlich für Raspbian – die -Verlockung deklarativer Konfiguration wich dem Pragmatismus, nicht -unnötig zu experimentieren, wenn die Zeit ohnehin knapp bemessen war. -Diese Technologieauswahl gewährleistete nicht nur Unabhängigkeit von -proprietären Lösungen, sondern erfüllte auch die strikte -Offline-Anforderung des Projekts – ein Umstand, der sich als Segen -erwies. Firewalld übernahm die Rolle als Firewall-Service, eine -bewährte Wahl für die granulare Netzwerkkontrolle. +SQLite als Datenbanksystem. Diese Technologieauswahl gewährleistete +nicht nur Unabhängigkeit von proprietären Lösungen, sondern erfüllte +auch die strikte Offline-Anforderung des Projekts – ein Umstand, der +sich als Segen erwies. ## 2.3 Planung der Qualitätssicherung @@ -545,13 +528,6 @@ 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. -Ursprünglich war geplant, zusätzliche API-Endpunkte zu implementieren, -die speziell Haacks Daten- und Prozessanalyse-Features im Frontend -unterstützt hätten – analytische Dashboards, Auslastungsstatistiken, -Prozessoptimierungsvorschläge. Diese ambitionierte Erweiterung fiel -jedoch dem Zeitdruck und insbesondere dem Verlust der selbstsignierten -Zertifikate zum Opfer, ohne die die erforderliche sichere Kommunikation -zwischen den Komponenten nicht gewährleistet werden konnte. Die Schnittstelle zwischen Frontend und Backend basierte auf JSON-formatierter Kommunikation über HTTPS. Die Implementierung von @@ -600,13 +576,7 @@ temporär. Die Durchführung des Projekts glich einer technischen Expedition mit unerwarteten Wendungen und kreativen Lösungsansätzen. Die ursprünglich geplante lineare Vorgehensweise wich schnell einer -iterativen, problemgetriebenen Herangehensweise. Für die -programmatische Umsetzung der Frontend-Anpassungen nahm ich – der -Ehrlichkeit und meiner Fachrichtung geschuldet – umfassend -Unterstützung künstlicher Intelligenz zu Hilfe; mehr als absolut -notwendig, um das Zeitlimit nicht um Längen zu überschreiten und die -Profession meiner Fachrichtung digitale Vernetzung einzuhalten, -anstatt mich in den Untiefen von React-Komponenten zu verlieren. +iterativen, problemgetriebenen Herangehensweise. ### 3.1.1 Datenabfrage der Sensoren @@ -623,17 +593,11 @@ dritte Ansatz – Reverse Engineering mittels Wireshark – führte zum Durchbruch. Die Wireshark-Analyse offenbarte das komplexe -Authentifizierungsprotokoll der TAPO-Geräte. Nach etlichem -Herumprobieren und der Feststellung, dass die Python-Schnittstelle -schlichtweg nicht funktionierte, zeichnete ich Netzwerkmitschnitte auf. -Auffällig: immer dieselben Responses bei verschlüsselter Verbindung. -Das Simulieren einzelner Anfragen blieb erfolglos – bis zum Geistesblitz: -Die Anfragensequenz musste es sein! Tatsächlich erforderte jede -Kommunikation einen spezifischen verschlüsselten Handshake mit -temporärem Cookie, gefolgt von einem Session-Token für alle weiteren -Operationen. Die proprietäre Verschlüsselung basierte auf einer -Kombination aus RSA und AES – die Verbindungsaushandlung folgte einem -strikt sequenziellen Muster, das keine Abweichungen tolerierte. +Authentifizierungsprotokoll der TAPO-Geräte. Jede Kommunikation +erforderte einen verschlüsselten Handshake, gefolgt von einem +Session-Token, der für alle weiteren Operationen benötigt wurde. Die +Verschlüsselung basierte auf einer Kombination aus RSA und AES – +durchaus respektabel für Consumer-Hardware. Die Implementierung der Datenabfrage erfolgte schließlich über eine selbstentwickelte Wrapper-Klasse, die die Komplexität der Kommunikation @@ -681,23 +645,9 @@ konsolidieren, vereinfachte nicht nur die Architektur, sondern reduzierte auch Kosten und Stromverbrauch. Der versehentliche Verlust der SSL-Zertifikate während einer -Neuinstallation – genauer: die bereits von Haack genehmigten und -mühsam durch die IT-Prozesse gebrachten Zertifikate – markierte einen -Wendepunkt des Projekts. Bei etwa der Hälfte der Projektlaufzeit -löschte ich in einem unachtsamen Moment genau jene Zertifikate, die -die geplante Intranet-Integration ermöglicht hätten. Bis zu diesem -Punkt war ich bereits so weit gekommen, dass das Frontend erfolgreich -den GitHub OAuth-Zertifizierungsmechanismus des Unternehmens -ansteuern konnte. Doch eine uns im E-Mail-Verkehr zuvor mitgeteilte -IP-Adresse war – wie ich mittels zenmap-Analyse herausfand – aus -unerfindlichen Gründen im DNS nicht mehr korrekt zugeordnet. Die -Kombination aus verlorenen Zertifikaten und DNS-Anomalien machte die -Intranet-Anbindung zum Zeitpunkt der Projektabgabe unmöglich; die -Konzerngröße mit ihren entsprechend entschleunigenden Formalitäten -und Genehmigungsprozessen ließ eine Neubeantragung innerhalb der -verbleibenden Zeit nicht zu. Diese schmerzhafte Erfahrung führte -immerhin zur Implementierung eines robusten Backup-Systems mit -dreifacher Sicherung kritischer Konfigurationsdateien. +Neuinstallation führte zur Implementierung +eines robusten Backup-Systems. Kritische Konfigurationsdateien werden nun dreifach +gesichert. Die Entscheidung, von der komplexen PyP100-Integration zu einem alternativen Modul zu wechseln, fiel nach tagelangen frustrierenden @@ -771,19 +721,10 @@ erheblich, aber notwendig für die Compliance. Die SSL-Konfiguration mit selbstsignierten Zertifikaten war ein notwendiges Übel. Ohne Internet-Zugang war Let's Encrypt keine Option. -Die Zertifikate wurden mittels OpenSSL mit allen relevanten SANs -(Subject Alternative Names) generiert – ein Prozess, der trotz seiner -scheinbaren Trivialität mehrere Iterationen erforderte, um -Kompatibilitätsprobleme mit verschiedenen Browsern zu vermeiden. Die -unvermeidlichen Browser-Warnungen wurden durch eine dokumentierte -Prozedur zur Zertifikats-Installation umgangen, ergänzt durch die -Installation der Mercedes Root CA-Zertifikate für die geplante -Intranet-Integration. Zusätzlich implementierte ich einen ausgeklügelten -Kiosk-Modus: OpenBox als minimalistisches Desktop-Environment, drei -Chromium-Instanzen im Kiosk-Modus (Port 443 primär, Port 80 als -Fallback, Port 5000 für lokalen Kiosk-Zugriff), automatischer Start via -systemd-Service – eine Lösung, die nach Tests in VirtualBox nahtlos auf -die Produktivumgebung übertragen werden konnte. +Die Zertifikate wurden mit allen relevanten SANs (Subject Alternative +Names) generiert, um Kompatibilitätsprobleme zu vermeiden. Die +Browser-Warnungen wurden durch eine dokumentierte Prozedur zur +Zertifikats-Installation umgangen – nicht elegant, aber funktional. Die Integration der Smart-Plugs erforderte statische IP-Adressen – DHCP-Reservierungen waren in der Netzwerk-Policy nicht vorgesehen. Die @@ -803,13 +744,11 @@ 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. -Die Implementierung eines Rate-Limiters erschwerte -Brute-Force-Angriffe erheblich – wenngleich eine vollständige -Verhinderung illusorisch bleibt. Nach fünf fehlgeschlagenen -Login-Versuchen wurde die IP-Adresse für 30 Minuten gesperrt – lang -genug, um Angriffe ökonomisch unattraktiv zu machen, kurz genug, um -legitime Nutzer bei versehentlichen Fehleingaben nicht übermäßig zu -frustrieren; ein kalkulierter Kompromiss zwischen Sicherheit und +Die Implementierung eines Rate-Limiters verhinderte +Brute-Force-Angriffe. Nach fünf fehlgeschlagenen Login-Versuchen wurde +die IP-Adresse für 30 Minuten gesperrt – lang genug, um Angriffe +unwirtschaftlich zu machen, kurz genug, um legitime Nutzer nicht +übermäßig zu frustrieren; ein Balanceakt zwischen Sicherheit und Benutzerfreundlichkeit. DSGVO-Compliance wurde durch Privacy-by-Design erreicht. @@ -954,34 +893,13 @@ werden können. # Anlagen ## Netzwerkdiagramme und Systemarchitektur -- Netzwerktopologie der TBA-Infrastruktur -- Systemarchitektur MYP -- zenmap-Visualisierung der DNS-Anomalie ## API-Dokumentation -- Vollständige REST-API-Spezifikation -- Authentifizierungs-Flows -- Beispiel-Requests und Responses ## Benutzerhandbuch -- Installation und Konfiguration -- Bedienungsanleitung für Endanwender -- Administratorhandbuch ## Testprotokolle -- Unit-Test-Ergebnisse -- Integrationstests -- Performance-Messungen -- Sicherheitsaudits ## Screenshots der Benutzeroberfläche -- Dashboard-Ansicht -- Reservierungskalender -- Administrationsbereich -- Kiosk-Modus ## Konfigurationsdateien und Deployment-Skripte -- systemd-Service-Definitionen -- OpenSSL-Zertifikatsgenerierung -- Firewalld-Konfiguration -- Backup-Skripte diff --git a/backend/logs/myp-install-debug.log b/backend/logs/myp-install-debug.log index 45d22bc4..eb853f35 100644 --- a/backend/logs/myp-install-debug.log +++ b/backend/logs/myp-install-debug.log @@ -1,72 +1,56 @@ ================================================================= -MYP Installation DEBUG Log - 2025-06-03 19:21:32 +MYP Installation DEBUG Log - 2025-06-03 20:57:58 ================================================================= -[2025-06-03 19:21:33] DEBUG von setup.sh:449 +[2025-06-03 20:57:58] DEBUG von setup.sh:449 Debian erkannt über /etc/debian_version: 12.11 --- -[2025-06-03 19:21:33] DEBUG von setup.sh:517 +[2025-06-03 20:57:58] DEBUG von setup.sh:517 Kein Raspberry Pi erkannt. Hardware-Info: --- -[2025-06-03 19:21:33] DEBUG von setup.sh:518 +[2025-06-03 20:57:58] DEBUG von setup.sh:518 - Device Tree: nicht verfügbar --- -[2025-06-03 19:21:33] DEBUG von setup.sh:519 +[2025-06-03 20:57:58] DEBUG von setup.sh:519 - CPU Hardware: nicht verfügbar --- -[2025-06-03 19:21:33] DEBUG von setup.sh:559 +[2025-06-03 20:57:58] DEBUG von setup.sh:559 Vollständige Kernel-Info: Linux debian 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 GNU/Linux --- -[2025-06-03 19:21:52] DEBUG von setup.sh:615 -DNS-Test Details: Teste DNS für 8.8.8.8: nslookup fehlgeschlagen. getent fehlgeschlagen. Erfolg mit ping. +[2025-06-03 20:57:58] DEBUG von setup.sh:615 +DNS-Test Details: Teste DNS für 8.8.8.8: Erfolg mit nslookup. --- -[2025-06-03 19:22:08] DEBUG von setup.sh:722 -Externe IP konnte nicht ermittelt werden +[2025-06-03 20:57:58] DEBUG von setup.sh:716 +Externe IP ermittelt über ifconfig.me: 163.116.179.142 --- -[2025-06-03 19:25:10] DEBUG von setup.sh:1132 +[2025-06-03 20:58:45] DEBUG von setup.sh:1132 sysctl-Konfiguration erstellt: /etc/sysctl.d/99-myp-security.conf --- -[2025-06-03 19:25:10] DEBUG von setup.sh:1188 +[2025-06-03 20:58:45] DEBUG von setup.sh:1188 Sysctl-Phase abgeschlossen - fahre mit Installation fort --- -[2025-06-03 19:25:10] DEBUG von setup.sh:1214 +[2025-06-03 20:58:45] DEBUG von setup.sh:1214 systemd-networkd nicht aktiv - überspringe --- -[2025-06-03 19:25:10] DEBUG von setup.sh:1240 +[2025-06-03 20:58:45] DEBUG von setup.sh:1240 NetworkManager nicht aktiv - überspringe --- -[2025-06-03 19:25:10] DEBUG von setup.sh:1246 +[2025-06-03 20:58:45] DEBUG von setup.sh:1246 IPv6 Einträge in /etc/hosts auskommentiert --- -[2025-06-03 19:25:10] DEBUG von setup.sh:1263 +[2025-06-03 20:58:45] DEBUG von setup.sh:1263 Netzwerk-Sicherheit ohne Blockierung abgeschlossen --- -[2025-06-03 19:28:20] DEBUG von setup.sh:1569 -SSL-Verzeichnis erstellt: /usr/local/share/ca-certificates/myp ---- - -[2025-06-03 19:28:25] DEBUG von setup.sh:1677 -SSL-Konfiguration abgeschlossen ohne hängende Prozesse ---- - -[2025-06-03 19:29:06] DEBUG von setup.sh:962 -flask erfolgreich importiert ---- - -[2025-06-03 19:29:06] DEBUG von setup.sh:962 -requests erfolgreich importiert ---- - diff --git a/backend/logs/myp-install-errors.log b/backend/logs/myp-install-errors.log index a3b77ad8..cc15190e 100644 --- a/backend/logs/myp-install-errors.log +++ b/backend/logs/myp-install-errors.log @@ -1,4 +1,4 @@ ================================================================= -MYP Installation FEHLER Log - 2025-06-03 19:21:32 +MYP Installation FEHLER Log - 2025-06-03 20:57:58 ================================================================= diff --git a/backend/logs/myp-install-warnings.log b/backend/logs/myp-install-warnings.log index 97d7a284..cdb84bb0 100644 --- a/backend/logs/myp-install-warnings.log +++ b/backend/logs/myp-install-warnings.log @@ -1,4 +1,4 @@ ================================================================= -MYP Installation WARNUNGEN Log - 2025-06-03 19:21:32 +MYP Installation WARNUNGEN Log - 2025-06-03 20:57:58 ================================================================= diff --git a/backend/logs/myp-install.log b/backend/logs/myp-install.log index a736738c..2e66a200 100644 --- a/backend/logs/myp-install.log +++ b/backend/logs/myp-install.log @@ -1,25 +1,25 @@ ================================================================= -MYP Installation Log - 2025-06-03 19:21:32 +MYP Installation Log - 2025-06-03 20:57:58 Script Version: 4.1.0 System: Linux debian 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 GNU/Linux ================================================================= -[2025-06-03 19:21:32] === MODUS: ROBUSTE ABHÄNGIGKEITEN-INSTALLATION FÜR MANUELLES TESTEN === -[2025-06-03 19:21:32] ✅ Root-Berechtigung bestätigt -[2025-06-03 19:21:32] === SYSTEM-RESSOURCEN PRÜFUNG === +[2025-06-03 20:57:58] === MODUS: ROBUSTE ABHÄNGIGKEITEN-INSTALLATION FÜR MANUELLES TESTEN === +[2025-06-03 20:57:58] ✅ Root-Berechtigung bestätigt +[2025-06-03 20:57:58] === SYSTEM-RESSOURCEN PRÜFUNG === [FORTSCHRITT] Prüfe RAM... -[FORTSCHRITT] Verfügbarer RAM: 24031MB -[ERFOLG] ✅ Ausreichend RAM verfügbar (24031MB) +[FORTSCHRITT] Verfügbarer RAM: 15614MB +[ERFOLG] ✅ Ausreichend RAM verfügbar (15614MB) [FORTSCHRITT] Prüfe Festplattenplatz... [FORTSCHRITT] Verfügbarer Festplattenplatz: 13,2GB (13473MB) [ERFOLG] ✅ Ausreichend Festplattenplatz verfügbar (13,2GB) [FORTSCHRITT] Prüfe CPU... -[FORTSCHRITT] CPU: 8 Kern(e) - 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz +[FORTSCHRITT] CPU: 6 Kern(e) - 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz [ERFOLG] ✅ CPU-Information erfolgreich ermittelt -[2025-06-03 19:21:32] ✅ System-Ressourcen-Prüfung abgeschlossen +[2025-06-03 20:57:58] ✅ System-Ressourcen-Prüfung abgeschlossen [FORTSCHRITT] Prüfe Debian/Raspbian-System... [DEBUG] Debian erkannt über /etc/debian_version: 12.11 -[2025-06-03 19:21:33] ✅ Debian/Raspbian-basiertes System erkannt (Version: 12.11) +[2025-06-03 20:57:58] ✅ Debian/Raspbian-basiertes System erkannt (Version: 12.11) [FORTSCHRITT] Prüfe Raspberry Pi Hardware... [INFO] 💻 Standard-PC/Server System (kein Raspberry Pi) [DEBUG] Kein Raspberry Pi erkannt. Hardware-Info: @@ -31,22 +31,23 @@ System: Linux debian 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (202 [FORTSCHRITT] Prüfe Kernel-Version... [INFO] 🐧 Kernel-Version: 6.1.0-37-amd64 [DEBUG] Vollständige Kernel-Info: Linux debian 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (2025-05-22) x86_64 GNU/Linux -[2025-06-03 19:21:33] ✅ System-Analyse abgeschlossen +[2025-06-03 20:57:58] ✅ System-Analyse abgeschlossen [FORTSCHRITT] Prüfe Internetverbindung (erweiterte Methoden)... [FORTSCHRITT] Teste DNS-Auflösung... -[DEBUG] DNS-Test Details: Teste DNS für 8.8.8.8: nslookup fehlgeschlagen. getent fehlgeschlagen. Erfolg mit ping.  +[DEBUG] DNS-Test Details: Teste DNS für 8.8.8.8: Erfolg mit nslookup.  [ERFOLG] ✅ Internetverbindung verfügbar -[INFO] 🔍 Erkannt via: Netzwerk-Verbindung (ping: 8.8.8.8) +[INFO] 🔍 Erkannt via: DNS-Auflösung (nslookup: 8.8.8.8) [FORTSCHRITT] Ermittle externe IP-Adresse... -[DEBUG] Externe IP konnte nicht ermittelt werden -[2025-06-03 19:22:08] === KONFIGURIERE HOSTNAME === +[INFO] 🌐 Externe IP: 163.116.179.142 +[DEBUG] Externe IP ermittelt über ifconfig.me: 163.116.179.142 +[2025-06-03 20:57:58] === KONFIGURIERE HOSTNAME === [FORTSCHRITT] Setze Hostname von 'debian' auf 'raspberrypi'... -[2025-06-03 19:22:08] ✅ Hostname erfolgreich auf 'raspberrypi' gesetzt -[2025-06-03 19:23:44] ✅ Hostname-Auflösung funktioniert: raspberrypi -> 127.0.1.1 -[2025-06-03 19:23:44] === ROBUSTE SYSTEM-UPDATE === +[2025-06-03 20:57:58] ✅ Hostname erfolgreich auf 'raspberrypi' gesetzt +[2025-06-03 20:58:09] ✅ Hostname-Auflösung funktioniert: raspberrypi -> 127.0.1.1 +[2025-06-03 20:58:09] === ROBUSTE SYSTEM-UPDATE === [FORTSCHRITT] Konfiguriere APT für bessere Zuverlässigkeit... [FORTSCHRITT] Validiere APT-Repositories... -[2025-06-03 19:23:44] ✅ Source-Repositories deaktiviert (nicht benötigt) +[2025-06-03 20:58:09] ✅ Source-Repositories deaktiviert (nicht benötigt) [FORTSCHRITT] Aktualisiere Paketlisten mit Retry... [FORTSCHRITT] Führe System-Upgrade durch... [FORTSCHRITT] Installiere essenzielle System-Tools... @@ -68,8 +69,8 @@ System: Linux debian 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (202 [FORTSCHRITT] Installiere Pakete: dbus [FORTSCHRITT] Installiere Pakete: systemd-timesyncd [FORTSCHRITT] Synchronisiere Systemzeit... -[2025-06-03 19:24:37] ✅ Robustes System-Update abgeschlossen -[2025-06-03 19:24:37] === KONFIGURIERE OPTIONALE NETZWERK-SICHERHEIT === +[2025-06-03 20:58:40] ✅ Robustes System-Update abgeschlossen +[2025-06-03 20:58:40] === KONFIGURIERE OPTIONALE NETZWERK-SICHERHEIT === [FORTSCHRITT] Deaktiviere IPv6 (robust)... [FORTSCHRITT] Deaktiviere IPv6 in GRUB... [ERFOLG] ✅ IPv6 in GRUB deaktiviert @@ -83,15 +84,15 @@ System: Linux debian 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (202 [DEBUG] systemd-networkd nicht aktiv - überspringe [DEBUG] NetworkManager nicht aktiv - überspringe [DEBUG] IPv6 Einträge in /etc/hosts auskommentiert -[2025-06-03 19:25:10] ✅ Optionale Netzwerk-Sicherheit konfiguriert: -[2025-06-03 19:25:10] 📝 Sysctl-Konfiguration erstellt: /etc/sysctl.d/99-myp-security.conf -[2025-06-03 19:25:10] ⚙️ Einstellungen werden beim nächsten Boot aktiv -[2025-06-03 19:25:10] 🔧 Netzwerk-Konfiguration vorbereitet +[2025-06-03 20:58:45] ✅ Optionale Netzwerk-Sicherheit konfiguriert: +[2025-06-03 20:58:45] 📝 Sysctl-Konfiguration erstellt: /etc/sysctl.d/99-myp-security.conf +[2025-06-03 20:58:45] ⚙️ Einstellungen werden beim nächsten Boot aktiv +[2025-06-03 20:58:45] 🔧 Netzwerk-Konfiguration vorbereitet [INFO] 💡 Tipp: Netzwerk-Sicherheit kann manuell aktiviert werden: [INFO] → sudo sysctl -p /etc/sysctl.d/99-myp-security.conf [INFO] → Oder automatisch beim nächsten Neustart [DEBUG] Netzwerk-Sicherheit ohne Blockierung abgeschlossen -[2025-06-03 19:25:10] === ROBUSTE PYTHON-INSTALLATION === +[2025-06-03 20:58:45] === ROBUSTE PYTHON-INSTALLATION === [FORTSCHRITT] Installiere Python 3 und Build-Abhängigkeiten... [FORTSCHRITT] Installiere Pakete: python3 [FORTSCHRITT] Installiere Pakete: python3-pip @@ -110,87 +111,21 @@ System: Linux debian 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (202 [FORTSCHRITT] Installiere Pakete: zlib1g-dev [FORTSCHRITT] Installiere Pakete: sqlite3 [FORTSCHRITT] Validiere Python-Installation... -[2025-06-03 19:26:13] ✅ Python Version: 3.11.2 +[2025-06-03 20:59:51] ✅ Python Version: 3.11.2 [FORTSCHRITT] Konfiguriere pip für bessere Zuverlässigkeit... [FORTSCHRITT] Erstelle systemweite pip-Konfiguration... [FORTSCHRITT] Konfiguriere pip für alle Benutzer... -[2025-06-03 19:26:13] ✅ pip konfiguriert für Benutzer: user +[2025-06-03 20:59:51] ✅ pip konfiguriert für Benutzer: user [FORTSCHRITT] Aktualisiere pip mit Retry... -[2025-06-03 19:26:17] ✅ pip Version: 25.1.1 -[2025-06-03 19:26:17] ✅ Robuste Python-Umgebung installiert -[2025-06-03 19:26:17] === ROBUSTE NODE.JS UND NPM INSTALLATION === +[2025-06-03 20:59:55] ✅ pip Version: 25.1.1 +[2025-06-03 20:59:55] ✅ Robuste Python-Umgebung installiert +[2025-06-03 20:59:55] === ROBUSTE NODE.JS UND NPM INSTALLATION === [FORTSCHRITT] Bereinige alte Node.js-Installationen... [FORTSCHRITT] Installiere Node.js mit Fallback-Strategie... [FORTSCHRITT] Verwende Debian Repository als Fallback... [FORTSCHRITT] Installiere Pakete: nodejs npm -[2025-06-03 19:28:16] ✅ Node.js via Debian Repository installiert +[2025-06-03 21:01:58] ✅ Node.js via Debian Repository installiert [FORTSCHRITT] Validiere Node.js Installation... -[2025-06-03 19:28:17] ✅ Node.js Version: v18.19.0 -[2025-06-03 19:28:17] ✅ npm Version: 9.2.0 +[2025-06-03 21:01:58] ✅ Node.js Version: v18.19.0 +[2025-06-03 21:01:59] ✅ npm Version: 9.2.0 [FORTSCHRITT] Optimiere npm-Konfiguration... -[2025-06-03 19:28:19] ✅ Node.js und npm erfolgreich installiert -[2025-06-03 19:28:19] === TIMEOUT-GESICHERTE SSL-ZERTIFIKATE KONFIGURATION === -[FORTSCHRITT] Installiere SSL-Grundkomponenten... -[FORTSCHRITT] Installiere Pakete: ca-certificates openssl -[FORTSCHRITT] Aktualisiere CA-Zertifikate (timeout-gesichert)... -[ERFOLG] ✅ CA-Zertifikate erfolgreich aktualisiert -[DEBUG] SSL-Verzeichnis erstellt: /usr/local/share/ca-certificates/myp -[FORTSCHRITT] Installiere Mercedes Corporate Zertifikate (timeout-gesichert)... -[FORTSCHRITT] Lade CA-Zertifikate nach Mercedes-Import neu (timeout-gesichert)... -[ERFOLG] ✅ Mercedes-Zertifikate erfolgreich in CA-Store integriert -[FORTSCHRITT] Konfiguriere SSL-Umgebungsvariablen... -[FORTSCHRITT] Validiere SSL-Konfiguration... -[2025-06-03 19:28:24] ✅ SSL-Zertifikate verfügbar: 144 CA-Zertifikate -[FORTSCHRITT] Finalisiere SSL-Konfiguration... -[ERFOLG] ✅ Finale CA-Zertifikate Integration abgeschlossen -[2025-06-03 19:28:25] ✅ SSL-Zertifikate timeout-gesichert konfiguriert -[DEBUG] SSL-Konfiguration abgeschlossen ohne hängende Prozesse -[2025-06-03 19:28:25] === PYTHON-PAKETE INSTALLATION === -[FORTSCHRITT] Installiere Python-Pakete... -[FORTSCHRITT] Installiere requirements.txt... -[ERFOLG] ✅ requirements.txt erfolgreich installiert -[FORTSCHRITT] Validiere essenzielle Python-Module... -[DEBUG] flask erfolgreich importiert -[DEBUG] requests erfolgreich importiert -[ERFOLG] ✅ Essenzielle Python-Module verfügbar -[2025-06-03 19:29:06] ✅ Python-Pakete Installation abgeschlossen -[FORTSCHRITT] Zeige installierte Python-Pakete... -[2025-06-03 19:29:06] === ROBUSTES ANWENDUNGS-DEPLOYMENT === -[FORTSCHRITT] Erstelle sicheres Zielverzeichnis: /opt/myp -[FORTSCHRITT] Validiere Source-Dateien... -[FORTSCHRITT] Kopiere Anwendungsdateien (robust)... -[FORTSCHRITT] Kopiere kritische Datei: app.py -[ERFOLG] ✅ app.py erfolgreich kopiert -[FORTSCHRITT] Kopiere kritische Datei: models.py -[ERFOLG] ✅ models.py erfolgreich kopiert -[FORTSCHRITT] Kopiere kritische Datei: requirements.txt -[ERFOLG] ✅ requirements.txt erfolgreich kopiert -[FORTSCHRITT] Kopiere Verzeichnis: blueprints -[ERFOLG] ✅ blueprints erfolgreich kopiert -[FORTSCHRITT] Kopiere Verzeichnis: config -[ERFOLG] ✅ config erfolgreich kopiert -[FORTSCHRITT] Kopiere Verzeichnis: database -[ERFOLG] ✅ database erfolgreich kopiert -[FORTSCHRITT] Kopiere Verzeichnis: static -[ERFOLG] ✅ static erfolgreich kopiert -[FORTSCHRITT] Kopiere Verzeichnis: templates -[ERFOLG] ✅ templates erfolgreich kopiert -[FORTSCHRITT] Kopiere Verzeichnis: uploads -[ERFOLG] ✅ uploads erfolgreich kopiert -[FORTSCHRITT] Kopiere Verzeichnis: utils -[ERFOLG] ✅ utils erfolgreich kopiert -[FORTSCHRITT] Kopiere Verzeichnis: logs -[ERFOLG] ✅ logs erfolgreich kopiert -[FORTSCHRITT] Kopiere Verzeichnis: certs -[ERFOLG] ✅ certs erfolgreich kopiert -[FORTSCHRITT] Kopiere optionale Datei: package.json -[FORTSCHRITT] Kopiere optionale Datei: package-lock.json -[FORTSCHRITT] Kopiere optionale Datei: tailwind.config.js -[FORTSCHRITT] Kopiere optionale Datei: postcss.config.js -[FORTSCHRITT] Kopiere optionale Datei: README.md -[FORTSCHRITT] Erstelle Verzeichnisstruktur... -[FORTSCHRITT] Setze sichere Berechtigungen... -[FORTSCHRITT] Konfiguriere robuste Python-Umgebung... -[2025-06-03 19:29:40] ✅ Python-Pfad konfiguriert: /usr/local/lib/python3.11/dist-packages/myp-app.pth -[FORTSCHRITT] Konfiguriere Umgebungsvariablen... -[FORTSCHRITT] Aktualisiere Bash-Profile...