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>
366 Zeilen
14 KiB
Markdown
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.
|