📚 Improved IHK Project Documentation and Logs
This commit is contained in:
parent
e4ca757d4f
commit
c0955cccf4
@ -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
|
||||
|
@ -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
|
||||
---
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
=================================================================
|
||||
MYP Installation FEHLER Log - 2025-06-03 19:21:32
|
||||
MYP Installation FEHLER Log - 2025-06-03 20:57:58
|
||||
=================================================================
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
=================================================================
|
||||
MYP Installation WARNUNGEN Log - 2025-06-03 19:21:32
|
||||
MYP Installation WARNUNGEN Log - 2025-06-03 20:57:58
|
||||
=================================================================
|
||||
|
||||
|
@ -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
|
||||
=================================================================
|
||||
|
||||
[0;32m[2025-06-03 19:21:32] === MODUS: ROBUSTE ABHÄNGIGKEITEN-INSTALLATION FÜR MANUELLES TESTEN ===[0m
|
||||
[0;32m[2025-06-03 19:21:32] ✅ Root-Berechtigung bestätigt[0m
|
||||
[0;32m[2025-06-03 19:21:32] === SYSTEM-RESSOURCEN PRÜFUNG ===[0m
|
||||
[0;32m[2025-06-03 20:57:58] === MODUS: ROBUSTE ABHÄNGIGKEITEN-INSTALLATION FÜR MANUELLES TESTEN ===[0m
|
||||
[0;32m[2025-06-03 20:57:58] ✅ Root-Berechtigung bestätigt[0m
|
||||
[0;32m[2025-06-03 20:57:58] === SYSTEM-RESSOURCEN PRÜFUNG ===[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe RAM...[0m
|
||||
[0;35m[FORTSCHRITT] Verfügbarer RAM: 24031MB[0m
|
||||
[0;36m[ERFOLG] ✅ Ausreichend RAM verfügbar (24031MB)[0m
|
||||
[0;35m[FORTSCHRITT] Verfügbarer RAM: 15614MB[0m
|
||||
[0;36m[ERFOLG] ✅ Ausreichend RAM verfügbar (15614MB)[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe Festplattenplatz...[0m
|
||||
[0;35m[FORTSCHRITT] Verfügbarer Festplattenplatz: 13,2GB (13473MB)[0m
|
||||
[0;36m[ERFOLG] ✅ Ausreichend Festplattenplatz verfügbar (13,2GB)[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe CPU...[0m
|
||||
[0;35m[FORTSCHRITT] CPU: 8 Kern(e) - 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz[0m
|
||||
[0;35m[FORTSCHRITT] CPU: 6 Kern(e) - 11th Gen Intel(R) Core(TM) i7-11850H @ 2.50GHz[0m
|
||||
[0;36m[ERFOLG] ✅ CPU-Information erfolgreich ermittelt[0m
|
||||
[0;32m[2025-06-03 19:21:32] ✅ System-Ressourcen-Prüfung abgeschlossen[0m
|
||||
[0;32m[2025-06-03 20:57:58] ✅ System-Ressourcen-Prüfung abgeschlossen[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe Debian/Raspbian-System...[0m
|
||||
[0;34m[DEBUG] Debian erkannt über /etc/debian_version: 12.11[0m
|
||||
[0;32m[2025-06-03 19:21:33] ✅ Debian/Raspbian-basiertes System erkannt (Version: 12.11)[0m
|
||||
[0;32m[2025-06-03 20:57:58] ✅ Debian/Raspbian-basiertes System erkannt (Version: 12.11)[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe Raspberry Pi Hardware...[0m
|
||||
[0;34m[INFO] 💻 Standard-PC/Server System (kein Raspberry Pi)[0m
|
||||
[0;34m[DEBUG] Kein Raspberry Pi erkannt. Hardware-Info:[0m
|
||||
@ -31,22 +31,23 @@ System: Linux debian 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (202
|
||||
[0;35m[FORTSCHRITT] Prüfe Kernel-Version...[0m
|
||||
[0;34m[INFO] 🐧 Kernel-Version: 6.1.0-37-amd64[0m
|
||||
[0;34m[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[0m
|
||||
[0;32m[2025-06-03 19:21:33] ✅ System-Analyse abgeschlossen[0m
|
||||
[0;32m[2025-06-03 20:57:58] ✅ System-Analyse abgeschlossen[0m
|
||||
[0;35m[FORTSCHRITT] Prüfe Internetverbindung (erweiterte Methoden)...[0m
|
||||
[0;35m[FORTSCHRITT] Teste DNS-Auflösung...[0m
|
||||
[0;34m[DEBUG] DNS-Test Details: Teste DNS für 8.8.8.8: nslookup fehlgeschlagen. getent fehlgeschlagen. Erfolg mit ping. [0m
|
||||
[0;34m[DEBUG] DNS-Test Details: Teste DNS für 8.8.8.8: Erfolg mit nslookup. [0m
|
||||
[0;36m[ERFOLG] ✅ Internetverbindung verfügbar[0m
|
||||
[0;34m[INFO] 🔍 Erkannt via: Netzwerk-Verbindung (ping: 8.8.8.8)[0m
|
||||
[0;34m[INFO] 🔍 Erkannt via: DNS-Auflösung (nslookup: 8.8.8.8)[0m
|
||||
[0;35m[FORTSCHRITT] Ermittle externe IP-Adresse...[0m
|
||||
[0;34m[DEBUG] Externe IP konnte nicht ermittelt werden[0m
|
||||
[0;32m[2025-06-03 19:22:08] === KONFIGURIERE HOSTNAME ===[0m
|
||||
[0;34m[INFO] 🌐 Externe IP: 163.116.179.142[0m
|
||||
[0;34m[DEBUG] Externe IP ermittelt über ifconfig.me: 163.116.179.142[0m
|
||||
[0;32m[2025-06-03 20:57:58] === KONFIGURIERE HOSTNAME ===[0m
|
||||
[0;35m[FORTSCHRITT] Setze Hostname von 'debian' auf 'raspberrypi'...[0m
|
||||
[0;32m[2025-06-03 19:22:08] ✅ Hostname erfolgreich auf 'raspberrypi' gesetzt[0m
|
||||
[0;32m[2025-06-03 19:23:44] ✅ Hostname-Auflösung funktioniert: raspberrypi -> 127.0.1.1[0m
|
||||
[0;32m[2025-06-03 19:23:44] === ROBUSTE SYSTEM-UPDATE ===[0m
|
||||
[0;32m[2025-06-03 20:57:58] ✅ Hostname erfolgreich auf 'raspberrypi' gesetzt[0m
|
||||
[0;32m[2025-06-03 20:58:09] ✅ Hostname-Auflösung funktioniert: raspberrypi -> 127.0.1.1[0m
|
||||
[0;32m[2025-06-03 20:58:09] === 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 19:23:44] ✅ Source-Repositories deaktiviert (nicht benötigt)[0m
|
||||
[0;32m[2025-06-03 20:58:09] ✅ 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
|
||||
@ -68,8 +69,8 @@ System: Linux debian 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (202
|
||||
[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 19:24:37] ✅ Robustes System-Update abgeschlossen[0m
|
||||
[0;32m[2025-06-03 19:24:37] === KONFIGURIERE OPTIONALE NETZWERK-SICHERHEIT ===[0m
|
||||
[0;32m[2025-06-03 20:58:40] ✅ Robustes System-Update abgeschlossen[0m
|
||||
[0;32m[2025-06-03 20:58:40] === KONFIGURIERE OPTIONALE NETZWERK-SICHERHEIT ===[0m
|
||||
[0;35m[FORTSCHRITT] Deaktiviere IPv6 (robust)...[0m
|
||||
[0;35m[FORTSCHRITT] Deaktiviere IPv6 in GRUB...[0m
|
||||
[0;36m[ERFOLG] ✅ IPv6 in GRUB deaktiviert[0m
|
||||
@ -83,15 +84,15 @@ System: Linux debian 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (202
|
||||
[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 19:25:10] ✅ Optionale Netzwerk-Sicherheit konfiguriert:[0m
|
||||
[0;32m[2025-06-03 19:25:10] 📝 Sysctl-Konfiguration erstellt: /etc/sysctl.d/99-myp-security.conf[0m
|
||||
[0;32m[2025-06-03 19:25:10] ⚙️ Einstellungen werden beim nächsten Boot aktiv[0m
|
||||
[0;32m[2025-06-03 19:25:10] 🔧 Netzwerk-Konfiguration vorbereitet[0m
|
||||
[0;32m[2025-06-03 20:58:45] ✅ Optionale Netzwerk-Sicherheit konfiguriert:[0m
|
||||
[0;32m[2025-06-03 20:58:45] 📝 Sysctl-Konfiguration erstellt: /etc/sysctl.d/99-myp-security.conf[0m
|
||||
[0;32m[2025-06-03 20:58:45] ⚙️ Einstellungen werden beim nächsten Boot aktiv[0m
|
||||
[0;32m[2025-06-03 20:58:45] 🔧 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 19:25:10] === ROBUSTE PYTHON-INSTALLATION ===[0m
|
||||
[0;32m[2025-06-03 20:58:45] === 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
|
||||
@ -110,87 +111,21 @@ System: Linux debian 6.1.0-37-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.140-1 (202
|
||||
[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 19:26:13] ✅ Python Version: 3.11.2[0m
|
||||
[0;32m[2025-06-03 20:59:51] ✅ 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 19:26:13] ✅ pip konfiguriert für Benutzer: user[0m
|
||||
[0;32m[2025-06-03 20:59:51] ✅ pip konfiguriert für Benutzer: user[0m
|
||||
[0;35m[FORTSCHRITT] Aktualisiere pip mit Retry...[0m
|
||||
[0;32m[2025-06-03 19:26:17] ✅ pip Version: 25.1.1[0m
|
||||
[0;32m[2025-06-03 19:26:17] ✅ Robuste Python-Umgebung installiert[0m
|
||||
[0;32m[2025-06-03 19:26:17] === ROBUSTE NODE.JS UND NPM INSTALLATION ===[0m
|
||||
[0;32m[2025-06-03 20:59:55] ✅ pip Version: 25.1.1[0m
|
||||
[0;32m[2025-06-03 20:59:55] ✅ Robuste Python-Umgebung installiert[0m
|
||||
[0;32m[2025-06-03 20:59:55] === 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 19:28:16] ✅ Node.js via Debian Repository installiert[0m
|
||||
[0;32m[2025-06-03 21:01:58] ✅ Node.js via Debian Repository installiert[0m
|
||||
[0;35m[FORTSCHRITT] Validiere Node.js Installation...[0m
|
||||
[0;32m[2025-06-03 19:28:17] ✅ Node.js Version: v18.19.0[0m
|
||||
[0;32m[2025-06-03 19:28:17] ✅ npm Version: 9.2.0[0m
|
||||
[0;32m[2025-06-03 21:01:58] ✅ Node.js Version: v18.19.0[0m
|
||||
[0;32m[2025-06-03 21:01:59] ✅ npm Version: 9.2.0[0m
|
||||
[0;35m[FORTSCHRITT] Optimiere npm-Konfiguration...[0m
|
||||
[0;32m[2025-06-03 19:28:19] ✅ Node.js und npm erfolgreich installiert[0m
|
||||
[0;32m[2025-06-03 19:28:19] === 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 19:28:24] ✅ SSL-Zertifikate verfügbar: 144 CA-Zertifikate[0m
|
||||
[0;35m[FORTSCHRITT] Finalisiere SSL-Konfiguration...[0m
|
||||
[0;36m[ERFOLG] ✅ Finale CA-Zertifikate Integration abgeschlossen[0m
|
||||
[0;32m[2025-06-03 19:28:25] ✅ SSL-Zertifikate timeout-gesichert konfiguriert[0m
|
||||
[0;34m[DEBUG] SSL-Konfiguration abgeschlossen ohne hängende Prozesse[0m
|
||||
[0;32m[2025-06-03 19:28:25] === 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 19:29:06] ✅ Python-Pakete Installation abgeschlossen[0m
|
||||
[0;35m[FORTSCHRITT] Zeige installierte Python-Pakete...[0m
|
||||
[0;32m[2025-06-03 19:29:06] === 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 19:29:40] ✅ 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