Zum Hauptinhalt springen

Zurück zu Blueprints

Akzeptiert Infrastruktur

Samstag, 31. Januar 2026

25 min Lesezeit

Entscheidung getroffen am: Samstag, 31. Januar 2026

Infrastruktur-Audit & Architektur-Verbesserungen

Umfassende Analyse der aktuellen Mac Mini Infrastruktur mit detaillierten Verbesserungsvorschlägen für Port-Verteilung, Volumes, Dependencies und Service-Konsolidierung vor der K8s-Migration.

T

Till Schneider

Autor

Executive Summary

Dieses Dokument analysiert den aktuellen Zustand der ManaCore-Infrastruktur auf dem Mac Mini und identifiziert Verbesserungspotentiale vor der geplanten Migration zu einem selbstheilenden K8s-Cluster. Die Analyse umfasst 52 Docker-Container plus 3 native macOS-Services.

Aktueller Infrastruktur-Zustand

Service-Kategorien Übersicht

┌─────────────────────────────────────────────────────────────────────┐
│                    ManaCore Infrastructure                           │
│                      (Mac Mini M4 Pro)                               │
├─────────────────────────────────────────────────────────────────────┤
│                                                                      │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐                  │
│  │ PostgreSQL  │  │    Redis    │  │    MinIO    │                  │
│  │    :5432    │  │    :6379    │  │ :9000/:9001 │                  │
│  └──────┬──────┘  └──────┬──────┘  └──────┬──────┘                  │
│         │                │                │                          │
│         └────────────────┼────────────────┘                          │
│                          ▼                                           │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │                    mana-core-auth (:3001)                      │  │
│  │                 (Central Authentication)                        │  │
│  └───────────────────────────────────────────────────────────────┘  │
│                          │                                           │
│         ┌────────────────┼────────────────┐                          │
│         ▼                ▼                ▼                          │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────┐                  │
│  │ API Gateway │  │ mana-search │  │  App Suite  │                  │
│  │   (:3030)   │  │   (:3021)   │  │ (10 Apps)   │                  │
│  └─────────────┘  └─────────────┘  └─────────────┘                  │
│                                                                      │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │                   Matrix Stack (14 Services)                   │  │
│  │    Synapse │ Element │ 10 Bots │ Custom Web Client             │  │
│  └───────────────────────────────────────────────────────────────┘  │
│                                                                      │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │                 Monitoring & Tools (8 Services)                │  │
│  │  VictoriaMetrics │ Grafana │ Exporters │ Umami │ n8n           │  │
│  └───────────────────────────────────────────────────────────────┘  │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘

Vollständige Service-Inventar

Tier 0: Infrastruktur (3 Services)

ServiceContainerPort(s)VolumeBemerkung
PostgreSQL 16manacore-postgres5432manacore-postgresAlle DBs in einer Instanz
Redis 7manacore-redis6379manacore-redisSession-Cache + Pub/Sub
MinIOmanacore-minio9000, 9001manacore-minioS3-kompatibler Object Storage

Tier 1: Core Auth (1 Service)

ServiceContainerPortDependenciesBemerkung
mana-core-authmana-core-auth3001postgres, redisBetter Auth + EdDSA JWT

Tier 2: Gateway & Suche (3 Services)

ServiceContainerPortDependenciesBemerkung
API Gatewaymana-api-gateway3030auth, search, postgres, redisMonetarisierung
SearXNGmana-searxng(intern 8080)-Meta-Suchmaschine
mana-searchmana-search3021searxng, redisNestJS Search Service

Tier 3: App-Backends (10 Services)

AppContainerPortDatenbankSpezial
Chatchat-backend3002chatOllama-Integration
Presipresi-backend3008presi-
Contactscontacts-backend3015contactsMinIO (Fotos)
Calendarcalendar-backend3016calendar-
Clockclock-backend3017clock-
Todotodo-backend3018todo-
Storagestorage-backend3019storageMinIO (Dateien)
NutriPhinutriphi-backend3023nutriphiGemini API
SkillTreeskilltree-backend3024skilltree-

Tier 4: Web-Frontends (11 Services)

AppContainerPortBackend-Port
ManaCore Dashboardmanacore-web5173-
Chatchat-web30003002
Presipresi-web51783008
Matrixmatrix-web51808008
Contactscontacts-web51843015
Storagestorage-web51853019
Calendarcalendar-web51863016
Clockclock-web51873017
Todotodo-web51883018
NutriPhinutriphi-web51893023
LLM Playgroundllm-playground5190-
SkillTreeskilltree-web51953024

Tier 5: Matrix Stack (14 Services)

ServiceContainerPortFunktion
Synapsemanacore-synapse8008, 9002Homeserver
Element Webmanacore-element8087Standard Client
Matrix Webmanacore-matrix-web5180Custom SvelteKit Client
Mana Botmanacore-matrix-mana-bot3310Unified Gateway Bot
Ollama Botmanacore-matrix-ollama-bot3311AI Chat
Stats Botmanacore-matrix-stats-bot3312Analytics
Project Doc Botmanacore-matrix-project-doc-bot3313Dokumentation
Todo Botmanacore-matrix-todo-bot3314Task Management
Calendar Botmanacore-matrix-calendar-bot3315Termine
NutriPhi Botmanacore-matrix-nutriphi-bot3316Nutrition
Zitare Botmanacore-matrix-zitare-bot3317Quotes
Clock Botmanacore-matrix-clock-bot3318Time Tracking
TTS Botmanacore-matrix-tts-bot3033Text-to-Speech

Tier 6: Monitoring & Tools (8 Services)

ServiceContainerPortFunktion
VictoriaMetricsmanacore-victoriametrics8428Metriken-DB
Grafanamanacore-grafana3100Dashboards
Pushgatewaymanacore-pushgateway9091Batch-Metriken
Node Exportermanacore-node-exporter9100Host-Metriken
cAdvisormanacore-cadvisor8080Container-Metriken
Postgres Exportermanacore-postgres-exporter9187DB-Metriken
Redis Exportermanacore-redis-exporter9121Cache-Metriken
Umamimanacore-umami3200Web Analytics
n8nmanacore-n8n5678Workflow Automation
Telegram Stats Botmanacore-telegram-stats-bot3300Telegram Reports

Native macOS Services (3 Services)

ServicePortZugriffBemerkung
Ollama11434host.docker.internalGemma 3 4B, LLM Runtime
mana-image-gen3025host.docker.internalStable Diffusion
mana-tts3022host.docker.internalKokoro TTS
mana-stt3020host.docker.internalWhisper STT

Auto-Update (1 Service)

ServiceContainerFunktion
Watchtowermanacore-watchtowerAuto-Update + Telegram Notify

Identifizierte Probleme

1. Port-Chaos

Die aktuelle Port-Verteilung folgt keinem erkennbaren Schema:

AKTUELL (Chaotisch):
┌──────────────────────────────────────────────────────────────────┐
│ 3000 chat-web          │ Web Frontend im Backend-Bereich!        │
│ 3001 mana-core-auth    │ OK                                      │
│ 3002 chat-backend      │ OK                                      │
│ 3003-3007 LÜCKE        │ Verschwendet                            │
│ 3008 presi-backend     │ OK                                      │
│ 3009-3014 LÜCKE        │ Verschwendet                            │
│ 3015-3019 Backends     │ OK                                      │
│ 3020-3022 AI Services  │ OK (nativ)                              │
│ 3023-3024 Backends     │ OK                                      │
│ 3025 mana-image-gen    │ OK (nativ)                              │
│ 3026-3029 LÜCKE        │                                         │
│ 3030 api-gateway       │ OK                                      │
│ 3031-3032 LÜCKE        │                                         │
│ 3033 matrix-tts-bot    │ Bot im falschen Bereich!                │
│ 3100 grafana           │ Monitoring im Backend-Bereich!          │
│ 3200 umami             │ Warum 3200?                             │
│ 3300-3301 Telegram     │ Telegram im 33xx Bereich                │
│ 3310-3318 Matrix Bots  │ OK, aber 3033 fehlt!                    │
├──────────────────────────────────────────────────────────────────┤
│ 5173-5195 Web UIs      │ Größtenteils OK, aber Lücken            │
│ 5678 n8n               │ Warum hier?                             │
├──────────────────────────────────────────────────────────────────┤
│ 8008 synapse           │ Matrix Homeserver                       │
│ 8080 cadvisor          │ Konflikt mit SearXNG intern!            │
│ 8087 element-web       │ Random?                                 │
│ 8428 victoriametrics   │ OK                                      │
├──────────────────────────────────────────────────────────────────┤
│ 9000-9001 minio        │ OK                                      │
│ 9002 synapse-metrics   │ Ausweichport wegen MinIO                │
│ 9091 pushgateway       │ OK                                      │
│ 9100 node-exporter     │ OK                                      │
│ 9121 redis-exporter    │ OK                                      │
│ 9187 postgres-exporter │ OK                                      │
└──────────────────────────────────────────────────────────────────┘

Probleme:

  • chat-web auf Port 3000 (sollte bei 51xx sein)
  • grafana auf 3100 (sollte bei 8xxx oder 9xxx sein)
  • matrix-tts-bot auf 3033 (sollte bei 331x sein)
  • Große Lücken verschwenden Adressraum
  • Keine klare Trennung zwischen Service-Typen

2. Inkonsistente Container-Benennung

AKTUELL:
manacore-postgres         ✓ Konsistent
manacore-redis            ✓ Konsistent
mana-core-auth            ✗ Bindestrich-Variante
mana-api-gateway          ✗ Bindestrich-Variante
chat-backend              ✗ Kein Präfix
chat-web                  ✗ Kein Präfix
manacore-matrix-mana-bot  ✓ Konsistent
manacore-synapse          ✓ Konsistent

3. Nicht-optimale Dependencies

Einige Services haben übermäßige Abhängigkeiten:

# AKTUELL: api-gateway wartet auf 4 Services
api-gateway:
  depends_on:
    mana-core-auth: # Notwendig
    mana-search: # Nur für Search-Features
    postgres: # Kann später verbinden
    redis: # Kann später verbinden

4. Duplizierte Bot-Funktionalität

Viele Matrix-Bots teilen ähnlichen Code:

  • matrix-todo-bot und matrix-calendar-bot haben ähnliche Reminder-Logik
  • matrix-nutriphi-bot und matrix-zitare-bot sind Wrapper für Backends
  • matrix-mana-bot sollte theoretisch alle anderen ersetzen

5. Volume-Fragmentierung

# 20 separate Volumes, davon 10 nur für Matrix-Bots:
volumes:
  matrix_mana_bot_data:
  matrix_ollama_bot_data:
  matrix_stats_bot_data:
  matrix_project_doc_bot_data:
  matrix_calendar_bot_data:
  matrix_todo_bot_data:
  matrix_nutriphi_bot_data:
  matrix_zitare_bot_data:
  matrix_clock_bot_data:
  matrix_tts_bot_data:

Verbesserungsvorschläge

1. Neues Port-Schema

Ein strukturiertes Port-Schema für bessere Übersicht:

NEU (Strukturiert):
┌─────────────────────────────────────────────────────────────────────┐
│                        PORT-ALLOCATION-SCHEMA                        │
├─────────────────────────────────────────────────────────────────────┤
│                                                                      │
│  3000-3099: Core Services & Backends                                 │
│  ├── 3001: mana-core-auth         (Auth)                            │
│  ├── 3010: api-gateway            (Gateway)                         │
│  ├── 3020: mana-search            (Search)                          │
│  ├── 3021: mana-stt               (Speech-to-Text)                  │
│  ├── 3022: mana-tts               (Text-to-Speech)                  │
│  ├── 3025: mana-image-gen         (Image Generation)                │
│  ├── 3030: chat-backend                                             │
│  ├── 3031: todo-backend                                             │
│  ├── 3032: calendar-backend                                         │
│  ├── 3033: clock-backend                                            │
│  ├── 3034: contacts-backend                                         │
│  ├── 3035: storage-backend                                          │
│  ├── 3036: presi-backend                                            │
│  ├── 3037: nutriphi-backend                                         │
│  └── 3038: skilltree-backend                                        │
│                                                                      │
│  4000-4099: Matrix Stack                                             │
│  ├── 4000: synapse                (Homeserver)                      │
│  ├── 4001: synapse-metrics                                          │
│  ├── 4010: matrix-mana-bot        (Unified Bot)                     │
│  ├── 4011: matrix-ollama-bot      (AI Chat)                         │
│  ├── 4012: matrix-stats-bot       (Analytics)                       │
│  ├── 4013: matrix-project-doc-bot (Docs)                            │
│  ├── 4080: element-web            (Standard Client)                 │
│  └── 4090: matrix-web             (Custom Client)                   │
│                                                                      │
│  5000-5099: Web Frontends                                            │
│  ├── 5000: manacore-web           (Dashboard)                       │
│  ├── 5010: chat-web                                                 │
│  ├── 5011: todo-web                                                 │
│  ├── 5012: calendar-web                                             │
│  ├── 5013: clock-web                                                │
│  ├── 5014: contacts-web                                             │
│  ├── 5015: storage-web                                              │
│  ├── 5016: presi-web                                                │
│  ├── 5017: nutriphi-web                                             │
│  ├── 5018: skilltree-web                                            │
│  └── 5090: llm-playground                                           │
│                                                                      │
│  6000-6099: Automation & Workflows                                   │
│  ├── 6000: n8n                                                      │
│  ├── 6010: telegram-stats-bot                                       │
│  └── 6011: telegram-ollama-bot                                      │
│                                                                      │
│  8000-8099: Monitoring Dashboards                                    │
│  ├── 8000: grafana                                                  │
│  ├── 8010: umami                                                    │
│  └── 8080: victoriametrics-ui                                       │
│                                                                      │
│  9000-9199: Infrastructure & Exporters                               │
│  ├── 9000: minio-api                                                │
│  ├── 9001: minio-console                                            │
│  ├── 9090: victoriametrics                                          │
│  ├── 9091: pushgateway                                              │
│  ├── 9100: node-exporter                                            │
│  ├── 9121: redis-exporter                                           │
│  └── 9187: postgres-exporter                                        │
│                                                                      │
│  11000+: Native Services (macOS)                                     │
│  └── 11434: ollama                                                  │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘

2. Konsistente Benennung

Container-Namen:

manacore-{category}-{service}

Beispiele:
- manacore-infra-postgres
- manacore-infra-redis
- manacore-core-auth
- manacore-api-gateway
- manacore-app-chat-backend
- manacore-app-chat-web
- manacore-matrix-synapse
- manacore-matrix-bot-mana
- manacore-mon-grafana
- manacore-mon-victoria

Volume-Namen:

manacore-{service}-data

Beispiele:
- manacore-postgres-data
- manacore-redis-data
- manacore-matrix-bots-data  (konsolidiert!)
- manacore-grafana-data

3. Service-Konsolidierung

Matrix-Bots → Unified Bot Architecture:

AKTUELL: 10 separate Bot-Container
┌────────────────────────────────────────────────────────────┐
│ matrix-mana-bot      │ matrix-ollama-bot    │ ...         │
│ matrix-stats-bot     │ matrix-project-doc   │             │
│ matrix-todo-bot      │ matrix-calendar-bot  │             │
│ matrix-nutriphi-bot  │ matrix-zitare-bot    │             │
│ matrix-clock-bot     │ matrix-tts-bot       │             │
└────────────────────────────────────────────────────────────┘

NEU: 3 konsolidierte Bots
┌────────────────────────────────────────────────────────────┐
│                                                            │
│  matrix-mana-bot (Unified)                                 │
│  ├── !mana     → AI Chat (Ollama)                         │
│  ├── !todo     → Task Management                          │
│  ├── !cal      → Calendar                                 │
│  ├── !clock    → Time Tracking                            │
│  ├── !nutri    → Nutrition                                │
│  ├── !zitat    → Quotes                                   │
│  └── !tts      → Text-to-Speech                           │
│                                                            │
│  matrix-stats-bot                                          │
│  └── Scheduled Reports (bleibt separat)                   │
│                                                            │
│  matrix-project-doc-bot                                    │
│  └── RAG + Embeddings (bleibt separat wegen DB)           │
│                                                            │
└────────────────────────────────────────────────────────────┘

Einsparung: 7 Container, 7 Volumes, ~700MB RAM

4. Optimierte Dependencies

# NEU: Lazy Dependencies mit Retry-Logic
services:
  api-gateway:
    depends_on:
      mana-core-auth:
        condition: service_healthy # Kritisch
    environment:
      # Andere Services werden lazy verbunden
      SEARCH_URL: http://mana-search:3020
      DB_RETRY_ATTEMPTS: 5
      DB_RETRY_DELAY: 3000

5. Service-Tiers für Startup-Reihenfolge

# docker-compose.yml mit deploy.order
services:
  postgres:
    deploy:
      order: 1

  redis:
    deploy:
      order: 1

  minio:
    deploy:
      order: 1

  mana-core-auth:
    deploy:
      order: 2

  api-gateway:
    deploy:
      order: 3

  # ... App-Backends
    deploy:
      order: 4

  # ... Web-Frontends
    deploy:
      order: 5

Migration zu Kubernetes

Phase 0: Docker Compose Cleanup (vor K8s)

Diese Verbesserungen sollten vor der K8s-Migration durchgeführt werden:

AufgabePrioritätAufwandAuswirkung
Port-Schema umstellenHoch2hAlle Services
Container-Namen vereinheitlichenMittel1hAlle Services
Matrix-Bots konsolidierenHoch8h7 Container weniger
Volume-Namen vereinheitlichenNiedrig30minCleanup
Dependencies optimierenMittel2hSchnellerer Start

Phase 1: Headscale + K3s (nach Cleanup)

Mit dem neuen Schema ist die Migration zu Kubernetes wesentlich einfacher:

# Kubernetes Namespace-Struktur
namespaces:
  - manacore-infra # postgres, redis, minio
  - manacore-core # auth, gateway, search
  - manacore-apps # chat, todo, calendar, etc.
  - manacore-matrix # synapse, bots, element
  - manacore-monitoring # grafana, victoria, exporters
  - manacore-tools # n8n, telegram-bots

Kubernetes Service-Typen

# Mapping Docker → Kubernetes
┌────────────────────┬─────────────────────────────────┐
│ Docker Compose     │ Kubernetes                      │
├────────────────────┼─────────────────────────────────┤
│ ports: "3001:3001" │ Service (ClusterIP)             │
│ restart: always    │ Deployment + ReplicaSet         │
│ volumes:           │ PersistentVolumeClaim           │
│ depends_on:        │ initContainers + readinessProbe │
│ healthcheck:       │ livenessProbe + readinessProbe  │
│ environment:       │ ConfigMap + Secret              │
└────────────────────┴─────────────────────────────────┘

Ressourcen-Analyse

Aktuelle RAM-Nutzung (geschätzt)

┌────────────────────────────────────────────────────────────┐
│ Service-Kategorie          │ Container │ RAM (geschätzt)  │
├────────────────────────────┼───────────┼──────────────────┤
│ Infrastructure             │     3     │   ~1.5 GB        │
│ Core Services              │     4     │   ~800 MB        │
│ App Backends               │    10     │   ~2.0 GB        │
│ Web Frontends              │    11     │   ~1.1 GB        │
│ Matrix Stack               │    14     │   ~2.8 GB        │
│ Monitoring                 │     8     │   ~1.5 GB        │
├────────────────────────────┼───────────┼──────────────────┤
│ GESAMT Docker              │    50     │   ~9.7 GB        │
├────────────────────────────┼───────────┼──────────────────┤
│ Native Services (Ollama)   │     -     │   ~4.0 GB        │
│ macOS System               │     -     │   ~2.0 GB        │
├────────────────────────────┼───────────┼──────────────────┤
│ GESAMT                     │           │   ~15.7 GB       │
└────────────────────────────────────────────────────────────┘

Nach Konsolidierung (geschätzt)

┌────────────────────────────────────────────────────────────┐
│ Service-Kategorie          │ Container │ RAM (geschätzt)  │
├────────────────────────────┼───────────┼──────────────────┤
│ Infrastructure             │     3     │   ~1.5 GB        │
│ Core Services              │     4     │   ~800 MB        │
│ App Backends               │    10     │   ~2.0 GB        │
│ Web Frontends              │    11     │   ~1.1 GB        │
│ Matrix Stack (konsolidiert)│     7     │   ~1.4 GB        │
│ Monitoring                 │     8     │   ~1.5 GB        │
├────────────────────────────┼───────────┼──────────────────┤
│ GESAMT Docker              │    43     │   ~8.3 GB        │
├────────────────────────────┼───────────┼──────────────────┤
│ EINSPARUNG                 │    -7     │   ~1.4 GB        │
└────────────────────────────────────────────────────────────┘

Nächste Schritte

Sofort (Phase 0)

  1. Port-Mapping-Dokument erstellen - Diese Datei als Referenz
  2. Cloudflare Tunnel-Konfiguration anpassen - Neue Port-Mappings
  3. Matrix-Bots konsolidieren - Code-Merge in matrix-mana-bot

Kurzfristig (Phase 1)

  1. docker-compose.macmini.yml refactoren - Neue Ports + Namen
  2. Schrittweise Migration - Ein Service nach dem anderen
  3. Health-Check-Validierung - Alle Services testen

Mittelfristig (Phase 2)

  1. K8s Manifests erstellen - Basierend auf neuem Schema
  2. Helm Charts entwickeln - Für B2B-Deployment
  3. CI/CD Pipeline anpassen - Neue Container-Namen

Referenzen

Tags

#docker #infrastructure #audit #ports #volumes #dependencies #migration #mac-mini #architecture