Files
Brancheneinstufung2/RELOCATION.md
Floke 08df678f6c docs: Add recommended migration plan to RELOCATION.md [30388f42]
This commit updates the RELOCATION.md file to include a detailed,
safer migration plan as a recommended alternative to the initial
proposal. This provides a clear and secure strategy for the
discussion with the IT department.
2026-03-05 15:26:58 +00:00

7.3 KiB

Anforderungsdokument (Version 2): Docker-Migration von Synology nach Ubuntu VM (docker1)

Zweck: Dieses Dokument listet alle notwendigen Port-Freigaben und Netzwerk-Anforderungen für den Umzug des internen Docker-Anwendungsstacks auf die neue VM docker1 (IP: 10.10.81.2). Diese Version basiert auf der Analyse aller aktiven Docker-Container vom Quellsystem.

Teil 1: Externe Port-Freigaben (Firewall)

Die folgenden Ports müssen auf der Firewall für den eingehenden Verkehr zur VM 10.10.81.2 geöffnet werden.

Host-Port Ziel-Dienst (Container) Zweck / Beschreibung Kritikalität
3000 gitea Gitea Web UI. Zugriff auf die Weboberfläche des Git-Servers. Hoch
2222 gitea Gitea Git via SSH. Ermöglicht git clone, push, pull über SSH. (Auf dem Altsystem Port 32768, wird hier auf einen Standard-Port gelegt). Hoch
8090 gateway_proxy (Nginx) Zentraler App-Hub. Reverse-Proxy, der den Zugriff auf alle Web-Anwendungen (Dashboard, B2B, Market-Intel etc.) steuert und mit Passwort schützt. Hoch
8003 connector-superoffice SuperOffice Webhook-Empfänger. Muss aus dem Internet (von SuperOffice-Servern) erreichbar sein. Hoch
8501 lead-engine Lead Engine UI. Web-Interface der Lead Engine (Streamlit). Mittel
8004 lead-engine (API) Lead Engine API. Für externe Integrationen wie Kalender/Buchungs-Links. Mittel
8002 heatmap-tool-backend Heatmap Tool Backend. API für das Heatmap-Visualisierungs-Tool. Niedrig
5173 heatmap-tool-frontend Heatmap Tool Frontend. Direktzugriff auf die UI des Heatmap-Tools (typ. für Entwicklung). Niedrig

Empfehlung: Der gesamte externe Zugriff sollte idealerweise über einen vorgeschalteten, von der IT verwalteten Reverse-Proxy mit SSL-Terminierung (HTTPS) laufen, um die Sicherheit zu erhöhen.


Teil 2: Interne Port-Nutzung (Host-System)

Die folgenden Ports werden von den Docker-Containern auf dem Host-System (docker1) belegt. Sie müssen nicht extern freigegeben werden, aber sie dürfen auf dem Host nicht von anderen Diensten belegt sein.

Host-Port Ziel-Dienst (Container) Zweck
8000 company-explorer Haupt-API für Unternehmensdaten, wird vom App-Hub (gateway_proxy) genutzt.
8001 transcription-app API und UI für das Transkriptions-Tool, wird vom App-Hub genutzt.

Teil 3: Externe Service-Abhängigkeiten (Ausgehender Verkehr)

Die VM muss in der Lage sein, ausgehende Verbindungen zu den folgenden externen Diensten aufzubauen.

Dienst Zweck Protokoll/Port
SuperOffice API CRM-Synchronisation HTTPS / 443
Google APIs SerpAPI, Gemini AI HTTPS / 443
Notion API Wissensdatenbank-Sync HTTPS / 443
DuckDNS Dynamisches DNS HTTPS / 443
GitHub / Docker Hub / etc. Herunterladen von Docker-Images, Software-Paketen HTTPS / 443
Öffentliche DNS-Server Namensauflösung (z.B. 8.8.8.8) DNS / 53 (UDP/TCP)

Teil 4: Netzwerk-Architektur & Kommunikation (Intern)

  • Inter-Container-Kommunikation: Alle Container sind über ein internes Docker-Bridge-Netzwerk verbunden. Sie können sich gegenseitig über ihre Dienstnamen erreichen (z.B. connector-superoffice kann company-explorer über http://company-explorer:8000 erreichen).
  • Keine speziellen Netzwerkregeln: Es sind keine komplexen internen Firewall-Regeln zwischen den Containern erforderlich. Die Kommunikation innerhalb des Docker-Netzwerks sollte uneingeschränkt möglich sein.

Zusammenfassende Handlungsempfehlung für die IT:

  1. Firewall-Regeln (eingehend): Bitte öffnen Sie die Ports 3000, 2222, 8090, 8003, 8501, 8004, 8002 und 5173 für die Ziel-IP 10.10.81.2.
  2. Firewall-Regeln (ausgehend): Stellen Sie sicher, dass die VM ausgehende HTTPS-Verbindungen (Port 443) zu beliebigen Zielen im Internet aufbauen kann.
  3. Reverse Proxy (Optional, aber empfohlen): Planen Sie die Einrichtung eines Reverse Proxys (z.B. Nginx, Traefik) mit SSL-Zertifikaten für den Zugriff auf die Web-Anwendungen, insbesondere für den Haupt-Port 8090.

Anhang: Migrationsvorschlag der IT

Das Folgende ist der initial vorgeschlagene Migrationsprozess seitens der IT.

# Auf dem Quellsystem (Synology)
cd /volume1/homes/Floke/python
tar czf lead-engine-app.tgz brancheneinstufung/
 
docker images
docker save <image-name>:<tag> > lead-engine-image.tar
 
# Manuelle Übertragung via USB-Stick

# Auf dem Zielsystem (docker1)
docker load < lead-engine-image.tar
mkdir -p /srv/lead-engine
tar xzf lead-engine-app.tgz -C /srv/lead-engine

# Und starten

Empfohlener Migrationsplan (Sicherer Ansatz)

Der Vorschlag der IT ist für einen einzelnen, einfachen Container geeignet, birgt jedoch für diesen komplexen Anwendungs-Stack erhebliche Risiken (Datenverlust, Konfigurationsfehler). Ein sicherer Umzug muss zwingend Code, Konfiguration UND persistente Daten umfassen.

Analyse der Risiken des IT-Vorschlags:

  1. Fokus auf nur einen Container: Der Plan berücksichtigt nur die lead-engine, ignoriert aber die ca. 20 anderen, voneinander abhängigen Dienste (Gitea, Datenbanken, Proxy etc.).
  2. Fehlende persistente Daten (Größtes Risiko): Der Plan sichert nur den Anwendungs-Code. Er ignoriert die Daten-Volumes, was zum Totalverlust aller Git-Repositories, Datenbankinhalte und anderer kritischer Daten führen würde.
  3. Fehlende Orchestrierung: Die docker-compose.yml, das "Gehirn" des Systems, wird ignoriert. Ohne sie ist ein Starten des komplexen Stacks nicht möglich, da alle Netzwerk-Verbindungen, Port-Mappings und Volume-Zuweisungen fehlen.

Der empfohlene, sichere Prozess:

Der korrekte Ansatz ist, das gesamte Projektverzeichnis zu archivieren, welches alle drei Säulen (Code, Konfiguration, Daten) enthält.

Schritt 1: Ein vollständiges Archiv auf dem Quellsystem erstellen Anstatt nur einen Dienst zu sichern, wird das gesamte Projekt-Stammverzeichnis, das alle Docker-Konfigurationen und Daten-Volumes enthält, als einzelnes Archiv (.tar.gz) zusammengefasst.

# Beispielhafter Befehl im übergeordneten Verzeichnis
# Der genaue Pfad und Name muss vor der Ausführung verifiziert werden.
tar czf GTM_ENGINE_MIGRATION_ARCHIVE.tar.gz ./DEIN_PROJEKT_ORDNER/

Dieses Archiv enthält:

  • Den gesamten Quellcode aller Dienste.
  • Die zentrale docker-compose.yml.
  • Alle .env-Dateien mit API-Schlüsseln und Secrets.
  • Alle lokalen Daten-Volumes (z.B. ./postgres:/var/lib/postgresql/data, ./gitea:/data, etc.), die in der docker-compose.yml definiert sind.

Schritt 2: Archiv auf das Zielsystem übertragen Die erstellte Archivdatei (GTM_ENGINE_MIGRATION_ARCHIVE.tar.gz) wird auf die neue VM docker1 übertragen (z.B. via scp oder rsync).

Schritt 3: Auf dem Zielsystem wiederherstellen und starten Auf der neuen VM sind nur zwei Befehle nötig:

# 1. Archiv entpacken
tar xzf GTM_ENGINE_MIGRATION_ARCHIVE.tar.gz

# 2. Den kompletten Stack starten
cd DEIN_PROJEKT_ORDNER/
docker compose up -d

Docker Compose wird die Konfiguration lesen, alle Dienste mit ihren Daten und Netzwerk-Verbindungen korrekt starten und den Zustand des Quellsystems exakt replizieren.