Session-Prompt: Dashboard absichern + deployen
Kopiere alles ab hier in eine neue Session (im Verzeichnis ~/source/agentic-ventures/):
Aufgabe
dashboard.agenticventures.de absichern und live schalten. Das Dashboard (~/source/av-cockpit/, Next.js 16) ist fertig gebaut aber noch nie deployed. Die Infrastruktur (S3-Bucket + CloudFront) existiert bereits in AWS, ist aber leer und ungeschuetzt.
Nutze den Cloudflare MCP fuer alle DNS- und Access-Operationen. Der MCP ist konfiguriert (~/.claude.json → cloudflare, OAuth via mcp-remote).
Was bereits erledigt ist
-
ACM-Zertifikat beantragt (us-east-1, fuer CloudFront):
- ARN:
arn:aws:acm:us-east-1:425924867359:certificate/ae71828c-d9d9-4822-b0be-aadc0a882b02 - Status: PENDING_VALIDATION
- Validation-CNAME muss noch in Cloudflare gesetzt werden (siehe Step 1)
- ARN:
-
CloudFront Distribution existiert:
- ID:
E3KFMPWSKO68UU - Domain:
d2g64knwpj5kdp.cloudfront.net - Origins:
av-dashboard-frontend-425924867359.s3.eu-central-1.amazonaws.com+av-dashboard-data-425924867359.s3.eu-central-1.amazonaws.com - Noch KEIN Alternate Domain Name, noch KEIN ACM-Cert zugewiesen
- ID:
-
S3-Bucket
av-dashboard-frontend-425924867359existiert, ist aber leer (nie deployed) -
Kein Cognito — Auth laeuft komplett ueber Cloudflare Access (Zero Trust)
-
Cloudflare Zone:
agenticventures.de, Accountbf395d62cc6a9117564c0712fa9e3ad2, Free Plan. Bestehende Tunnel-Records fuer inference, mcp-calcom, mcp-vf, mcp-whatsapp, pdf, slides, uptime, vf-chat.
Steps — in dieser Reihenfolge
Step 1: ACM-Validation-CNAME in Cloudflare setzen
Nutze den Cloudflare MCP um einen CNAME-Record anzulegen:
- Type: CNAME
- Name:
_25f7a93a9b2e34138efb3c9012164041.dashboard - Target:
_4dc4e1e01a75e918c7c821c9d5b1336d.jkddzztszm.acm-validations.aws. - Proxy: OFF (DNS only — ACM braucht den echten CNAME)
- Comment:
ACM cert validation for dashboard.agenticventures.de
Danach warten bis das Zertifikat validiert ist:
aws acm describe-certificate \
--certificate-arn "arn:aws:acm:us-east-1:425924867359:certificate/ae71828c-d9d9-4822-b0be-aadc0a882b02" \
--region us-east-1 --profile av-production \
--query "Certificate.Status" --output textSollte nach 1-5 Minuten von PENDING_VALIDATION auf ISSUED wechseln.
Step 2: CloudFront mit Custom Domain + ACM-Cert updaten
# Aktuelle Config holen
aws cloudfront get-distribution-config --id E3KFMPWSKO68UU --profile av-production > /tmp/cf-config.json
# ETag merken (noetig fuer Update)
ETAG=$(python3 -c "import json; print(json.load(open('/tmp/cf-config.json'))['ETag'])")
# Config editieren: Aliases + ViewerCertificate anpassen
# Dann via update-distribution zurueckschreibenAenderungen in der DistributionConfig:
Aliases.Quantity→1,Aliases.Items→["dashboard.agenticventures.de"]ViewerCertificate→{ "ACMCertificateArn": "arn:aws:acm:us-east-1:425924867359:certificate/ae71828c-d9d9-4822-b0be-aadc0a882b02", "SSLSupportMethod": "sni-only", "MinimumProtocolVersion": "TLSv1.2_2021", "CloudFrontDefaultCertificate": false }
Step 3: DNS-CNAME fuer Dashboard in Cloudflare setzen
Nutze den Cloudflare MCP:
- Type: CNAME
- Name:
dashboard - Target:
d2g64knwpj5kdp.cloudfront.net - Proxy: ON (orange cloud — damit Cloudflare Access greifen kann)
- Comment:
AV Operations Dashboard — CloudFront origin
Step 4: Cloudflare Access Application anlegen
Nutze den Cloudflare MCP (oder Zero Trust Dashboard unter https://one.dash.cloudflare.com/):
-
Access Application erstellen:
- Name:
AV Dashboard - Domain:
dashboard.agenticventures.de - Type: Self-hosted
- Session Duration: 24h (oder 7 Tage — Marvin ist einziger User)
- Name:
-
Access Policy erstellen:
- Name:
Marvin Only - Action: Allow
- Include Rule: Email =
hello@marvinkuehlmann.com - Identity Provider: Google (One-time PIN als Fallback)
- Name:
Das bedeutet: jeder Zugriff auf dashboard.agenticventures.de wird von Cloudflare abgefangen. Nur nach Google-Login mit hello@marvinkuehlmann.com kommt man durch. Kein Cognito noetig.
Step 5: av-cockpit bauen und deployen
cd ~/source/av-cockpit
npm install
npm run deployDas Script (scripts/deploy.sh) macht:
NEXT_STATIC=1 next build→ Static Export nachout/aws s3 sync out/ s3://av-dashboard-frontend-425924867359/ --delete --profile av-production- CloudFront-Invalidierung
Step 6: Smoke-Test
- Browser:
https://dashboard.agenticventures.de - Erwartung: Cloudflare Access Login-Screen (Google)
- Nach Login: Dashboard /heute mit Vault-Daten
- Pruefen: keine Console-Errors, keine Mixed-Content-Warnings, alle Pages erreichbar
Step 7: Vault-Doku aktualisieren
intern/projekte/projekt-dashboard/_index.md→ status vonplanningaufactive, next_step aktualisierenintern/firma/web-properties.md→dashboard.agenticventures.deeintragen mit Cloudflare-Access-Vermerk
Wichtige Constraints
- Cloudflare Proxy MUSS an sein (orange cloud) fuer den
dashboard-CNAME, sonst greift Access nicht - ACM-Validation-CNAME muss DNS-only sein (grey cloud), sonst validiert AWS nicht
- AWS-Profil:
av-productionfuer alle AWS-Befehle - Keine sensiblen Daten im S3-Bucket-Content — aber trotzdem absichern weil interne Projekt-/Finanz-Daten sichtbar sind
- CloudFront SSL:
TLSv1.2_2021als Minimum,sni-only
Falls Probleme
- ACM validiert nicht: CNAME pruefen (
dig _25f7a93a9b2e34138efb3c9012164041.dashboard.agenticventures.de CNAME). Cloudflare-Proxy darf NICHT an sein fuer diesen Record. - CloudFront 403 nach Deploy: Default Root Object muss
index.htmlsein (ist es bereits). S3 Bucket Policy muss CloudFront OAC erlauben. - Cloudflare Access zeigt nicht: Sicherstellen dass der
dashboard-CNAME proxied ist (orange cloud). Ohne Proxy kein Access. - 502 Bad Gateway: CloudFront-Origin-Config pruefen. SSL-Protokoll zwischen CF-Proxy und CloudFront kann kollidieren — ggf. Cloudflare SSL-Mode auf “Full (strict)” setzen.
Related Vault-Docs
- _index.md — Projekt-Requirements
- runbook.md — Deploy-Runbook
- _index.md — MCP-Uebersicht (Cloudflare MCP)