electric-horses-infra/docs/architecture/ai-apps-stacks.md
Benjamin Weinlich 723ee00388 docs(architecture): add ai-apps stack inventory snapshot
Captures the current state of all Docker stacks running on ai-apps
(Hetzner cx22, 10.0.0.8) as of 2026-04-11. Includes resource budget,
DNS records, Traefik integration pattern, and backup situation.

This is a point-in-time snapshot; update when new stacks are added.

Refs OP#1118
2026-04-11 22:19:25 +02:00

79 lines
3.8 KiB
Markdown

# ai-apps — Service Stack Inventory
**Stand:** 2026-04-11
**Host:** Hetzner cx22 (8 GB RAM, 2 vCPU shared, 75 GB Disk)
**Netzwerke:** Public 91.98.226.44, Privat 10.0.0.8
**OS:** Debian / Docker 29.x + Compose v5
**Swap:** 2 GB (/swapfile in fstab)
## Service-Übersicht
| Stack | Containers | Exposed | Domain(s) | DB | Memory (peak) |
|---|---|---|---|---|---|
| **shared** | traefik, portainer | 80, 443 | `traefik.sdda.eu`, `containers.sdda.eu` | — | ~200 MB |
| **n8n** | n8n, n8n-db | — (via Traefik) | `n8n.sdda.eu` | Postgres 16 | ~400 MB |
| **locosoft-hilfe-system** | locosoft-backend, locosoft-frontend, locosoft-db, locosoft-redis, chromadb | — | `locosoft.sdda.eu`, `chromadb.sdda.eu` | Postgres 16 + Redis + ChromaDB | ~1.5 GB |
| **eh-search** | eh-search, eh-search-redis | 10.0.0.8:8200 (privat) | via Pegasus nginx `/api/search` | Redis | ~250 MB |
| **loco-replica** | loco-replica-db | 10.0.0.8:5433 (privat) | — | Postgres 17 | ~300 MB |
| **electric-horses-audits** | eh-audits | — (n8n-triggered) | — | — | ~200 MB |
| **forgejo** ★NEU★ | forgejo, forgejo-db | 222 (SSH), via Traefik | **`code.sdda.eu`** | Postgres 16 | ~800 MB |
**Gesamt-Schätzwert:** ~3.5 GB Peak, gemessener Durchschnitt ~1.9 GB + Cache.
## Traefik (shared)
- **Version:** 3.6.2
- **ACME Resolver:** `letsencrypt` (HTTP-Challenge, Email `info@sdda.eu`)
- **Dynamic Config:** `/opt/shared/traefik/dynamic/` (File Provider für Middlewares: `authentik.yml`, `authentik-outpost.yml`)
- **Docker Network:** `traefik-public` (external, alle Web-Services hängen dort)
- **ACME Store:** `/opt/shared/traefik/acme.json`
## Authentik Integration
- **Authentik-Server:** separater Host `authentik-sso` (138.199.202.82 / 10.0.0.7), **NICHT** auf ai-apps
- **ForwardAuth-Apps** (existing): `locosoft-forward-auth`, `n8n-forward-auth` (beide Proxy Provider, Embedded Outpost)
- **Native OIDC-Apps** (neu ab 2026-04-11): `forgejo` (OAuth2/OpenID Provider, siehe `../Forgejo/adr/0003-*.md`)
## Stack-Organisation
Jeder Stack lebt in eigenem Verzeichnis unter `/opt/ai-apps/<stack>/`:
```
/opt/ai-apps/
├── electric-horses-audits/
├── eh-search/
├── forgejo/ ← NEW 2026-04-11
├── locosoft-hilfe-system/
├── loco-replica/
├── mobile-refdata/ ← scripts only
└── n8n/
/opt/shared/ ← Traefik + Portainer
/opt/backups/ ← centralised backup target
```
**Pattern:** Jeder Stack hat eine eigene `docker-compose.yml` und `.env`, eigene interne Netzwerke, gemeinsames `traefik-public` für Web-Exposure.
## Ressourcen-Bewertung (2026-04-11)
- **RAM:** 7.6 GB total, 1.9 GB wirklich in use, 5.7 GB available (inkl. Cache), 250 MB free, 2 GB Swap aktiv
- **Disk:** 20 GB frei von 75 GB (73% belegt)
- **Load:** ~0.1 (idle)
- **Fazit:** Forgejo passt noch rein, aber der Spielraum für zukünftige Services (z.B. Forgejo Actions, Monitoring, Semantic Search Index) ist begrenzt. Bei >85% RAM-Auslastung: Upgrade auf cx32 (16 GB, +4 €/Monat).
## DNS Einträge unter `sdda.eu` die auf ai-apps zeigen (91.98.226.44)
- `ai.sdda.eu` (Alias)
- `containers.sdda.eu` (Portainer)
- `traefik.sdda.eu` (Traefik Dashboard)
- `chromadb.sdda.eu`
- `locosoft.sdda.eu`
- `n8n.sdda.eu`
- **`code.sdda.eu`** ← Forgejo (NEU)
## Backups (Stand 2026-04-11)
- **forgejo:** Cron 03:00 → `/opt/backups/forgejo/`, Retention 14 Tage (seit M7.1)
- **andere Stacks:** Keine zentrale Backup-Infrastruktur. Hetzner Cloud Snapshots manuell. Rclone → Nextcloud noch nicht eingerichtet (geplant M7.5).
## Zugriff
- **SSH:** `ssh ai-apps` (User root, Key-basiert)
- **Portainer:** https://containers.sdda.eu (admin)
- **Traefik Dashboard:** https://traefik.sdda.eu
## OpenProject-Referenz
- **M7.1** (#1119) — Forgejo Deployment: https://openproject.sdda.eu/work_packages/1119
- **M7** (#1118) — Operations & Documentation Foundation (Parent Phase)