Kapazitaetsplanung & Hardware-Ressourcen
Stand: 2026-03-28
Hardware-Uebersicht
Mac Mini M4 (Produktionsserver)
| Ressource |
Wert |
| CPU |
Apple M4, 10 Cores (4P + 6E) |
| RAM |
16 GB Unified Memory |
| GPU |
10-Core Metal (geteilt mit CPU/RAM) |
| Storage intern |
228 GB SSD |
| Storage extern |
4 TB SSD (USB-C, ~1 GB/s) |
| Netzwerk |
Cloudflare Tunnel (kein direktes Port-Forwarding) |
Windows GPU Server (AI-Workloads)
| Ressource |
Wert |
| GPU |
NVIDIA RTX 3090, 24 GB VRAM |
| Netzwerk |
LAN (192.168.178.11), Tunnel-Subdomains unter gpu-*.mana.how |
| Services |
Ollama (11434), STT (3020), TTS (3022), Image Gen (3023) |
| Status |
Aktiv — alle AI-Services vom Mac Mini hierher verlagert |
Aktuelle Auslastung (Mac Mini)
Container-Uebersicht (61 Container)
| Kategorie |
Anzahl |
Geschaetzter RAM |
| Infrastruktur (Postgres, Redis, MinIO, Forgejo) |
7 |
~2.5 GB |
| Core Services (Auth, Credits, User, Subs, Analytics) |
5 |
~0.8 GB |
| Go Services (Gateway, Sync, Search, Notify, Crawler, Media) |
6 |
~0.3 GB |
| Web Apps (SvelteKit, 19 Apps) |
19 |
~3.0 GB |
| Backends (NestJS/Hono) |
3 |
~0.5 GB |
| Matrix (Synapse, Element, Bots) |
4 |
~1.0 GB |
| Monitoring (Grafana, Victoria, Loki, cAdvisor, etc.) |
13 |
~2.0 GB |
| Sonstiges (Watchtower, Landing Builder, LLM) |
4 |
~0.5 GB |
| Gesamt |
61 |
~10.6 GB |
Native Services
| Service |
RAM (idle) |
RAM (aktiv) |
| Ollama (Gemma 3 4B) |
~0 MB (nach 5min entladen) |
~3.3 GB |
| Ollama (Gemma 3 27B) |
~0 MB |
~16 GB (gesamter RAM!) |
| FLUX.2 klein |
~0.5 GB |
~2 GB |
RAM-Budget
Verfuegbar: 16.0 GB
Docker Container: -10.6 GB
macOS Overhead: -1.5 GB
─────────────────────────────
Frei: 3.9 GB ← fuer Ollama, Builds, Peaks
Kritisch: Bei aktivem Ollama (3.3 GB fuer 4B-Modell) bleiben nur ~0.6 GB fuer Peaks.
Build-Script stoppt deshalb 13 Monitoring-Container (~2 GB) vor dem Bauen.
Kapazitaetsschaetzung nach Workload-Typ
Tier 1: Statische/Local-First Apps (wenig Server-Last)
Apps wie Todo, Calendar, Clock, Zitare, Contacts, etc.
| Metrik |
Wert |
Begruendung |
| Gleichzeitige User |
100-200 |
Local-first: Reads aus IndexedDB, Server nur fuer Sync |
| Sync-Connections (WebSocket) |
~50 aktiv |
mana-sync (Go) ist sehr effizient, ~10 KB/Connection |
| Bottleneck |
Cloudflare Tunnel Latenz (~4s first byte) |
Nicht die App selbst |
Tier 2: API-lastige Apps (Chat, Questions, Context)
| Metrik |
Wert |
Begruendung |
| Gleichzeitige User |
20-50 |
Abhaengig von Postgres-Connections (max 20 pro Service) |
| API Requests/sec |
~100-200 |
NestJS/Hono koennen mehr, DB ist Limit |
| Bottleneck |
PostgreSQL Connections + RAM |
|
Tier 3: AI-Workloads (Ollama, FLUX.2)
| Metrik |
Wert |
Begruendung |
| LLM gleichzeitig |
1 |
OLLAMA_NUM_PARALLEL=1, Modell belegt 3-16 GB |
| LLM Durchsatz |
~53 tokens/sec (4B) |
~260 tokens/sec Prompt Processing |
| Bildgenerierung |
1 gleichzeitig |
~1.5s pro 1024x1024 Bild |
| Bottleneck |
RAM (Ollama + Container konkurrieren) |
|
Gesamtschaetzung
| Szenario |
Max. gleichzeitige User |
| Nur Local-First Apps |
~200 |
| Mixed (Local-First + API) |
~50-100 |
| Mit aktiver LLM-Nutzung |
~20-30 |
| Peak (alle Services + LLM + Bildgen) |
~10-20 |
Bottleneck-Analyse
| Rang |
Bottleneck |
Auswirkung |
Loesung |
| 1 |
RAM (16 GB) |
Ollama + Container kaempfen um Speicher |
RAM-Upgrade (neuer Mac Mini) oder GPU-Server fuer LLM |
| 2 |
Cloudflare Tunnel Latenz |
~4s TTFB fuer erste Requests |
CDN/Workers fuer statische Assets |
| 3 |
PostgreSQL Connections |
Max 20 pro Service, shared DB |
Connection Pooling (PgBouncer) |
| 4 |
Single Server |
Kein Failover, kein horizontales Scaling |
Zweiter Mac Mini oder Cloud-Burst |
Scaling-Roadmap
Phase 1: Optimierung (0 EUR)
Phase 2: RAM-Upgrade (~700 EUR)
Phase 3: Horizontales Scaling (~50 EUR/Monat)
Phase 4: Production-Grade (~200 EUR/Monat)
Registrierungslimit ("Organic Growth Gate")
Siehe Implementierung in services/mana-auth/src/services/signup-limit.ts.
Konzept
Pro Tag koennen sich maximal X neue Nutzer registrieren. Das Limit ist konfigurierbar und waechst mit der Hardware.
Vorteile
- Infrastruktur-Schutz: Hardware waechst mit der Community
- Exklusivitaet: "Heute noch 2 Plaetze frei" erzeugt Nachfrage
- Qualitaet: Fruehe User geben besseres Feedback
- Kostenlos: Kein Over-Provisioning noetig
Geplante Limits
| Phase |
Limit |
Kumuliert/30 Tage |
Hardware |
| Start |
5/Tag |
~150 User |
Mac Mini 16 GB |
| Phase 2 |
15/Tag |
~450 User |
Mac Mini 32 GB |
| Phase 3 |
50/Tag |
~1500 User |
Multi-Server |
Load Testing
Load Tests liegen in load-tests/. Siehe load-tests/README.md fuer Ausfuehrung.
Empfohlene Test-Zyklen
- Vor jedem Hardware-Upgrade: Baseline messen
- Nach Limit-Erhoehung: Verifizieren dass Hardware haelt
- Monatlich: Regression erkennen