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>
14 KiB
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.49funktioniert. - Git-Push-Rechte für
https://gitea-undso.aegis-sight.de/AegisSight/Website.gitvorhanden (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:
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
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
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
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 zucss/vorschau-style.css<script src="js/app.js"></script>→ muss zujs/vorschau-app.jsvideos/hero-slide-X-monitoring.mp4→ muss zuassets/videos/vorschau-hero/hero-slide-X-monitoring.mp4
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:
<!-- Password Gate -->Kommentar + dahinterliegender<style>-Block<div id="login-gate">...</div><script>mitvar PW_HASH=...etc.
Sed-Lösung (einzeilig):
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:
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:
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)
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
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
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)
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
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öschtrobots.txt,sitemap.xmlerscheinen oder werden modifiziert
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:
# 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):
# 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:
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:
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.:
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):
# 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.