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.
This commit is contained in:
2026-03-05 15:26:58 +00:00
parent 48ded34055
commit 08df678f6c

View File

@@ -59,3 +59,72 @@ Die VM muss in der Lage sein, ausgehende Verbindungen zu den folgenden externen
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.
```bash
# 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.
```bash
# 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:
```bash
# 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.