docs: add comprehensive hardware and tech stack summaries for Zora and Meldestelle
Added detailed hardware specifications for the Minisforum MS-R1 (Zora) and a complete tech stack overview for the Meldestelle project. Included session logs summarizing research findings, AI relevance, and next steps for self-hosted AI model configurations. Consolidated related reference materials for streamlined documentation.
This commit is contained in:
@@ -0,0 +1,358 @@
|
|||||||
|
---
|
||||||
|
type: Reference
|
||||||
|
status: ACTIVE
|
||||||
|
owner: Lead Architect
|
||||||
|
date: 2026-03-07
|
||||||
|
---
|
||||||
|
# Meldestelle — Tech-Stack Zusammenfassung
|
||||||
|
|
||||||
|
> **Zweck:** Vollständige Referenz des eingesetzten Tech-Stacks im Projekt "Meldestelle".
|
||||||
|
> Dient als Basis für Recherchen zu Self-Hosted AI (Codegenerierung, RAG, Agenten).
|
||||||
|
> **Stand:** 07. März 2026
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Überblick
|
||||||
|
|
||||||
|
Das Projekt "Meldestelle" ist eine **Kotlin-first, Cloud-native Microservices-Plattform** für die Verwaltung von Reitsport-Meldungen (FEI / ÖTO). Es kombiniert ein **Kotlin Multiplatform (KMP) Frontend** mit einem **Spring Boot Microservices Backend** auf einer vollständig self-hosted Infrastruktur.
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────────────┐
|
||||||
|
│ Frontend (KMP) │ Backend (Spring Boot / Kotlin JVM) │
|
||||||
|
│ Kotlin 2.3 / Compose │ Java 25 / Spring Boot 3.5.9 │
|
||||||
|
│ JS + WASM (geplant) │ Microservices + API-Gateway │
|
||||||
|
├─────────────────────────────────────────────────────────────────┤
|
||||||
|
│ Infrastruktur (Self-Hosted auf Zora / Proxmox) │
|
||||||
|
│ Keycloak · Consul · Valkey · PostgreSQL · Zipkin │
|
||||||
|
│ Prometheus · Grafana · Caddy · Pangolin-Tunnel │
|
||||||
|
└─────────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Sprachen & Laufzeiten
|
||||||
|
|
||||||
|
| Komponente | Sprache / Runtime | Version |
|
||||||
|
|:------------------|:-------------------------|:------------|
|
||||||
|
| Backend | Kotlin (JVM) | 2.3.0 |
|
||||||
|
| Frontend | Kotlin (KMP / JS) | 2.3.0 |
|
||||||
|
| JVM | Java (Eclipse Temurin) | 25 (EA) |
|
||||||
|
| Build | Gradle (Kotlin DSL) | 9.3.1 |
|
||||||
|
| Plattform | ARM64 (AArch64) | Linux |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Frontend — Kotlin Multiplatform (KMP)
|
||||||
|
|
||||||
|
### 3.1 Core-Framework
|
||||||
|
|
||||||
|
| Bibliothek | Version | Zweck |
|
||||||
|
|:------------------------------|:----------|:-----------------------------------|
|
||||||
|
| Kotlin Multiplatform | 2.3.0 | Cross-Platform-Basis (JS + WASM) |
|
||||||
|
| Compose Multiplatform | 1.10.0 | UI-Framework (Deklarativ) |
|
||||||
|
| Compose Hot Reload | 1.0.0 | Live-Reload im Dev-Modus |
|
||||||
|
| Koin (DI) | 4.1.1 | Dependency Injection |
|
||||||
|
| Koin Compose | 4.1.1 | DI-Integration für Compose |
|
||||||
|
| Ktor Client | 3.4.0 | HTTP-Client (Multiplatform) |
|
||||||
|
| Kotlin Serialization | 2.3.0 | JSON-Serialisierung |
|
||||||
|
|
||||||
|
### 3.2 Persistenz (Offline-First)
|
||||||
|
|
||||||
|
| Bibliothek | Version | Zweck |
|
||||||
|
|:------------------------------|:----------|:-----------------------------------|
|
||||||
|
| SQLDelight | 2.2.1 | Cross-Platform SQL-Datenbank |
|
||||||
|
| SQLite (WASM) | 3.51.1 | SQLite für Browser/WASM |
|
||||||
|
| SQLite (Native) | 2.6.2 | SQLite für JVM/Desktop |
|
||||||
|
|
||||||
|
### 3.3 Build-Targets
|
||||||
|
|
||||||
|
| Target | Status | Anmerkung |
|
||||||
|
|:--------------|:------------|:-----------------------------------|
|
||||||
|
| KotlinJS | ✅ Aktiv | Primäres Build-Target |
|
||||||
|
| WASM | ⏳ Geplant | Warten auf Alpha-Version |
|
||||||
|
| Desktop (JVM) | ⚙️ Möglich | uiDesktop 1.7.0 vorhanden |
|
||||||
|
|
||||||
|
### 3.4 Modul-Struktur
|
||||||
|
|
||||||
|
```
|
||||||
|
frontend/
|
||||||
|
├── core/
|
||||||
|
│ ├── core-network/ # Ktor HTTP-Client, Auth-Interceptor
|
||||||
|
│ ├── core-ui/ # Design-System, Tokens, Komponenten
|
||||||
|
│ ├── core-domain/ # Shared Domain-Models
|
||||||
|
│ └── core-data/ # Repository-Interfaces
|
||||||
|
├── features/
|
||||||
|
│ ├── ping-feature/ # ✅ Blueprint: MVVM + Repository + DI + Tests
|
||||||
|
│ └── members-feature/ # ⏳ Auskommentiert (nächste Phase)
|
||||||
|
└── shells/
|
||||||
|
└── meldestelle-portal/ # Web-App Shell (Caddy-served)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Backend — Spring Boot Microservices
|
||||||
|
|
||||||
|
### 4.1 Core-Framework
|
||||||
|
|
||||||
|
| Bibliothek | Version | Zweck |
|
||||||
|
|:------------------------------|:----------|:-----------------------------------|
|
||||||
|
| Spring Boot | 3.5.9 | Microservices-Framework |
|
||||||
|
| Spring Cloud | 2025.0.1 | Service Discovery, Config |
|
||||||
|
| Spring Security (OAuth2) | (Boot) | JWT-Validierung, Resource Server |
|
||||||
|
| Spring Data JPA | (Boot) | ORM-Layer |
|
||||||
|
| Spring Data Valkey | 0.2.0 | Cache-Integration (Valkey/Redis) |
|
||||||
|
| Spring WebFlux | (Boot) | Reaktive API (Gateway) |
|
||||||
|
| Kotlin Coroutines | 2.3.0 | Async/Non-blocking |
|
||||||
|
|
||||||
|
### 4.2 Persistenz
|
||||||
|
|
||||||
|
| Bibliothek | Version | Zweck |
|
||||||
|
|:------------------------------|:----------|:-----------------------------------|
|
||||||
|
| PostgreSQL Driver | 42.7.8 | JDBC-Treiber |
|
||||||
|
| Exposed (JetBrains) | 1.0.0 | Kotlin-native SQL DSL |
|
||||||
|
| Flyway | 11.19.1 | Datenbank-Migrationen |
|
||||||
|
| HikariCP | 7.0.2 | Connection Pool |
|
||||||
|
|
||||||
|
> **Strategie (ADR-001):** Hybrid — JPA für einfache CRUD-Entities, Exposed für komplexe Queries und Domain-Logik.
|
||||||
|
|
||||||
|
### 4.3 Caching & Messaging
|
||||||
|
|
||||||
|
| Bibliothek | Version | Zweck |
|
||||||
|
|:------------------------------|:----------|:-----------------------------------|
|
||||||
|
| Lettuce | 6.6.0 | Valkey/Redis-Client (reaktiv) |
|
||||||
|
| Redisson | 4.0.0 | Distributed Locks, Pub/Sub |
|
||||||
|
| Caffeine | 3.2.3 | In-Memory Cache (L1) |
|
||||||
|
| Reactor Kafka | 1.3.23 | Kafka-Client (Phase 3 / Outbox) |
|
||||||
|
|
||||||
|
### 4.4 Observability & Tracing
|
||||||
|
|
||||||
|
| Bibliothek | Version | Zweck |
|
||||||
|
|:------------------------------|:----------|:-----------------------------------|
|
||||||
|
| Micrometer | 1.16.1 | Metriken (Prometheus-Export) |
|
||||||
|
| Micrometer Tracing | 1.6.1 | Distributed Tracing |
|
||||||
|
| Zipkin Reporter | 3.5.1 | Trace-Export zu Zipkin |
|
||||||
|
| Logback | 1.5.25 | Logging |
|
||||||
|
|
||||||
|
### 4.5 Security
|
||||||
|
|
||||||
|
| Bibliothek | Version | Zweck |
|
||||||
|
|:------------------------------|:----------|:-----------------------------------|
|
||||||
|
| Keycloak Admin Client | 26.0.7 | Keycloak-API-Integration |
|
||||||
|
| Spring Security OAuth2 | (Boot) | JWT Resource Server |
|
||||||
|
| Jackson (Kotlin) | 3.0.3 | JSON-Serialisierung |
|
||||||
|
|
||||||
|
### 4.6 API & Dokumentation
|
||||||
|
|
||||||
|
| Bibliothek | Version | Zweck |
|
||||||
|
|:------------------------------|:----------|:-----------------------------------|
|
||||||
|
| Springdoc OpenAPI | 3.0.0 | Swagger / OpenAPI 3.1 |
|
||||||
|
| Jakarta Annotation | 3.0.0 | Jakarta EE Annotations |
|
||||||
|
|
||||||
|
### 4.7 Modul-Struktur
|
||||||
|
|
||||||
|
```
|
||||||
|
backend/
|
||||||
|
├── infrastructure/
|
||||||
|
│ ├── gateway/ # ✅ API-Gateway (Spring Cloud Gateway)
|
||||||
|
│ ├── security/ # ✅ Zentrales OAuth2/JWT-Modul (DRY)
|
||||||
|
│ ├── cache/
|
||||||
|
│ │ ├── cache-api/ # Interface-Abstraktion
|
||||||
|
│ │ └── valkey-impl/ # Valkey-Implementierung
|
||||||
|
│ ├── event-store/
|
||||||
|
│ │ ├── event-store-api/ # Interface-Abstraktion
|
||||||
|
│ │ └── valkey-impl/ # Valkey-Implementierung
|
||||||
|
│ ├── persistence/ # Hybrid JPA + Exposed
|
||||||
|
│ └── messaging/ # Kafka (Phase 3 / Outbox-Pattern)
|
||||||
|
└── services/
|
||||||
|
├── ping/ # ✅ Deployed — Test/Blueprint-Service
|
||||||
|
├── entries/ # ⚙️ Registriert, noch nicht deployed
|
||||||
|
├── events/ # 👻 Ghost Service (nicht registriert)
|
||||||
|
├── horses/ # 👻 Ghost Service (nicht registriert)
|
||||||
|
├── masterdata/ # 👻 Ghost Service (nicht registriert)
|
||||||
|
├── registry/ # 👻 Ghost Service (nicht registriert)
|
||||||
|
├── results/ # 👻 Ghost Service (nicht registriert)
|
||||||
|
└── scheduling/ # 👻 Ghost Service (nicht registriert)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. Infrastruktur-Services (Docker)
|
||||||
|
|
||||||
|
### 5.1 Laufende Services
|
||||||
|
|
||||||
|
| Service | Image / Version | Port(s) | Zweck |
|
||||||
|
|:---------------|:--------------------------|:--------------|:-----------------------------|
|
||||||
|
| PostgreSQL | postgres:16-alpine | 5432 | Primäre Datenbank |
|
||||||
|
| Keycloak | keycloak:26.4 (custom) | 8180, 9000 | IAM / OAuth2 / OIDC |
|
||||||
|
| Valkey | valkey:8-alpine | 6379 | Cache + Event-Store |
|
||||||
|
| Consul | consul:1.21 | 8500, 8600 | Service Discovery + Config |
|
||||||
|
| Zipkin | openzipkin/zipkin:3.5 | 9411 | Distributed Tracing |
|
||||||
|
| Prometheus | prom/prometheus:v3.4 | 9090 | Metriken-Sammlung |
|
||||||
|
| Grafana | grafana/grafana:11.6 | 3000 | Dashboards / Visualisierung |
|
||||||
|
| Caddy | caddy:2.10-alpine | 4000 | Web-App Serving (Frontend) |
|
||||||
|
| API-Gateway | (custom Spring Boot) | 8081 | Zentraler Eintrittspunkt |
|
||||||
|
| Ping-Service | (custom Spring Boot) | 8082 | Test/Blueprint-Service |
|
||||||
|
|
||||||
|
### 5.2 CI/CD & DevOps
|
||||||
|
|
||||||
|
| Tool | Version / Details | Zweck |
|
||||||
|
|:----------------|:--------------------------|:-----------------------------|
|
||||||
|
| Gitea | Self-Hosted (CT 101) | Git-Repository + Registry |
|
||||||
|
| Gitea Actions | (Runner VM 102) | CI/CD-Pipeline |
|
||||||
|
| Docker Buildx | ARM64 (linux/arm64) | Multi-Arch Image Build |
|
||||||
|
| Pangolin | Self-Hosted Tunnel | Reverse Proxy / Extern-Zugang|
|
||||||
|
|
||||||
|
### 5.3 Netzwerk & Routing
|
||||||
|
|
||||||
|
| Subdomain | Intern (Zora) | Zweck |
|
||||||
|
|:-----------------------|:--------------------|:-------------------------|
|
||||||
|
| `git.mo-code.at` | `10.0.0.22:3000` | Gitea |
|
||||||
|
| `api.mo-code.at` | `10.0.0.50:8081` | API-Gateway |
|
||||||
|
| `auth.mo-code.at` | `10.0.0.50:8180` | Keycloak |
|
||||||
|
| `app.mo-code.at` | `10.0.0.50:4000` | Web-App |
|
||||||
|
| `photos.mo-code.at` | `10.0.0.24:2283` | Immich (Fotos) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Code-Qualität & Build-Tools
|
||||||
|
|
||||||
|
| Tool | Version | Zweck |
|
||||||
|
|:------------------|:----------|:-----------------------------------|
|
||||||
|
| Detekt | 1.23.6 | Kotlin Static Analysis |
|
||||||
|
| ktlint | 12.1.1 | Kotlin Code Formatter |
|
||||||
|
| ArchUnit | 1.4.1 | Architektur-Tests (Layer-Regeln) |
|
||||||
|
| Dokka | 2.1.0 | API-Dokumentation (KDoc) |
|
||||||
|
| Ben-Manes Versions| 0.51.0 | Dependency-Update-Check |
|
||||||
|
| KSP | 2.3.4 | Kotlin Symbol Processing |
|
||||||
|
|
||||||
|
### Build-Konfiguration
|
||||||
|
|
||||||
|
```properties
|
||||||
|
# gradle.properties
|
||||||
|
org.gradle.parallel=true
|
||||||
|
org.gradle.caching=true
|
||||||
|
org.gradle.workers.max=8
|
||||||
|
org.gradle.configuration-cache=false # wegen JS-Test Serialisierungsproblem
|
||||||
|
org.gradle.dependency.verification=strict
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Test-Stack
|
||||||
|
|
||||||
|
| Bibliothek | Version | Zweck |
|
||||||
|
|:------------------------------|:----------|:-----------------------------------|
|
||||||
|
| JUnit Jupiter | 5.11.3 | Unit-Tests |
|
||||||
|
| JUnit Platform | 1.11.3 | Test-Runner |
|
||||||
|
| MockK | 1.14.7 | Kotlin Mocking |
|
||||||
|
| AssertJ | 3.27.7 | Fluent Assertions |
|
||||||
|
| Testcontainers | 2.0.3 | Integration-Tests (Docker) |
|
||||||
|
| Testcontainers Keycloak | 4.0.1 | Keycloak-Integration-Tests |
|
||||||
|
| Testcontainers PostgreSQL | 1.21.4 | DB-Integration-Tests |
|
||||||
|
| Testcontainers Kafka | 1.21.4 | Kafka-Integration-Tests |
|
||||||
|
| ArchUnit | 1.4.1 | Architektur-Compliance-Tests |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 8. Architektur-Prinzipien (ADRs)
|
||||||
|
|
||||||
|
| ADR | Entscheidung | Status |
|
||||||
|
|:------|:--------------------------------------------------|:---------|
|
||||||
|
| 0001 | Modulare Architektur (DDD, Clean Architecture) | ✅ Aktiv |
|
||||||
|
| 0003 | Microservices-Architektur | ✅ Aktiv |
|
||||||
|
| 0004 | Event-Driven Communication (Kafka Phase 3) | ✅ Aktiv |
|
||||||
|
| 001 | Backend-Infrastruktur: Hybrid JPA+Exposed, Valkey | ✅ Aktiv |
|
||||||
|
| 0013 | Tech-Stack-Stabilisierung 2026 (Versionen) | ✅ Aktiv |
|
||||||
|
|
||||||
|
**Kern-Prinzipien:**
|
||||||
|
- **Offline-First:** SQLDelight als Cross-Platform-DB, Sync-Mechanismus
|
||||||
|
- **Docs-as-Code:** `/docs` als Single Source of Truth
|
||||||
|
- **DRY-Infrastruktur:** Shared Security/Cache/EventStore-Module
|
||||||
|
- **ARM64-Native:** Alle Images für `linux/arm64` gebaut
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 9. Relevanz für Self-Hosted AI
|
||||||
|
|
||||||
|
### 9.1 Welche AI-Aufgaben entstehen im Projekt?
|
||||||
|
|
||||||
|
| Aufgabe | Häufigkeit | Komplexität |
|
||||||
|
|:---------------------------------|:-----------|:------------|
|
||||||
|
| Kotlin/Spring Boot Code-Completion| Täglich | Mittel |
|
||||||
|
| Compose Multiplatform UI-Code | Täglich | Mittel |
|
||||||
|
| SQL / Exposed DSL Queries | Häufig | Mittel |
|
||||||
|
| Gradle Kotlin DSL Build-Skripte | Gelegentlich| Niedrig |
|
||||||
|
| Docker / YAML Konfigurationen | Gelegentlich| Niedrig |
|
||||||
|
| Architektur-Entscheidungen (ADR) | Selten | Hoch |
|
||||||
|
| Fachlogik FEI/ÖTO Regelwerk | Selten | Sehr hoch |
|
||||||
|
|
||||||
|
### 9.2 Anforderungen an das AI-Modell
|
||||||
|
|
||||||
|
```
|
||||||
|
MUSS:
|
||||||
|
✅ Kotlin (JVM + Multiplatform) — sehr gute Unterstützung
|
||||||
|
✅ Spring Boot / Spring Cloud — sehr gute Unterstützung
|
||||||
|
✅ Compose Multiplatform — gute Unterstützung (neuere Modelle)
|
||||||
|
✅ SQL / PostgreSQL — sehr gute Unterstützung
|
||||||
|
✅ Docker / YAML — sehr gute Unterstützung
|
||||||
|
✅ Deutsch (Fachsprache Reitsport) — für RAG-Dokumente
|
||||||
|
|
||||||
|
NICE-TO-HAVE:
|
||||||
|
⭐ Gradle Kotlin DSL
|
||||||
|
⭐ Keycloak / OAuth2 / OIDC
|
||||||
|
⭐ Microservices-Architektur-Patterns
|
||||||
|
```
|
||||||
|
|
||||||
|
### 9.3 Empfohlene Modelle für diesen Stack
|
||||||
|
|
||||||
|
| Modell | Größe | Stärke | RAM-Bedarf |
|
||||||
|
|:------------------------|:-------|:------------------------------------|:-----------|
|
||||||
|
| `qwen2.5-coder:14b` | 14B | Code (Kotlin, Java, SQL) — Top | ~10 GB |
|
||||||
|
| `deepseek-coder-v2:16b` | 16B | Code-Completion, Refactoring | ~12 GB |
|
||||||
|
| `llama3.1:8b` | 8B | Allgemein + Deutsch, schnell | ~6 GB |
|
||||||
|
| `qwen2.5:32b` | 32B | Architektur, Planung, Fachlogik | ~22 GB |
|
||||||
|
| `codellama:13b` | 13B | Code-Completion (IntelliJ-Plugin) | ~9 GB |
|
||||||
|
|
||||||
|
> **Empfehlung für Zora (64 GB RAM):**
|
||||||
|
> - **Primär:** `qwen2.5-coder:14b` — bester Kotlin/Spring-Support
|
||||||
|
> - **Sekundär:** `qwen2.5:32b` — für Architektur und Fachlogik
|
||||||
|
> - **IntelliJ-Integration:** `codellama:13b` oder `qwen2.5-coder:14b`
|
||||||
|
|
||||||
|
### 9.4 RAG-Dokumente (Priorität)
|
||||||
|
|
||||||
|
Folgende Projekt-Dokumente sind besonders wertvoll als RAG-Kontext:
|
||||||
|
|
||||||
|
```
|
||||||
|
Hohe Priorität:
|
||||||
|
├── docs/01_Architecture/MASTER_ROADMAP_2026_Q1.md
|
||||||
|
├── docs/01_Architecture/adr/ (alle ADRs)
|
||||||
|
├── docs/04_Agents/Playbooks/ (Agenten-Rollen)
|
||||||
|
├── gradle/libs.versions.toml (Versions-SSoT)
|
||||||
|
└── docs/07_Infrastructure/ (Infrastruktur-Referenz)
|
||||||
|
|
||||||
|
Mittlere Priorität:
|
||||||
|
├── docs/05_Backend/ (Backend-Guides)
|
||||||
|
├── docs/06_Frontend/ (Frontend-Guides)
|
||||||
|
└── docs/03_Domain/ (Fachlogik-Konzepte)
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 10. Zusammenfassung
|
||||||
|
|
||||||
|
```
|
||||||
|
TECH-STACK KOMPLEXITÄT
|
||||||
|
──────────────────────────────────────────────────────
|
||||||
|
Sprachen: Kotlin (JVM + KMP/JS)
|
||||||
|
Build: Gradle 9.3.1 + Kotlin DSL + libs.versions.toml
|
||||||
|
Frontend: Compose Multiplatform 1.10 + SQLDelight 2.2 + Koin 4.1
|
||||||
|
Backend: Spring Boot 3.5.9 + Spring Cloud 2025.0.1
|
||||||
|
Persistenz: PostgreSQL 16 + Exposed 1.0 + Flyway 11 + HikariCP 7
|
||||||
|
Cache: Valkey 8 + Lettuce 6.6 + Caffeine 3.2
|
||||||
|
Security: Keycloak 26.4 + Spring Security OAuth2 + JWT
|
||||||
|
Observability: Micrometer 1.16 + Zipkin 3.5 + Prometheus + Grafana 11.6
|
||||||
|
Service Mesh: Consul 1.21 + Spring Cloud Gateway
|
||||||
|
Messaging: Kafka (Phase 3) + Reactor Kafka 1.3
|
||||||
|
CI/CD: Gitea Actions + Docker Buildx (ARM64)
|
||||||
|
Hosting: Proxmox VE 8.4 + Docker Compose + Pangolin-Tunnel
|
||||||
|
```
|
||||||
@@ -0,0 +1,253 @@
|
|||||||
|
---
|
||||||
|
type: Reference
|
||||||
|
status: ACTIVE
|
||||||
|
owner: Lead Architect
|
||||||
|
date: 2026-03-07
|
||||||
|
---
|
||||||
|
# Zora — Hardware & Konfigurations-Zusammenfassung
|
||||||
|
|
||||||
|
> **Zweck:** Vollständige Referenz der Zora-Hardware und deren aktueller Konfiguration.
|
||||||
|
> Dient als Basis für Recherchen zu Self-Hosted AI (Ollama, LLMs, NPU).
|
||||||
|
> **Stand:** 07. März 2026
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 1. Hardware — Minisforum MS-R1
|
||||||
|
|
||||||
|
### 1.1 Gerät
|
||||||
|
|
||||||
|
| Eigenschaft | Wert |
|
||||||
|
|:-------------------|:------------------------------------------|
|
||||||
|
| **Hersteller** | Minisforum |
|
||||||
|
| **Modell** | MS-R1 |
|
||||||
|
| **Markteinführung**| September 2025 |
|
||||||
|
| **Formfaktor** | Mini-PC (196 × 189 × 48 mm, 1,35 kg) |
|
||||||
|
| **Betriebssystem** | Proxmox VE 8.4.10 (Debian-Basis, ARM64) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.2 CPU — CIX P1 (CP8180)
|
||||||
|
|
||||||
|
| Eigenschaft | Wert |
|
||||||
|
|:-------------------|:------------------------------------------|
|
||||||
|
| **Modell** | CIX P1 / CP8180 |
|
||||||
|
| **Architektur** | ARM64 (AArch64) |
|
||||||
|
| **Kerne / Threads**| 12 Cores / 12 Threads |
|
||||||
|
| **Basistakt** | 2,6 GHz |
|
||||||
|
|
||||||
|
#### CPU-Cluster (Tri-Cluster-Architektur)
|
||||||
|
|
||||||
|
```
|
||||||
|
Cores 0– 3 → Cortex-A520 (Efficiency / langsam) ← 4 Kerne
|
||||||
|
Cores 4– 7 → Cortex-A720 (Balanced / mittel) ← 4 Kerne
|
||||||
|
Cores 8–11 → Cortex-X4 (Performance / schnell) ← 4 Kerne
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Bedeutung für AI-Inferenz:**
|
||||||
|
> Die 4 Cortex-X4-Kerne (8–11) sind die leistungsstärksten und sollten für
|
||||||
|
> LLM-Inferenz priorisiert werden. CPU-Governor auf `performance` setzen.
|
||||||
|
> Proxmox-Host behält Kerne 0–1, der AI-Container bekommt Kerne 2–11 (10 Kerne).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.3 GPU — Arm Immortalis-G720 MC10
|
||||||
|
|
||||||
|
| Eigenschaft | Wert |
|
||||||
|
|:-------------------|:------------------------------------------|
|
||||||
|
| **Modell** | Arm Immortalis-G720 MC10 |
|
||||||
|
| **API-Support** | Vulkan 1.3 |
|
||||||
|
| **AI-Nutzung** | ⚠️ Experimentell — Vulkan-Compute möglich |
|
||||||
|
| **Status** | Kein nativer Ollama/llama.cpp-Support |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.4 NPU — CIX P1 integriert
|
||||||
|
|
||||||
|
| Eigenschaft | Wert |
|
||||||
|
|:-------------------|:------------------------------------------|
|
||||||
|
| **Typ** | Integrierte NPU (CIX P1) |
|
||||||
|
| **Leistung** | Spezifikation: nicht öffentlich bekannt |
|
||||||
|
| **AI-Nutzung** | ⚠️ Aktuell kein Ollama/llama.cpp-Support |
|
||||||
|
| **Zukunft** | Potenziell nutzbar via ONNX Runtime / TFLite |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.5 Arbeitsspeicher
|
||||||
|
|
||||||
|
| Eigenschaft | Wert |
|
||||||
|
|:-------------------|:------------------------------------------|
|
||||||
|
| **Typ** | LPDDR5 (Link ECC + Inline ECC) |
|
||||||
|
| **Takt** | 5500 MHz |
|
||||||
|
| **Kapazität** | 64 GB |
|
||||||
|
| **ECC** | ✅ Ja — Link ECC & Inline ECC |
|
||||||
|
|
||||||
|
> **Bedeutung für AI:** 64 GB RAM ermöglicht den Betrieb von Modellen bis 70B
|
||||||
|
> vollständig im Arbeitsspeicher (z.B. `llama3.1:70b-q4` ≈ 40 GB).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.6 Speicher
|
||||||
|
|
||||||
|
| Eigenschaft | Wert |
|
||||||
|
|:-------------------|:------------------------------------------------------|
|
||||||
|
| **Slot** | 1× M.2 2280/22110 NVMe SSD (PCIe 4.0 ×4) |
|
||||||
|
| **Max. Kapazität** | bis 8 TB |
|
||||||
|
| **Erweiterung** | PCIe ×16 Slot (PCIe 4.0 ×8 elektrisch) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.7 Netzwerk & Konnektivität
|
||||||
|
|
||||||
|
| Eigenschaft | Wert |
|
||||||
|
|:-------------------|:------------------------------------------------------|
|
||||||
|
| **LAN** | 2× 10G LAN (RJ45, RTL8127) |
|
||||||
|
| **WLAN** | Ja (integriert) |
|
||||||
|
| **Bluetooth** | Ja (integriert) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.8 Ports & Anschlüsse
|
||||||
|
|
||||||
|
| Port | Anzahl | Spezifikation |
|
||||||
|
|:------------------------------|:-------|:-------------------------------------------|
|
||||||
|
| USB Type-A (USB 3.2 Gen2) | 3× | Hochgeschwindigkeit |
|
||||||
|
| USB Type-A (USB 2.0) | 4× | Standard |
|
||||||
|
| USB Type-C | 2× | Alt DP 1.4, USB 3.2 Gen2, 100W PD-IN, 15W PD-OUT |
|
||||||
|
| HDMI 2.0 | 1× | bis 4K@60Hz |
|
||||||
|
| 10G LAN (RJ45) | 2× | RTL8127 |
|
||||||
|
| 3,5mm Combo-Klinke (4-in-1) | 1× | Audio In/Out |
|
||||||
|
| 40-PIN GPIO | 1× | Erweiterungsschnittstelle |
|
||||||
|
| PCIe ×16 Slot | 1× | PCIe 4.0 ×8 elektrisch |
|
||||||
|
| eDP | 1× | Internes Display-Interface |
|
||||||
|
| UART1 / UART2 / BIOS-Flash | je 1× | Entwickler-/Debug-Schnittstellen |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 1.9 Stromversorgung
|
||||||
|
|
||||||
|
| Eigenschaft | Wert |
|
||||||
|
|:-------------------|:------------------------------------------|
|
||||||
|
| **DC-Eingang** | 19V / 180W |
|
||||||
|
| **USB-C PD** | 20V / 100W |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 2. Software & Hypervisor
|
||||||
|
|
||||||
|
### 2.1 Proxmox VE
|
||||||
|
|
||||||
|
| Eigenschaft | Wert |
|
||||||
|
|:-------------------|:------------------------------------------|
|
||||||
|
| **Version** | Proxmox VE 8.4.10 |
|
||||||
|
| **Node-IP** | `10.0.0.20` |
|
||||||
|
| **Web-UI** | `https://pve.mo-code.at:8006` |
|
||||||
|
| **SSH** | `ssh root@10.0.0.20` |
|
||||||
|
| **Netz-Bridge** | `vmbr0` — Subnetz `10.0.0.0/24` |
|
||||||
|
| **Gateway** | `10.0.0.138` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 3. Virtuelle Maschinen & Container (Ist-Stand)
|
||||||
|
|
||||||
|
| ID | Name | Typ | IP | CPU | RAM | Disk | Zweck |
|
||||||
|
|:----|:------------------|:---------|:--------------|:------|:--------|:--------|:-----------------------------|
|
||||||
|
| 100 | pangolin-client | LXC | `10.0.0.21` | 4C | 512 MiB | 8 GB | Pangolin Tunnel Client |
|
||||||
|
| 101 | gitea | LXC | `10.0.0.22` | 4C | 1 GiB | 20 GB | Gitea Server + Registry |
|
||||||
|
| 102 | gitea-runner | VM (KVM) | `10.0.0.23` | 8C | 16 GiB | 50 GB | CI/CD Runner (ARM64) |
|
||||||
|
| 103 | immich | LXC | `10.0.0.24` | 8C | 10 GiB | 200 GB | Foto-Server |
|
||||||
|
| 110 | meldestelle-host | VM (KVM) | `10.0.0.50` | — | — | — | Docker App-Stack |
|
||||||
|
| 111 | ai-stack | LXC | `10.0.0.60` | 10C | — | — | Ollama + Open WebUI (geplant)|
|
||||||
|
|
||||||
|
### Core-Pinning (Stabilisierung)
|
||||||
|
|
||||||
|
- **VM 102 (gitea-runner)** + **VM 110 (meldestelle-host)**: Gebunden an Kerne 0–7
|
||||||
|
(4× Cortex-X4 + 4× Cortex-A720) für stabile Build- und App-Performance.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 4. Netzwerk & Erreichbarkeit
|
||||||
|
|
||||||
|
### 4.1 Internes Netz (`10.0.0.0/24`)
|
||||||
|
|
||||||
|
| Dienst | Interne IP | Port(s) |
|
||||||
|
|:--------------------|:----------------|:--------------|
|
||||||
|
| Proxmox Web-UI | `10.0.0.20` | `8006` |
|
||||||
|
| Pangolin-Client | `10.0.0.21` | — |
|
||||||
|
| Gitea | `10.0.0.22` | `3000` |
|
||||||
|
| Gitea-Runner | `10.0.0.23` | — |
|
||||||
|
| Immich | `10.0.0.24` | `2283` |
|
||||||
|
| Meldestelle-Host | `10.0.0.50` | `8081`, `8180`, `8500`, `3000`, `9090` |
|
||||||
|
| AI-Stack (geplant) | `10.0.0.60` | `11434`, `3001` |
|
||||||
|
|
||||||
|
### 4.2 Öffentliche Routen via Pangolin-Tunnel
|
||||||
|
|
||||||
|
| Domain | Ziel | Port | Sichtbarkeit |
|
||||||
|
|:------------------------|:----------------|:-------|:---------------------|
|
||||||
|
| `git.mo-code.at` | `10.0.0.22` | `3000` | Öffentlich |
|
||||||
|
| `api.mo-code.at` | `10.0.0.50` | `8081` | Öffentlich |
|
||||||
|
| `auth.mo-code.at` | `10.0.0.50` | `8180` | Öffentlich |
|
||||||
|
| `photos.mo-code.at` | `10.0.0.24` | `2283` | Nur intern / VPN |
|
||||||
|
| `ai.mo-code.at` | `10.0.0.60` | `3001` | Nur intern / VPN |
|
||||||
|
| `pve.mo-code.at` | `10.0.0.20` | `8006` | Nur intern / VPN |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 5. AI-Potenzial — Zusammenfassung für Recherche
|
||||||
|
|
||||||
|
### 5.1 Was ist möglich?
|
||||||
|
|
||||||
|
| Modell-Größe | RAM-Bedarf (Q4) | Machbar auf Zora? | Empfehlung |
|
||||||
|
|:-----------------|:----------------|:------------------|:------------------------------|
|
||||||
|
| 7B / 8B | ~5–6 GB | ✅ Problemlos | Schnell, ideal für Code-Assist |
|
||||||
|
| 13B / 14B | ~9–10 GB | ✅ Sehr gut | Gute Balance Qualität/Speed |
|
||||||
|
| 32B | ~20 GB | ✅ Gut | Für komplexe Aufgaben |
|
||||||
|
| 70B | ~40 GB | ✅ Möglich | Langsam, aber vollständig im RAM |
|
||||||
|
| 70B (Q8) | ~75 GB | ❌ Zu groß | Überschreitet 64 GB RAM |
|
||||||
|
|
||||||
|
### 5.2 Inferenz-Pfade (Priorität)
|
||||||
|
|
||||||
|
1. **CPU (ARM64 native)** — Primär, via Ollama/llama.cpp → sofort nutzbar
|
||||||
|
2. **GPU (Immortalis-G720)** — Vulkan-Compute, experimentell → Zukunft
|
||||||
|
3. **NPU (CIX P1)** — Kein aktueller Support → Langfristig (ONNX/TFLite)
|
||||||
|
|
||||||
|
### 5.3 Empfohlene Modelle für Zora
|
||||||
|
|
||||||
|
| Modell | Größe | Stärke | Ollama-Tag |
|
||||||
|
|:------------------------|:-------|:--------------------------------|:----------------------------|
|
||||||
|
| `llama3.1:8b` | ~5 GB | Allgemein, schnell | `ollama pull llama3.1:8b` |
|
||||||
|
| `qwen2.5:14b` | ~9 GB | Code + Deutsch, sehr gut | `ollama pull qwen2.5:14b` |
|
||||||
|
| `qwen2.5-coder:14b` | ~9 GB | Code-Spezialist | `ollama pull qwen2.5-coder:14b` |
|
||||||
|
| `deepseek-r1:14b` | ~9 GB | Reasoning / Analyse | `ollama pull deepseek-r1:14b` |
|
||||||
|
| `nomic-embed-text` | ~274 MB| Embeddings für RAG | `ollama pull nomic-embed-text` |
|
||||||
|
|
||||||
|
### 5.4 Relevante Recherche-Themen
|
||||||
|
|
||||||
|
- **llama.cpp ARM64 Optimierungen** — NEON/SVE2-Instruktionen auf Cortex-X4
|
||||||
|
- **Ollama ARM64 Performance-Tuning** — `OLLAMA_NUM_PARALLEL`, `OLLAMA_MAX_LOADED_MODELS`
|
||||||
|
- **CIX P1 NPU SDK** — Ob Minisforum/CIX ein SDK für die NPU veröffentlicht
|
||||||
|
- **Immortalis-G720 Vulkan Compute** — `clblast` oder `kompute` Backend für llama.cpp
|
||||||
|
- **Open WebUI RAG** — Integration mit lokalen Docs (`/docs`-Verzeichnis als Wissensbasis)
|
||||||
|
- **Continue.dev + Ollama** — IntelliJ IDEA Integration für datenschutzkonformen Code-Assist
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 6. Mail-Relay (SSoT)
|
||||||
|
|
||||||
|
| Eigenschaft | Wert |
|
||||||
|
|:---------------|:------------------------------------------|
|
||||||
|
| **SMTP-Host** | `10.0.0.20` (Proxmox-Node als Relay) |
|
||||||
|
| **SMTP-Port** | `25` (passwortlos, intern via mynetworks) |
|
||||||
|
| **Absender** | `zora@mo-code.at` |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 7. Weiterführende Dokumente
|
||||||
|
|
||||||
|
| Dokument | Pfad |
|
||||||
|
|:---------|:-----|
|
||||||
|
| Hardware-Spezifikation | `docs/01_Architecture/Minisforum-MS-R1/Spezifikation.md` |
|
||||||
|
| Konfiguration & Bedienung | `docs/01_Architecture/Minisforum-MS-R1/MS-R1_Konfiguration&Bedienung.md` |
|
||||||
|
| SSoT Konfigurations-Masterplan | `docs/01_Architecture/Minisforum-MS-R1/SSoT_Konfigurations-Masterplan_Zora.md` |
|
||||||
|
| AI-Stack Installations-Anleitung | `docs/01_Architecture/Minisforum-MS-R1/AI_Stack_Ollama_Setup.md` |
|
||||||
|
| Zora Roadmap | `docs/01_Architecture/Minisforum-MS-R1/Zora_Roadmap.md` |
|
||||||
|
| Nutzerhandbuch (Hersteller) | `docs/01_Architecture/Minisforum-MS-R1/P1WSB-Nutzerhandbuch-Deutsch-V2-0-2025-11-3.md` |
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
---
|
||||||
|
type: Journal
|
||||||
|
status: DONE
|
||||||
|
owner: Lead Architect
|
||||||
|
date: 2026-03-07
|
||||||
|
---
|
||||||
|
# Session Log — Tech-Stack Zusammenfassung
|
||||||
|
|
||||||
|
**Datum:** 07. März 2026
|
||||||
|
**Agent:** 🏗️ Lead Architect
|
||||||
|
**Ziel:** Vollständige Tech-Stack-Dokumentation als Recherche-Basis für Self-Hosted AI
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Kontext
|
||||||
|
|
||||||
|
Nach der Zora-Hardware-Zusammenfassung (gleiche Session) wurde eine vollständige
|
||||||
|
Tech-Stack-Übersicht des Projekts "Meldestelle" erstellt — optimiert als Grundlage
|
||||||
|
für die Auswahl und Konfiguration eines Self-Hosted AI-Modells (Ollama auf Zora).
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Erstellte Dokumente
|
||||||
|
|
||||||
|
| Datei | Inhalt |
|
||||||
|
|:------|:-------|
|
||||||
|
| `docs/01_Architecture/Meldestelle_Tech_Stack_Zusammenfassung.md` | Vollständige Tech-Stack-Referenz |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Inhalt der Zusammenfassung
|
||||||
|
|
||||||
|
- **Sprachen & Laufzeiten:** Kotlin 2.3, Java 25 (EA), Gradle 9.3.1, ARM64
|
||||||
|
- **Frontend:** Compose Multiplatform 1.10, SQLDelight 2.2, Koin 4.1, Ktor 3.4
|
||||||
|
- **Backend:** Spring Boot 3.5.9, Spring Cloud 2025.0.1, Exposed 1.0, Flyway 11
|
||||||
|
- **Infrastruktur:** Keycloak 26.4, Consul 1.21, Valkey 8, PostgreSQL 16, Zipkin, Prometheus, Grafana
|
||||||
|
- **CI/CD:** Gitea Actions, Docker Buildx (ARM64), Pangolin-Tunnel
|
||||||
|
- **AI-Relevanz:** Modell-Empfehlungen, RAG-Dokument-Prioritäten, Anforderungsmatrix
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## AI-Empfehlungen (Ergebnis)
|
||||||
|
|
||||||
|
| Modell | Einsatz |
|
||||||
|
|:--------------------|:-------------------------------|
|
||||||
|
| `qwen2.5-coder:14b` | Primär — Kotlin/Spring/SQL |
|
||||||
|
| `qwen2.5:32b` | Architektur + Fachlogik |
|
||||||
|
| `llama3.1:8b` | Schnell, Deutsch, Allgemein |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Nächste Schritte
|
||||||
|
|
||||||
|
1. Proxmox LXC für AI-Stack (Ollama + Open WebUI) einrichten
|
||||||
|
2. `qwen2.5-coder:14b` als erstes Modell laden
|
||||||
|
3. RAG mit `/docs`-Verzeichnis in Open WebUI konfigurieren
|
||||||
|
4. Continue.dev Plugin in IntelliJ IDEA integrieren
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
---
|
||||||
|
type: Journal
|
||||||
|
status: ACTIVE
|
||||||
|
owner: Lead Architect
|
||||||
|
date: 2026-03-07
|
||||||
|
---
|
||||||
|
# Session Log — 07. März 2026: Zora Hardware-Zusammenfassung
|
||||||
|
|
||||||
|
## Kontext
|
||||||
|
|
||||||
|
Samstag-Session. Ziel: Vollständige Hardware- und Konfigurations-Zusammenfassung
|
||||||
|
von Zora (Minisforum MS-R1) als Basis für weitere Self-Hosted AI Recherchen.
|
||||||
|
|
||||||
|
## Durchgeführte Änderungen
|
||||||
|
|
||||||
|
| Datei | Aktion | Beschreibung |
|
||||||
|
|:------|:-------|:-------------|
|
||||||
|
| `docs/01_Architecture/Minisforum-MS-R1/Zora_Hardware_Zusammenfassung.md` | NEU | Vollständige Hardware-Referenz (CPU, GPU, NPU, RAM, Ports, Proxmox-Konfiguration, VMs/LXCs, Netzwerk, AI-Potenzial) |
|
||||||
|
|
||||||
|
## Inhalt der Zusammenfassung
|
||||||
|
|
||||||
|
Das neue Dokument konsolidiert alle relevanten Informationen aus:
|
||||||
|
- `Spezifikation.md` — Hersteller-Specs
|
||||||
|
- `SSoT_Konfigurations-Masterplan_Zora.md` — Proxmox-Konfiguration, VMs, Netzwerk
|
||||||
|
- `AI_Stack_Ollama_Setup.md` — CPU-Cluster-Details, AI-Architektur-Entscheidungen
|
||||||
|
- `MS-R1_Konfiguration&Bedienung.md` — Betriebssystem, Kernel, Netzwerk
|
||||||
|
|
||||||
|
## Gelernt / Erkenntnisse
|
||||||
|
|
||||||
|
- **CIX P1 NPU**: Aktuell kein Ollama/llama.cpp-Support — Recherche-Thema für die Zukunft
|
||||||
|
- **64 GB RAM**: Ermöglicht 70B-Modelle vollständig im RAM (Q4 ≈ 40 GB)
|
||||||
|
- **Tri-Cluster CPU**: Cortex-X4 (Kerne 8–11) für AI-Inferenz priorisieren
|
||||||
|
- **Immortalis-G720**: Vulkan 1.3 vorhanden — experimentelle GPU-Beschleunigung möglich
|
||||||
|
|
||||||
|
## Nächste Schritte
|
||||||
|
|
||||||
|
- [ ] Self-Hosted AI Recherche: llama.cpp ARM64 NEON/SVE2-Optimierungen
|
||||||
|
- [ ] CIX P1 NPU SDK recherchieren (Minisforum/CIX Community)
|
||||||
|
- [ ] Immortalis-G720 Vulkan Compute für llama.cpp evaluieren
|
||||||
|
- [ ] LXC 111 (ai-stack, 10.0.0.60) aufsetzen — Anleitung in `AI_Stack_Ollama_Setup.md`
|
||||||
|
- [ ] Meldestelle-Host DevOps abschließen (Ping-Service grün verifizieren)
|
||||||
Reference in New Issue
Block a user