Doku: CLAUDE.md auf aktuellen Stand der Hauptseite gebracht
- /vorschau/ entfernt (alte Vorab-Produktseite, durch index.html mit Hero-Slider und Live-Demos ersetzt) - STRUCTURE: aktive vs. legacy CSS/JS getrennt, videos/, downloads/, insights/, accountforger-video.html ergaenzt - Lagen: cyberangriffe und deepfakes binden Lagebild-Assets aus iran-konflikt ein - SERVICES: sync-lagebild und insights ergaenzt - DEPLOYMENT: Cache-/Auth-Besonderheiten dokumentiert
Dieser Commit ist enthalten in:
217
CLAUDE.md
217
CLAUDE.md
@@ -2,142 +2,152 @@
|
||||
|
||||
RELATED_DOCS:
|
||||
COOKIE_CONSENT_IMPLEMENTATION.md: "Cookie-Banner Implementierung, GDPR, Testing"
|
||||
DATENSCHUTZ_ANALYTICS.md: "Textbausteine fuer Datenschutzerklaerung"
|
||||
PROFESSIONAL_TOOLBOX_CONTENT.md: "Backup-HTML fuer entfernte Produktkarte"
|
||||
VIDEO_UPLOAD_INSTRUCTIONS.md: "Anleitung fuer manuelle Video-Uploads (Git-Limit)"
|
||||
DATENSCHUTZ_ANALYTICS.md: "Textbausteine für Datenschutzerklärung"
|
||||
PROFESSIONAL_TOOLBOX_CONTENT.md: "Backup-HTML für entfernte Produktkarte"
|
||||
VIDEO_UPLOAD_INSTRUCTIONS.md: "Anleitung für manuelle Video-Uploads (Git-Limit)"
|
||||
LAUNCH-CHECKLIST.md: "Checkliste für den Launch der überarbeiteten Hauptseite"
|
||||
|
||||
PROJECT: Website
|
||||
STATUS: PRODUCTION
|
||||
URL: https://aegis-sight.de
|
||||
CONTAINER: aegis-website-nginx
|
||||
CONTAINER: aegis-website-nginx (+ aegis-php-fpm für /insights/)
|
||||
|
||||
COMPANY:
|
||||
name: AegisSight UG (haftungsbeschraenkt)
|
||||
name: AegisSight UG (haftungsbeschränkt)
|
||||
domain: aegis-sight.de
|
||||
email: info@aegis-sight.de
|
||||
|
||||
TECHNOLOGY:
|
||||
type: Static Website
|
||||
type: Static Website (kein Build-Step)
|
||||
build_process: NONE
|
||||
deployment: Docker/nginx
|
||||
deployment: Docker (nginx:alpine für statische Files, PHP-FPM für /insights/)
|
||||
|
||||
frontend:
|
||||
- HTML5
|
||||
- CSS3 (modular)
|
||||
- JavaScript ES6+
|
||||
- JavaScript ES6+ (kein Framework)
|
||||
- SVG
|
||||
- Leaflet 1.9.4 + MarkerCluster (CDN, für Lagebild-Karten)
|
||||
|
||||
features:
|
||||
- multi_language: [DE, EN]
|
||||
- responsive: mobile-first
|
||||
- video_backgrounds: true
|
||||
- cookie_consent: GDPR-compliant
|
||||
- hero_video_slider: 5 Slides auf der Startseite (Auto-Play mit Endcard, manuelle Navigation)
|
||||
- 3d_carousel: Lagen-Showcase auf der Hauptseite, gekoppelt an Leaflet-Karte
|
||||
- live_data: /lagen/{thema}/data/current.json (alle 5 min synchronisiert)
|
||||
- cookie_consent: GDPR-konform
|
||||
- security_headers: enabled
|
||||
|
||||
STRUCTURE:
|
||||
root_files:
|
||||
- index.html: Hauptseite (DE)
|
||||
- index.html: Hauptseite (DE) - Hero-Slider, Features, Problem, Workflow, Demos, Kontakt, Trust
|
||||
- impressum.html: Impressum (DE)
|
||||
- datenschutz.html: Datenschutz (DE)
|
||||
- accountforger-video.html: Produkt-Demo
|
||||
- robots.txt: SEO-Konfiguration
|
||||
- sitemap-launch.xml: Sitemap mit hreflang-Alternativen
|
||||
- cookie-consent.js: GDPR Cookie-System (liest <html lang> selbststaendig)
|
||||
- cookie-consent.css: Cookie-Banner Styles
|
||||
- accountforger-video.html: Geschützte Produkt-Demo (auth_request gegen Security-Dashboard)
|
||||
- cookie-consent.js, cookie-consent.css: GDPR Cookie-System (liest <html lang> selbständig)
|
||||
- analytics-events.js: Umami-Custom-Events
|
||||
- favicon.svg, de.svg, en.svg, robots.txt, robots-launch.txt, sitemap-launch.xml
|
||||
- LAUNCH-CHECKLIST.md, DATENSCHUTZ_ANALYTICS.md, COOKIE_CONSENT_IMPLEMENTATION.md, PROFESSIONAL_TOOLBOX_CONTENT.md, VIDEO_UPLOAD_INSTRUCTIONS.md: interne Doku
|
||||
|
||||
directories:
|
||||
en:
|
||||
en/:
|
||||
- index.html: Hauptseite (EN)
|
||||
- legal-notice.html: Impressum (EN, Hinweis "German version prevails")
|
||||
- privacy.html: Datenschutz (EN, Hinweis "German version prevails")
|
||||
situations:
|
||||
situations/:
|
||||
- iran-conflict/index.html: Lagebild Iran (EN-Mirror, teilt /lagen/iran-konflikt/data)
|
||||
- cyber-attacks/index.html: Lagebild Cyberangriffe (EN-Mirror, teilt /lagen/cyberangriffe/data)
|
||||
- deepfakes/index.html: Recherche Deepfakes (EN-Mirror, teilt /lagen/deepfakes/data)
|
||||
|
||||
assets:
|
||||
fonts: [Inter, Bebas Neue]
|
||||
images:
|
||||
icons: UI-Icons (SVG)
|
||||
flags: Laenderflaggen
|
||||
logos: "Logo+Schrift_Rechts.svg"
|
||||
videos: "~300MB - Hero-Videos, AFv6.mp4"
|
||||
assets/:
|
||||
fonts/: Inter, Bebas Neue
|
||||
images/: icons (UI-SVG), flags (Länderflaggen), logos (Logo+Schrift_Rechts.svg, AegisSightLogo_NavyGold.svg, og-image.png)
|
||||
videos/AFv6.mp4: AccountForger-Demo, ~93 MB, Git LFS
|
||||
handshake.svg
|
||||
|
||||
css:
|
||||
videos/: Hero-Slider-Videos der Startseite
|
||||
- hero-slide-1-monitoring.mp4: Echtzeit-Monitoring
|
||||
- hero-slide-2-monitoring.mp4: Faktenprüfung
|
||||
- hero-slide-3-monitoring.mp4: KI-gestützte Recherche
|
||||
- hero-slide-4-monitoring.mp4: Globale Quellenabdeckung
|
||||
- hero-slide-5-monitoring.mp4: Flexibel einsetzbar
|
||||
|
||||
css/:
|
||||
aktiv_eingebunden:
|
||||
- main.css: Kern-Styles
|
||||
- animations-enhanced.css: Animationen
|
||||
- style.css: Light-Mode Styles (index, legal pages, /en/)
|
||||
- mobile.css: Mobile Responsive
|
||||
- fonts.css: Typografie
|
||||
- style.css: Light-Mode Styles (index, legal pages, /en/)
|
||||
- lang-switcher.css: Sprachumschalter-Komponente (DE/EN)
|
||||
legacy_nicht_eingebunden:
|
||||
- about-modern.css, animations.css, animations-enhanced.css, products-modern.css, section-transitions.css
|
||||
|
||||
js:
|
||||
- main.js: Einstiegspunkt
|
||||
- components.js: UI-Komponenten
|
||||
- animations.js: Animationssystem
|
||||
- app.js: Hero-Videos, 3D-Karussell, Leaflet-Karte, Live-Daten, Kontaktformular
|
||||
js/:
|
||||
aktiv_eingebunden:
|
||||
- app.js: Hero-Slider, Smooth-Scroll, Mobile-Menü, 3D-Karussell, Leaflet-Karte, Live-Daten, Kontaktformular
|
||||
- config.js: globale Konfiguration
|
||||
- mobile-nav.js: Mobile-Menü-Helfer
|
||||
legacy_nicht_eingebunden:
|
||||
- main.js, components.js, animations.js, animations-enhanced.js, hero-videos.js, legal-pages.js, section-transitions.js
|
||||
|
||||
docs: Rechtliche PDFs
|
||||
docs/: Legacy-PDFs aus IntelSight-Zeit, von der aktuellen Seite nicht mehr verlinkt
|
||||
- datenschutzerklaerung_intelsight_de_de.pdf, impressum_intelsight_de_de.pdf, Sitemap_IntelSight_UG.docx
|
||||
|
||||
lagen:
|
||||
iran-konflikt:
|
||||
- index.html: Lagebild-Seite (Leaflet, Tabs, Timeline)
|
||||
- lagebild.js: Datenladung, Rendering, Interaktionen
|
||||
- lagebild.css: Dark-Theme Styling
|
||||
- data/: current.json + Snapshots (sync alle 5min)
|
||||
downloads/:
|
||||
af-updates/: AccountForger-Update-Pakete (per Token zugänglich)
|
||||
|
||||
vorschau:
|
||||
- index.html: Produktseite AegisSight Monitor (Passwort-Gate)
|
||||
css:
|
||||
- style.css: Light-Mode Design (Navy/Gold Akzente)
|
||||
js:
|
||||
- app.js: Hero-Videos, 3D-Karussell, Leaflet-Karte, Live-Daten, Kontaktformular
|
||||
insights/: PHP-Skripte für /insights/ (Container aegis-php-fpm), Datenablage in insights/data/
|
||||
|
||||
lagen/:
|
||||
iran-konflikt/:
|
||||
- index.html, lagebild.css, lagebild.js, data/{current.json, current_en.json, snapshot-N.json}
|
||||
- HOST der Lagebild-Assets: cyberangriffe und deepfakes binden /lagen/iran-konflikt/lagebild.{css,js} ein
|
||||
cyberangriffe/:
|
||||
- index.html (referenziert /lagen/iran-konflikt/lagebild.{js,css}), data/...
|
||||
deepfakes/:
|
||||
- index.html (referenziert /lagen/iran-konflikt/lagebild.{js,css}), data/...
|
||||
|
||||
PAGES:
|
||||
homepage:
|
||||
sections: [Hero mit Video, Ueber uns, Loesungen, Kontakt]
|
||||
sections:
|
||||
- "Hero: 5-Video-Slider mit Auto-Play, Endcard und manueller Navigation (Pfeile + Dots)"
|
||||
- "Features: Was der Monitor leistet (Echtzeit-Monitoring, Quellenanalyse, Geo, Mehrsprachigkeit, Lagebilder)"
|
||||
- "Problem: Warum manuelle OSINT-Auswertung nicht skaliert"
|
||||
- "Solution/Workflow: 3 Schritte (Erfassen, Analysieren, Berichten)"
|
||||
- "Demos: Live-Stats-Bar + 3D-Karussell (Iran/Cyber/Deepfakes-Cards) + gekoppelte Leaflet-Karte"
|
||||
- "Kontakt-CTA: öffnet Modal mit Kontaktformular"
|
||||
- "Trust: Unser Versprechen (Zusammenarbeit, Made in Germany, Partnerschaft, Nachhaltigkeit)"
|
||||
legal:
|
||||
- /impressum.html bzw. /en/legal-notice.html
|
||||
- /datenschutz.html bzw. /en/privacy.html
|
||||
product:
|
||||
- AccountForger Video-Demo
|
||||
- /accountforger-video.html: AccountForger Video-Demo, Cookie-/Token-geschützt über Security-Dashboard
|
||||
lagen:
|
||||
url_struktur:
|
||||
de: /lagen/{thema}/
|
||||
en: /en/situations/{slug}/ (slug ist die englische URL-Variante)
|
||||
en: /en/situations/{slug}/
|
||||
slug_mapping:
|
||||
iran-konflikt: iran-conflict
|
||||
cyberangriffe: cyber-attacks
|
||||
deepfakes: deepfakes
|
||||
daten_freigabe: |
|
||||
EN-Mirror-Seiten setzen window.LAGEBILD_DATA_BASE auf den DE-Pfad,
|
||||
damit beide Sprachvarianten die gleichen JSON-Daten laden. Das
|
||||
lagebild.js liest curLang() aus <html lang> und schaltet UI-Strings
|
||||
automatisch um (lang.de / lang.en Dictionary).
|
||||
damit beide Sprachvarianten die gleichen JSON-Daten laden. lagebild.js
|
||||
liest curLang() aus <html lang> und schaltet UI-Strings automatisch um
|
||||
(lang.de / lang.en Dictionary).
|
||||
redirect: /lagebild/ -> 301 -> /lagen/iran-konflikt/
|
||||
aktiv:
|
||||
- iran-konflikt / iran-conflict: Live-Lagebild Irankonflikt
|
||||
- cyberangriffe / cyber-attacks: Live-Lagebild Cyberangriffe
|
||||
- deepfakes / deepfakes: Recherche-Briefing Deepfakes
|
||||
vorschau:
|
||||
url: /vorschau/
|
||||
zweck: Produktseite AegisSight Monitor (ersetzt spaeter die Hauptseite)
|
||||
auth: JavaScript SHA-256 Passwort-Gate (kein Benutzername)
|
||||
design: Light-Mode, Navy/Gold Akzente, SVG-Wellen/Diagonale Divider
|
||||
sections: [Hero mit Video (clip-path Chevron), Problem (dark), Workflow 3-Schritte, Live-Stats, 3D-Karussell mit Lagebild-Text, Leaflet-Karte (gekoppelt an Karussell), Faktenprüfung-Statement, Features (5 Cards zentriert), CTA, Unser Versprechen]
|
||||
daten: Fetcht /lagen/iran-konflikt/data/summary.json (~116 KB)
|
||||
karussell: 3D-Perspektive, 3 Cards (Iran live + 2 Platzhalter), Karte wechselt mit
|
||||
karte: Leaflet mit Pulse-Markern, Dark Popups/Legende, gekoppelt an aktive Lage
|
||||
kontaktformular: Popup-Modal (Name, Organisation, E-Mail, Nachricht) -> /api/contact -> SMTP
|
||||
icons: monitor.svg + languages.svg (Lucide) hinzugefuegt
|
||||
- deepfakes / deepfakes: Recherche-Briefing Deepfakes (rechtliche Lage in DE)
|
||||
|
||||
DEVELOPMENT:
|
||||
i18n:
|
||||
ansatz: statische Duplikate (DE unter /, EN unter /en/)
|
||||
sprachumschalter: css/lang-switcher.css
|
||||
pendant_urls: in jeder Seite hardcoded (funktioniert ohne JS)
|
||||
cookie_banner: cookie-consent.js liest <html lang> selbststaendig
|
||||
lagen: lagebild.js liest <html lang> via curLang(); Daten-Pfad ueber
|
||||
cookie_banner: cookie-consent.js liest <html lang> selbständig
|
||||
lagen: lagebild.js liest <html lang> via curLang(); Daten-Pfad über
|
||||
window.LAGEBILD_DATA_BASE pro EN-Mirror-Seite
|
||||
kontaktformular: |
|
||||
Frontend (js/app.js) sendet lang im POST-Body, zeigt Sende- und
|
||||
@@ -145,7 +155,9 @@ DEVELOPMENT:
|
||||
(/opt/v2-Docker/aegis-website/contact-form.py, NICHT im Repo)
|
||||
liest lang und antwortet entsprechend; E-Mail an info@aegis-sight.de
|
||||
bleibt deutsch, mit Hinweis "[EN]" im Betreff bei EN-Anfragen.
|
||||
large_files: "assets/videos/ (~300MB)"
|
||||
large_files:
|
||||
- assets/videos/AFv6.mp4 (~93 MB, Git LFS)
|
||||
- videos/hero-slide-{1..5}-monitoring.mp4
|
||||
design: mobile-first responsive
|
||||
|
||||
SERVICES:
|
||||
@@ -154,15 +166,34 @@ SERVICES:
|
||||
service: aegis-contact.service
|
||||
port: 127.0.0.1:8074
|
||||
nginx: /api/contact -> 127.0.0.1:8074
|
||||
zweck: Kontaktformular-Handler (SMTP an info@aegis-sight.de)
|
||||
zweck: Kontaktformular-Handler (SMTP via IONOS an info@aegis-sight.de)
|
||||
rate_limit: 3 Anfragen pro IP / 10 Min
|
||||
i18n: lang im POST-Body steuert Fehler-/Erfolgsmeldungen, [EN]-Tag im Betreff
|
||||
|
||||
sync-lagebild:
|
||||
script: /opt/v2-Docker/aegis-website/sync-lagebild.py
|
||||
cron: alle 5 Minuten via /home/claude-dev/run-sync-lagebild.sh
|
||||
quelle: https://monitor.aegis-sight.de/api/public (X-API-Key)
|
||||
ziel: /opt/v2-Docker/aegis-website/html/lagen/{slug}/data/
|
||||
übersetzung: claude-haiku-4-5 (Title, Description, Summary, Latest-Developments, Faktenchecks Batches à 30)
|
||||
cache: data/{slug}/translation_cache.json (md5(text) als key)
|
||||
lagen_konfiguriert: iran-konflikt (incident_id 6, legacy_endpoint), deepfakes (55), cyberangriffe (58)
|
||||
|
||||
insights:
|
||||
container: aegis-php-fpm (172.18.0.6)
|
||||
zweck: PHP-Backend für /insights/ (Analytics-Datenablage)
|
||||
volumes: ./insights:/var/www/insights:ro, ./insights/data:/var/www/insights/data:rw
|
||||
|
||||
DEPLOYMENT:
|
||||
container: aegis-website-nginx
|
||||
server: nginx (static files)
|
||||
ssl: enabled
|
||||
security_headers: enabled
|
||||
rate_limiting: configured
|
||||
container: aegis-website-nginx (172.18.0.5)
|
||||
server: nginx:alpine, read-only Filesystem, no-new-privileges, cap_drop ALL
|
||||
ssl: Host-nginx mit Let's Encrypt (Reverse-Proxy auf den Container)
|
||||
security_headers: /etc/nginx/snippets/security-headers.conf
|
||||
rate_limiting: konfiguriert für Kontaktformular und /usage/api/widget/
|
||||
besonderheiten:
|
||||
- "Lagen-JSON: 60 s Browser-Cache mit must-revalidate (ETag-Validierung)"
|
||||
- "/accountforger-video.html + assets/videos/AFv6.mp4: auth_request gegen Security-Dashboard (8050), bei Ablehnung 302 zu /?showAuth=1"
|
||||
- "/analytics-und-so/datenblick.js: verschleierter Pfad gegen Adblocker (proxied auf Umami)"
|
||||
|
||||
CHANGE_LOG:
|
||||
2026-01-08:
|
||||
@@ -172,20 +203,25 @@ CHANGE_LOG:
|
||||
- "Footer: Dynamisches Jahr, AGB entfernt"
|
||||
2026-05-06:
|
||||
- "i18n: Sprachumschalter DE/EN, neue Seiten unter /en/"
|
||||
- "Aufraeumen: js/translations.js, impressum-en.html, datenschutz-en.html entfernt"
|
||||
- "Aufräumen: js/translations.js, impressum-en.html, datenschutz-en.html entfernt"
|
||||
- "data-translate Attribute aus Lagen-Seiten entfernt"
|
||||
- "EN-Lagen-Seiten unter /en/situations/{slug}/, teilen DE-Datenfiles"
|
||||
- "lagebild.js: curLang() liest <html lang>, dataBase()-Helper neu, tote initLangToggle/switchContent entfernt"
|
||||
- "Kontaktformular zweisprachig (Frontend + Backend)"
|
||||
2026-05-10:
|
||||
- "Doku-Cleanup: /vorschau/ entfernt (alte Vorab-Produktseite, längst durch index.html mit Hero-Slider und Live-Demos ersetzt)"
|
||||
- "STRUCTURE: aktive vs. legacy CSS/JS getrennt, videos/, downloads/, insights/, accountforger-video.html, weitere Top-Level-Files ergänzt"
|
||||
- "Lagen-Layout: cyberangriffe und deepfakes binden Lagebild-CSS/JS aus iran-konflikt ein (zentrale Assets)"
|
||||
- "SERVICES: sync-lagebild und insights ergänzt"
|
||||
|
||||
Last-Updated: 2026-05-06
|
||||
Last-Updated: 2026-05-10
|
||||
|
||||
RULES:
|
||||
neue_html_seiten:
|
||||
- "Jede neue HTML-Datei MUSS im <head> folgende Favicon-Tags enthalten:"
|
||||
- "<link rel=\"icon\" type=\"image/svg+xml\" href=\"/favicon.svg\">"
|
||||
- "<link rel=\"apple-touch-icon\" href=\"/assets/images/logos/AegisSightLogo_NavyGold.svg\">"
|
||||
- "Fuer Unterverzeichnisse relative Pfade anpassen, z.B. ../favicon.svg"
|
||||
- "Für Unterverzeichnisse relative Pfade anpassen, z.B. ../favicon.svg"
|
||||
|
||||
# ───────────────────────────────────────────────────────────────────
|
||||
# STAGING-UMGEBUNG
|
||||
@@ -217,19 +253,19 @@ STAGING:
|
||||
|
||||
WORKFLOW_STAGING_TO_LIVE:
|
||||
1_aenderung_in_develop: |
|
||||
cd /opt/v2-Docker/aegis-website-staging/html
|
||||
# NIE direkt im Live-Verzeichnis arbeiten -> tmp-Klon nutzen
|
||||
git clone <repo> /tmp/website-work && cd /tmp/website-work
|
||||
git checkout develop
|
||||
# Aenderung machen
|
||||
# Änderung machen
|
||||
git add . && git commit -m ...
|
||||
git push origin develop
|
||||
2_staging_aktualisieren_manuell: |
|
||||
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website-staging/html && git pull'
|
||||
# Kein Container-Reload noetig (statische Files)
|
||||
2_staging_aktualisieren_automatisch: |
|
||||
# Auto-Deploy pullt automatisch -> kein manueller git pull nötig
|
||||
# (Webhook -> /__deploy mit HMAC -> aegis-staging-deploy.service)
|
||||
3_in_browser_pruefen: https://staging.aegis-sight.de
|
||||
4_promote_zu_live: |
|
||||
# Auf Gitea: Pull Request develop -> main, dann mergen
|
||||
# Danach auf Live-Server pullen:
|
||||
ssh claude-dev@46.225.225.49 'cd /opt/v2-Docker/aegis-website/html && git pull'
|
||||
# Auf deploy.aegis-sight.de "Promote -> Live" klicken
|
||||
# Erstellt PR develop->main, mergt ihn auto, triggert Live-Deploy via HMAC
|
||||
|
||||
# ───────────────────────────────────────────────────────────────────
|
||||
# AUTO-DEPLOY + PROMOTE-UI
|
||||
@@ -238,7 +274,7 @@ WORKFLOW_STAGING_TO_LIVE:
|
||||
AUTO_DEPLOY:
|
||||
prinzip: |
|
||||
Gitea-Webhook bei Push auf develop -> Listener-Service auf dem Server pullt
|
||||
automatisch + restartet ggf. den Service. Kein manueller git pull mehr noetig.
|
||||
automatisch + restartet ggf. den Service. Kein manueller git pull mehr nötig.
|
||||
|
||||
listener_service:
|
||||
pfad: /opt/v2-Docker/aegis-staging-deploy
|
||||
@@ -248,8 +284,8 @@ AUTO_DEPLOY:
|
||||
staging: "develop -> /opt/v2-Docker/aegis-website-staging/html"
|
||||
live: "main -> /opt/v2-Docker/aegis-website/html"
|
||||
endpoints:
|
||||
"POST /__deploy": "staging (HMAC ueber Gitea-Webhook)"
|
||||
"POST /__deploy/live": "live (HMAC ueber Promote-UI)"
|
||||
"POST /__deploy": "staging (HMAC über Gitea-Webhook)"
|
||||
"POST /__deploy/live": "live (HMAC über Promote-UI)"
|
||||
secrets: in /opt/v2-Docker/aegis-staging-deploy/.env (nicht im Repo)
|
||||
|
||||
gitea_webhook:
|
||||
@@ -264,14 +300,17 @@ PROMOTE_UI:
|
||||
port: 127.0.0.1:8097
|
||||
zugriff: Magic-Link-Login an info@aegis-sight.de (eigener Cookie deploy.aegis-sight.de)
|
||||
funktion: |
|
||||
Zeigt pro Service (Webseite + Monitor) Live-Stand vs. Staging-Stand.
|
||||
Zeigt pro Service (Webseite + Monitor + Verwaltung + Tenders) Live- vs. Staging-Stand.
|
||||
Promote-Button erstellt Gitea-PR develop->main, mergt ihn auto, und triggert
|
||||
den Live-Deploy via HMAC-signed Webhook am Listener-Service.
|
||||
Release-Notes-Vorschlag (Sonnet) editierbar oder leer lassen.
|
||||
|
||||
WORKFLOW_KOMPLETT:
|
||||
1_entwickeln: |
|
||||
# NIE direkt im Live-Verzeichnis arbeiten!
|
||||
# Klon in /tmp/<service>-work/ oder lokal nutzen
|
||||
git checkout develop
|
||||
# Aenderung
|
||||
# Änderung
|
||||
git add . && git commit && git push origin develop
|
||||
# -> Auto-Deploy pullt in /opt/v2-Docker/aegis-website-staging/html
|
||||
2_pruefen_staging: https://staging.aegis-sight.de/
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren