371 lines
12 KiB
Markdown
371 lines
12 KiB
Markdown
# Hofmanns.AI - Complete Infrastructure Setup
|
|
|
|
**Chat Summary - Dezember 2025**
|
|
**Erstellt für:** Dee / DOUANA® / ZFEB GmbH
|
|
|
|
---
|
|
|
|
## 🎯 Das Problem
|
|
|
|
- 48 Jahre alt, Enterprise-Kunden (Banken, Konzerne)
|
|
- Jeden Tag 1-2 Stunden verloren mit: Logins, Passwörter, Email-Codes, Verify-Me, 2FA-Apps
|
|
- Jedes Device, jede App, jeder Service will eigenen Login
|
|
- Kein Bock mehr auf Console-Gefrickel
|
|
- Meta Quest 3 als primäres Arbeitsgerät → braucht Browser-UI
|
|
|
|
**Das Ziel:** Ein Finger/Gesicht → alles offen. Fertig.
|
|
|
|
---
|
|
|
|
## 🏗️ Die Architektur
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ AUTHENTIK SSO │
|
|
│ auth.hofmanns.ai (Passkeys/WebAuthn) │
|
|
│ Face ID / Fingerprint = einmal einloggen = fertig │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
│
|
|
┌─────────────────────┼─────────────────────┐
|
|
│ │ │
|
|
▼ ▼ ▼
|
|
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
|
|
│ INFOMANIAK │ │ JETSON │ │ DEVICES │
|
|
│ SERVER │ │ ORIN NANO │ │ │
|
|
│ (öffentlich) │◄──►│ (privat) │◄──►│ Quest 3 │
|
|
│ │ │ │ │ Android │
|
|
│ - Git Repos │ │ - Kundendaten │ │ Laptop │
|
|
│ - Dev/Pilot │ │ - Source Code │ │ TV │
|
|
│ - Auth Server │ │ - Dokumente │ │ │
|
|
│ - RustDesk ID │ │ - Home Hub │ │ │
|
|
└───────────────┘ └───────────────┘ └───────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 📍 Server Overview
|
|
|
|
### Infomaniak Server (öffentlich)
|
|
|
|
| Info | Wert |
|
|
|------|------|
|
|
| IP | 185.143.102.153 |
|
|
| OS | Debian 12 (bookworm) |
|
|
| User | debian |
|
|
| SSH | Port 22 mit RSA Key |
|
|
| Projekt | /home/debian/hofmanns.ai |
|
|
| Command | `hof` → navigiert zum Projekt |
|
|
|
|
**Domains (alle auf diesem Server):**
|
|
- hofmanns.ai
|
|
- hofmanns.tech
|
|
- hofmanns.app
|
|
- hofmanns.shop
|
|
- hofmanns.ltd
|
|
- hofmann-s.com
|
|
|
|
**Was läuft dort:**
|
|
- Git Repository (git.hofmanns.ai)
|
|
- Dev/Pilot Umgebungen
|
|
- AI Agents arbeiten hier (Claude, Manus, Perplexity)
|
|
- Docker installiert
|
|
|
|
**Was NOCH drauf kommt:**
|
|
- Authentik (SSO mit Passkeys)
|
|
- RustDesk ID Server (hbbs/hbbr)
|
|
- Cloudflare Tunnel oder direkt
|
|
|
|
### Jetson Orin Nano (privat, zu Hause)
|
|
|
|
| Info | Wert |
|
|
|------|------|
|
|
| IP | 192.168.1.50 |
|
|
| OS | JetPack 6.x (Ubuntu-based) |
|
|
| User | d |
|
|
| Storage | 1TB NVMe |
|
|
| GPU | NVIDIA (für AI) |
|
|
| Standort | Am TV, zentral in Wohnung |
|
|
|
|
**Was läuft dort:**
|
|
- Kundendaten
|
|
- Source Code (produktiv)
|
|
- Wichtige Dokumente
|
|
- Home Assistant
|
|
- AdGuard DNS
|
|
- Whisper (Sprache → Text)
|
|
- Jellyfin (Media)
|
|
- Private Cloud (FileBrowser)
|
|
- Syncthing
|
|
- Ollama (LLMs)
|
|
|
|
---
|
|
|
|
## 🔐 SSO mit Passkeys (WebAuthn)
|
|
|
|
**Keine Passwörter. Keine Email-Codes. Kein 2FA-App Stress.**
|
|
|
|
### So funktioniert es:
|
|
|
|
1. **Einmalig einrichten:** Passkey auf jedem Gerät registrieren
|
|
2. **Danach:** Finger auf Sensor oder Gesicht zeigen → eingeloggt
|
|
3. **Session:** Bleibt aktiv, kein ständiges neu einloggen
|
|
|
|
### Unterstützte Geräte:
|
|
|
|
| Gerät | Auth-Methode |
|
|
|-------|--------------|
|
|
| Android Handy | Fingerprint / Face |
|
|
| Meta Quest 3 | Handy als Authenticator (zeigt in VR) |
|
|
| Laptop | Fingerprint / Windows Hello |
|
|
| iPad/iPhone | Face ID / Touch ID |
|
|
|
|
### Authentik Setup:
|
|
|
|
```
|
|
auth.hofmanns.ai
|
|
│
|
|
├── Passkey Registration
|
|
├── Session Management
|
|
├── Application Proxy
|
|
│
|
|
└── Geschützte Apps:
|
|
├── portal.hofmanns.ai (Dashboard)
|
|
├── git.hofmanns.ai
|
|
├── home.hofmanns.ai (Home Assistant)
|
|
├── files.hofmanns.ai (FileBrowser)
|
|
├── whisper.hofmanns.ai
|
|
└── ... alle anderen Services
|
|
```
|
|
|
|
---
|
|
|
|
## 🖥️ Das Dashboard
|
|
|
|
**Ein Tab. Alles drin. Vollbild. Kein OS-Scheiss.**
|
|
|
|
```
|
|
┌─────────────────────────────────────────────────────────────────┐
|
|
│ portal.hofmanns.ai │
|
|
│ (nach Passkey-Auth = sofort da) │
|
|
├─────────────────────────────────────────────────────────────────┤
|
|
│ │
|
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
│ │ Home │ │ Whisper │ │ Jellyfin │ │
|
|
│ │ Assistant │ │ Speech→Text│ │ Media │ │
|
|
│ │ │ │ (GPU) │ │ │ │
|
|
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
|
│ │
|
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
│ │ Portainer │ │ Files │ │ Syncthing │ │
|
|
│ │ Docker │ │ Cloud │ │ Sync │ │
|
|
│ │ │ │ │ │ │ │
|
|
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
|
│ │
|
|
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
│ │ Git │ │ RustDesk │ │ Ollama │ │
|
|
│ │ Repos │ │ Remote │ │ LLM │ │
|
|
│ │ │ │ Desktop │ │ │ │
|
|
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
|
│ │
|
|
└─────────────────────────────────────────────────────────────────┘
|
|
```
|
|
|
|
---
|
|
|
|
## 🔌 RustDesk (Self-Hosted TeamViewer)
|
|
|
|
**Kein WireGuard Console-Gefrickel. GUI everywhere.**
|
|
|
|
### Server (auf Infomaniak):
|
|
|
|
```yaml
|
|
rustdesk-hbbs: # ID/Rendezvous Server
|
|
ports: 21115, 21116, 21118
|
|
|
|
rustdesk-hbbr: # Relay Server
|
|
ports: 21117, 21119
|
|
```
|
|
|
|
### Client Setup:
|
|
|
|
1. RustDesk App installieren (alle Plattformen)
|
|
2. Settings → Network → ID/Relay Server
|
|
3. ID Server: `185.143.102.153` (oder rustdesk.hofmanns.ai)
|
|
4. Relay Server: `185.143.102.153`
|
|
5. Key: (wird beim ersten Start generiert)
|
|
|
|
### Zugriff:
|
|
|
|
- Von Quest 3 Browser → RustDesk Web Client
|
|
- Von Handy → RustDesk App
|
|
- Von Laptop → RustDesk App
|
|
- Auf alle Rechner: Jetson, Gaming PC, Server
|
|
|
|
---
|
|
|
|
## 📱 Jetson Orin Nano - Services
|
|
|
|
| Port | Domain | Service |
|
|
|------|--------|---------|
|
|
| 3001 | portal.hofmanns.ai | Homepage Dashboard |
|
|
| 81 | - | Nginx Proxy Manager |
|
|
| 9443 | docker.hofmanns.ai | Portainer |
|
|
| 9090 | system.hofmanns.ai | Cockpit |
|
|
| 8123 | home.hofmanns.ai | Home Assistant |
|
|
| 3000 | dns.hofmanns.ai | AdGuard Home |
|
|
| 7860 | whisper.hofmanns.ai | Whisper WebUI |
|
|
| 8096 | media.hofmanns.ai | Jellyfin |
|
|
| 8081 | files.hofmanns.ai | FileBrowser |
|
|
| 8384 | sync.hofmanns.ai | Syncthing |
|
|
| 11434 | llm.hofmanns.ai | Ollama |
|
|
|
|
---
|
|
|
|
## 🌐 Netzwerk Setup
|
|
|
|
### Zu Hause:
|
|
|
|
```
|
|
5G Antenne (500 CHF)
|
|
│
|
|
▼
|
|
Netgear Nighthawk M5
|
|
(DHCP 192.168.1.x, DNS=192.168.1.50)
|
|
│
|
|
▼
|
|
Netgear 8-Port Switch
|
|
│
|
|
├── Jetson Orin Nano (192.168.1.50)
|
|
│ └── USB WiFi → AP "Home.8"
|
|
│
|
|
└── Gaming PC (RTX 4080)
|
|
```
|
|
|
|
### Tunnel nach draussen:
|
|
|
|
```
|
|
Jetson ──► Cloudflare Tunnel ──► *.hofmanns.ai
|
|
│
|
|
└── RustDesk ──► Infomaniak Server ──► Clients überall
|
|
```
|
|
|
|
---
|
|
|
|
## 📋 Hardware Übersicht
|
|
|
|
| Gerät | Zweck | Status |
|
|
|-------|-------|--------|
|
|
| Jetson Orin Nano 8GB | Home Hub, AI, Private Cloud | Setup pending |
|
|
| Gaming PC (Ryzen 9, RTX 4080, 64GB) | Workstation, Gaming | Aktiv |
|
|
| Netgear Nighthawk M5 | 5G Router, 800 Mbit | Aktiv |
|
|
| TP-Link USB WiFi Antenne | AP für Jetson | Vorhanden |
|
|
| Meta Quest 3 | VR, primäres Arbeitsgerät | Aktiv |
|
|
| 5x Raspberry Pi 5 | Übrig, verkaufen oder Projekte | Unused |
|
|
| Infomaniak Root Server | Public Services, Auth, Git | Aktiv |
|
|
|
|
---
|
|
|
|
## 🚀 Installation - Reihenfolge
|
|
|
|
### Phase 1: Jetson Setup (zu Hause)
|
|
|
|
1. JetPack auf NVMe flashen (SDK Manager)
|
|
2. `setup.sh` ausführen
|
|
3. Docker Services starten
|
|
4. WiFi AP "Home.8" aktivieren
|
|
5. AdGuard DNS konfigurieren
|
|
|
|
### Phase 2: Infomaniak Server
|
|
|
|
1. SSH verbinden: `ssh hofmanns.ai`
|
|
2. Authentik installieren (Docker)
|
|
3. RustDesk Server installieren
|
|
4. Cloudflare Tunnel oder Nginx konfigurieren
|
|
5. DNS Records für alle Subdomains
|
|
|
|
### Phase 3: SSO Integration
|
|
|
|
1. Authentik Passkeys einrichten
|
|
2. Alle Services als Applications registrieren
|
|
3. Proxy-Provider für jeden Service
|
|
4. Passkey auf allen Geräten registrieren
|
|
|
|
### Phase 4: Dashboard
|
|
|
|
1. Homepage auf Jetson konfigurieren
|
|
2. Alle Services einbinden
|
|
3. Authentik Forward Auth
|
|
4. Testen von allen Devices
|
|
|
|
---
|
|
|
|
## 📁 Dateien in diesem Setup
|
|
|
|
```
|
|
jetson-setup/
|
|
├── setup.sh # Haupt-Setup für Jetson
|
|
├── docker-compose.yml # Alle lokalen Services
|
|
├── CHAT-SUMMARY.md # Diese Datei
|
|
├── adguard-dns-rewrites.txt # DNS Einträge
|
|
├── homepage/
|
|
│ ├── services.yaml
|
|
│ ├── settings.yaml
|
|
│ ├── widgets.yaml
|
|
│ ├── docker.yaml
|
|
│ └── bookmarks.yaml
|
|
└── whisper-webui-jetson/
|
|
├── Dockerfile
|
|
└── app.py
|
|
```
|
|
|
|
---
|
|
|
|
## 🔑 Wichtige Credentials (ÄNDERN!)
|
|
|
|
| Was | Default | Ändern auf |
|
|
|-----|---------|------------|
|
|
| WiFi "Home.8" | 123 | Sicheres Passwort |
|
|
| Nginx Proxy Manager | admin@example.com / changeme | Eigene |
|
|
| FileBrowser | admin / admin | Eigene |
|
|
| Portainer | (bei Setup) | Eigene |
|
|
| Authentik | (bei Setup) | Eigene |
|
|
|
|
---
|
|
|
|
## 🎯 Das Endergebnis
|
|
|
|
**Morgens aufstehen:**
|
|
|
|
1. Quest 3 aufsetzen
|
|
2. Browser öffnen → portal.hofmanns.ai
|
|
3. Handy kurz ans Gesicht halten (Face ID)
|
|
4. **Fertig. Alles offen. Den ganzen Tag.**
|
|
|
|
**Unterwegs:**
|
|
|
|
1. Laptop/Handy öffnen
|
|
2. portal.hofmanns.ai
|
|
3. Finger auf Sensor
|
|
4. **Fertig. Voller Zugriff auf alles.**
|
|
|
|
**Keine Passwörter. Keine Codes. Keine Apps. Keine Scheisse.**
|
|
|
|
---
|
|
|
|
## 📞 Nächste Schritte
|
|
|
|
1. [ ] Jetson JetPack flashen
|
|
2. [ ] `setup.sh` ausführen auf Jetson
|
|
3. [ ] Authentik auf Infomaniak installieren
|
|
4. [ ] RustDesk Server auf Infomaniak
|
|
5. [ ] DNS Records für Subdomains
|
|
6. [ ] Cloudflare Tunnel einrichten
|
|
7. [ ] Passkeys registrieren
|
|
8. [ ] Testen mit Quest 3
|
|
|
|
---
|
|
|
|
**Erstellt:** Dezember 2025
|
|
**Chat mit:** Claude (Anthropic)
|
|
**Für:** Dee / hofmanns.ai / DOUANA®
|