Update Zora configuration: add detailed runbook, reassign ai-stack to CT 120, and improve infrastructure documentation
Build and Publish Docker Images / build-and-push (., backend/infrastructure/gateway/Dockerfile, api-gateway, api-gateway) (push) Successful in 8m7s
Build and Publish Docker Images / build-and-push (., backend/services/ping/Dockerfile, ping-service, ping-service) (push) Successful in 7m16s
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Successful in 1m48s
Build and Publish Docker Images / build-and-push (., config/docker/keycloak/Dockerfile, keycloak, keycloak) (push) Successful in 1m32s

This commit is contained in:
2026-03-08 00:37:34 +01:00
parent 0035225614
commit f022de7358
6 changed files with 593 additions and 31 deletions
@@ -43,7 +43,7 @@ Zora — Proxmox 8.4.10 (10.0.0.20)
├── LXC 100 pangolin-client ← Pangolin Tunnel
├── LXC 101 gitea (10.0.0.22) ← Gitea Server
├── LXC 103 immich ← Immich
└── LXC 111 ai-stack (10.0.0.60) ← Ollama + Open WebUI ← NEU
└── LXC 120 ai-stack (10.0.0.60) ← Ollama + Open WebUI ← NEU
```
**Begründung:** Modelle (540 GB pro Modell) wachsen unkontrolliert.
@@ -107,39 +107,39 @@ sysctl -p
> ️ **Alle Befehle laufen auf dem Proxmox-Node** (`ssh root@10.0.0.20`)
> Alternativ: Proxmox Web-UI unter `https://pve.mo-code.at:8006`
### 2.1 — Debian 12 Template herunterladen
### 2.1 — Ubuntu 24.04 Template herunterladen
```bash
# Template-Liste aktualisieren
pveam update
# Debian 12 ARM64 Template suchen und herunterladen
pveam available --section system | grep debian-12.*arm64
pveam download local debian-12-standard_12.7-1_arm64.tar.zst
# Ubuntu 24.04 ARM64 Template suchen und herunterladen
pveam available --section system | grep ubuntu-24.04.*arm64
pveam download local ubuntu-24.04-standard_24.04-2_arm64.tar.zst
```
### 2.2 — Container erstellen (CT 111)
### 2.2 — Container erstellen (CT 120)
```bash
pct create 111 local:vztmpl/debian-12-standard_12.7-1_arm64.tar.zst \
pct create 120 local:vztmpl/ubuntu-24.04-standard_24.04-2_arm64.tar.zst \
--hostname ai-stack \
--arch aarch64 \
--cores 10 \
--memory 49152 \
--swap 4096 \
--rootfs local-lvm:200 \
--rootfs local:200 \
--net0 name=eth0,bridge=vmbr0,ip=10.0.0.60/24,gw=10.0.0.138,firewall=1 \
--nameserver 10.0.0.138 \
--searchdomain mo-code.at \
--unprivileged 1 \
--features nesting=1 \
--features nesting=1,keyctl=1 \
--password
# Container starten
pct start 111
pct start 120
# Status prüfen
pct status 111
pct status 120
pct list
```
@@ -148,18 +148,18 @@ pct list
```bash
# Kerne 211 dem Container zuweisen (Kerne 811 = X4 Performance-Kerne!)
# In der Container-Config:
echo "cpulimit: 10" >> /etc/pve/lxc/111.conf
echo "cpuunits: 1024" >> /etc/pve/lxc/111.conf
echo "cpulimit: 10" >> /etc/pve/lxc/120.conf
echo "cpuunits: 1024" >> /etc/pve/lxc/120.conf
# Alternativ via Web-UI:
# CT 111 → Options → CPU Limit: 10 Cores
# CT 120 → Options → CPU Limit: 10 Cores
```
### 2.4 — In Container einloggen und Basis-Setup
```bash
# Direkt per pct:
pct enter 111
pct enter 120
# Im Container:
apt-get update && apt-get upgrade -y
@@ -181,7 +181,7 @@ usermod -aG docker aiuser
### 3.1 — Ollama installieren
```bash
# Im Container (pct enter 111):
# Im Container (pct enter 120):
curl -fsSL https://ollama.com/install.sh | sh
# ARM64 wird automatisch erkannt
@@ -268,7 +268,7 @@ ollama run llama3.1:8b "Erkläre mir Spring Boot in einem Satz auf Deutsch"
## Phase 5 — Open WebUI installieren
```bash
# Im Container (pct enter 111):
# Im Container (pct enter 120):
docker run -d \
--name open-webui \
--restart always \
@@ -392,10 +392,10 @@ Der CIX P1 hat eine integrierte NPU, die aktuell **nicht von Ollama/llama.cpp un
```bash
# Container verwalten (auf Proxmox-Node: ssh root@10.0.0.20)
pct start 111
pct stop 111
pct enter 111
pct status 111
pct start 120
pct stop 120
pct enter 120
pct status 120
# Modelle verwalten (im Container)
ollama list # Installierte Modelle
@@ -422,7 +422,7 @@ Zora — Proxmox 8.4.10 (10.0.0.20)
├── VM 110 meldestelle-host 10.0.0.50 Docker App-Stack
├── LXC 101 gitea 10.0.0.22 Gitea Server
├── LXC 103 immich Immich
└── LXC 111 ai-stack 10.0.0.60 Ollama :11434 | Open WebUI :3001
└── LXC 120 ai-stack 10.0.0.60 Ollama :11434 | Open WebUI :3001
Pangolin-Tunnel:
├── ai.mo-code.at → 10.0.0.60:3001 (Open WebUI — nur intern/VPN)
@@ -24,7 +24,7 @@ owner: DevOps Engineer
| 102 | gitea-runner | VM | `10.0.0.23` | — | Gitea CI/CD Runner (aarch64) |
| 103 | immich | LXC | `10.0.0.24` | order=3, up=30 | Immich Foto-Server |
| 110 | meldestelle-host | VM | `10.0.0.50` | — | Docker App-Stack |
| 111 | ai-stack | LXC | `10.0.0.60` | — | Ollama + Open WebUI (geplant)|
| 120 | ai-stack | LXC | `10.0.0.60` | — | Ollama + Open WebUI |
### Detaillierte Ressourcen-Konfiguration
@@ -63,6 +63,33 @@ owner: DevOps Engineer
| **Typ** | Unprivileged, nesting=1, keyctl=1, fuse=1 |
| **Autostart** | Ja — order=3, up=30 |
#### CT 120 — ai-stack (LXC)
| Parameter | Wert |
|:-----------------|:---------------------------------------|
| **OS** | Ubuntu 24.04, arm64 |
| **CPU** | 10 Cores (cpulimit=10, cpuunits=1024) |
| **RAM** | 48.00 GiB + 4.00 GiB Swap |
| **Disk** | 200 GB (`local:120/vm-120-disk-0.raw`) |
| **Netzwerk** | eth0 → vmbr0, IP `10.0.0.60/24`, GW `10.0.0.138`, Firewall: Yes |
| **Typ** | Unprivileged, nesting=1, keyctl=1 |
| **Autostart** | Nein |
| **Dienste** | Ollama :11434, Open WebUI :3001 |
#### VM 110 — meldestelle-host (QEMU/KVM)
| Parameter | Wert |
|:-----------------|:-----------------------------------------------------------------|
| **BIOS** | OVMF (UEFI) |
| **Machine** | virt (ARM64, aarch64) |
| **CPU** | 8 Cores (1 Socket, host-type, numa=1) |
| **RAM** | 16.00 GiB (balloon=0, kein Dynamic Memory) |
| **Disk** | 150 GB SSD (`local:110/vm-110-disk-1.qcow2`, aio=io_uring, iothread=1, ssd=1) |
| **EFI Disk** | `local:110/vm-110-disk-0.qcow2`, efitype=4m, 64 MB |
| **Netzwerk** | virtio, bridge=vmbr0, Firewall: Yes |
| **SCSI** | VirtIO SCSI single |
| **Autostart** | Nein (order=any) |
| **QEMU Agent** | Enabled |
| **Dienste** | Docker App-Stack (API :8081, Keycloak :8180, Prometheus :9090, Grafana :3000) |
#### VM 102 — gitea-runner (QEMU/KVM)
| Parameter | Wert |
|:-----------------|:-----------------------------------------------------------------|
@@ -155,8 +155,8 @@ Cores 811 → Cortex-X4 (Performance / schnell) ← 4 Kerne
| 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)|
| 110 | meldestelle-host | VM (KVM) | `10.0.0.50` | 8C | 16 GiB | 150 GB | Docker App-Stack |
| 120 | ai-stack | LXC | `10.0.0.60` | 10C | 48 GiB | 200 GB | Ollama + Open WebUI |
### Core-Pinning (Stabilisierung)