Dateien
Website/LAUNCH-CHECKLIST.md
Claude Code 2a9bbb312f Vorschau: Online-Schaltung vorbereitet (SEO, Cookie-Consent, Conversion-Tracking, LAUNCH-CHECKLIST)
Vorbereitungen fuer den Tag-X-Switch zur neuen Hauptseite. Schaltung selbst lauft ueber LAUNCH-CHECKLIST.md.

vorschau/index.html:
- Meta-Description, Canonical, Open Graph, Twitter Card, Schema.org Organization
- Cookie-Consent CSS+JS eingebunden (reused von alter Hauptseite, mit Umami-Anbindung)
- Footer um Cookie-Einstellungen-Link und dynamisches Jahr ergaenzt
- noindex/nofollow bleibt bis Tag X drin (Vorschau weiter passwortgeschuetzt)

vorschau/js/app.js:
- Conversion-Tracking: umami.track("contact_modal_open") und umami.track("contact_form_success")

assets/images/og-image.png (NEU):
- 1200x630 Open Graph Vorschaubild, Logo + Tagline auf Navy

datenschutz.html:
- Section 5 NEU: Kontaktformular und Anfragen (Daten, Speicherdauer, Rechtsgrundlage)
- Section 7 NEU: AegisSight Analytics (Umami) - cookielos, IP-anonymisiert, selbstgehostet
- Sections umnummeriert: Newsletter -> 6, Plugins -> 7, KI-Agenten -> 8

lagen/{iran-konflikt,cyberangriffe,deepfakes}/index.html:
- Cookie-Consent CSS+JS eingebunden
- Footer-Navigation auf neue Hauptseite-Anker umgestellt: /#features, /#demos, /#trust, /#contact
- Cookie-Einstellungen-Link im Footer
- Farbgebung der Lagen unveraendert (User-Wunsch)

NEUE inaktive Dateien fuer Tag X (per LAUNCH-CHECKLIST aktiviert):
- sitemap-launch.xml: Hauptseite + 3 Lagen + Impressum + Datenschutz
- robots-launch.txt: Crawler erlaubt, AI-Crawler/Spam-Bots/Archiv-Bots blockiert
- LAUNCH-CHECKLIST.md: vollstaendige Anleitung fuer den Schaltungs-Tag (Backup, Schritte, Smoke-Tests, Rollback)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 11:30:32 +02:00

366 Zeilen
14 KiB
Markdown

# LAUNCH-CHECKLIST — Online-Schaltung der neuen AegisSight-Hauptseite
**Zielgruppe dieser Datei:** Claude (oder ein Mensch) auf einem anderen Rechner, der diese Datei vollständig liest und Schritt für Schritt ausführt. Alle Anweisungen sind so geschrieben, dass keine Eigenentscheidungen nötig sind.
**Auslöser:** Der User sagt sinngemäß "Jo stell online" oder "Schalte die Vorschau live".
**Was passiert:** Die Vorschauseite (`/vorschau/`) wird zur neuen Hauptseite (`/`). Die alte Hauptseite ("Sicherheit Made in Germany") wird in `_archiv/` verschoben. SEO wird aktiviert (robots.txt + sitemap.xml + Entfernung der noindex-Meta-Tags). Cookie-Consent + Umami sind bereits eingebaut.
---
## 0. Voraussetzungen — vor dem Start prüfen
- [ ] **Iran-Lage-Anpassung ist fertig.** Der zuständige Kollege hat die zu langen Iran-Lagen-Texte gekürzt/strukturiert. Sichtcheck: `https://aegis-sight.de/vorschau/` (Passwort: siehe Pass-Manager) → Demos-Karussell → Iran-Karte sollte ähnlich hoch sein wie Cyberangriffe und Deepfakes.
- [ ] **SSH-Zugriff** auf `claude-dev@46.225.225.49` funktioniert.
- [ ] **Git-Push-Rechte** für `https://gitea-undso.aegis-sight.de/AegisSight/Website.git` vorhanden (Token im Remote-URL eingebettet).
- [ ] **User hat ausdrücklich Go gegeben** ("Stell online", "Schalte live", o.ä.).
Wenn ein Punkt nicht erfüllt: NICHT FORTSETZEN, dem User Bescheid geben.
---
## 1. Pre-Flight-Backup (Pflicht!)
Werden auf dem Server (`46.225.225.49`) ausgeführt:
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && git tag pre-launch-$(date +%Y%m%d-%H%M%S) && git push origin --tags'
ssh claude-dev@46.225.225.49 'tar -czf /home/claude-dev/website-snapshot-$(date +%Y%m%d-%H%M%S).tar.gz -C /opt/v2-Docker/aegis-website html'
ssh claude-dev@46.225.225.49 'ls -lh /home/claude-dev/website-snapshot-*.tar.gz | tail -1'
```
Erwartet: Tar-Archiv ~40–60 MB. Git-Tag `pre-launch-YYYYMMDD-HHMMSS` ist gepusht.
**Notiere dir den Git-Tag-Namen** — du brauchst ihn fürs Rollback.
---
## 2. Schaltungs-Schritte (in genau dieser Reihenfolge)
Alle Pfade relativ zu `/opt/v2-Docker/aegis-website/html/`. Alle Commands per `ssh claude-dev@46.225.225.49 '...'` ausführen.
### 2.1 Archiv-Verzeichnis vorbereiten
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && mkdir -p _archiv'
```
### 2.2 Alte Hauptseite-Files in `_archiv/` verschieben
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
mv index.html _archiv/old-index.html && \
cp -r css _archiv/old-css && \
cp -r js _archiv/old-js && \
mv robots.txt _archiv/old-robots.txt && \
mv assets/videos/AFv6.mp4 _archiv/ 2>/dev/null; \
mv assets/videos/hero-code-abstract.mp4 _archiv/ 2>/dev/null; \
mv assets/videos/hero-data-flow.mp4 _archiv/ 2>/dev/null; \
mv assets/videos/hero-network-viz.mp4 _archiv/ 2>/dev/null; \
ls -la _archiv/'
```
**Wichtig:** `css` und `js` werden mit `cp -r` (kopiert, NICHT verschoben), weil die Lagen-Seiten weiterhin `/js/config.js`, `/js/translations.js`, `/js/mobile-nav.js` aus dem alten /js/-Ordner brauchen. Die alten /css/-Stylesheets brauchen die Lagen ebenfalls (`/css/main.css`, `/css/fonts.css`, `/css/mobile.css`).
### 2.3 Neue Vorschau-Files an Hauptseite-Position kopieren
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
cp vorschau/index.html index.html && \
cp vorschau/css/style.css css/vorschau-style.css && \
cp vorschau/js/app.js js/vorschau-app.js && \
mkdir -p assets/videos/vorschau-hero && \
cp vorschau/videos/* assets/videos/vorschau-hero/ && \
ls -la index.html css/vorschau-style.css js/vorschau-app.js assets/videos/vorschau-hero/'
```
**Begründung:** Die Vorschau-CSS heißt `style.css` und liegt unter `vorschau/css/`. Wenn wir sie nach `/css/style.css` packen, würden wir die alte Hauptseite-CSS überschreiben (die für Lagen-Seiten gebraucht wird, falls dort references existieren). Daher: eindeutige Namen `vorschau-style.css` und `vorschau-app.js`.
### 2.4 Pfade in der neuen `index.html` anpassen
Die Vorschau-`index.html` referenziert relativ:
- `<link rel="stylesheet" href="css/style.css">` → muss zu `css/vorschau-style.css`
- `<script src="js/app.js"></script>` → muss zu `js/vorschau-app.js`
- `videos/hero-slide-X-monitoring.mp4` → muss zu `assets/videos/vorschau-hero/hero-slide-X-monitoring.mp4`
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
sed -i "s|href=\"css/style.css\"|href=\"/css/vorschau-style.css\"|g" index.html && \
sed -i "s|src=\"js/app.js\"|src=\"/js/vorschau-app.js\"|g" index.html && \
sed -i "s|src=\"videos/hero-slide-|src=\"/assets/videos/vorschau-hero/hero-slide-|g" index.html && \
grep -E "(vorschau-style|vorschau-app|vorschau-hero)" index.html | head -10'
```
Erwartet: 7 Treffer (1× CSS, 1× JS, 5× Videos).
### 2.5 Passwort-Gate aus `index.html` entfernen
Folgenden Block ersatzlos löschen — es sind drei zusammenhängende Bereiche:
1. `<!-- Password Gate -->` Kommentar + dahinterliegender `<style>`-Block
2. `<div id="login-gate">...</div>`
3. `<script>` mit `var PW_HASH=...` etc.
Sed-Lösung (einzeilig):
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
python3 -c "
import re
with open(\"index.html\") as f: c = f.read()
# Entferne den kompletten Block von '<!-- Password Gate -->' bis nach dem login-gate-Script
c = re.sub(r'<!-- Password Gate -->.*?if\(getCookie.*?</script>', '', c, count=1, flags=re.DOTALL)
with open(\"index.html\", \"w\") as f: f.write(c)
print(\"Passwort-Gate entfernt\")
"'
```
Verifikation:
```bash
ssh claude-dev@46.225.225.49 'grep -c "PW_HASH\|login-gate" /opt/v2-Docker/aegis-website/html/index.html'
```
Erwartet: `0`
### 2.6 noindex/nofollow-Meta-Tags entfernen
In `index.html` und in den drei Lagen-Seiten:
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
for f in index.html lagen/iran-konflikt/index.html lagen/cyberangriffe/index.html lagen/deepfakes/index.html; do \
sed -i "/<meta name=\"robots\" content=\"noindex/d" "$f"; \
done && \
echo "--- Verbliebene noindex-Tags (sollte 0 sein):"; \
grep -c noindex index.html lagen/*/index.html'
```
Erwartet: Alle Dateien zeigen `0`.
### 2.7 robots.txt aktivieren (Crawler erlaubt)
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
mv robots-launch.txt robots.txt && \
head -10 robots.txt'
```
Erwartet: erste Zeilen zeigen `Allow: /` und `Sitemap:` Verweis.
### 2.8 sitemap.xml aktivieren
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
mv sitemap-launch.xml sitemap.xml && \
head -5 sitemap.xml'
```
### 2.9 Vorschau-Verzeichnis löschen
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
rm -rf vorschau && \
ls -d vorschau 2>&1 | tail -1'
```
Erwartet: `ls: cannot access 'vorschau': No such file or directory`
### 2.10 `.bak.*`-Dateien aufräumen (optional)
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
find . -name "*.bak.*" -type f -delete && \
find . -name "*.bak.*" -type f | wc -l'
```
Erwartet: `0`
### 2.11 Git-Commit + Push
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
git add -A && \
git status --short | head -30'
```
Status prüfen — sollte zeigen:
- `D index.html` (alte gelöscht), `?? index.html` (neue erscheint via add) → wird als "renamed" oder M erkannt
- Diverse Dateien in `_archiv/` neu
- `vorschau/` komplett gelöscht
- `robots.txt`, `sitemap.xml` erscheinen oder werden modifiziert
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
git commit -m "Online-Schaltung: Vorschau ist die neue Hauptseite
- Vorschau-Inhalt aus /vorschau/ nach /index.html, /css/vorschau-style.css, /js/vorschau-app.js, /assets/videos/vorschau-hero/ verschoben
- Alte Hauptseite (Sicherheit Made in Germany) in /_archiv/ archiviert
- Passwort-Gate entfernt
- robots.txt: Crawler erlaubt (außer AI-Crawler), Sitemap-Verweis aktiviert
- sitemap.xml aktiviert (Hauptseite, 3 Lagen, Impressum, Datenschutz)
- noindex/nofollow Meta-Tags aus Hauptseite und Lagen entfernt
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>" && \
git push origin main 2>&1 | tail -5'
```
---
## 3. Smoke-Tests (sofort nach Push)
Jeden Test einzeln ausführen, erwartete Antwort daneben prüfen:
```bash
# Hauptseite läuft:
curl -sI https://aegis-sight.de/ | head -1
# Erwartet: HTTP/1.1 200 OK
# Title ist da:
curl -s https://aegis-sight.de/ | grep -c '<title>AegisSight Monitor'
# Erwartet: 1
# noindex ist WEG:
curl -s https://aegis-sight.de/ | grep -c 'noindex'
# Erwartet: 0
# Passwort-Gate ist WEG:
curl -s https://aegis-sight.de/ | grep -c 'PW_HASH\|login-gate'
# Erwartet: 0
# robots.txt erlaubt Crawling:
curl -s https://aegis-sight.de/robots.txt | grep -c '^Allow:'
# Erwartet: ≥1
# sitemap.xml ist da:
curl -sI https://aegis-sight.de/sitemap.xml | head -1
# Erwartet: HTTP/1.1 200 OK
# Vorschau ist 404:
curl -sI https://aegis-sight.de/vorschau/ | head -1
# Erwartet: HTTP/1.1 404 Not Found
# Lagen erreichbar:
curl -sI https://aegis-sight.de/lagen/iran-konflikt/ | head -1
# Erwartet: HTTP/1.1 200 OK
curl -sI https://aegis-sight.de/lagen/cyberangriffe/ | head -1
# Erwartet: HTTP/1.1 200 OK
curl -sI https://aegis-sight.de/lagen/deepfakes/ | head -1
# Erwartet: HTTP/1.1 200 OK
# Cookie-Consent Asset erreichbar:
curl -sI https://aegis-sight.de/cookie-consent.js | head -1
# Erwartet: HTTP/1.1 200 OK
# Impressum + Datenschutz:
curl -sI https://aegis-sight.de/impressum.html | head -1
curl -sI https://aegis-sight.de/datenschutz.html | head -1
# Erwartet: beide HTTP/1.1 200 OK
# OG-Image:
curl -sI https://aegis-sight.de/assets/images/og-image.png | head -1
# Erwartet: HTTP/1.1 200 OK
```
Wenn ALLE Smoke-Tests grün: **Sage dem User Bescheid, dass die Live-Schaltung erfolgreich war**, und bitte um manuelle Verifikation im Browser (Hard-Reload Strg+F5):
- Layout korrekt
- Cookie-Banner erscheint
- Kontaktformular funktioniert
- Hero-Videos laufen
- Lagen-Karussell zeigt aktuelle Daten
- Footer hat Cookie-Einstellungen-Link
---
## 4. Notfall-Rollback (falls Smoke-Tests fehlschlagen)
**Variante A — Git-Rollback (bevorzugt):**
```bash
# Den Tag-Namen aus Schritt 1 verwenden (z.B. pre-launch-20260427-093015)
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
git reset --hard pre-launch-YYYYMMDD-HHMMSS && \
git push --force-with-lease origin main && \
git status'
```
**WICHTIG**: `--force-with-lease` ist sicherer als `--force`. Im seltenen Fall, dass jemand parallel committed hat, schlägt es fehl statt Daten zu überschreiben.
**Variante B — Server-Snapshot zurückspielen:**
```bash
ssh claude-dev@46.225.225.49 'tar -xzf /home/claude-dev/website-snapshot-YYYYMMDD-HHMMSS.tar.gz -C /opt/v2-Docker/aegis-website/'
```
**Nach Rollback**: Smoke-Tests erneut laufen lassen — Vorschau sollte wieder unter `/vorschau/` erreichbar sein, Hauptseite zeigt wieder die alte Version.
---
## 5. Manuelle Aufgaben (User/Kollege außerhalb des Skripts)
- **Browser-Test** auf `https://aegis-sight.de/` (Hard-Reload Strg+F5):
- Layout, Hero-Videos, Karussell, Kontaktformular
- Cookie-Banner erscheint, Akzeptieren funktioniert
- Mobile-View testen
- Lagen-Footer-Links funktionieren (z.B. `/#features`, `/#contact`)
- **OG-Image-Preview** testen: URL in WhatsApp/Telegram/LinkedIn einfügen → Vorschaubild sollte erscheinen
- **Eintrag in Search Console / Bing Webmaster:** ENTFÄLLT laut User-Wunsch (eigener Tracking-Pixel via Umami)
---
## 6. Notfall-Wiederherstellung der alten Hauptseite (separater, eigenständiger Block)
Falls jemand die alte Hauptseite ("Sicherheit Made in Germany") jemals wieder sehen/wiederherstellen möchte:
**Option A — aus `_archiv/` zurückkopieren:**
```bash
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
ls _archiv/'
# Zeigt: old-index.html, old-css/, old-js/, old-robots.txt, old-videos
```
Ein einzelner File z.B.:
```bash
ssh claude-dev@46.225.225.49 'cp /opt/v2-Docker/aegis-website/html/_archiv/old-index.html /tmp/old-index.html && head -30 /tmp/old-index.html'
```
**Option B — aus Git-History wiederherstellen (auch wenn `_archiv/` mal gelöscht würde):**
```bash
# Letzten Commit finden, der die alte index.html noch enthielt:
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
git log --all --diff-filter=D --pretty=format:"%H %s" -- index.html | head -5'
# Dann die alte Datei aus diesem Commit zurückholen:
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && \
git show <commit-hash>^:index.html > /tmp/old-index.html'
```
Analog für `css/`, `js/` etc.
---
## 7. Anhang — Was wird wo geändert (Übersicht)
| Pfad | Vor Schaltung | Nach Schaltung |
|---|---|---|
| `/index.html` | "Sicherheit Made in Germany" (alte Hauptseite) | AegisSight Monitor (war Vorschau) |
| `/vorschau/` | passwortgeschützte Vorschau | gelöscht (404) |
| `/css/style.css` (alt) | aktiv (alte Hauptseite) | unter `/_archiv/old-css/style.css` |
| `/css/vorschau-style.css` | nicht existent | aktiv (für neue Hauptseite) |
| `/js/main.js` (alt) | aktiv | unter `/_archiv/old-js/main.js` |
| `/js/vorschau-app.js` | nicht existent | aktiv |
| `/css/main.css`, `/css/fonts.css`, `/css/mobile.css` | aktiv (für Hauptseite + Lagen) | aktiv (weiterhin für Lagen) |
| `/js/config.js`, `/js/translations.js`, `/js/mobile-nav.js` | aktiv | aktiv (für Lagen) |
| `/robots.txt` | blockiert alle Crawler | erlaubt Crawler (außer AI/Spam) |
| `/sitemap.xml` | nicht existent | aktiv |
| `/lagen/*/index.html` | hat noindex/nofollow | wird indexierbar |
| `/cookie-consent.js`, `/cookie-consent.css` | aktiv (auf alter Hauptseite) | aktiv (auf neuer Hauptseite + Lagen) |
| `/assets/images/og-image.png` | bereits vorhanden | weiterhin vorhanden |
| `/datenschutz.html` | bereits erweitert (Kontakt + Umami) | unverändert |
---
**Bei Fragen oder unerwarteten Outputs:** NICHT improvisieren. Dem User die genaue Fehlermeldung melden und Anweisung abwarten.