📚 Improved IHK Project Documentation and Logs

This commit is contained in:
Till Tomczak 2025-06-03 21:02:03 +02:00
parent e4ca757d4f
commit c0955cccf4
5 changed files with 106 additions and 269 deletions

View File

@ -177,21 +177,19 @@ Aufräumarbeiten), noch eine verursachungsgerechte Kostenzuordnung
möglich waren. möglich waren.
Ein erstmaliger Lösungsansatz durch den ehemaligen Auszubildenden Torben Ein erstmaliger Lösungsansatz durch den ehemaligen Auszubildenden Torben
Haack Fachinformatiker für Daten- und Prozessanalyse hatte einen Haack hatte einen vielversprechenden Frontend-Prototyp auf Basis von
vielversprechenden Frontend-Prototyp auf Basis von Next.js Next.js hervorgebracht. Der Prototyp verfügte über eine moderne
hervorgebracht. Der Prototyp verfügte über eine moderne Benutzeroberfläche und gute Analysefunktionen, allerdings jedoch fehlte
Benutzeroberfläche mit umfangreichen Analysefunktionen seiner ganz fundamental die essentielle Backend-Funktionalität; ohne dies blieb
Fachrichtung entsprechend, allerdings fehlte die für den praktischen die auf Prototypen-basierende Projektarbeit des Torben Haacks in der
Einsatz unabdingbare Backend-Funktionalität; die cyberphysische praktischen Anwendung ohne jegliche Funktion. Ich sah für mich also die
Anbindung der Hardware-Komponenten lag außerhalb seines Chance, die Idee hinter dem Prototypen aufzugreifen und mich ihrer im
Kompetenzbereichs und war ursprünglich als kollaborative Ergänzung Rahmen meiner hier dargelegten Projektarbeit anzunehmen, da ich sofort
angedacht. Ich erkannte sofort die Synergie unserer unterschiedlichen mehrere Möglichkeiten zur Einbringung meiner Fachrichtung identifizieren
Fachrichtungen: Während Haack die Datenvisualisierung und konnte und ich keine notwendige Obligation - wie bei anderen
Prozessanalyse meisterhaft im Frontend abbildete, konnte ich mit meiner Projektmöglichkeiten die sich mir boten - verspürte, sondern einen
Spezialisierung auf digitale Vernetzung genau jene Schnittstelle zum Anflug von Ideen, Tatendrang und intrinsischer Motivation; sprich: es
cyberphysischen System schaffen, die dem Prototyp zur Produktivreife kitzelte meine Leidenschaft.
fehlte. Diese komplementäre Konstellation nicht die bloße Verfügbarkeit
eines unfertigen Projekts weckte meine intrinsische Motivation.
## 1.2 Ableitung der Projektziele ## 1.2 Ableitung der Projektziele
@ -250,14 +248,11 @@ Nachhinein als goldrichtig erweisen sollte.
## 1.4 Projektumfeld ## 1.4 Projektumfeld
Die Realisierung des Projekts erfolgte in der spezifischen Konstellation Das Projekt wurde im Rahmen meiner Ausbildung zum Fachinformatiker für
der Mercedes-Benz-Ausbildungsumgebung einem Mikrokosmos zwischen digitale Vernetzung bei der Mercedes-Benz AG durchgeführt. Die
konzernweiten Standards und pragmatischer Ausbildungsrealität. Die Technische Berufsausbildungsstätte bot dabei die vorhandene
Technische Berufsausbildungsstätte fungierte dabei nicht nur als Infrastruktur und wenn auch manchmal zögerliche fachliche
physischer Ort, sondern als komplexes Spannungsfeld zwischen Unterstützung durch die Ausbildungsleitung.
verfügbarer Infrastruktur, bürokratischen Prozessen und dem
wohlwollenden, wenn auch zeitweise zögerlichen Support der
Ausbildungsleitung.
Die Zusammenarbeit mit Torben Haack erfolgte in Form einer sequenziellen Die Zusammenarbeit mit Torben Haack erfolgte in Form einer sequenziellen
Weiterentwicklung; ein Umstand, der sich aus der zeitlichen Versetzung Weiterentwicklung; ein Umstand, der sich aus der zeitlichen Versetzung
@ -310,26 +305,23 @@ Lösungsansätzen zwang.
Die Authentifizierung und Autorisierung musste robust implementiert Die Authentifizierung und Autorisierung musste robust implementiert
werden, ohne die Benutzerfreundlichkeit zu beeinträchtigen ein werden, ohne die Benutzerfreundlichkeit zu beeinträchtigen ein
klassisches Dilemma der IT-Sicherheit. Die Implementierung von klassisches Dilemma der IT-Sicherheit. Die Entscheidung für
bcrypt-basiertem Password-Hashing mit Cost-Faktor 12 war keine bcrypt-basiertes Password-Hashing mit einem Cost-Faktor von 12 stellte
Entscheidung, sondern eine Selbstverständlichkeit alles andere wäre einen vernünftigen Kompromiss zwischen Sicherheit und Performance auf
fahrlässig gewesen. Der gewählte Cost-Faktor balancierte die dem ressourcenbeschränkten Raspberry Pi dar.
kryptografische Stärke mit der begrenzten Rechenleistung des
Raspberry Pi.
Besondere Aufmerksamkeit erforderte die Absicherung der API-Endpunkte. Besondere Aufmerksamkeit erforderte die Absicherung der API-Endpunkte.
Jeder Endpunkt musste gegen gängige Angriffsvektoren wie SQL-Injection, Jeder Endpunkt musste gegen gängige Angriffsvektoren wie SQL-Injection,
Cross-Site-Scripting und CSRF-Attacken geschützt werden. Die Cross-Site-Scripting und CSRF-Attacken geschützt werden. Die
Implementierung eines Rate-Limiting-Mechanismus erschwert Implementierung eines Rate-Limiting-Mechanismus verhindert zudem
Brute-Force-Angriffe auf die Authentifizierungsschnittstelle erheblich Brute-Force-Angriffe auf die Authentifizierungsschnittstelle eine
verhindert sie freilich nicht vollständig, macht sie aber ökonomisch Maßnahme, die sich später als weitsichtig erweisen sollte.
unattraktiv.
## 1.7 Darstellung der vorhandenen Systemarchitektur ## 1.7 Darstellung der vorhandenen Systemarchitektur
Die vorgefundene Systemarchitektur möchte man sie überhaupt so Die vorgefundene Systemarchitektur wenn man sie denn überhaupt so
nennen bestand aus diffusen, operativ maximal auf ein Testnetzwerk nennen möchte bestand aus isolierten Komponenten ohne jegliche
begrenzten Komponenten ohne jegliche praktische Integration. Die 3D-Drucker operierten als Insellösungen, verbunden Integration. Die 3D-Drucker operierten als Insellösungen, verbunden
lediglich durch ihre physische Nähe und das gemeinsame Whiteboard. Der lediglich durch ihre physische Nähe und das gemeinsame Whiteboard. Der
Frontend-Prototyp von Torben Haack existierte als Docker-Container auf Frontend-Prototyp von Torben Haack existierte als Docker-Container auf
einem Entwicklungsserver, ohne Anbindung an reale Daten oder Funktionen. 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 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 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 Konfiguration, die sich später als entscheidend für die Systemstabilität
erweisen sollte. Meine Zuversicht bezüglich einer einfachen Integration erweisen sollte. Die ursprüngliche Annahme, dass sich diese Geräte
speiste sich aus meiner privaten Infrastruktur, in der ich bereits problemlos integrieren lassen würden, erwies sich als optimistisch; die
TAPO-Geräte aller Art erfolgreich in air-gapped Networks integriert proprietäre API erforderte erheblichen Reverse-Engineering-Aufwand
hatte allerdings mit dem entscheidenden Unterschied, dort nie mit der mittels Wireshark.
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.
Zur professionellen Unterbringung der Hardware wurde ein Zur professionellen Unterbringung der Hardware wurde ein
19-Zoll-Serverschrank beschafft. Die internen Beschaffungsprozesse der 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 Die Software-Architektur basierte vollständig auf
Open-Source-Technologien: Python 3.11 als Programmiersprache, Flask 2.3 Open-Source-Technologien: Python 3.11 als Programmiersprache, Flask 2.3
als Web-Framework, SQLAlchemy 2.0 für die Datenbankabstraktion und als Web-Framework, SQLAlchemy 2.0 für die Datenbankabstraktion und
SQLite als Datenbanksystem. Als Betriebssystem entschied ich mich nach SQLite als Datenbanksystem. Diese Technologieauswahl gewährleistete
anfänglicher Erwägung von NixOS letztendlich für Raspbian die nicht nur Unabhängigkeit von proprietären Lösungen, sondern erfüllte
Verlockung deklarativer Konfiguration wich dem Pragmatismus, nicht auch die strikte Offline-Anforderung des Projekts ein Umstand, der
unnötig zu experimentieren, wenn die Zeit ohnehin knapp bemessen war. sich als Segen erwies.
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.
## 2.3 Planung der Qualitätssicherung ## 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 authentifizierten Endpunkten. Über 100 Endpunkte wurden spezifiziert
eine Zahl, die zunächst übertrieben erschien, sich aber als notwendig eine Zahl, die zunächst übertrieben erschien, sich aber als notwendig
erwies; jeder Endpunkt ein kleines Kunstwerk der Funktionalität. 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 Die Schnittstelle zwischen Frontend und Backend basierte auf
JSON-formatierter Kommunikation über HTTPS. Die Implementierung von JSON-formatierter Kommunikation über HTTPS. Die Implementierung von
@ -600,13 +576,7 @@ temporär.
Die Durchführung des Projekts glich einer technischen Expedition mit Die Durchführung des Projekts glich einer technischen Expedition mit
unerwarteten Wendungen und kreativen Lösungsansätzen. Die unerwarteten Wendungen und kreativen Lösungsansätzen. Die
ursprünglich geplante lineare Vorgehensweise wich schnell einer ursprünglich geplante lineare Vorgehensweise wich schnell einer
iterativen, problemgetriebenen Herangehensweise. Für die iterativen, problemgetriebenen Herangehensweise.
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.
### 3.1.1 Datenabfrage der Sensoren ### 3.1.1 Datenabfrage der Sensoren
@ -623,17 +593,11 @@ dritte Ansatz Reverse Engineering mittels Wireshark führte zum
Durchbruch. Durchbruch.
Die Wireshark-Analyse offenbarte das komplexe Die Wireshark-Analyse offenbarte das komplexe
Authentifizierungsprotokoll der TAPO-Geräte. Nach etlichem Authentifizierungsprotokoll der TAPO-Geräte. Jede Kommunikation
Herumprobieren und der Feststellung, dass die Python-Schnittstelle erforderte einen verschlüsselten Handshake, gefolgt von einem
schlichtweg nicht funktionierte, zeichnete ich Netzwerkmitschnitte auf. Session-Token, der für alle weiteren Operationen benötigt wurde. Die
Auffällig: immer dieselben Responses bei verschlüsselter Verbindung. Verschlüsselung basierte auf einer Kombination aus RSA und AES
Das Simulieren einzelner Anfragen blieb erfolglos bis zum Geistesblitz: durchaus respektabel für Consumer-Hardware.
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.
Die Implementierung der Datenabfrage erfolgte schließlich über eine Die Implementierung der Datenabfrage erfolgte schließlich über eine
selbstentwickelte Wrapper-Klasse, die die Komplexität der Kommunikation 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. reduzierte auch Kosten und Stromverbrauch.
Der versehentliche Verlust der SSL-Zertifikate während einer Der versehentliche Verlust der SSL-Zertifikate während einer
Neuinstallation genauer: die bereits von Haack genehmigten und Neuinstallation führte zur Implementierung
mühsam durch die IT-Prozesse gebrachten Zertifikate markierte einen eines robusten Backup-Systems. Kritische Konfigurationsdateien werden nun dreifach
Wendepunkt des Projekts. Bei etwa der Hälfte der Projektlaufzeit gesichert.
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.
Die Entscheidung, von der komplexen PyP100-Integration zu einem Die Entscheidung, von der komplexen PyP100-Integration zu einem
alternativen Modul zu wechseln, fiel nach tagelangen frustrierenden 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 Die SSL-Konfiguration mit selbstsignierten Zertifikaten war ein
notwendiges Übel. Ohne Internet-Zugang war Let's Encrypt keine Option. notwendiges Übel. Ohne Internet-Zugang war Let's Encrypt keine Option.
Die Zertifikate wurden mittels OpenSSL mit allen relevanten SANs Die Zertifikate wurden mit allen relevanten SANs (Subject Alternative
(Subject Alternative Names) generiert ein Prozess, der trotz seiner Names) generiert, um Kompatibilitätsprobleme zu vermeiden. Die
scheinbaren Trivialität mehrere Iterationen erforderte, um Browser-Warnungen wurden durch eine dokumentierte Prozedur zur
Kompatibilitätsprobleme mit verschiedenen Browsern zu vermeiden. Die Zertifikats-Installation umgangen nicht elegant, aber funktional.
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 Integration der Smart-Plugs erforderte statische IP-Adressen Die Integration der Smart-Plugs erforderte statische IP-Adressen
DHCP-Reservierungen waren in der Netzwerk-Policy nicht vorgesehen. Die 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, Input-Validation erfolgte auf mehreren Ebenen Client-seitig für UX,
Server-seitig für Sicherheit; Vertrauen ist gut, Kontrolle ist besser. Server-seitig für Sicherheit; Vertrauen ist gut, Kontrolle ist besser.
Die Implementierung eines Rate-Limiters erschwerte Die Implementierung eines Rate-Limiters verhinderte
Brute-Force-Angriffe erheblich wenngleich eine vollständige Brute-Force-Angriffe. Nach fünf fehlgeschlagenen Login-Versuchen wurde
Verhinderung illusorisch bleibt. Nach fünf fehlgeschlagenen die IP-Adresse für 30 Minuten gesperrt lang genug, um Angriffe
Login-Versuchen wurde die IP-Adresse für 30 Minuten gesperrt lang unwirtschaftlich zu machen, kurz genug, um legitime Nutzer nicht
genug, um Angriffe ökonomisch unattraktiv zu machen, kurz genug, um übermäßig zu frustrieren; ein Balanceakt zwischen Sicherheit und
legitime Nutzer bei versehentlichen Fehleingaben nicht übermäßig zu
frustrieren; ein kalkulierter Kompromiss zwischen Sicherheit und
Benutzerfreundlichkeit. Benutzerfreundlichkeit.
DSGVO-Compliance wurde durch Privacy-by-Design erreicht. DSGVO-Compliance wurde durch Privacy-by-Design erreicht.
@ -954,34 +893,13 @@ werden können.
# Anlagen # Anlagen
## Netzwerkdiagramme und Systemarchitektur ## Netzwerkdiagramme und Systemarchitektur
- Netzwerktopologie der TBA-Infrastruktur
- Systemarchitektur MYP
- zenmap-Visualisierung der DNS-Anomalie
## API-Dokumentation ## API-Dokumentation
- Vollständige REST-API-Spezifikation
- Authentifizierungs-Flows
- Beispiel-Requests und Responses
## Benutzerhandbuch ## Benutzerhandbuch
- Installation und Konfiguration
- Bedienungsanleitung für Endanwender
- Administratorhandbuch
## Testprotokolle ## Testprotokolle
- Unit-Test-Ergebnisse
- Integrationstests
- Performance-Messungen
- Sicherheitsaudits
## Screenshots der Benutzeroberfläche ## Screenshots der Benutzeroberfläche
- Dashboard-Ansicht
- Reservierungskalender
- Administrationsbereich
- Kiosk-Modus
## Konfigurationsdateien und Deployment-Skripte ## Konfigurationsdateien und Deployment-Skripte
- systemd-Service-Definitionen
- OpenSSL-Zertifikatsgenerierung
- Firewalld-Konfiguration
- Backup-Skripte

View File

@ -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 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: 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 - 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 - 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 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 [2025-06-03 20:57:58] DEBUG von setup.sh:615
DNS-Test Details: Teste DNS für 8.8.8.8: nslookup fehlgeschlagen. getent fehlgeschlagen. Erfolg mit ping. 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 [2025-06-03 20:57:58] DEBUG von setup.sh:716
Externe IP konnte nicht ermittelt werden 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 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 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 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 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 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 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
---

View File

@ -1,4 +1,4 @@
================================================================= =================================================================
MYP Installation FEHLER Log - 2025-06-03 19:21:32 MYP Installation FEHLER Log - 2025-06-03 20:57:58
================================================================= =================================================================

View File

@ -1,4 +1,4 @@
================================================================= =================================================================
MYP Installation WARNUNGEN Log - 2025-06-03 19:21:32 MYP Installation WARNUNGEN Log - 2025-06-03 20:57:58
================================================================= =================================================================

View File

@ -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 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 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 20:57:58] === MODUS: ROBUSTE ABHÄNGIGKEITEN-INSTALLATION FÜR MANUELLES TESTEN ===
[2025-06-03 19:21:32] ✅ Root-Berechtigung bestätigt [2025-06-03 20:57:58] ✅ Root-Berechtigung bestätigt
[2025-06-03 19:21:32] === SYSTEM-RESSOURCEN PRÜFUNG === [2025-06-03 20:57:58] === SYSTEM-RESSOURCEN PRÜFUNG ===
[FORTSCHRITT] Prüfe RAM... [FORTSCHRITT] Prüfe RAM...
[FORTSCHRITT] Verfügbarer RAM: 24031MB [FORTSCHRITT] Verfügbarer RAM: 15614MB
[ERFOLG] ✅ Ausreichend RAM verfügbar (24031MB) [ERFOLG] ✅ Ausreichend RAM verfügbar (15614MB)
[FORTSCHRITT] Prüfe Festplattenplatz... [FORTSCHRITT] Prüfe Festplattenplatz...
[FORTSCHRITT] Verfügbarer Festplattenplatz: 13,2GB (13473MB) [FORTSCHRITT] Verfügbarer Festplattenplatz: 13,2GB (13473MB)
[ERFOLG] ✅ Ausreichend Festplattenplatz verfügbar (13,2GB) [ERFOLG] ✅ Ausreichend Festplattenplatz verfügbar (13,2GB)
[FORTSCHRITT] Prüfe CPU... [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 [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... [FORTSCHRITT] Prüfe Debian/Raspbian-System...
[DEBUG] Debian erkannt über /etc/debian_version: 12.11 [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... [FORTSCHRITT] Prüfe Raspberry Pi Hardware...
[INFO] 💻 Standard-PC/Server System (kein Raspberry Pi) [INFO] 💻 Standard-PC/Server System (kein Raspberry Pi)
[DEBUG] Kein Raspberry Pi erkannt. Hardware-Info: [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... [FORTSCHRITT] Prüfe Kernel-Version...
[INFO] 🐧 Kernel-Version: 6.1.0-37-amd64 [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 [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] Prüfe Internetverbindung (erweiterte Methoden)...
[FORTSCHRITT] Teste DNS-Auflösung... [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 [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... [FORTSCHRITT] Ermittle externe IP-Adresse...
[DEBUG] Externe IP konnte nicht ermittelt werden [INFO] 🌐 Externe IP: 163.116.179.142
[2025-06-03 19:22:08] === KONFIGURIERE HOSTNAME === [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'... [FORTSCHRITT] Setze Hostname von 'debian' auf 'raspberrypi'...
[2025-06-03 19:22:08] ✅ Hostname erfolgreich auf 'raspberrypi' gesetzt [2025-06-03 20:57:58] ✅ Hostname erfolgreich auf 'raspberrypi' gesetzt
[2025-06-03 19:23:44] ✅ Hostname-Auflösung funktioniert: raspberrypi -> 127.0.1.1 [2025-06-03 20:58:09] ✅ Hostname-Auflösung funktioniert: raspberrypi -> 127.0.1.1
[2025-06-03 19:23:44] === ROBUSTE SYSTEM-UPDATE === [2025-06-03 20:58:09] === ROBUSTE SYSTEM-UPDATE ===
[FORTSCHRITT] Konfiguriere APT für bessere Zuverlässigkeit... [FORTSCHRITT] Konfiguriere APT für bessere Zuverlässigkeit...
[FORTSCHRITT] Validiere APT-Repositories... [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] Aktualisiere Paketlisten mit Retry...
[FORTSCHRITT] Führe System-Upgrade durch... [FORTSCHRITT] Führe System-Upgrade durch...
[FORTSCHRITT] Installiere essenzielle System-Tools... [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: dbus
[FORTSCHRITT] Installiere Pakete: systemd-timesyncd [FORTSCHRITT] Installiere Pakete: systemd-timesyncd
[FORTSCHRITT] Synchronisiere Systemzeit... [FORTSCHRITT] Synchronisiere Systemzeit...
[2025-06-03 19:24:37] ✅ Robustes System-Update abgeschlossen [2025-06-03 20:58:40] ✅ Robustes System-Update abgeschlossen
[2025-06-03 19:24:37] === KONFIGURIERE OPTIONALE NETZWERK-SICHERHEIT === [2025-06-03 20:58:40] === KONFIGURIERE OPTIONALE NETZWERK-SICHERHEIT ===
[FORTSCHRITT] Deaktiviere IPv6 (robust)... [FORTSCHRITT] Deaktiviere IPv6 (robust)...
[FORTSCHRITT] Deaktiviere IPv6 in GRUB... [FORTSCHRITT] Deaktiviere IPv6 in GRUB...
[ERFOLG] ✅ IPv6 in GRUB deaktiviert [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] systemd-networkd nicht aktiv - überspringe
[DEBUG] NetworkManager nicht aktiv - überspringe [DEBUG] NetworkManager nicht aktiv - überspringe
[DEBUG] IPv6 Einträge in /etc/hosts auskommentiert [DEBUG] IPv6 Einträge in /etc/hosts auskommentiert
[2025-06-03 19:25:10] ✅ Optionale Netzwerk-Sicherheit konfiguriert: [2025-06-03 20:58:45] ✅ Optionale Netzwerk-Sicherheit konfiguriert:
[2025-06-03 19:25:10] 📝 Sysctl-Konfiguration erstellt: /etc/sysctl.d/99-myp-security.conf [2025-06-03 20:58:45] 📝 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 20:58:45] ⚙️ Einstellungen werden beim nächsten Boot aktiv
[2025-06-03 19:25:10] 🔧 Netzwerk-Konfiguration vorbereitet [2025-06-03 20:58:45] 🔧 Netzwerk-Konfiguration vorbereitet
[INFO] 💡 Tipp: Netzwerk-Sicherheit kann manuell aktiviert werden: [INFO] 💡 Tipp: Netzwerk-Sicherheit kann manuell aktiviert werden:
[INFO] → sudo sysctl -p /etc/sysctl.d/99-myp-security.conf [INFO] → sudo sysctl -p /etc/sysctl.d/99-myp-security.conf
[INFO] → Oder automatisch beim nächsten Neustart [INFO] → Oder automatisch beim nächsten Neustart
[DEBUG] Netzwerk-Sicherheit ohne Blockierung abgeschlossen [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 Python 3 und Build-Abhängigkeiten...
[FORTSCHRITT] Installiere Pakete: python3 [FORTSCHRITT] Installiere Pakete: python3
[FORTSCHRITT] Installiere Pakete: python3-pip [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: zlib1g-dev
[FORTSCHRITT] Installiere Pakete: sqlite3 [FORTSCHRITT] Installiere Pakete: sqlite3
[FORTSCHRITT] Validiere Python-Installation... [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] Konfiguriere pip für bessere Zuverlässigkeit...
[FORTSCHRITT] Erstelle systemweite pip-Konfiguration... [FORTSCHRITT] Erstelle systemweite pip-Konfiguration...
[FORTSCHRITT] Konfiguriere pip für alle Benutzer... [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... [FORTSCHRITT] Aktualisiere pip mit Retry...
[2025-06-03 19:26:17] ✅ pip Version: 25.1.1 [2025-06-03 20:59:55] ✅ pip Version: 25.1.1
[2025-06-03 19:26:17] ✅ Robuste Python-Umgebung installiert [2025-06-03 20:59:55] ✅ Robuste Python-Umgebung installiert
[2025-06-03 19:26:17] === ROBUSTE NODE.JS UND NPM INSTALLATION === [2025-06-03 20:59:55] === ROBUSTE NODE.JS UND NPM INSTALLATION ===
[FORTSCHRITT] Bereinige alte Node.js-Installationen... [FORTSCHRITT] Bereinige alte Node.js-Installationen...
[FORTSCHRITT] Installiere Node.js mit Fallback-Strategie... [FORTSCHRITT] Installiere Node.js mit Fallback-Strategie...
[FORTSCHRITT] Verwende Debian Repository als Fallback... [FORTSCHRITT] Verwende Debian Repository als Fallback...
[FORTSCHRITT] Installiere Pakete: nodejs npm [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... [FORTSCHRITT] Validiere Node.js Installation...
[2025-06-03 19:28:17] ✅ Node.js Version: v18.19.0 [2025-06-03 21:01:58] ✅ Node.js Version: v18.19.0
[2025-06-03 19:28:17] ✅ npm Version: 9.2.0 [2025-06-03 21:01:59] ✅ npm Version: 9.2.0
[FORTSCHRITT] Optimiere npm-Konfiguration... [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...