ACME — Technischer Setup-Guide
Eine Ein-Personen-Firma von Grund auf aufbauen — mit Hermes als KI-Assistent, kostenloser Cloud-Infrastruktur und voller Transparenz.
ACME — Technischer Setup-Guide#
Eine Ein-Personen-Firma von Grund auf aufbauen — mit Hermes als KI-Assistent#
Einleitung#
Stell dir vor, du gründest allein eine Firma. Nennen wir sie ACME.
Ein Laptop, ein Cloud-Server, eine KI-Assistentin — und am Ende weißt du jederzeit: Was kostet das alles? Was hat die KI getan? Läuft alles?
Dieser Guide baut ACME Schritt für Schritt auf. Das Besondere: Hermes kommt als Erstes. Noch bevor es einen Server gibt, installierst du Hermes auf deinem Laptop und legst ein Profil namens „IT" an. Ab diesem Moment berät dich Hermes bei jedem weiteren Schritt — und erledigt viele Aufgaben selbstständig auf dem Server, den du später aufsetzt.
Der Guide ist so geschrieben, dass auch Nicht-ITler folgen können. Technische Begriffe werden erklärt, wenn sie das erste Mal auftauchen.
Was du hier bekommst#
- Einen Bauplan für eine komplette Firmen-IT mit kostenlosem oder günstigem Hosting
- Hermes als ersten Mitarbeiter — die KI-Assistentin ist vom ersten Tag an dabei und baut die Firma mit dir auf
- Vollständige Transparenz — du kannst jederzeit sehen, was Hermes getan hat, was es kostet, und ob alles gesund ist
- Optionale Bausteine klar markiert — das Minimum reicht für den Start; Optional kann jederzeit ergänzt werden
Was „Hermes" ist#
Hermes ist ein KI-Agent. Das bedeutet: Es ist nicht nur ein Chatbot, sondern eine Software, die Werkzeuge benutzen kann. Hermes kann:
- E-Mails lesen und schreiben
- Dateien durchsuchen und bearbeiten
- Befehle auf Servern ausführen (via SSH)
- Kalender und Aufgaben verwalten
- Dashboards und Berichte erstellen
- Und vieles mehr — durch „Skills" (Fähigkeiten, die man ihr beibringen kann)
Hermes läuft auf einem Laptop oder Server, verbindet sich mit einem LLM (Large Language Model — der „Gehirn"-Teil, z. B. über OpenRouter), und arbeitet als persönliche Assistenz.
Kosten-Philosophie#
ACME nutzt konsequent kostenlose oder sehr günstige Bausteine:
| Baustein | Kosten |
|---|---|
| OCI Server (Oracle Free Tier) | 0 € / Monat |
| Grafana Cloud Free Tier | 0 € / Monat |
| Laptop mit Windows + WSL | einmalig |
| OpenRouter (LLM-Zugang, Cloud) | nach Verbrauch, ~0,50–5 €/Tag |
| Lokales LLM auf Mac (ab M1, 32 GB) | 0 € (einmalig Mac-Anschaffung) |
| Vaultwarden (Passwort-Manager) | 0 € (selbst gehostet) |
| Nextcloud (Kollaboration) | 0 € (selbst gehostet) |
| Raspberry Pi (optional, NFS-Storage) | ~50–80 € einmalig |
Geschätzte monatliche Betriebskosten: 5–30 € (je nach LLM-Nutzung; 0 € wenn ausschließlich lokales LLM auf dem Mac genutzt wird)
Sicherheits-Grundregeln — ab Tag 1#
Bevor wir mit der Technik beginnen, hier die wichtigsten Regeln, die von der ersten Minute an gelten. Sie kosten nichts, sind aber die wichtigste Investition in die Sicherheit deiner Firma.
Regel 1: Eigene E-Mail-Adresse nur für ACME#
Die wichtigste Regel. Erstelle eine dedizierte E-Mail-Adresse ausschließlich für ACME — für alle Registrierungen, alle Konten, alle dienstlichen Kommunikation.
Was bedeutet „dediziert"? Die Adresse wird nur für ACME genutzt. Nicht für private Sachen, nicht für Newsletter, nicht für Online-Shops. Keine Ausnahme.
Warum?
- Trennung von Privat und Firma: Wenn du die Firma später verkaufst, schließt oder abgibst, bleibt dein privates Postfach unberührt.
- Sicherheit bei Kompromittierung: Wenn die ACME-Adresse durch einen Datenverlust bei einem Dienst geleakt wird, sind deine privaten Konten nicht betroffen — und umgekehrt.
- Übersichtlichkeit: Alle firmenbezogenen E-Mails an einem Ort.
- Professionalität: Eine Adresse wie
[email protected]wirkt seriöser als eine private Adresse.
Wie? Nutze z. B. das E-Mail-Konto, das bei deiner Nextcloud- Installation dabei ist (Nextcloud Mail). Alternativ ein kostenloser Anbieter wie ProtonMail oder Tutanota. Wichtig: Diese Mail-Adresse wird zur „Reset-Adresse" für alle Konten — sie ist also besonders schützenswert.
Regel 2: Für jede Registrierung ein eigenes, langes Passwort#
Nie wieder dasselbe Passwort zweimal. Jeder Dienst — Cloudflare, Njalla, Oracle, OpenRouter, LM Studio, etc. — bekommt sein eigenes, einzigartiges Passwort.
Was macht ein gutes Passwort?
- Länge statt Komplexität: Ein 30-stelliges Passwort aus
Wörtern (z. B.
Kaffee-Tasse-Berg-Neblig-47-Fenster) ist sicherer als ein kurzes mit Sonderzeichen (Ab3!xY) - Einzigartig: Nicht woanders wiederverwendet
- Zufällig: Nicht erratbar (keine Geburtsdaten, Namen, etc.)
Wie schafft man das? Niemand kann sich 50 verschiedene lange Passwörter merken. Die Lösung: einen Passwort-Manager (Vaultwarden, den wir in Phase 5 installieren). Bis dahin: Notiere Passwörter temporär in einer verschlüsselten Datei und übertrage sie später.
Die Bitwarden-App und Browser-Erweiterung: Vaultwarden ist Bitwarden-kompatibel. Das bedeutet, du kannst die offizielle Bitwarden-App (für dein Handy) und die Browser-Erweiterung (für Chrome, Firefox, Safari) nutzen. Sobald alle Passwörter in Vaultwarden sind, funktioniert das so:
- Du gehst zu einer Login-Seite (z. B.
cloud.acme.firm) - Die Bitwarden-Browser-Erweiterung erkennt die Seite
- Mit einem Klick füllt sie Benutzername und Passwort aus
- Du musst dir kein einziges Passwort merken — außer dem Master-Passwort für Vaultwarden selbst
Das Master-Passwort ist das einzige, das du auswendig wissen musst. Es sollte besonders lang und sicher sein — es schützt schließlich alle anderen.
Regel 3: 2FA überall, wo es geht#
Was ist 2FA? Two-Factor Authentication — eine zweite Sicherheitsebene neben dem Passwort. Beim Login gibst du nicht nur das Passwort ein, sondern bestätigst zusätzlich mit einem Code aus einer App (z. B. Aegis, 2FAS) oder einem Hardware-Key.
Aktiviere 2FA mindestens bei: - Vaultwarden (das Master-Passwort allein reicht sonst) - Cloudflare - Oracle Cloud - OpenRouter - Njalla
Regel 4: Die ACME-Identität ist Firmeneigentum#
Alle Accounts, die du für ACME erstellst, gehören der Firma — nicht dir persönlich. Das bedeutet:
- Nutze die ACME-E-Mail-Adresse bei jeder Registrierung
- Trage als Namen die Firma ein, nicht dich privat
- Wenn du jemals die Firma abgibst: Alle Zugänge gehen an den Nachfolger über
- Dokumentiere jeden Account in Vaultwarden mit Ordner „ACME/Services"
Architektur-Überblick#
Das komplette Bild — eine Sicht#
┌──────────────────────────────────────────────────────────────────┐
│ INTERNET │
└──────┬───────────────────────────────────────┬────────────────────┘
│ │
▼ ▼
┌──────────────┐ ┌───────────────┐
│ Cloudflare │ │ OpenRouter │
│ WAF + CDN │ │ (LLM-API) │
│ Free Plan │ └──────┬────────┘
└──────┬────────┘ │
│ │
▼ │
┌──────────────┐ │
│ Njalla DNS │ │
│ acme.firm │ │
└──────┬────────┘ │
│ │
▼ │
┌───────────────────────────────────────────────┴───────────────────┐
│ OCI CLOUD SERVER (Oracle Free Tier, ARM) │
│ Ubuntu · Docker · Watchtower (Auto-Updates) │
│ │
│ ┌─────────┐ ┌───────────┐ ┌───────────┐ ┌───────────────────────┐ │
│ │ Caddy │ │Vaultwar- │ │Nextcloud │ │ Hermes Agent │ │
│ │(HTTPS) │ │ den │ │(Teams- │ │ ┌───────────────────┐ │ │
│ │ │ │(Passwörter)│ │ Ersatz) │ │ │ Profil: IT │ │ │
│ └────┬────┘ └───────────┘ │ + Talk │ │ │ Profil: Büro │ │ │
│ │ │ + TURN │ │ │ Profil: Projekt-A │ │ │
│ │ │ + Office │ │ │ Profil: Buchhaltung│ │ │
│ │ └─────┬─────┘ │ └───────────────────┘ │ │
│ │ │ └───────────┬───────────┘ │
│ │ ┌─────▼─────┐ │ │
│ │ │ NFS Mount │ │ │
│ │ │ (Nextcloud │ │ │
│ │ │ Daten) │ │ │
│ │ └─────┬─────┘ │ │
│ │ │ │ │
│ ┌────▼──────────────────────────▼────────────────────▼──────────┐ │
│ │ WireGuard VPN (Port 51820) │ │
│ └────────┬───────────────────────────────────────┬────────────────┘ │
│ │ │ │
│ ┌────────▼──────────────┐ ┌──────────────▼──────────────┐ │
│ │ [Optional] Zitadel │ │ [Optional] Monitoring │ │
│ │ (IAM / OIDC Login) │ │ Prometheus + Exporter │ │
│ └───────────────────────┘ │ [Optional] Elasticsearch │ │
│ │ + Kibana (Audit-Logs) │ │
│ │ [Optional] Grafana OSS │ │
│ │ Filebeat │ │
│ └──────────────────────────────┘ │
│ │
│ ┌──────────────────────┐ ┌────────────────────────────────────┐ │
│ │ [Optional] Matrix │ │ [Optional] OpenWebUI + MCPO │ │
│ │ (Element-Server, │ │ (Browser-Firmensteuerung via │ │
│ │ sicherer Kanal) │ │ Chat-Oberfläche + Tool-Gateway) │ │
│ └──────────────────────┘ └────────────────────────────────────┘ │
└──────────┬───────────────────────────────────────────┬─────────────┘
│ │
│ WireGuard │ WireGuard
│ Tunnel │ Tunnel (NFS)
│ │
┌──────────▼──────────────────┐ ┌──────────────▼──────────────┐
│ LAPTOP (Windows) │ │ RASPBERRY PI (optional) │
│ │ │ 2 TB microSD als NFS- │
│ ┌──────────┐ ┌───────────┐ │ │ Storage für Nextcloud │
│ │WireGuard │ │ Hermes │ │ │ und Elasticsearch │
│ │ Client │ │ Workspace │ │ │ │
│ ├──────────┤ ├───────────┤ │ │ ┌─────────────┐ │
│ │ WSL2 │ │ Profil: │ │ │ │ WireGuard │ │
│ │ (Linux) │ │ IT │ │◄────────┤ │ Client/NFS │ │
│ ├──────────┤ │ (erstes │ │ NFS │ │ Server │ │
│ │ Docker │ │ Profil) │ │ Mount │ └─────────────┘ │
│ │ Desktop │ └───────────┘ │ └───────────────────────────────┘
│ └──────────┘ │
│ │
│ ┌──────────────────────────┐│
│ │ [Optional] Hermes ││
│ │ Desktop App ││
│ └──────────────────────────┘│
└──────────────────────────────┘
┌──────────────────────────────────────────────────────────────────┐
│ GRAFANA CLOUD (Free Tier) │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Dashboard: │ │ Dashboard: │ │ Dashboard: │ │
│ │ Kosten- │ │ System- │ │ Audit- │ │
│ │ kontrolle │ │ Gesundheit │ │ Übersicht │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
│ (Metriken werden vom OCI-Server hierher gesendet — Remote Write) │
└────────────────────────────────────────────────────────────────────┘
Wie das alles zusammenhängt — einfach erklärt#
Der Laptop ist dein Arbeitsgerät. Darauf läuft Windows, und innerhalb von Windows eine Linux-Umgebung (WSL2). In WSL2 läuft Docker Desktop — das ist die Plattform, auf der Container (isolierte Software-Boxen) laufen. Und in Docker läuft Hermes Workspace — die erste Instanz von Hermes, noch lokal auf deinem Laptop. Das erste Profil, das du anlegst, heißt „IT". Dieses Profil wird später den gesamten Server-Aufbau miterledigen.
Falls du einen Mac (ab M1, 32 GB RAM) hast, kann auf demselben Gerät zusätzlich ein lokales LLM (z. B. Qwen 3) laufen — dann arbeitet Hermes komplett kostenlos und offline, ohne Cloud-Anbindung.
Der OCI-Server ist das „Firmen-Rechenzentrum" — ein kleiner Cloud-Server bei Oracle, der dauerhaft kostenlos zur Verfügung steht. Hier laufen alle zentralen Dienste: Passwort-Manager, Dateiablage, Chat, die KI-Assistentin, Monitoring. Watchtower hält alle Docker-Container automatisch auf dem neuesten Stand.
Der Raspberry Pi (optional, empfohlen) ist eine kleine Erweiterung: Er hat eine 2-TB-microSD-Karte und dient als Speicher-Erweiterung für den OCI-Server. Die Verbindung läuft über WireGuard (verschlüsselter Tunnel) und NFS (Network File System — ein Protokoll, um Festplatten übers Netzwerk einzubinden). So hat Nextcloud reichlich Platz, ohne dass man teuren Cloud-Speicher mieten muss.
Grafana Cloud ist die „Zentrale Steuerkonsole" — ein kostenloser Cloud-Dienst, der alle Metriken visualisiert. Hier siehst du auf einen Blick: Läuft alles? Was kostet es?
WireGuard ist der sichere Tunnel zwischen Laptop, Raspberry Pi und Server. Ohne VPN ist der Server von außen erreichbar; mit VPN nur für autorisierte Geräte.
Die Audit-Logs sind das „Überwachungssystem" — Elasticsearch sammelt alle Ereignisse (wer hat sich eingeloggt? Was hat Hermes getan?), Kibana macht daraus durchsuchbare Berichte. Du kannst jederzeit nachvollziehen, was die KI-Assistentin erledigt hat.
Komponenten-Übersicht#
Was jeder Baustein macht — und warum ACME ihn braucht#
| Baustein | Was es ist | Warum ACME es braucht | Pflicht? |
|---|---|---|---|
| Laptop (Windows + WSL2 + Docker Desktop) | Dein Arbeitsgerät | Arbeitsplatz + Hermes-Entwicklungsumgebung | ✅ Pflicht |
| Hermes Workspace (lokal) | Web-Oberfläche für Hermes | Erstes Profil „IT" wird hier angelegt — noch vor dem Server | ✅ Pflicht |
| OCI Free Tier | Kostenloser Cloud-Server (4 ARM-Cores, 24 GB RAM) | Firmen-Rechenzentrum — läuft 24/7, kostet nichts | ✅ Pflicht |
| Docker | Container-Plattform | Lässt mehrere Dienste isoliert auf einem Server laufen | ✅ Pflicht |
| Watchtower | Auto-Update für Docker-Container | Hält alle Dienste automatisch aktuell — kein manuelles Update nötig | ✅ Pflicht |
| Caddy | Webserver / Reverse Proxy | HTTPS-Verschlüsselung automatisch, routet Traffic | ✅ Pflicht |
| Vaultwarden | Passwort-Manager | Sichere Ablage aller Passwörter | ✅ Pflicht |
| Nextcloud | Kollaborationsplattform | Dateien, Chat, Video, Office — alles in einem | ✅ Pflicht |
| Nextcloud Talk + TURN | Video/Chat + TURN-Server für NAT-Traversal | Teams-Ersatz; TURN nötig für Video hinter Router | ✅ Pflicht |
| Nextcloud Office | Online-Office-Paket | Word/Excel/PowerPoint-Ersatz im Browser | ✅ Pflicht |
| WireGuard | VPN | Sichere, verschlüsselte Verbindung zwischen Laptop/Pi und Server | ✅ Pflicht |
| Hermes Agent (OCI) | KI-Assistentin auf dem Server | Erledigt Aufgaben, verwaltet Dokumente, überwacht Systeme | ✅ Pflicht |
| OpenRouter | LLM-API-Gateway (Cloud) | Zugang zu KI-Modellen (Claude, GPT, GLM, etc.) — pay-per-use | ✅ Pflicht (Option A) |
| Lokales LLM (Mac) | KI-Modell lokal auf dem Mac | 0 € laufende Kosten, volle Datenhoheit — Qwen 3, Llama 4, etc. | ⬜ Optional (Option B) |
| Grafana Cloud | Dashboard-Plattform (gehostet) | Visualisiert Metriken, Alerting, kostenlos | ✅ Pflicht |
| Prometheus + Exporter | Metrik-System | Sammelt Zahlen: CPU, RAM, Token-Verbrauch, Kosten | ✅ Pflicht |
| Raspberry Pi + 2 TB microSD | Mini-Computer als NFS-Storage | Erweitert OCI-Speicher billig auf 2 TB | ⬜ Optional (empfohlen) |
| Zitadel | Identity Provider (IAM) | Zentrales Login — ein Passwort für alle Dienste | ⬜ Optional |
| Elasticsearch + Kibana | Such- und Analyse-Engine | Audit-Logs durchsuchbar („Was hat Hermes getan?") | ⬜ Optional |
| Filebeat | Log-Sammler | Sammelt System- und Hermes-Logs für Elasticsearch | ⬜ Optional |
| Grafana OSS | Lokale Grafana-Instanz | Alternative zu Grafana Cloud, mehr Kontrolle | ⬜ Optional |
| OpenWebUI + MCPO | Browser-Chat + Tool-Gateway | Chat-Oberfläche im Browser, steuert Hermes-Tools | ⬜ Optional |
| Matrix / Element | Messenger-Plattform | Sicherer Kanal (Browser + App) zu Hermes-Profilen | ⬜ Optional |
| Docker Desktop (lokal) | Container-Verwaltung | Lässt Hermes lokal auf dem Laptop testen | ✅ Pflicht |
| Njalla | DNS / Domain | Privater Domain-Registrierer | ✅ Pflicht |
| Cloudflare | CDN + WAF | Schützt Server vor Angriffen, beschleunigt | ✅ Pflicht |
Der wichtige Unterschied: Pflicht vs. Optional#
Das Minimum für ACME besteht aus: Laptop mit Hermes, OCI-Server mit Caddy/Vaultwarden/Nextcloud/WireGuard, OpenRouter, Grafana Cloud.
Optionale Bausteine können jederzeit später ergänzt werden. Sie bringen Mehrwert, sind aber für den Start nicht zwingend:
- Raspberry Pi — wenn der OCI-Speicher (200 GB) nicht reicht
- Zitadel — wenn mehrere Personen mitmachen und zentrales Login wichtig wird
- Elasticsearch + Kibana — wenn detaillierte Audit-Logs gewünscht sind
- OpenWebUI + MCPO — wenn du Hermes lieber im Browser bedienst statt Telegram
- Matrix/Element — wenn ein zweiter, sicherer Messenger-Kanal neben Nextcloud Talk gewünscht ist
- Grafana OSS — wenn du statt Grafana Cloud eine lokale Instanz willst
Phasenplan — Der Aufbau in 12 Schritten#
| Phase | Was passiert | Dauer (geschätzt) |
|---|---|---|
| Phase 1 | Hermes auf dem Laptop installieren + Profil „IT" anlegen | 2 Stunden |
| Phase 2 | Domain & DNS (mit Hermes-Beratung) | 1 Stunde |
| Phase 3 | OCI-Server vorbereiten (Hermes richtet sich selbst ein) | 2 Stunden |
| Phase 4 | Sicherheit: WireGuard, Firewall | 2 Stunden |
| Phase 5 | Basis-Dienste: Caddy, Vaultwarden, Watchtower | 2 Stunden |
| Phase 6 | NFS-Storage: Raspberry Pi einbinden (optional) | 2 Stunden |
| Phase 7 | Nextcloud als Teams-Ersatz + TURN-Server | 3 Stunden |
| Phase 8 | Hermes Agent auf OCI installieren + Profile migrieren | 2 Stunden |
| Phase 9 | Monitoring: Prometheus, Grafana Cloud, Dashboards | 3 Stunden |
| Phase 10 | [Optional] Elasticsearch, Zitadel, OpenWebUI, Matrix | 4 Stunden |
| Phase 11 | Knowledge Base & Skills aufbauen | 3 Stunden |
| Phase 12 | Inbetriebnahme, Tests, Dokumentation | 2 Stunden |
Gesamtaufwand: ~28 Stunden (über mehrere Tage/Wochen verteilt)
Das wichtige Prinzip: Ab Phase 2 ist Hermes bereits aktiv. Du besprichst alles mit dem IT-Profil, und Hermes erledigt viele Konfigurationsschritte selbstständig auf dem Server — via SSH, sobald er Zugang hat.
PHASE 1 — Hermes auf dem Laptop installieren + Profil „IT" anlegen#
Was wir hier tun#
Hermes kommt zuerst. Noch bevor es einen Server gibt, eine Domain, oder irgendwelche Dienste — installierst du Hermes auf deinem Laptop. Du legst das erste Profil an: „IT". Dieses Profil wird später den gesamten Server-Aufbau miterledigen.
Stell dir vor, du stellst als Erstes deinen IT-Administrator ein. Bevor es ein Büro gibt, sitzt er am Küchentisch und plant alles mit. Genau das macht das IT-Profil.
Schritt 1.1: WSL2 einrichten#
Was ist WSL2? WSL2 (Windows Subsystem for Linux, Version 2) lässt ein vollwertiges Linux direkt unter Windows laufen — ohne virtuelle Maschine, ohne Dual-Boot. Du hast ein normales Windows, und darin ein Linux-Terminal, das nahtlos mit Windows-Dateien arbeiten kann.
- Öffne PowerShell als Administrator
- Führe aus:
wsl --install - Windows installiert WSL2 und Ubuntu
- Starte den Laptop neu
- Öffne Ubuntu (Startmenü → „Ubuntu")
- Lege einen Linux-Benutzernamen und ein Passwort fest
Ab jetzt hast du ein Linux-Terminal unter Windows. Alle folgenden
Befehle, die mit sudo beginnen, führst du in diesem Ubuntu-Terminal aus.
Schritt 1.2: Docker Desktop installieren#
Was ist Docker? Docker ist wie ein Schiffsfrachter für Software: Jedes Programm läuft in einem „Container" — einer isolierten Box, die alles enthält, was das Programm braucht. Dadurch geraten Programme nicht miteinander in Konflikt und lassen sich leicht installieren und aktualisieren.
- Gehe zu docker.com → „Docker Desktop for Windows"
- Lade herunter und installiere
- Bei der Installation: „Use WSL 2 instead of Hyper-V" ankreuzen
- Starte Docker Desktop
- Gehe zu Settings → Resources → WSL Integration → Ubuntu aktivieren
- Öffne das Ubuntu-Terminal und teste:
Wenn „Hello from Docker!" erscheint, funktioniert es.docker --version docker run hello-world
Schritt 1.3: Hermes Workspace installieren#
Was ist Hermes Workspace? Hermes Workspace ist die Web-Oberfläche für Hermes. Es ist kein Chat-Programm — es ist ein Dashboard, über das du Profile verwaltest, Skills konfigurierst, Memories einsehst und Hermes beauftragst. Es läuft lokal auf deinem Laptop (in Docker).
# Im Ubuntu-Terminal:
mkdir -p ~/hermes-workspace && cd ~/hermes-workspace
# Hermes Workspace Docker-Image laden
docker run -d \
--name hermes-workspace \
-p 9119:9119 \
-v $(pwd)/data:/data \
-v /var/run/docker.sock:/var/run/docker.sock \
--restart unless-stopped \
ghcr.io/nousresearch/hermes-workspace:latest
Öffne im Browser: http://localhost:9119
Beim ersten Öffnen wirst du nach einem Passwort gefragt. Wähle ein sicheres Passwort und notiere es (später in Vaultwarden).
Schritt 1.4: LLM-Backend einrichten — OpenRouter (Cloud) oder lokal (Mac)#
Was ist ein LLM-Backend? Das LLM (Large Language Model) ist das „Gehirn" von Hermes. Hermes selbst ist die Hände — sie führt Befehle aus, liest Dateien, bedient Tools. Aber das Denken, Formulieren, Entscheiden macht das LLM. Dafür braucht Hermes Zugriff auf ein solches Modell.
ACME hat hier zwei Optionen, die sich jederzeit ergänzen oder austauschen lassen:
Option A: OpenRouter (Cloud — einfach, pay-per-use)#
Was ist OpenRouter? OpenRouter ist wie ein Vermittler: Du fragst bei OpenRouter an, und OpenRouter leitet deine Anfrage an das KI-Modell deiner Wahl weiter. Ein Account reicht für Zugang zu allen Modellen (Claude, GPT, GLM, DeepSeek, etc.).
Vorteile: Keine Hardware nötig, sofort startklar, Zugang zu den besten Modellen weltweit, zahlt nur was du verbrauchst.
Nachteile: Laufende Kosten (wenig, aber vorhanden), Daten verlassen den eigenen Rechner.
- Gehe zu openrouter.ai und erstelle einen Account
- Gehe zu „Keys" → erstelle einen API-Key
- Lade den Key mit Guthaben auf (z. B. 20 € — reicht für Wochen)
- Wähle ein Modell — für ACME empfohlen:
| Modell | Preis pro 1M Token | Wann nutzen? |
|---|---|---|
| z-ai/glm-5.2 | ~0,95 € / 3,00 € | Standard (gut + günstig) |
| anthropic/claude-sonnet-4 | ~3,00 € / 15,00 € | Komplexe Aufgaben |
| deepseek/deepseek-chat | ~0,09 € / 0,18 € | Sehr günstig, einfache Aufgaben |
Option B: Lokales LLM auf einem Mac (ab M1, 32 GB RAM)#
Was ist ein lokales LLM? Statt die KI-Anfragen ins Internet zu schicken, lässt du das Modell direkt auf deinem eigenen Mac laufen. Nichts verlässt deinen Rechner — voller Datenschutz, null laufende Kosten.
Voraussetzung: Ein Mac mit Apple Silicon (M1, M2, M3, M4 oder höher) und mindestens 32 GB RAM. Das Modell braucht viel Arbeitsspeicher — mit 16 GB ist nur ein sehr kleines Modell nutzbar.
Empfohlene Modelle für den Mac:
| Modell | RAM-Bedarf | Qualität | Wann nutzen? |
|---|---|---|---|
| Qwen 3 8B | ~6 GB | Gut für einfache Aufgaben | Normale Büro-Aufgaben |
| Qwen 3 32B (quantisiert) | ~20 GB | Sehr gut | Standard, sparsam |
| Llama 4 Scout 17B | ~12 GB | Gut | Alternative zu Qwen |
| DeepSeek R1 Distill 32B | ~20 GB | Gut für Logik/Code | Analytische Aufgaben |
Einrichtung mit LM Studio (empfohlen für Nicht-ITler):
- Lade LM Studio von lmstudio.ai herunter und installiere es
- Öffne LM Studio → „Search" → suche z. B. „Qwen 3 32B GGUF"
- Wähle eine quantisierte Version (z. B. Q4_K_M — das ist die komprimierte Form, die weniger RAM braucht)
- Lade das Modell herunter (ca. 5–20 GB, je nach Modell)
- Gehe zum Tab „Local Server" → „Start Server"
- LM Studio läuft nun auf
http://localhost:1234und bietet eine OpenAI-kompatible API
So verbindest du Hermes mit dem lokalen Modell:
In der Hermes-Konfiguration (siehe Schritt 1.5) trägst du statt OpenRouter einfach die lokale Adresse ein:
llm:
provider: openai-compatible
base_url: http://localhost:1234/v1
model: qwen-3-32b
api_key: not-needed # LM Studio verlangt keinen echten Key
Vorteile: Keine laufenden Kosten, volle Datenhoheit, offline-fähig. Nachteile: Nur auf dem Mac nutzbar (nicht auf dem OCI-Server), langsamer als Cloud-Modelle bei sehr komplexen Aufgaben, modellseitig begrenzt auf das, was in 32 GB RAM passt.
Option C: Beide parallel (empfohlen)#
Die beste Lösung für ACME: Du nutzt beide — und kannst jederzeit wechseln, ohne Hermes neu zu konfigurieren.
| Szenario | Welches Backend? |
|---|---|
| Am Mac sitzend, einfache Büro-Aufgaben | Lokal (Qwen 3) — kostenlos, privat |
| Unterwegs, per Telegram | OpenRouter (Cloud) — von überall |
| Komplexe Programmier-Aufgaben | OpenRouter (Claude) — höchste Qualität |
| Vertrauliche Kundendaten | Lokal (Qwen 3) — Daten verlassen nicht den Mac |
Hermes unterstützt Fallback-Ketten: Wenn das lokale Modell nicht verfügbar ist (z. B. Mac ausgeschaltet), fällt Hermes automatisch auf OpenRouter zurück. So bist du immer abgedeckt.
llm:
primary:
provider: openai-compatible
base_url: http://localhost:1234/v1
model: qwen-3-32b
fallback:
provider: openrouter
model: z-ai/glm-5.2
api_key: ${OPENROUTER_API_KEY}
Token sind die „Währung" der KI — ein Token ist etwa ein Wort. Wenn Hermes eine Aufgabe erledigt, verbraucht sie Token (beim lokalen Modell kostenlos, bei OpenRouter kostenpflichtig). Das Kosten-Tracking (Phase 9) zeigt genau, wie viele Token pro Tag verbraucht werden und welches Backend sie verursacht hat.
Schritt 1.5: Hermes konfigurieren#
Erstelle die Konfigurationsdatei:
mkdir -p ~/.hermes
nano ~/.hermes/config.yaml
Inhalt:
# LLM-Konfiguration
llm:
provider: openrouter
model: z-ai/glm-5.2
api_key: ${OPENROUTER_API_KEY}
# Gateway (Web-API für Hermes)
gateway:
enabled: true
port: 8642
# Workspace (Web-Dashboard)
workspace:
enabled: true
port: 9119
password_hash: <hash-von-deinem-passwort>
Umgebungsvariablen (API-Key sicher speichern):
nano ~/.hermes/.env
OPENROUTER_API_KEY=sk-or-v1-...dein-key...
Schritt 1.6: Das erste Profil anlegen — „IT"#
Was ist ein Profil? Ein Profil ist eine eigenständige Hermes-Instanz mit eigenen Skills, eigenen Erinnerungen (Memories), eigenem Chat-Verlauf und eigener Persönlichkeit. Verschiedene Profile sind wie verschiedene Mitarbeiter: Jeder hat seine Aufgabe, sein Wissen und seine Gesprächshistorie.
Das erste Profil ist „IT" — der IT-Administrator von ACME.
# Profil erstellen
hermes profile create IT
# Profil aktivieren
hermes profile use IT
Jetzt konfigurieren wir das IT-Profil mit einer Persönlichkeit und einem klar definierten Aufgabenbereich:
nano ~/.hermes/profiles/IT/config.yaml
# Profil: IT — Der IT-Administrator von ACME
name: IT
description: >
IT-Administrator für die Firma ACME. Verantwortlich für den
technischen Aufbau und Betrieb der gesamten Infrastruktur.
Berät den Inhaber bei technischen Entscheidungen und führt
Konfigurationsaufgaben auf dem Server selbstständig durch.
# System-Prompt (wer Hermes "ist" in diesem Profil)
system_prompt: >
Du bist der IT-Administrator der Firma ACME.
Deine Aufgabe ist es, den Inhaber bei allen IT-Themen zu beraten
und praktische Arbeiten auf dem Server durchzuführen.
Du arbeitet sorgfältig, dokumentierst alle Schritte und fragst
nach, bevor du etwas Zerstörisches tust.
Du sprichst Deutsch, erklärst technische Zusammenhänge verständlich
und gibst Empfehlungen ab.
# Tools, die dieses Profil nutzen darf
tools:
- terminal # Befehle ausführen (lokal + SSH)
- web_search # im Web suchen
- web_extract # Webseiten lesen
- write_file # Dateien schreiben
- read_file # Dateien lesen
- patch # Dateien bearbeiten
- memory # sich Dinge merken
Schritt 1.7: Mit dem IT-Profil sprechen#
Öffne Hermes Workspace im Browser: http://localhost:9119
Wähle das Profil „IT" und beginne das erste Gespräch:
Du: Hallo. Ich gründe eine Firma namens ACME. Ich bin allein. Du bist mein IT-Administrator. Wir fangen bei null an — ich habe nur diesen Laptop. Was schlägst du als Erstes vor?
Hermes (IT): Willkommen! Bevor wir irgendetwas kaufen oder installieren, sollten wir uns organisieren. Hier ist mein Vorschlag für die nächsten Schritte:
- Domain besorgen — eine Internet-Adresse für ACME
- Cloud-Server mieten — ich empfehle Oracle Free Tier (kostenlos)
- Passwort-Manager aufsetzen — bevor wir Passwörter haben, brauchen wir einen sicheren Tresor
- Sichere Verbindung (VPN) — damit nur du auf den Server kommst
- Kollaborationsplattform — Nextcloud als Ersatz für Microsoft Teams
Sobald du den Server hast, kann ich viele dieser Schritte selbst übernehmen. Fangen wir mit der Domain an?
Das ist das Prinzip: Ab jetzt besprichst du jeden Schritt mit dem IT-Profil. Hermes berät, plant, und sobald der Server existiert, erledigt er die Konfiguration selbstständig.
Schritt 1.8: Skills für das IT-Profil#
Was sind Skills? Skills sind Fähigkeiten, die Hermes beibringen, wie wiederkehrende Aufgaben erledigt werden. Ein Skill ist eine Markdown-Datei mit Schritt-für-Schritt-Anleitungen.
Lege folgende Skills für das IT-Profil an:
mkdir -p ~/.hermes/profiles/IT/skills
Skill: acme-server-setup#
---
name: acme-server-setup
description: Richtet einen neuen OCI-Server für ACME ein
---
# OCI-Server einrichten
1. Verbinde dich per SSH: `ssh -i <key> ubuntu@<ip>`
2. System aktualisieren: `sudo apt update && sudo apt upgrade -y`
3. Zeitszone setzen: `sudo timedatectl set-timezone Europe/Berlin`
4. Docker installieren: `curl -fsSL https://get.docker.com | sudo sh`
5. Auto-Updates aktivieren: Watchtower einrichten
6. Verzeichnisstruktur erstellen: `mkdir -p ~/acme/{caddy,vaultwarden,nextcloud,...}`
7. Firewall konfigurieren: UFW, nur 443, 80, 51820
8. Hermes-Benutzer anlegen: `sudo adduser hermes`
9. SSH-Key für Hermes hinterlegen
10. Bericht an Inhaber: „Server ist bereit"
Skill: acme-service-deploy#
---
name: acme-service-deploy
description: Stellt einen Docker-Dienst auf dem ACME-Server bereit
---
# Dienst bereitstellen
1. docker-compose.yml erstellen oder aus Vorlage laden
2. Auf dem Server ablegen: `scp docker-compose.yml ubuntu@<ip>:~/acme/<service>/`
3. Starten: `ssh ubuntu@<ip> "cd ~/acme/<service> && docker compose up -d"`
4. Status prüfen: `docker ps`
5. Health-Check durchführen (HTTP-Request)
6. Caddy-Reverse-Proxy-Eintrag hinzufügen
7. In Vaultwarden Passwort eintragen
8. In Hermes config den Dienst eintragen
9. Bericht an Inhaber
Diese Skills legen wir jetzt schon an — auch bevor der Server existiert. Wenn der Server dann steht, kann Hermes diese Skills abrufen und ausführen, ohne dass du jeden Schritt einzeln erklären musst.
Ergebnis nach Phase 1: Hermes läuft auf deinem Laptop, das IT-Profil ist angelegt und mit OpenRouter verbunden. Du hast deinen ersten „Mitarbeiter" — den IT-Administrator. Jetzt geht es darum, ihm einen Arbeitsplatz (den Server) zu geben.
PHASE 2 — Domain & DNS (mit Hermes-Beratung)#
Was wir hier tun#
Wir besorgen ACME eine Internet-Adresse (Domain) und rufen ein, dass Anfragen an diese Adresse an unseren (späteren) Server weitergeleitet werden. Und: Wir lassen uns dabei von Hermes beraten.
Stell dir vor, du mietest eine Geschäftsadresse. Du brauchst eine Straße, ein Schild an der Tür und ein Telefonbuch, damit Kunden dich finden. Im Internet ist das die Domain (die Adresse), DNS (das Telefonbuch) und der Server (das Büro).
Schritt 2.1: Domain bei Njalla registrieren#
Warum Njalla? Njalla ist ein privacy-fokussierter Domain-Registrierer. Anders als bei vielen anderen Anbietern werden deine persönlichen Daten nicht im WHOIS-Verzeichnis veröffentlicht. Für eine Firma bedeutet das: Deine private Adresse ist nicht öffentlich sichtbar.
- Öffne Hermes Workspace und frage das IT-Profil:
„Ich brauche eine Domain für ACME. Welche Endung empfiehlst du?"
- Hermes berät dich (z. B.
.se,.firms,.consulting) - Gehe zu njalla.org und suche eine Domain
- Wähle eine Domain aus und kaufe sie (ca. 15–20 €/Jahr)
- Wichtig: Notiere dir die Login-Daten — sie kommen später in Vaultwarden
Schritt 2.2: Cloudflare einrichten#
Warum Cloudflare? Cloudflare sitzt wie ein Türsteher vor deinem Server. Es blockt Angriffe, beschleunigt die Seite durch Caching und bietet kostenloses HTTPS. Der „Free Plan" reicht für ACME.
- Gehe zu cloudflare.com und erstelle einen kostenlosen Account
- Klicke „Add a Site" → gib deine Domain ein
- Cloudflare zeigt dir zwei Nameserver:
alice.ns.cloudflare.combob.ns.cloudflare.com- Gehe zurück zu Njalla → Domain-Einstellungen → Nameserver
- Ersetze die Njalla-Nameserver durch die Cloudflare-Nameserver
- Warte ca. 1–24 Stunden (DNS braucht Zeit)
Schritt 2.3: DNS-Einträge erstellen#
Wenn Cloudflare aktiv ist, erstellst du dort die DNS-Einträge. Das sind die „Wegweiser", die sagen: „Wenn jemand acme.firm aufruft, gehe zu dieser IP-Adresse."
| Typ | Name | Wert | Proxy | Bedeutung |
|---|---|---|---|---|
| A | @ |
<OCI-Server-IP> |
Proxied (orange Wolke) | Hauptdomain → Server |
| A | vault |
<OCI-Server-IP> |
Proxied | vault.acme.firm → Vaultwarden |
| A | cloud |
<OCI-Server-IP> |
Proxied | cloud.acme.firm → Nextcloud |
| A | hermes |
<OCI-Server-IP> |
Proxied | hermes.acme.firm → Hermes |
| A | turn |
<OCI-Server-IP> |
DNS only (grau) | TURN-Server für Nextcloud Talk |
| A | kibana |
<OCI-Server-IP> |
Proxied | [Optional] Kibana |
| A | grafana |
<OCI-Server-IP> |
Proxied | [Optional] Grafana OSS |
| A | login |
<OCI-Server-IP> |
Proxied | [Optional] Zitadel |
| A | matrix |
<OCI-Server-IP> |
Proxied | [Optional] Matrix |
| A | chat |
<OCI-Server-IP> |
Proxied | [Optional] OpenWebUI |
„Proxied" (orange Wolke): Cloudflare steht vor dem Dienst und schützt ihn. Der Server ist direkt im Internet nur über Cloudflare erreichbar.
„DNS only" (graue Wolke): Cloudflare leitet nur weiter, schützt aber nicht. Das nutzen wir für Dienste, die Cloudflare nicht vertragen (z. B. WireGuard VPN oder TURN-Server, die direkten Traffic brauchen).
Tipp: Frag Hermes, welche DNS-Einträge du anlegen solltest. Das IT-Profil kann dir eine komplette Liste generieren, sobald du ihm die Server-IP mitteilst.
Ergebnis nach Phase 2: ACME hat eine Domain, die über Cloudflare geschützt wird. DNS ist vorbereitet — jetzt brauchen wir den Server.
PHASE 3 — OCI-Server vorbereiten (Hermes richtet sich selbst ein)#
Was wir hier tun#
Wir mieten einen kostenlosen Cloud-Server bei Oracle. Sobald der Server steht, geben wir Hermes (dem IT-Profil) SSH-Zugriff. Ab diesem Moment kann Hermes sich selbst auf dem Server einrichten: Docker installieren, Firewall konfigurieren, Verzeichnisse anlegen, Watchtower starten.
Das ist der Wendepunkt: Ab hier erledigt Hermes die meiste Arbeit selbstständig — du besprichst, was getan werden soll, und Hermes führt es auf dem Server aus.
Schritt 3.1: Oracle Cloud Free Tier Account#
Oracle bietet dauerhaft kostenlose Server an — das „Always Free" Programm. Das ist kein Trial, sondern gilt unbefristet.
- Gehe zu oracle.com/cloud/free
- Klicke „Start for free"
- Registriere dich (Kreditkarte wird zur Verifizierung verlangt, aber nicht abgebucht)
- Wähle als Region Frankfurt (eu-central-1) — wichtig für DSGVO
Was du kostenlos bekommst:
| Ressource | Menge |
|---|---|
| ARM-CPUs | 4 Kerne |
| RAM | 24 GB |
| Festplatte (Boot-Volume) | 200 GB |
| Bandbreite | 10 TB/Monat |
Das ist mehr als genug für ACME. Zum Vergleich: Ein vergleichbarer VPS bei anderen Anbietern kostet 20–40 €/Monat.
Speicher-Hinweis: Die 200 GB Boot-Volume reichen für das Betriebssystem und alle Dienste. Für Nextcloud-Dateien und [optional] Elasticsearch-Logs kann das knapp werden. Die Lösung: Ein Raspberry Pi mit 2 TB microSD als NFS-Storage (siehe Phase 6).
Schritt 3.2: Compute-Instanz erstellen#
- Im OCI Dashboard → Compute → Instances → „Create Instance"
- Name:
acme-server - Image: Canonical Ubuntu 22.04 (oder 24.04)
- Shape: VM.Standard.A1.Flex (die kostenlose ARM-Instanz)
- Konfiguriere: 4 OCPUs, 24 GB RAM
- SSH-Key: Lade einen öffentlichen SSH-Key hoch oder generiere ein neues Schlüsselpaar. Bewahre den privaten Schlüssel sicher auf! Ohne ihn kommst du nicht mehr auf den Server.
- Klicke „Create"
Nach ca. 2–3 Minuten ist der Server fertig. Du siehst die öffentliche IP-Adresse im Dashboard.
Schritt 3.3: Hermes SSH-Zugang geben#
Das ist der wichtigste Schritt in diesem Guide. Ab hier kann Hermes selbstständig auf dem Server arbeiten.
Damit Hermes sich per SSH mit dem Server verbinden kann, brauchen wir einen SSH-Key für Hermes und hinterlegen den öffentlichen Teil auf dem Server.
3.3.1: SSH-Key für Hermes generieren#
Auf deinem Laptop (in WSL2):
# SSH-Key für Hermes generieren (ohne Passphrase, damit Hermes ihn automatisch nutzen kann)
ssh-keygen -t ed25519 -C "hermes-it@acme" -f ~/.ssh/hermes_acme_it -N ""
# Public Key anzeigen (den brauchen wir gleich auf dem Server)
cat ~/.ssh/hermes_acme_it.pub
3.3.2: Public Key auf dem Server hinterlegen#
Verbinde dich zuerst selbst per SSH auf den neuen Server:
ssh -i dein-schluessel.pem ubuntu@<server-ip>
Auf dem Server:
# Hermes-Benutzer anlegen
sudo adduser --disabled-password --gecos "" hermes
# Hermes sudo-Rechte geben (ohne Passwort, damit Hermes arbeiten kann)
echo "hermes ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/hermes
# SSH-Verzeichnis für Hermes anlegen
sudo mkdir -p /home/hermes/.ssh
sudo touch /home/hermes/.ssh/authorized_keys
# Den Public Key von Hermes eintragen (den du eben generiert hast)
echo "<hermes-public-key-hier-einfügen>" | sudo tee -a /home/hermes/.ssh/authorized_keys
# Berechtigungen setzen
sudo chown -R hermes:hermes /home/hermes/.ssh
sudo chmod 700 /home/hermes/.ssh
sudo chmod 600 /home/hermes/.ssh/authorized_keys
3.3.3: Hermes für SSH-Zugriff konfigurieren#
Zurück auf dem Laptop — Hermes muss wissen, wie er sich verbindet:
nano ~/.hermes/profiles/IT/config.yaml
Ergänze:
# SSH-Konfiguration für Server-Zugriff
ssh:
acme-server:
host: <server-ip>
user: hermes
key: ~/.ssh/hermes_acme_it
port: 22
3.3.4: Testen#
Frage Hermes im Workspace:
Du: Verbinde dich mit dem ACME-Server und prüfe, ob du Zugang hast.
Hermes (IT): Ich habe mich per SSH verbunden. Der Server läuft, Ubuntu 22.04, 4 ARM-Cores, 24 GB RAM. Ich habe Zugang als Benutzer „hermes" mit sudo-Rechten. Soll ich mit der Einrichtung beginnen?
Ab diesem Moment kann Hermes selbstständig auf dem Server arbeiten. Das ist der entscheidende Unterschied: Du musst keine Befehle mehr manuell eingeben — du sagst Hermes, was getan werden soll, und Hermes führt es aus.
Schritt 3.4: Hermes richtet den Server ein#
Jetzt kannst du Hermes beauftragen, die Grundkonfiguration durchzuführen. Sage im Workspace:
Du: Bitte richte den Server grundlegend ein: System-Update, Zeitzone Europe/Berlin, Docker installieren, Verzeichnisstruktur für ACME anlegen, Firewall konfigurieren.
Hermes wird dann (mithilfe des acme-server-setup-Skills) folgende
Schritte ausführen:
sudo apt update && sudo apt upgrade -y— System aktualisierensudo timedatectl set-timezone Europe/Berlin— Zeitzone setzencurl -fsSL https://get.docker.com | sudo sh— Docker installierensudo usermod -aG docker hermes— Hermes in Docker-Gruppe- Verzeichnisstruktur:
mkdir -p ~/acme/{caddy,vaultwarden,nextcloud,...} - Firewall (UFW): nur Port 443, 80, 51820 offen
- Watchtower einrichten (Auto-Updates für Docker-Container)
Watchtower ist ein Docker-Container, der alle anderen Container automatisch aktualisiert. Wenn es eine neue Version von Nextcloud, Vaultwarden, etc. gibt, lädt Watchtower sie herunter und tauscht den Container aus — ohne dass du eingreifen musst.
# Watchtower (von Hermes ausgeführt)
docker run -d \
--name watchtower \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower \
--cleanup --interval 86400
(--interval 86400 = prüft alle 24 Stunden auf Updates)
Ergebnis nach Phase 3: Der OCI-Server steht, Docker läuft, die Firewall ist konfiguriert, Watchtower hält alles aktuell. Und das Wichtigste: Hermes hat SSH-Zugriff und kann ab jetzt selbstständig auf dem Server arbeiten.
PHASE 4 — Sicherheit: WireGuard & Firewall#
Was wir hier tun#
Wir bauen die Sicherheitsschicht auf: WireGuard VPN als verschlüsselten Tunnel zwischen Laptop und Server. Nur wer im VPN ist, kann interne Dienste erreichen.
Stell dir das wie ein Bürogebäude vor: Der Parkplatz ist durch eine Schranke gesichert (VPN). Ohne Schlüsselkarte kommst du nicht rein.
Schritt 4.1: WireGuard VPN auf dem Server#
Warum WireGuard? WireGuard ist modern, extrem schnell und einfach zu konfigurieren. Es erstellt einen verschlüsselten Tunnel zwischen dem Laptop und dem Server. Interne Dienste (Hermes Workspace, Kibana, Grafana OSS) sind nur über das VPN erreichbar.
Du kannst Hermes bitten, WireGuard zu installieren:
Du: Bitte installiere WireGuard auf dem Server und lege eine Konfiguration für meinen Laptop an.
Hermes führt dann folgende Schritte aus:
# WireGuard installieren
sudo apt install -y wireguard
# Schlüsselpaar generieren
wg genkey | tee privatekey | wg pubkey > publickey
chmod 600 privatekey
Server-Konfiguration /etc/wireguard/wg0.conf:
[Interface]
PrivateKey = <server-private-key>
Address = 10.10.0.1/24
ListenPort = 51820
# Laptop
[Peer]
PublicKey = <laptop-public-key>
AllowedIPs = 10.10.0.2/32
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
Schritt 4.2: WireGuard auf dem Laptop#
- Lade WireGuard von wireguard.com herunter und installiere es
- Klicke „Add Tunnel" → „Add empty tunnel"
- Generiere automatisch ein Schlüsselpaar
- Konfiguration:
[Interface]
PrivateKey = <laptop-private-key>
Address = 10.10.0.2/24
DNS = 10.10.0.1
[Peer]
PublicKey = <server-public-key>
Endpoint = <server-ip>:51820
AllowedIPs = 10.10.0.0/24
PersistentKeepalive = 25
- Trage den Laptop-Public-Key in die Server-Konfiguration ein (Hermes kann das erledigen)
- Verbinde — du solltest den Server unter
10.10.0.1pingen können
Ergebnis nach Phase 4: Der Server ist durch WireGuard abgesichert. Nur autorisierte Geräte können interne Dienste erreichen.
PHASE 5 — Basis-Dienste: Caddy, Vaultwarden, Watchtower#
Was wir hier tun#
Wir installieren zwei Grunddienste, die alle weiteren Schritte voraussetzen:
- Caddy — der Reverse Proxy, der HTTPS-Zertifikate automatisch besorgt und Anfragen an die richtigen Dienste weiterleitet
- Vaultwarden — der Passwort-Manager, in dem alle anderen Passwörter sicher liegen
Watchtower haben wir bereits in Phase 3 installiert.
Schritt 5.1: Caddy als Reverse Proxy#
Was ist ein Reverse Proxy? Stell dir Caddy wie einen Pförtner vor. Jemand kommt herein und sagt „Ich möchte zu Nextcloud". Caddy sagt „Zimmer 8080, bitte entlang" und leitet weiter. Caddy kümmert sich auch um HTTPS — die Verschlüsselung der Verbindung. Das macht Caddy völlig automatisch: Er holt sich Zertifikate von Let's Encrypt (kostenlos) und erneuert sie selbst.
Beauftrage Hermes:
Du: Bitte installiere Caddy als Reverse Proxy auf dem Server. Nutze die Domains aus der DNS-Konfiguration.
Hermes erstellt:
~/acme/caddy/docker-compose.yml:
version: '3.8'
services:
caddy:
image: caddy:2
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./data:/data
- ./config:/config
network_mode: host
~/acme/caddy/Caddyfile:
# Hauptdomain
acme.firm {
respond "ACME — Willkommen"
}
# Vaultwarden (Passwort-Manager)
vault.acme.firm {
reverse_proxy localhost:8001
}
# Nextcloud
cloud.acme.firm {
reverse_proxy localhost:8080
}
# Hermes Workspace
hermes.acme.firm {
reverse_proxy localhost:9119
}
# TURN (DNS only, kein Cloudflare Proxy)
turn.acme.firm {
reverse_proxy localhost:3478
}
# --- Optional ---
# Zitadel (Login)
login.acme.firm {
reverse_proxy localhost:8081
}
# Kibana (Audit-Logs)
kibana.acme.firm {
reverse_proxy localhost:5601
}
# Grafana OSS
grafana.acme.firm {
reverse_proxy localhost:3001
}
# Matrix
matrix.acme.firm {
reverse_proxy localhost:8008
}
# OpenWebUI
chat.acme.firm {
reverse_proxy localhost:3000
}
Starten:
cd ~/acme/caddy && docker compose up -d
Caddy holt automatisch HTTPS-Zertifikate für alle Domains.
Du kannst nun https://acme.firm im Browser öffnen und solltest
die Willkommensnachricht sehen — mit grünem Schloss.
Schritt 5.2: Vaultwarden (Passwort-Manager)#
Was ist Vaultwarden? Vaultwarden ist eine leichtgewichtige, selbstgehostete Version von Bitwarden. Bitwarden ist einer der besten Passwort-Manager — er speichert alle deine Passwörter verschlüsselt und synchronisiert sie zwischen Geräten.
Warum ist das der erste Dienst? Weil du jetzt schon viele Passwörter hast (Server, Cloudflare, Njalla, Oracle, OpenRouter) und sie nicht in einer Textdatei liegen sollten. Vaultwarden wird zum digitalen Tresor von ACME.
Beauftrage Hermes:
Du: Bitte installiere Vaultwarden auf dem Server.
~/acme/vaultwarden/docker-compose.yml:
version: '3.8'
services:
vaultwarden:
image: vaultwarden/server:latest
restart: unless-stopped
environment:
DOMAIN: https://vault.acme.firm
SIGNUPS_ALLOWED: false
INVITATIONS_ALLOWED: true
ADMIN_TOKEN: <sicheres-admin-passwort>
volumes:
- ./data:/data
ports:
- "8001:80"
Schritt 5.3: Vaultwarden einrichten#
- Öffne
https://vault.acme.firm - Erstelle deinen Account (Master-Account für die Firma)
- WICHTIG:
SIGNUPS_ALLOWED: false— niemand kann sich selbst registrieren. Nur der Admin kann Einladungen verschicken - Installiere die Bitwarden Browser-Erweiterung auf deinem Laptop
- Logge dich mit „Self-hosted" →
https://vault.acme.firmein - Lege Ordner an: „ACME", „ACME/Server", „ACME/Services", „ACME/API-Keys"
- Trage alle bisherigen Passwörter ein (Njalla, Cloudflare, Oracle, etc.)
Ergebnis nach Phase 5: ACME hat HTTPS (Caddy) und einen sicheren Passwort-Manager (Vaultwarden). Alle zukünftigen Passwörter landen hier.
PHASE 6 — NFS-Storage: Raspberry Pi einbinden (optional, empfohlen)#
Was wir hier tun#
Der OCI-Server hat 200 GB Boot-Volume. Das reicht für das Betriebssystem und alle Dienste. Aber Nextcloud-Dateien und (optional) Elasticsearch-Logs brauchen mehr Platz. Die Lösung: ein Raspberry Pi mit 2 TB microSD-Karte, der über WireGuard und NFS an den Server angebunden wird.
Warum ein Raspberry Pi? Ein Raspberry Pi 5 kostet ca. 50–80 € (einmalig). Eine 2 TB microSD-Karte ca. 20–30 €. Für insgesamt ~80–110 € hast du 2 TB Speicher, der dauerhaft kostenlos läuft. Vergleich: 2 TB Cloud-Speicher kosten bei Anbietern 10–20 €/Monat — der Raspberry Pi hat sich nach 6–10 Monaten amortisiert.
Alternative: Gemieteter NFS-Service — Wer keine Hardware will, kann bei Hetzner, Scaleway oder OCI selbst einen Block-Volume-Storage mieten (kostet ca. 5–10 €/Monat für 200 GB). Der Guide beschreibt die Raspberry-Pi-Variante, da sie langfristig kostenlos ist.
Schritt 6.1: Raspberry Pi vorbereiten#
- Besorge: Raspberry Pi 5 (oder 4), 2 TB microSD-Karte, Netzteil
- Flash Ubuntu Server 24.04 LTS (ARM) auf die microSD-Karte (mit dem Raspberry Pi Imager)
- MicroSD in den Pi einsetzen, booten
- Per HDMI+Tastatur oder per Ethernet im lokalen Netz einloggen
# Auf dem Pi:
sudo apt update && sudo apt upgrade -y
sudo timedatectl set-timezone Europe/Berlin
Schritt 6.2: WireGuard auf dem Raspberry Pi#
Der Pi verbindet sich per WireGuard mit dem OCI-Server — so ist der NFS-Tunnel verschlüsselt.
# Auf dem Pi:
sudo apt install -y wireguard
# Keys generieren
wg genkey | tee privatekey | wg pubkey > publickey
Pi-Konfiguration /etc/wireguard/wg0.conf:
[Interface]
PrivateKey = <pi-private-key>
Address = 10.10.0.3/24
[Peer]
PublicKey = <server-public-key>
Endpoint = <server-ip>:51820
AllowedIPs = 10.10.0.0/24
PersistentKeepalive = 25
Auf dem Server in /etc/wireguard/wg0.conf den Pi als Peer hinzufügen:
# Raspberry Pi (NFS-Storage)
[Peer]
PublicKey = <pi-public-key>
AllowedIPs = 10.10.0.3/32
# Auf dem Pi:
sudo wg-quick up wg0
sudo systemctl enable wg-quick@wg0
Test: ping 10.10.0.1 (Server) sollte funktionieren.
Schritt 6.3: NFS-Server auf dem Pi#
# Auf dem Pi:
sudo apt install -y nfs-kernel-server
# Mountpoint für die 2TB-Karte (falls nicht gemounted, /dev/sdX formatieren)
sudo mkfs.ext4 /dev/sda # oder entsprechendem Device
sudo mkdir -p /mnt/storage
sudo mount /dev/sda /mnt/storage
# NFS-Export: nur der Server (10.10.0.1) darf zugreifen
echo "/mnt/storage 10.10.0.1/32(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports
sudo exportfs -ra
sudo systemctl enable nfs-kernel-server
Schritt 6.4: NFS-Mount auf dem OCI-Server#
# Auf dem Server:
sudo apt install -y nfs-common
# Mountpoint
sudo mkdir -p /mnt/nfs-storage
# Mounten
sudo mount 10.10.0.3:/mnt/storage /mnt/nfs-storage
# Persistent machen (fstab)
echo "10.10.0.3:/mnt/storage /mnt/nfs-storage nfs rw,hard,tcp 0 0" | sudo tee -a /etc/fstab
Test:
df -h /mnt/nfs-storage
# sollte ~2 TB zeigen
Schritt 6.5: Nextcloud-Daten auf NFS-Storage#
Nextclouds Daten sollen auf dem NFS-Mount liegen — so hat die Firma 2 TB für Dateien, nicht nur die 200 GB der OCI-Boot-Volume.
Bei der Nextcloud-Installation (Phase 7) wird das Datenverzeichnis
auf /mnt/nfs-storage/nextcloud-data gelegt:
# In der Nextcloud docker-compose.yml:
volumes:
- /mnt/nfs-storage/nextcloud-data:/var/www/html/data
Optional: Elasticsearch-Daten auf NFS — wenn Elasticsearch installiert wird (Phase 10), können auch die Audit-Logs auf dem NFS-Mount liegen:
# In der Elasticsearch docker-compose.yml:
volumes:
- /mnt/nfs-storage/elasticsearch:/usr/share/elasticsearch/data
Ergebnis nach Phase 6: Der OCI-Server hat jetzt 2 TB zusätzlichen Speicher — sicher über WireGuard getunnelt und als NFS eingebunden. Nextcloud und Elasticsearch haben reichlich Platz.
PHASE 7 — Nextcloud als Teams-Ersatz + TURN-Server#
Was wir hier tun#
Wir installieren Nextcloud — die zentrale Kollaborationsplattform von ACME. Nextcloud ersetzt mehrere kommerzielle Produkte gleichzeitig:
- Microsoft Teams → Nextcloud Talk (Chat + Videokonferenzen)
- SharePoint → Nextcloud Files (Dokumentenablage)
- Microsoft Office → Nextcloud Office (Text, Tabellen, Präsentationen)
- Outlook → Nextcloud Calendar + Mail
- OneNote → Nextcloud Collectives (gemeinsame Notizen)
Alles an einem Ort, selbst gehostet, kostenlos.
Schritt 7.1: Nextcloud installieren#
Beauftrage Hermes:
Du: Bitte installiere Nextcloud auf dem Server. Nutze MariaDB als Datenbank. Datenverzeichnis auf dem NFS-Storage (/mnt/nfs-storage).
~/acme/nextcloud/docker-compose.yml:
version: '3.8'
services:
nextcloud:
image: nextcloud:latest
restart: unless-stopped
ports:
- "8080:80"
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: <sicheres-passwort>
NEXTCLOUD_TRUSTED_DOMAINS: cloud.acme.firm
OVERWRITEPROTOCOL: https
OVERWRITECLIURL: https://cloud.acme.firm
volumes:
- ./config:/var/www/html/config
- /mnt/nfs-storage/nextcloud-data:/var/www/html/data
- ./html:/var/www/html
depends_on:
- db
db:
image: mariadb:11
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: <sicheres-passwort>
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: <sicheres-passwort>
volumes:
- ./db:/var/lib/mysql
Wichtig: Das data-Volume zeigt auf /mnt/nfs-storage/nextcloud-data —
also auf den Raspberry Pi. So hat Nextcloud 2 TB Speicher.
Schritt 7.2: Nextcloud-Erstinstallation#
- Öffne
https://cloud.acme.firm - Erstelle den Admin-Account
- Gehe zu „Apps" und installiere:
| App | Was sie macht |
|---|---|
| Talk | Chat und Videokonferenzen (Teams-Ersatz) |
| Nextcloud Office | Online-Textverarbeitung (Word-Ersatz) |
| Calendar | Kalender (Outlook-Ersatz) |
| Contacts | Kontaktverwaltung |
| Tasks | Aufgabenverwaltung |
| Deck | Kanban-Board (Trello-Ersatz) |
| Collectives | Gemeinsame Notizen (OneNote-Ersatz) |
| Group folders | Geteilte Ordner für Teams |
Schritt 7.3: TURN-Server für Nextcloud Talk#
Warum ein TURN-Server? Videokonferenzen über Nextcloud Talk funktionieren nicht immer direkt — oft sitzen Teilnehmer hinter Routern (NAT), die direkte Verbindungen blockieren. Ein TURN-Server ist ein „Vermittler", der den Datenstrom für beide Seiten weiterleitet. Ohne TURN-Server funktioniert Video-Chat nur im lokalen Netzwerk oder bei direkten Verbindungen — mit TURN-Server immer.
Wir nutzen coturn als TURN-Server (Open Source, kostenlos):
~/acme/turn/docker-compose.yml:
version: '3.8'
services:
coturn:
image: coturn/coturn:latest
restart: unless-stopped
network_mode: host
volumes:
- ./turnserver.conf:/etc/turnserver.conf
command: ["-c", "/etc/turnserver.conf"]
~/acme/turn/turnserver.conf:
# coturn-Konfiguration für ACME
listening-port=3478
tls-listening-port=5349
external-ip=<server-public-ip>
realm=turn.acme.firm
server-name=turn.acme.firm
# Authentifizierung
user=acme:<sicheres-turn-passwort>
lt-cred-mech
fingerprint
# Logging
log-file=/var/log/turnserver.log
simple-log
# Sicherheit
no-multicast-peers
no-cli
no-tlsv1
no-tlsv1_1
In Nextcloud Talk-Einstellungen eintragen:
- TURN-Server: turn:turn.acme.firm:3478
- Benutzer: acme
- Passwort: <sicheres-turn-passwort>
Schritt 7.4: Projektordner-Struktur#
Lege in Nextcloud Group Folders an:
📁 ACME/
├── 📁 01_Verträge/
├── 📁 02_Finanzen/
├── 📁 03_Projekte/
│ ├── 📁 Projekt-Alpha/
│ │ ├── 📁 Dokumente/
│ │ ├── 📁 Korrespondenz/
│ │ └── 📁 Berichte/
│ └── 📁 Projekt-Beta/
├── 📁 04_Vorlagen/
├── 📁 05_Wissensbasis/ ← Knowledge Base (siehe Phase 11)
└── 📁 06_Hermes/ ← Hermes-Arbeitsordner
├── 📁 Eingang/ ← Neue Aufgaben für Hermes
├── 📁 Ausgang/ ← Fertige Ergebnisse
├── 📁 Berichte/ ← Hermes-Berichte
└── 📁 Archiv/
Der Ordner 06_Hermes ist besonders wichtig: Hier lädt Hermes
Ergebnisse ab und holt sich neue Aufgaben. Du kannst jederzeit
nachschauen, was die KI-Assistentin erledigt hat.
Ergebnis nach Phase 7: ACME hat eine vollständige Kollaborationsplattform — Chat, Video, Dokumente, Office, Kalender, Aufgaben. Kostenlos, mit 2 TB Speicher auf dem Raspberry Pi.
PHASE 8 — Hermes Agent auf OCI installieren + Profile migrieren#
Was wir hier tun#
Bisher lief Hermes nur lokal auf deinem Laptop. Jetzt installieren wir Hermes auch auf dem OCI-Server — als „Produktionsinstanz", die 24/7 verfügbar ist. Gleichzeitig legen wir zusätzliche Profile an und migrieren das IT-Profil vom Laptop auf den Server.
Schritt 8.1: Hermes auf dem OCI-Server#
Beauftrage Hermes (das IT-Profil auf deinem Laptop):
Du: Bitte installiere Hermes Agent auf dem ACME-Server. Nutze dieselbe OpenRouter-Konfiguration.
Hermes führt aus (via SSH auf dem Server):
# Hermes herunterladen und installieren
curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash
# Konfigurationsverzeichnis
mkdir -p ~/.hermes
Konfiguration auf dem Server:
# ~/.hermes/config.yaml (auf dem Server)
llm:
provider: openrouter
model: z-ai/glm-5.2
api_key: ${OPENROUTER_API_KEY}
gateway:
enabled: true
port: 8642
workspace:
enabled: true
port: 9119
password_hash: <hash>
# .env auf dem Server
echo 'OPENROUTER_API_KEY=sk-or-v1-...' > ~/.hermes/.env
Schritt 8.2: Hermes als Dienst einrichten#
sudo tee /etc/systemd/system/hermes.service << 'EOF'
[Unit]
Description=Hermes Agent
After=network.target docker.service
[Service]
Type=simple
User=hermes
WorkingDirectory=/home/hermes
ExecStart=/home/hermes/.hermes/bin/hermes serve
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable hermes
sudo systemctl start hermes
Schritt 8.3: Profile anlegen#
Auf dem Server legen wir jetzt die Produktions-Profile an:
| Profil | Zweck | Beschreibung |
|---|---|---|
IT |
IT-Administrator | Wird vom Laptop migriert — der „Techniker" |
Büro |
Büro-Assistenz | Allgemeine Aufgaben, Termine, E-Mails |
Projekt-A |
Projekt-Verwaltung | Kanban, Berichte, Projektkommunikation |
Buchhaltung |
Finanzen | Rechnungen, Kosten-Tracking, Berichte |
# Auf dem Server:
hermes profile create IT
hermes profile create Büro
hermes profile create Projekt-A
hermes profile create Buchhaltung
Jedes Profil hat:
- Eigene config.yaml mit eigenem System-Prompt
- Eigene Skills
- Eigene Memories
- Eigenen Chat-Verlauf
Schritt 8.4: IT-Profil vom Laptop migrieren#
Das IT-Profil auf dem Laptop war für den Aufbau zuständig. Jetzt, wo alles steht, migrieren wir es auf den Server — damit Hermes auch von überall erreichbar ist.
# Auf dem Laptop: IT-Profil exportieren
hermes profile export IT > it-profile-backup.tar.gz
# Auf den Server kopieren
scp it-profile-backup.tar.gz hermes@<server-ip>:~/
# Auf dem Server: importieren
hermes profile import IT < it-profile-backup.tar.gz
Ab jetzt läuft das IT-Profil auf dem Server. Du kannst mit ihm über
https://hermes.acme.firm (Workspace) sprechen — oder über Telegram,
Matrix, OpenWebUI (siehe Phase 10).
Schritt 8.5: Hermes mit Nextcloud verbinden#
Hermes soll Dateien in Nextcloud lesen und schreiben können.
- In Nextcloud: WebDAV-Passwort erstellen (Einstellungen → Sicherheit)
- In Hermes config auf dem Server:
tools:
webdav:
url: https://cloud.acme.firm/remote.php/dav
username: hermes-bot
password: <nextcloud-app-password>
Hermes kann nun:
- Dateien im Ordner 06_Hermes/Eingang/ lesen (neue Aufgaben)
- Ergebnisse in 06_Hermes/Ausgang/ schreiben
- Berichte in 06_Hermes/Berichte/ ablegen
Schritt 8.6: Telegram-Anbindung#
Damit du Hermes auch vom Handy aus erreichst, richten wir Telegram ein:
- Bei Telegram: Sprich mit @BotFather → neuen Bot erstellen
- Notiere dir den Bot-Token
- In Hermes config:
telegram:
bot_token: <telegram-bot-token>
allowed_users:
- <deine-telegram-user-id>
sudo systemctl restart hermes
Ab jetzt kannst du Hermes per Telegram beauftragen — von überall.
Ergebnis nach Phase 8: Hermes läuft 24/7 auf dem Server, ist über Workspace, Telegram erreichbar, und mit Nextcloud verbunden. Vier Profile stehen bereit: IT, Büro, Projekt-A, Buchhaltung.
PHASE 9 — Monitoring: Prometheus, Grafana Cloud, Dashboards#
Was wir hier tun#
Wir bauen das Monitoring-System auf. Das ist die „Zentrale Steuerkonsole" von ACME — auf einen Blick siehst du: Läuft alles? Was kostet die KI? Gibt es Probleme?
Schritt 9.1: Grafana Cloud einrichten#
Warum Grafana Cloud und nicht nur lokal? Grafana Cloud ist die gehostete Version von Grafana. Der Free Tier (10.000 Metriken, 14 Tage Retention) reicht für ACME völlig. Vorteil: Keine Wartung, verfügbar von überall, keine Performance-Belastung auf dem OCI-Server.
- Gehe zu grafana.cloud → „Create free account"
- Erstelle einen Stack: „ACME"
- Notiere dir:
- Grafana URL (z. B.
https://acme.grafana.net) - Prometheus Remote Write URL
- API Key / Token
Schritt 9.2: Prometheus installieren#
Was ist Prometheus? Prometheus ist wie ein Buchhalter für Zahlen. Es fragt regelmäßig alle Dienste ab: „Wie viel CPU benutzt du? Wie viele Anfragen hast du bekommen? Wie viele Token hat Hermes verbraucht?" und speichert diese Zahlen in einer Zeitreihe.
Beauftrage Hermes:
Du: Bitte installiere Prometheus auf dem Server. Konfiguriere Remote Write an Grafana Cloud.
~/acme/monitoring/docker-compose.yml:
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
restart: unless-stopped
ports:
- "9090:9090"
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- ./prometheus/data:/prometheus
~/acme/monitoring/prometheus/prometheus.yml:
global:
scrape_interval: 15s
scrape_configs:
# Hermes Metriken
- job_name: 'hermes'
static_configs:
- targets: ['localhost:9102']
# Server-Metriken (node_exporter)
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
# Docker-Metriken
- job_name: 'docker'
static_configs:
- targets: ['localhost:9323']
# Remote Write an Grafana Cloud
remote_write:
- url: https://<grafana-cloud-prometheus-url>
basic_auth:
username: <grafana-cloud-user>
password: <grafana-cloud-key>
Schritt 9.3: Prometheus Exporter für Hermes#
Der Exporter liefert Hermes-spezifische Metriken:
| Metrik | Was sie bedeutet |
|---|---|
hermes_messages_total |
Anzahl der verarbeiteten Nachrichten |
hermes_tokens_input_total |
Verbrauchte Eingabe-Token (Summe) |
hermes_tokens_output_total |
Verbrauchte Ausgabe-Token (Summe) |
hermes_tokens_cost_total |
Kumulierte Kosten in USD |
hermes_tool_calls_total |
Anzahl der Tool-Aufrufe |
hermes_active_sessions |
Aktive Sessions |
hermes_response_time_seconds |
Antwortzeit (Histogramm) |
hermes_errors_total |
Fehler beim Verarbeiten |
cd ~/acme/monitoring/exporter
pip install prometheus-client
python hermes_exporter.py --port 9102
Als Dienst:
sudo tee /etc/systemd/system/hermes-exporter.service << 'EOF'
[Unit]
Description=Hermes Prometheus Exporter
After=network.target
[Service]
Type=simple
User=hermes
WorkingDirectory=/home/hermes/acme/monitoring/exporter
ExecStart=/usr/bin/python3 hermes_exporter.py --port 9102
Restart=always
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable hermes-exporter
sudo systemctl start hermes-exporter
Schritt 9.4: Node Exporter (Server-Metriken)#
Für allgemeine Server-Metriken (CPU, RAM, Disk):
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.1/node_exporter-1.8.1.linux-arm64.tar.gz
tar xzf node_exporter-*.tar.gz
sudo cp node_exporter-*/node_exporter /usr/local/bin/
sudo tee /etc/systemd/system/node-exporter.service << 'EOF'
[Unit]
Description=Node Exporter
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/node_exporter
Restart=always
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable node-exporter
sudo systemctl start node-exporter
Schritt 9.5: Dashboards in Grafana Cloud#
Dashboard „Hermes Kostenkontrolle"#
Das wichtigste Dashboard. Es zeigt:
| Panel | Metrik | Bedeutung |
|---|---|---|
| Kosten heute | sum(hermes_tokens_cost_total) |
Was hat Hermes heute gekostet? |
| Kosten diese Woche | sum_over_time(hermes_tokens_cost_total[7d]) |
Wochenübersicht |
| Token-Verbrauch | rate(hermes_tokens_input_total[5m]) |
Wie viele Token pro Minute? |
| Nachrichten gesamt | sum(hermes_messages_total) |
Wie viel hat Hermes gearbeitet? |
| Kosten pro Profil | sum by(profile)(hermes_tokens_cost_total) |
Welches Profil kostet wie viel? |
| Kosten pro Modell | sum by(model)(hermes_tokens_cost_total) |
Welches Modell ist am teuersten? |
| Tool-Aufrufe | sum by(tool)(hermes_tool_calls_total) |
Welche Werkzeuge nutzt Hermes? |
| Antwortzeit | histogram_quantile(0.95, hermes_response_time_seconds_bucket) |
Wie schnell antwortet Hermes? |
Alert-Regeln:
| Alert | Bedingung | Aktion |
|---|---|---|
| Kosten-Schranke überschritten | cost_today > 10 |
Telegram-Nachricht |
| Token-Spike | rate(tokens[5m]) > 100000 |
Warnung (möglicher Loop) |
| Hermes nicht erreichbar | up{job="hermes"} == 0 |
Kritische Warnung |
| Fehlerrate hoch | rate(errors[5m]) / rate(messages[5m]) > 0.1 |
Warnung |
Dashboard „System-Gesundheit"#
| Panel | Metrik |
|---|---|
| Server-CPU | 100 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100 |
| Server-RAM | node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes |
| Disk-Usage | node_filesystem_avail_bytes / node_filesystem_size_bytes |
| Docker-Container | count(container_last_seen) |
| Uptime | time() - node_boot_time_seconds |
Alert-Regeln:
| Alert | Bedingung |
|---|---|
| Disk fast voll | disk_usage > 85% |
| CPU dauerhaft hoch | cpu > 80% for 10m |
| RAM knapp | ram_available < 1GB |
Ergebnis nach Phase 9: ACME hat ein vollständiges Monitoring. Du siehst auf einen Blick, was Hermes getan hat, was es kostet, und ob alles gesund ist.
PHASE 10 — [Optional] Elasticsearch, Zitadel, OpenWebUI, Matrix#
Was wir hier tun#
Alle Bausteine in dieser Phase sind optional. Sie bringen Mehrwert, sind aber für den Start nicht zwingend. Du kannst ACME ohne diese Phase vollständig betreiben.
| Baustein | Mehrwert | Aufwand |
|---|---|---|
| Elasticsearch + Kibana | Detaillierte Audit-Logs durchsuchbar | 2 Std. |
| Filebeat | Log-Sammler für Elasticsearch | 0,5 Std. |
| Zitadel | Zentrales Login (Single Sign-On) | 1 Std. |
| OpenWebUI + MCPO | Browser-basierte Hermes-Steuerung | 1 Std. |
| Matrix / Element | Sicherer Messenger-Kanal zu Hermes | 1 Std. |
| Grafana OSS | Alternative zu Grafana Cloud (lokal) | 0,5 Std. |
10.1: Elasticsearch + Kibana (Audit-Logs)#
Was ist Elasticsearch? Eine Suchmaschine, die auf das Durchsuchen von Texten optimiert ist. Bei ACME speichert sie alle Audit-Logs: Jedes Ereignis (Login, Hermes-Aktion, Systemereignis) wird als Eintrag gespeichert und ist danach sofort durchsuchbar.
Was ist Kibana? Die Benutzeroberfläche für Elasticsearch. Statt rohe JSON-Einträge zu lesen, sieht man in Kibana eine übersichtliche Darstellung: Filter, Diagramme, Tabellen. Man kann fragen: „Zeige mir alles, was Hermes gestern zwischen 14 und 16 Uhr getan hat" und bekommt sofort die Antwort.
~/acme/audit/docker-compose.yml:
version: '3.8'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.13.0
environment:
- discovery.type=single-node
- xpack.security.enabled=true
- ELASTIC_PASSWORD=<sicheres-passwort>
- ES_JAVA_OPTS=-Xms1g -Xmx1g
volumes:
- /mnt/nfs-storage/elasticsearch:/usr/share/elasticsearch/data
ports:
- "9200:9200"
restart: unless-stopped
kibana:
image: docker.elastic.co/kibana/kibana:8.13.0
environment:
- ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- ELASTICSEARCH_USERNAME=kibana_system
- ELASTICSEARCH_PASSWORD=<sicheres-passwort>
ports:
- "5601:5601"
depends_on:
- elasticsearch
restart: unless-stopped
Wichtig: Das Elasticsearch-Datenverzeichnis zeigt auf
/mnt/nfs-storage/elasticsearch — also auf den Raspberry Pi. So
haben die Audit-Logs reichlich Platz und belasten nicht die
OCI-Boot-Volume.
Filebeat (Log-Sammler)#
Was ist Filebeat? Ein kleines Programm, das auf dem Server läuft, Log-Dateien überwacht und neue Einträge an Elasticsearch weiterleitet.
~/acme/audit/filebeat/filebeat.yml:
filebeat.inputs:
# Hermes-Aktivitätslogs
- type: filestream
id: hermes-activity
paths:
- /home/hermes/.hermes/logs/*.log
fields:
source: hermes
type: activity
# System-Logs
- type: filestream
id: system-auth
paths:
- /var/log/auth.log
fields:
source: system
type: auth
# Docker-Logs
- type: container
paths:
- /var/lib/docker/containers/*/*.log
fields:
source: docker
output.elasticsearch:
hosts: ["localhost:9200"]
username: "elastic"
password: "<sicheres-passwort>"
indices:
- index: "acme-audit-%{[fields.source]}-%{+yyyy.MM.dd}"
Audit-Log-Format#
Hermes schreibt bei jeder Aktion einen Log-Eintrag:
{
"@timestamp": "2026-07-21T14:32:01Z",
"source": "hermes",
"type": "action",
"profile": "IT",
"user": "gino",
"action": "file_write",
"tool": "write_file",
"description": "Rechnung R-2026-042 erstellt",
"file_path": "/ACME/02_Finanzen/Rechnungen/R-2026-042.md",
"tokens_input": 1240,
"tokens_output": 890,
"cost_usd": 0.0041,
"model": "z-ai/glm-5.2"
}
In Kibana kannst du filtern: - „Zeige mir alle Aktionen, bei denen Hermes Dateien geschrieben hat" - „Zeige mir alle Aktionen des IT-Profils der letzten Woche" - „Zeige mir die teuersten Aktionen des Monats"
10.2: Zitadel (Identity Provider)#
Was ist Zitadel? Zitadel ist eine Open-Source-Plattform für Identitätsverwaltung (IAM — Identity & Access Management). Das ist der „Türsteher" der Firma: Du bekommst dort ein Login, und alle Dienste (Nextcloud, Hermes, Grafana) vertrauen diesem Login.
Das bedeutet: Ein Passwort für alles. Kein separates Login für Nextcloud, Hermes, Grafana — sondern ein zentrales.
Hinweis: Für eine Ein-Personen-Firma ist Zitadel optional. Wenn später weitere Mitarbeiter dazukommen, wird es wertvoll.
~/acme/zitadel/docker-compose.yml:
version: '3.8'
services:
zitadel:
image: ghcr.io/zitadel/zitadel:latest
environment:
ZITADEL_DATABASE_POSTGRES_HOST: db
ZITADEL_DATABASE_POSTGRES_PORT: 5432
ZITADEL_DATABASE_POSTGRES_DATABASE: zitadel
ZITADEL_DATABASE_POSTGRES_USER: zitadel
ZITADEL_DATABASE_POSTGRES_PASSWORD: <sicheres-passwort>
ZITADEL_EXTERNALSECURE: true
ZITADEL_EXTERNALDOMAIN: login.acme.firm
ZITADEL_EXTERNALPORT: 443
depends_on:
- db
restart: unless-stopped
db:
image: postgres:16
environment:
POSTGRES_USER: zitadel
POSTGRES_PASSWORD: <sicheres-passwort>
POSTGRES_DB: zitadel
volumes:
- ./data:/var/lib/postgresql/data
restart: unless-stopped
Konfiguration:
1. Öffne https://login.acme.firm
2. Erstelle Organisation: „ACME"
3. Erstelle Benutzer
4. Erstelle OIDC-Clients für Nextcloud, Hermes Workspace, Grafana
10.3: OpenWebUI + MCPO (Browser-Firmensteuerung)#
Was ist OpenWebUI? OpenWebUI ist eine Chat-Oberfläche, die im Browser läuft — ähnlich wie die ChatGPT-Webseite. Aber statt mit einem fremden Dienst zu reden, verbindest du OpenWebUI mit Hermes.
Was ist MCPO? MCPO (Model Context Protocol to OpenAPI) ist ein Gateway, das Hermes' Tools als API-Endpunkte bereitstellt. Das bedeutet: Du kannst in OpenWebUI nicht nur chatten, sondern Hermes dort direkt Tools aufrufen lassen — Dateien bearbeiten, Befehle ausführen, WebDAV durchsuchen. Die Browser-Oberfläche wird so zur vollwertigen Firmensteuerung.
~/acme/openwebui/docker-compose.yml:
version: '3.8'
services:
openwebui:
image: ghcr.io/open-webui/open-webui:main
restart: unless-stopped
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://mcpo:8080
- OPENAI_API_BASE_URL=http://mcpo:8080/v1
- OPENAI_API_KEY=mcpo-local-key
volumes:
- ./data:/app/backend/data
mcpo:
image: ghcr.io/nousresearch/mcpo:latest
restart: unless-stopped
environment:
- HERMES_GATEWAY_URL=http://localhost:8642
- HERMES_API_KEY=<hermes-api-key>
ports:
- "8090:8080"
Öffne https://chat.acme.firm und du hast eine ChatGPT-ähnliche
Oberfläche, die direkt mit Hermes verbunden ist — inklusive
Tool-Aufrufen.
10.4: Matrix / Element (sicherer Messenger-Kanal)#
Was ist Matrix? Matrix ist ein offener, dezentraler Messenger-Standard. Element ist die bekannteste App für Matrix (es gibt sie für Browser, Desktop, iOS, Android).
Warum Matrix, wenn es Nextcloud Talk gibt? Nextcloud Talk ist praktisch, aber an Nextcloud gebunden. Matrix ist ein eigenständiger Messenger, der von mehreren Geräten aus genutzt werden kann — parallel zu Nextcloud Talk. Jedes Hermes-Profil kann einen eigenen Matrix-Raum haben: Du schreibst im Raum „IT" mit dem IT-Profil, im Raum „Buchhaltung" mit dem Buchhaltungs-Profil.
~/acme/matrix/docker-compose.yml:
version: '3.8'
services:
synapse:
image: matrixdotorg/synapse:latest
restart: unless-stopped
ports:
- "8008:8008"
volumes:
- ./data:/data
environment:
- SYNAPSE_SERVER_NAME=matrix.acme.firm
- SYNAPSE_REPORT_STATS=no
In Hermes config:
matrix:
homeserver: https://matrix.acme.firm
user_id: "@hermes-it:matrix.acme.firm"
password: <matrix-password>
allowed_users:
- "@gino:matrix.acme.firm"
10.5: Grafana OSS (lokale Alternative zu Grafana Cloud)#
Warum lokal? Grafana Cloud ist kostenlos, aber die Daten liegen bei einem Dritten. Grafana OSS läuft auf deinem Server — du hast volle Kontrolle.
# ~/acme/monitoring/docker-compose.yml (erweitern)
grafana-oss:
image: grafana/grafana:latest
restart: unless-stopped
ports:
- "3001:3000"
environment:
GF_SECURITY_ADMIN_PASSWORD: <sicheres-passwort>
GF_SERVER_ROOT_URL: https://grafana.acme.firm
volumes:
- ./grafana/data:/var/lib/grafana
Ergebnis nach Phase 10: Alle optionalen Bausteine sind installiert. ACME hat jetzt detaillierte Audit-Logs, zentrales Login, Browser- Steuerung, sicheren Messenger — alles optional, alles zuschaltbar.
PHASE 11 — Knowledge Base & Skills aufbauen#
Was wir hier tun#
Wir geben Hermes das „Wissen" der Firma. Das besteht aus zwei Teilen:
- Knowledge Base — eine strukturierte Wissensbasis in Nextcloud, die Hermes durchsuchen kann (Firmenhandbuch, Prozesse, Kunden, Verträge, FAQ)
- Skills — Fähigkeiten, die Hermes beibringen, wie bestimmte Aufgaben erledigt werden (Rechnungen erstellen, Berichte schreiben, Server überwachen)
Stell dir vor, du stellst einen neuen Mitarbeiter ein. Am ersten Tag braucht er ein Handbuch (Knowledge Base) und eine Einarbeitung in die Werkzeuge (Skills). Genau das machen wir hier mit Hermes.
Schritt 11.1: Knowledge Base in Nextcloud#
Die Knowledge Base ist ein strukturierter Ordnerbaum in Nextcloud
unter 05_Wissensbasis/:
📁 05_Wissensbasis/
├── 📄 FIRMA.md ← Wer ist ACME? Mission, Werte
├── 📄 ORGANISATION.md ← Aufbau, Verantwortliche
├── 📄 PROZESSE.md ← Wie arbeiten wir? Standardabläufe
├── 📄 WERKZEUGE.md ← Welche Tools nutzen wir? Anleitungen
├── 📄 KUNDEN.md ← Kundenstamm, Ansprechpartner
├── 📄 VERTRAEGE.md ← Verträge, Konditionen
├── 📄 FAQ.md ← Häufige Fragen (intern)
├── 📁 Projekte/
│ ├── 📄 Alpha.md ← Projekt-Alpha: Status, Ziele
│ └── 📄 Beta.md
├── 📁 Vorlagen/
│ ├── 📄 Rechnung-Vorlage.md
│ ├── 📄 Angebot-Vorlage.md
│ └── 📄 Bericht-Vorlage.md
└── 📁 Anleitungen/
├── 📄 Server-Wartung.md
├── 📄 Backup-Wiederherstellung.md
└── 📄 Notfall-Plan.md
Jede Markdown-Datei ist eine „Wikiseite". Hermes kann diese Dateien
lesen und durchsuchen — wenn jemand fragt „Wie stellen wir eine
Rechnung aus?", sucht Hermes in der Knowledge Base und gibt die
Antwort basierend auf PROZESSE.md und Vorlagen/Rechnung-Vorlage.md.
Schritt 11.2: Hermes mit der Knowledge Base verbinden#
Hermes muss die Knowledge Base durchsuchen können. Dafür konfigurieren wir einen WebDAV-Zugriff:
# ~/.hermes/config.yaml erweitern
tools:
webdav:
url: https://cloud.acme.firm/remote.php/dav
username: hermes-bot
password: <nextcloud-app-password>
knowledge_base:
path: /ACME/05_Wissensbasis/
index_interval: 3600 # stündlich neu indizieren
Schritt 11.3: Skills für jedes Profil#
Jedes Profil bekommt Skills, die zu seinem Aufgabenbereich passen:
IT-Profil#
| Skill | Was er macht |
|---|---|
acme-server-setup |
Richtet einen neuen Server ein |
acme-service-deploy |
Stellt einen Docker-Dienst bereit |
acme-server-health |
Prüft die Gesundheit aller Dienste |
acme-backup-check |
Prüft, ob Backups aktuell sind |
acme-update-check |
Prüft, ob Watchtower Updates durchführt |
Büro-Profil#
| Skill | Was er macht |
|---|---|
acme-invoicing |
Erstellt eine Rechnung aus Vorlagen |
acme-project-report |
Erstellt wöchentlichen Projektbericht |
acme-meeting-notes |
Fasst Besprechungs-Notizen zusammen |
acme-email-draft |
Erstellt E-Mail-Entwürfe |
Projekt-A-Profil#
| Skill | Was er macht |
|---|---|
acme-kanban-update |
Aktualisiert das Kanban-Board |
acme-status-report |
Erstellt Statusbericht für Projekt Alpha |
acme-milestone-check |
Prüft, ob Meilensteine erreicht wurden |
Buchhaltung-Profil#
| Skill | Was er macht |
|---|---|
acme-cost-report |
Monatlicher Kostenbericht |
acme-invoice-track |
Verfolgt Rechnungsstatus |
acme-budget-check |
Prüft Budget gegen Ist-Kosten |
Beispiel-Skill: acme-invoicing#
---
name: acme-invoicing
description: Erstellt eine Rechnung aus den ACME-Vorlagen
---
# Rechnung erstellen
1. Lese die Vorlage aus Nextcloud: `05_Wissensbasis/Vorlagen/Rechnung-Vorlage.md`
2. Frage den Nutzer nach:
- Kundenname
- Leistungszeitraum
- Betrag
- Beschreibung
3. Fülle die Vorlage aus
4. Speichere unter: `03_Projekte/<Projekt>/Rechnungen/R-<YYYY>-<NN>.md`
5. Sende eine Kopie an `02_Finanzen/Rechnungen/`
6. Benachrichtige den Nutzer über Telegram
Beispiel-Skill: acme-server-health#
---
name: acme-server-health
description: Prüft die Gesundheit aller ACME-Server und Dienste
---
# Server-Health-Check
1. Prüfe Docker-Container: `docker ps --format "table {{.Names}}\t{{.Status}}"`
2. Prüfe Festplatten: `df -h`
3. Prüfe Prometheus-Metriken für anomale Werte
4. [Optional] Prüfe Elasticsearch für Fehler-Logs der letzten Stunde
5. Erstelle Bericht
6. Wenn Probleme gefunden wurden → Telegram-Alert an Inhaber
7. Speichere Bericht unter `06_Hermes/Berichte/health-<date>.md`
Schritt 11.4: Skills installieren#
# Skills in die jeweiligen Profile kopieren
# IT-Profil
cp acme-server-setup.md ~/.hermes/profiles/IT/skills/
cp acme-service-deploy.md ~/.hermes/profiles/IT/skills/
cp acme-server-health.md ~/.hermes/profiles/IT/skills/
# Büro-Profil
cp acme-invoicing.md ~/.hermes/profiles/Büro/skills/
cp acme-project-report.md ~/.hermes/profiles/Büro/skills/
cp acme-meeting-notes.md ~/.hermes/profiles/Büro/skills/
# Projekt-A-Profil
cp acme-kanban-update.md ~/.hermes/profiles/Projekt-A/skills/
cp acme-status-report.md ~/.hermes/profiles/Projekt-A/skills/
# Buchhaltung-Profil
cp acme-cost-report.md ~/.hermes/profiles/Buchhaltung/skills/
cp acme-invoice-track.md ~/.hermes/profiles/Buchhaltung/skills/
Schritt 11.5: Audit-Logs für Hermes-Aktionen#
Damit du sehen kannst, was Hermes auf der OCI getan hat, richten wir ein spezielles Audit-Log ein (sofern Elasticsearch aus Phase 10 installiert ist).
Hermes schreibt bei jeder Aktion einen Log-Eintrag (siehe Format in Phase 10.1). Die Einträge fließen über Filebeat in Elasticsearch. In Kibana siehst du dann:
- Wer hat Hermes beauftragt? (
user) - Was hat Hermes getan? (
action,tool,description) - Wann passierte es? (
@timestamp) - Welches Profil wurde genutzt? (
profile) - Was kostete die Aktion? (
tokens_input,tokens_output,cost_usd) - Welches Modell wurde genutzt? (
model)
Ergebnis nach Phase 11: Hermes hat das Firmenwissen (Knowledge Base) und die Fähigkeiten (Skills). Du kannst jederzeit transparent nachvollziehen, was Hermes getan hat.
PHASE 12 — Inbetriebnahme, Tests, Dokumentation#
Was wir hier tun#
Wir nehmen alles in Betrieb, testen es, und dokumentieren das Ergebnis.
Schritt 12.1: End-to-End-Test#
Szenario 1: Kostentransparenz 1. Sende Hermes eine Aufgabe per Telegram („Erstelle eine Zusammenfassung des letzten Projektberichts") 2. Hermes erledigt die Aufgabe, schreibt Ergebnis nach Nextcloud 3. [Optional] Prüfe in Kibana: Audit-Eintrag vorhanden? 4. Prüfe in Grafana: Kosten-Panel aktualisiert? 5. Prüfe in Nextcloud: Datei im Ausgangs-Ordner?
Szenario 2: IT-Administration 1. Frage das IT-Profil: „Mach einen Health-Check" 2. Hermes prüft alle Dienste, erstellt Bericht 3. Prüfe: Bericht in Nextcloud? Telegram-Benachrichtigung?
Szenario 3: Buchhaltung
1. Frage das Buchhaltung-Profil: „Erstelle den monatlichen Kostenbericht"
2. Hermes liest Prometheus-Metriken, erstellt Bericht
3. Prüfe: Bericht in 02_Finanzen/Kostenberichte/?
Schritt 12.2: Backup-Strategie#
| Was | Wie | Wie oft |
|---|---|---|
| Nextcloud-Dateien | Liegen auf NFS (Raspberry Pi) | Pi separat sichern |
| Vaultwarden-Datenbank | OCI-Volume-Snapshot | Täglich |
| [Optional] Elasticsearch | Snapshot-API | Täglich |
| Hermes-Konfiguration | Git-Repo (private) | Bei Änderung |
| Raspberry Pi (NFS-Storage) | rsync auf externe HDD | Wöchentlich |
Oracle Free Tier bietet kostenlose Volume-Snapshots an.
Schritt 12.3: Cron-Jobs für Hermes#
Hermes soll einige Aufgaben automatisch erledigen:
| Cron | Aufgabe | Profil |
|---|---|---|
| Täglich 8:00 | Health-Check aller Dienste | IT |
| Täglich 18:00 | Tageskostenbericht per Telegram | Buchhaltung |
| Montags 9:00 | Wöchentlicher Projektbericht | Büro |
| Monatsende | Monatlicher Kostenbericht | Buchhaltung |
Einrichtung über Hermes CLI:
hermes cron create \
--schedule "0 8 * * *" \
--skill acme-server-health \
--profile IT \
--deliver telegram
Schritt 12.4: Benutzerhandbuch#
Erstelle ein kurzes Handbuch (für dich selbst und spätere Mitarbeiter):
# ACME — Kurzanleitung
## So nutzt du Hermes
- Per Telegram: Schreibe an den ACME-Bot
- Per Browser: https://hermes.acme.firm
- [Optional] Per OpenWebUI: https://chat.acme.firm
- [Optional] Per Matrix: Im entsprechenden Raum
## So findest du Dateien
1. Gehe zu https://cloud.acme.firm
2. Navigiere zu deinem Projekt-Ordner
## Bei Problemen
- Schreibe an das IT-Profil: "Hilfe, ich kann nicht auf Nextcloud"
- Hermes prüft das Problem und hilft
Schritt 12.5: Notfall-Plan#
Erstelle eine Notfall-Plan.md in der Knowledge Base:
- Server komplett offline? → OCI-Instanz neu starten (Dashboard)
- Hermes nicht erreichbar? →
sudo systemctl restart hermes - [Optional] Audit-Logs verloren? → Elasticsearch-Snapshot wiederherstellen
- Passwort vergessen? → Vaultwarden Admin-Token zurücksetzen
- Domain abgelaufen? → Njalla-Verlängerung prüfen
- Raspberry Pi offline? → NFS-Mount prüfen, Pi neu starten
Ergebnis nach Phase 12: ACME ist vollständig in Betrieb. Alles ist getestet, dokumentiert. Du hast volle Transparenz über Kosten und Hermes-Aktivitäten.
ANHANG#
A. Glossar (für Nicht-ITler)#
| Begriff | Bedeutung |
|---|---|
| ARM | Ein Prozessortyp, der in Smartphones und mittlerweile auch Cloud-Servern verbaut ist. Sparsam und leistungsstark. |
| Audit-Log | Ein Protokoll, das alle Aktionen aufzeichnet — wie ein Tagebuch des Systems. |
| Beats | Kleine Programme (wie Filebeat), die Logs sammeln und weiterleiten. |
| Container | Eine isolierte Software-Umgebung. Wie eine Schachtel, in der ein Programm zusammen mit allem, was es braucht, verpackt ist. |
| Dashboard | Eine visuelle Übersichtsseite mit Diagrammen und Kennzahlen. |
| DNS | Das Telefonbuch des Internets — übersetzt Domain-Namen (acme.firm) in IP-Adressen. |
| Docker | Eine Software, die Container verwaltet. |
| Domain | Eine Internet-Adresse (z. B. acme.firm). |
| Elasticsearch | Eine Suchmaschine, die für die Suche in Texten optimiert ist. |
| Firewall | Ein Schutzsystem, das unerwünschten Netzwerkverkehr blockt. |
| HTTPS | Verschlüsselte Verbindung zwischen Browser und Server — erkennbar am Schloss-Symbol. |
| IAM | Identity & Access Management — Verwaltung von Benutzern und Berechtigungen. |
| Kibana | Die Benutzeroberfläche für Elasticsearch. |
| LLM | Large Language Model — das „Gehirn" der KI (z. B. Claude, GPT, GLM). |
| LM Studio | Eine App, um LLM-Modelle lokal auf dem Mac laufen zu lassen. |
| Lokales LLM | Ein KI-Modell, das auf dem eigenen Gerät (z. B. Mac) läuft — keine Cloud, keine Kosten, volle Datenhoheit. |
| MCPO | Model Context Protocol to OpenAPI — ein Gateway, das Hermes-Tools für Browser-Oberflächen zugänglich macht. |
| Metrik | Eine messbare Zahl (CPU-Auslastung, Token-Verbrauch, etc.). |
| Matrix | Ein offener Messenger-Standard. Element ist die bekannteste App dafür. |
| NFS | Network File System — ein Protokoll, um Festplatten übers Netzwerk einzubinden. |
| Nextcloud | Eine Open-Source-Plattform für Dateien, Chat, Video und Office. |
| OIDC | OpenID Connect — ein Standard für zentrales Login. |
| OpenRouter | Ein Dienst, der Zugang zu verschiedenen KI-Modellen bietet. |
| OpenWebUI | Eine Chat-Oberfläche im Browser, die mit Hermes verbunden wird. |
| Profile | Eigenständige Hermes-Instanzen mit eigenem Chat-Verlauf, Skills und Erinnerungen — wie verschiedene Mitarbeiter. |
| Prometheus | Ein System, das Metriken sammelt und speichert. |
| Reverse Proxy | Ein Server, der Anfragen entgegennimmt und an andere Server weiterleitet. |
| Skill | Eine Fähigkeit, die Hermes beibringt, wie eine bestimmte Aufgabe erledigt wird. |
| SSH | Secure Shell — ein Protokoll für sichere, verschlüsselte Terminal-Verbindungen zu Servern. |
| Token | Die „Währung" der KI — etwa ein Wort. Token kosten Geld. |
| TURN-Server | Ein Vermittler-Server für Videokonferenzen, der Verbindungen hinter Routern ermöglicht. |
| Vaultwarden | Ein selbstgehosteter Passwort-Manager (Bitwarden-kompatibel). |
| VPN | Virtual Private Network — ein verschlüsselter Tunnel zwischen Geräten. |
| WAF | Web Application Firewall — schützt Web-Anwendungen vor Angriffen. |
| Watchtower | Ein Dienst, der Docker-Container automatisch aktualisiert. |
| WireGuard | Ein modernes, schnelles VPN-Protokoll. |
| WSL2 | Windows Subsystem for Linux — lässt Linux unter Windows laufen. |
| Zitadel | Eine Open-Source-Plattform für Identitätsverwaltung. |
B. Kostenübersicht (monatlich)#
| Posten | Kosten |
|---|---|
| OCI Server (Free Tier) | 0 € |
| Grafana Cloud (Free Tier) | 0 € |
| Cloudflare (Free Plan) | 0 € |
| Domain (Njalla, jährlich umgelegt) | ~1,50 € |
| OpenRouter (LLM-Zugang, Cloud) | 5–30 € |
| Lokales LLM (Mac, z. B. Qwen 3) | 0 € (einmalig Mac) |
| Gesamt (Minimum, Cloud) | ~7–32 € |
| Gesamt (nur lokal) | ~1,50 € (nur Domain) |
Optionale Erweiterungen:
| Posten | Kosten |
|---|---|
| Raspberry Pi + 2 TB microSD | ~80–110 € einmalig, 0 €/Monat |
| Gemieteter NFS-Storage (Alternative) | ~5–10 €/Monat |
Im Vergleich: Microsoft 365 Business kostet ca. 12 €/Monat pro Mitarbeiter. Bei einer Person wären das 12 € — nur für Office. ACME hat für diesen Preis die komplette IT-Infrastruktur inkl. KI-Assistentin.
C. Checkliste#
- Phase 1: Hermes auf Laptop, Profil „IT" angelegt, LLM-Backend gewählt (Cloud und/oder lokal)
- Sicherheits-Grundregeln gelesen: eigene ACME-Mail, einzigartige Passwörter, 2FA
- Phase 2: Domain (Njalla) + Cloudflare eingerichtet
- Phase 3: OCI-Server erstellt, Hermes hat SSH-Zugriff, Docker+Watchtower laufen
- Phase 4: WireGuard VPN steht
- Phase 5: Caddy (HTTPS) + Vaultwarden laufen
- Phase 6: [Optional] Raspberry Pi NFS-Storage eingebunden
- Phase 7: Nextcloud + Talk + TURN + Office laufen
- Phase 8: Hermes auf OCI, 4 Profile, Nextcloud+Telegram angebunden
- Phase 9: Prometheus + Grafana Cloud Dashboards + Alerting
- Phase 10: [Optional] Elasticsearch, Zitadel, OpenWebUI, Matrix
- Phase 11: Knowledge Base in Nextcloud, Skills für alle Profile
- Phase 12: Tests, Backups, Cron-Jobs, Dokumentation
Dieses Dokument ist sowohl als Anleitung für Hermes-Agent-Installationen als auch als technischer Guide für Firmengründer gedacht. Es wird fortlaufend aktualisiert, wenn neue Komponenten hinzukommen.
Version 3.0 — erstellt von Jarvis für ACME