From 885b97d4225a6ab906f56429e8b9356db0756be4 Mon Sep 17 00:00:00 2001 From: Benjamin Admin Date: Fri, 6 Mar 2026 14:33:04 +0100 Subject: [PATCH] feat(infra): Qdrant + MinIO auf externe Hetzner-Services migrieren MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - docker-compose.yml: QDRANT_HOST/PORT → QDRANT_URL (qdrant-dev.breakpilot.ai) + QDRANT_API_KEY - docker-compose.yml: MINIO bp-core-minio → nbg1.your-objectstorage.com (Hetzner) - .env.example: QDRANT_URL + QDRANT_API_KEY ergaenzt, MinIO-Hinweis - architecture-data.ts: PostgreSQL/Qdrant/MinIO auf externe Dienste aktualisiert - PostgreSQL 17 @ 46.225.100.82:54321 (migriert 2026-03-06) - Qdrant Cloud @ qdrant-dev.breakpilot.ai (migriert 2026-03-06) - Hetzner Object Storage @ nbg1.your-objectstorage.com (migriert 2026-03-06) Co-Authored-By: Claude Sonnet 4.6 --- .env.example | 8 ++++ .../app/sdk/architecture/architecture-data.ts | 38 +++++++++---------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/.env.example b/.env.example index 2a7689d..ce20b61 100644 --- a/.env.example +++ b/.env.example @@ -48,3 +48,11 @@ SESSION_TTL_HOURS=24 # SMTP (uses Core Mailpit) SMTP_HOST=bp-core-mailpit SMTP_PORT=1025 + +# Qdrant (externe Instanz — Hetzner/meghshakka) +QDRANT_URL=https://qdrant-dev.breakpilot.ai +QDRANT_API_KEY= + +# MinIO / Object Storage (Hetzner Object Storage) +# MINIO_ENDPOINT, MINIO_ACCESS_KEY, MINIO_SECRET_KEY sind direkt in docker-compose hart kodiert +# (compliance-tts-service: nbg1.your-objectstorage.com) diff --git a/admin-compliance/app/sdk/architecture/architecture-data.ts b/admin-compliance/app/sdk/architecture/architecture-data.ts index 2fefc66..481bcc7 100644 --- a/admin-compliance/app/sdk/architecture/architecture-data.ts +++ b/admin-compliance/app/sdk/architecture/architecture-data.ts @@ -252,12 +252,12 @@ export const ARCH_SERVICES: ArchService[] = [ name: 'PostgreSQL', nameShort: 'PostgreSQL', layer: 'infrastructure', - tech: 'PostgreSQL 16', - port: 5432, + tech: 'PostgreSQL 17', + port: 54321, url: null, - container: 'bp-core-postgres', - description: 'Zentrale Datenbank. Schemas: compliance, core, public. Shared mit breakpilot-core.', - descriptionLong: 'PostgreSQL ist die gemeinsame Datenbank fuer das gesamte BreakPilot-Oekosystem. Das compliance-Schema enthaelt alle Compliance-spezifischen Tabellen, waehrend core und public von breakpilot-core bereitgestellt werden. Der search_path ist auf compliance,core,public konfiguriert, sodass Services transparent auf Schema-uebergreifende Daten zugreifen koennen.', + container: '46.225.100.82:54321 (extern)', + description: 'Externe PostgreSQL-Instanz (Hetzner/meghshakka). Schemas: compliance (51 Tabellen) + public (33 compliance_*-Tabellen). Migriert 2026-03-06.', + descriptionLong: 'Die Compliance-Daten liegen seit 2026-03-06 auf einer dedizierten externen PostgreSQL 17-Instanz bei Hetzner (meghshakka, 46.225.100.82:54321). Das compliance-Schema umfasst 51 Tabellen fuer Risiken, Kontrollen, VVT, DSFA, Einwilligungen, Loeschfristen u.v.m. Weitere 33 compliance_*-Tabellen befinden sich im public-Schema (Tenants, Namespaces, LLM-Policies, Legal Documents etc.). Die Verbindung ist TLS-verschluesselt (sslmode=require). Die lokale bp-core-postgres auf dem Mac Mini wird exklusiv von breakpilot-lehrer (NIBIS-Daten) genutzt.', dbTables: [], ragCollections: [], apiEndpoints: [], @@ -284,12 +284,12 @@ export const ARCH_SERVICES: ArchService[] = [ name: 'Qdrant', nameShort: 'Qdrant', layer: 'infrastructure', - tech: 'Qdrant', - port: 6333, - url: null, - container: 'bp-core-qdrant', - description: 'Vektor-Datenbank fuer RAG-Compliance-Suche. Collections: DSGVO, AI Act, BDSG, TTDSG.', - descriptionLong: 'Qdrant speichert Vektorembeddings von Rechtstexten und Compliance-Dokumenten in thematischen Collections (DSGVO, AI Act, BDSG, TTDSG, Templates). Der AI Compliance SDK nutzt diese fuer semantische Suchen — Nutzer koennen so in natuerlicher Sprache nach relevanten Gesetzespassagen und Compliance-Anforderungen suchen, ohne exakte Suchbegriffe kennen zu muessen.', + tech: 'Qdrant Cloud', + port: 443, + url: 'https://qdrant-dev.breakpilot.ai', + container: 'qdrant-dev.breakpilot.ai (extern)', + description: 'Externe Vektor-Datenbank (Hetzner/meghshakka). RAG-Compliance-Suche. Collections: DSGVO, AI Act, BDSG, TTDSG. Migriert 2026-03-06.', + descriptionLong: 'Qdrant laeuft seit 2026-03-06 als externe Instanz auf qdrant-dev.breakpilot.ai (Hetzner/meghshakka). Es speichert Vektorembeddings von Rechtstexten und Compliance-Dokumenten in thematischen Collections. Der AI Compliance SDK verbindet sich per HTTPS mit API-Key-Authentifizierung. Durch die externe Instanz skaliert der Vektorspeicher unabhaengig vom Mac Mini.', dbTables: [], ragCollections: [ 'bp_dsgvo', 'bp_ai_act', 'bp_bdsg', 'bp_ttdsg', @@ -300,15 +300,15 @@ export const ARCH_SERVICES: ArchService[] = [ }, { id: 'minio', - name: 'MinIO', - nameShort: 'MinIO', + name: 'Hetzner Object Storage', + nameShort: 'Object Storage', layer: 'infrastructure', - tech: 'MinIO', - port: 9000, - url: null, - container: 'bp-core-minio', - description: 'Object Storage fuer TTS-Audio, generierte Videos und Dokument-Uploads.', - descriptionLong: 'MinIO stellt S3-kompatiblen Object Storage bereit und wird von breakpilot-core verwaltet. Der Compliance-Stack nutzt es primaer fuer generierte Schulungsvideos und Audio-Dateien aus dem TTS-Service. Durch die S3-API-Kompatibilitaet koennen Standard-AWS-SDKs fuer den Zugriff verwendet werden.', + tech: 'S3-kompatibel', + port: 443, + url: 'https://nbg1.your-objectstorage.com', + container: 'nbg1.your-objectstorage.com (extern)', + description: 'Externer S3-kompatibler Object Storage (Hetzner Nuernberg). TTS-Audio, generierte Videos. Migriert 2026-03-06.', + descriptionLong: 'Der Object Storage laeuft seit 2026-03-06 auf dem Hetzner-Standort Nuernberg (nbg1.your-objectstorage.com) und ist vollstaendig S3-kompatibel. Der Compliance TTS-Service speichert dort generierte Schulungsvideos und Audio-Dateien. Die Verbindung ist TLS-verschluesselt (MINIO_SECURE=true). Die lokale bp-core-minio-Instanz auf dem Mac Mini wird nicht mehr vom Compliance-Stack genutzt.', dbTables: [], ragCollections: [], apiEndpoints: [],