🚀Installation
Voraussetzungen
- Ein Server mit Ubuntu 24.04 (getestet: Ubuntu 22.04, 24.04 und 26.04, Debian 12; andere apt-basierte Systeme funktionieren meist ebenfalls) mit systemd, auf x86_64 oder arm64. Empfohlen sind 2 vCPU, 4 GB RAM und 40 GB Speicherplatz (die Tools für Videos und Scraping brauchen ~1,5 GB). Bei weniger als 4 GB RAM ohne Swap legt der Installer eine 2-GB-Swap-Datei an; bei weniger als 3 GB bleibt die lokale Sprachtranskription ausgeschaltet, es sei denn, du verlangst sie ausdrücklich.
- Root-Zugriff (
sudo -i). - Ein Claude-Abo (Pro/Max) oder ein Anthropic-API-Schlüssel.
- Für den HTTPS-Zugriff: ein Domainname, dessen DNS-A/AAAA-Eintrag auf den Server zeigt, und offene Ports 80/443. Alternativ Tailscale oder ein SSH-Tunnel.
Wir empfehlen einen eigenen Server nur für Harness Maxxing: Standardmäßig läuft Claude mit vollen Berechtigungen (siehe Sicherheit). Ein Server, auf dem schon andere Dinge laufen, funktioniert aber auch – siehe Installation auf einem bereits genutzten Server.
Installieren
Als root auf dem Server (vorher sudo -i, wenn du als anderer Benutzer angemeldet bist):
curl -fsSL https://get.harness-maxxing.com | bash
Der Installer stellt drei Fragen (Zugriffsmodus, Domain, Backup wiederherstellen) und klont dann das öffentliche Git-Repository
(github.com/makushingu/harness-maxxing, Branch stable = die veröffentlichten Versionen) – ohne Schlüssel, ohne Konto. Updates kommen danach aus diesem Branch
(maxxing update). Unbeaufsichtigte Installation:
curl -fsSL https://get.harness-maxxing.com | ACCESS=domain DOMAIN=ui.example.com ASSUME_YES=1 bash.
Harness Maxxing ist kostenlos unter einer Fair-Source-Lizenz: siehe Lizenz.
Es wird kein Lizenzschlüssel verlangt. Ein Unternehmen, das einen Enterprise-Schlüssel braucht, gibt ihn nach der Installation ein, unter Einstellungen → Lizenz (oder im Onboarding-Schritt „Über dich“); siehe Lizenz.
Nach den Fragen läuft der Installer unbeaufsichtigt mit einer Live-Fortschrittsanzeige. Sprachnachrichten werden mit der lokalen Engine aktiviert (auf Servern mit mindestens 3 GB RAM), und die Zeitzone wählst du im Web-Onboarding:
- prüft den Server (root, apt, systemd, Architektur) und ob er bereits genutzt wird (siehe unten);
- installiert alle nötigen Systempakete in einem Durchgang (git, curl, python3, gnupg, openssh-client, cron, ffmpeg,
jq, ripgrep, ImageMagick, die Browser-Bibliotheken, unattended-upgrades, fail2ban ...) und aktiviert dabei Ubuntus
universe-Komponente, falls das Image sie nicht mitbrachte; auf einem kleinen Server ohne Swap legt er eine 2-GB-Swap-Datei an; - klont den Code nach
/opt/claude-maxxing; deine Anpassungen liegen darüber, siehe Anpassen; - installiert uv (Python-Toolchain) in
/usr/local/bin, das Python des Servers in/var/lib/claude-maxxing/tools/pythonund das Claude Code CLI: jeweils eine festgelegte Version, deren Prüfsumme in der Komponentenliste des Releases steht,deps.toml– nichts Heruntergeladenes wird ausgeführt, bevor es geprüft wurde (siehe Sicherheit, „Downloads“); - erstellt die Python-Umgebung und den Befehl
maxxingund führt dannmaxxing initaus: Konfiguration, Workspace, Skills, Standard-Jobs; - stellt optional dein Gedächtnis aus einem Backup wieder her;
- richtet den Zugriff ein (Caddy für eine Domain, Tailscale oder nur lokal);
- sichert den Server ab: automatische Sicherheitsupdates, SSH-Anmeldung nur per Schlüssel (nur wenn es nachweislich sicher ist, siehe Sicherheit), fail2ban für SSH und eine Firewall (ufw), die nur SSH, 80/443 (Domain) oder Tailscale durchlässt – siehe Sicherheit (auf einem bereits genutzten Server geht der Installer mit der Firewall vorsichtig um: siehe unten);
- installiert und startet den Dienst
claude-maxxingund prüft, ob er antwortet; - gibt einen einmaligen Einrichtungslink aus (eine Stunde gültig);
- installiert währenddessen im Hintergrund die Tools, die Claude täglich nutzt: Node.js 22, Remotion (Motion-Design-Videos),
Scrapling (Web-Scraping) und ein gemeinsames Chromium, das auch für den PDF-Druck dient, dazu das Sprachmodell – siehe
Videos, PDFs und Bilder.
maxxing deps listzeigt, wo sie liegen.
Auf einem kleinen Server dauert es etwa eine Minute bis zum Einrichtungslink, für die Tools noch ein bis zwei Minuten mehr. Ein erneuter Durchlauf erledigt nur das, was sich
geändert hat (etwa 10 Sekunden). Einen einzelnen Teil auf einem bestehenden Server erneut ausführen: bash /opt/claude-maxxing/install.sh --tools
(= maxxing deps update) oder --secure. Technische Namen behalten ihre ursprüngliche Schreibweise: Der Dienst heißt
claude-maxxing, der Code liegt in /opt/claude-maxxing, der Zustand in /var/lib/claude-maxxing.
Aus einer lokalen Kopie installieren
Ganz ohne Download: Entpacke ein Harness-Maxxing-Archiv (mit dem gebauten web/dist) auf dem Server und starte dessen
Installer, bash /path/to/harness-maxxing/install.sh (oder SOURCE_DIR=/path/to/harness-maxxing bash install.sh).
Der Code wird nach /opt/claude-maxxing kopiert; eine solche Installation hat keine Update-Quelle, daher ist „Nach Updates suchen“ ausgeschaltet
und maxxing update meldet „updates unavailable“. Um sie zu aktualisieren, entpackst du die neuere Kopie und startest deren Installer erneut.
Externe Komponenten
Alles, was der Installer neben den Systempaketen hinzufügt, ist mit Version und Prüfsumme in
server/maxxing/deps.toml aufgeführt und wird mit maxxing deps verwaltet:
maxxing deps list # installed and expected versions
maxxing deps verify # checksums, and files another user could replace
maxxing deps update # move to the versions of this release (each update does it on its own)
maxxing deps clean # old versions, leftovers, oversized logs (also every Sunday); --caches: root's uv/npm/pip caches too
maxxing deps check # known vulnerabilities (osv.dev; also every Monday, with a notification)
Bei einer Installation, die vor 2.0.0-alpha.70 gemacht wurde, werden die beiden wöchentlichen Jobs ausgeschaltet angelegt (Seite Crons: schalte sie
ein, wenn du sie willst), und maxxing update lässt ein funktionierendes Server-Python und ein uv, das es nicht selbst installiert hat, an Ort und Stelle
(maxxing deps update python / uv verschiebt sie). Node.js wird nie nach /usr/local/bin verlinkt, wenn der Server
schon ein eigenes node hat: Harness Maxxing nutzt seine Kopie, deine Programme behalten ihre.
Jedes maxxing update bringt sie auf die Versionen des neuen Releases (neben den alten installiert, umgeschaltet, sobald
sie funktionieren). Claude Code aktualisiert sich selbst (Einstellungen -> Claude). Systempakete (Caddy, ffmpeg, git ...) erhalten ihre
Sicherheitsupdates über unattended-upgrades.
Öffne den Link: Das Onboarding erledigt den Rest.
Installation auf einem bereits genutzten Server
Bevor er etwas ändert, sieht sich der Installer den Server an und gibt einen Server-Check aus: andere von außen erreichbare Dienste, einen Webserver auf den Ports 80/443, eine aktive Firewall, Docker, andere geplante Jobs, ein älteres Node.js, ein vorhandenes Claude-Code-Setup, andere Telegram-Bridges. Um nur diesen Bericht zu sehen (es wird nichts geändert):
curl -fsSL https://get.harness-maxxing.com | bash -s -- --check
Wenn der Server bereits genutzt wird, bittet der Installer um Bestätigung und geht dann so vor:
| Was er findet | Was er tut |
|---|---|
| andere von außen erreichbare Dienste oder Docker | schaltet die Firewall nicht ein (sie könnte sie abschneiden). Erzwingen mit FIREWALL=1 bash /opt/claude-maxxing/install.sh --secure |
| eine aktive ufw-Firewall | behält deine Regeln und fügt nur SSH hinzu (+ 80/443 bei einer Domain, + Tailscale) |
| nginx, Apache oder ein anderer Webserver auf 80/443 | installiert Caddy nicht; bei einer Domain wird der Reverse-Proxy-Block, den du in deinen Webserver einfügen kannst, in /var/lib/claude-maxxing/reverse-proxy.conf gespeichert |
| ein Caddy, den du schon nutzt | fügt mit einer import-Zeile eine eigene Site hinzu, deine Sites bleiben unverändert |
| andere geplante Jobs | ändert nie die Serveruhr: deine Jobs behalten ihre Zeiten, die Jobs von Harness Maxxing laufen zu den Zeiten, die du in deiner eigenen Zeitzone wählst |
| ein eigenes Node.js | behält es; Harness Maxxing bekommt sein Node.js 22 in /var/lib/claude-maxxing/tools/nodejs, das nur von seinen Sessions und Tools genutzt wird |
| Port 8787 belegt | nimmt den nächsten freien Port |
Claude Code bereits angemeldet, mit Skills oder einer ~/.claude/CLAUDE.md |
behält alles und fragt: Harness Maxxing einen eigenen Claude-Code-Ordner geben (~/.claude-harness, der Standard – dein ~/.claude bleibt unberührt, du meldest dich in der Web-Einrichtung neu an und holst Skills herüber, wenn du sie brauchst) oder ~/.claude teilen (seine globalen Anweisungen und Skills gelten dann auch für Sessions von Harness Maxxing; ein Skill mit demselben Namen wie ein Produkt-Skill wird vorher in den Papierkorb verschoben). Ohne Terminal: eigener Ordner. Ein erneuter Durchlauf des Installers behält die Wahl vom ersten Mal |
| eine andere Telegram-Bridge oder ein anderer Agent | warnt dich: Gib Harness Maxxing einen neuen Bot (ein Bot-Token kann nur von einem Programm gelesen werden) |
| SSH-Passwort-Anmeldung aktiv | wird nur ausgeschaltet, wenn nachweislich ein Schlüssel für die Session verwendet wird, in der der Installer läuft (vorher gefragt, wenn du Fragen beantwortest); sonst bleibt sie an, mit einer Warnung |
| dein Crontab, die fail2ban-SSH-Jail, die Einstellungen für automatische Updates | bleiben erhalten (Harness Maxxing bearbeitet nur seinen eigenen Crontab-Block) |
maxxing uninstall listet auf, was der Installer auf dem Server geändert hat (Firewall eingeschaltet, SSH nur per Schlüssel, Zeitzone)
und wie du es rückgängig machst.
Zugriffsmodi
| Modus | URL | Wie |
|---|---|---|
domain (empfohlen) |
https://ui.example.com |
Caddy wird aus seinem offiziellen Repository installiert, holt beim ersten Besuch ein Let's-Encrypt-Zertifikat und leitet an 127.0.0.1:8787 weiter. Site-Datei: /etc/caddy/claude-maxxing.caddy. |
tailscale |
http://100.x.y.z:8787 |
Der Server lauscht nur auf der Tailscale-IP: erreichbar von deinen Tailscale-Geräten. |
local |
http://127.0.0.1:8787 |
Lauscht nur auf localhost. Von deinem Computer aus: ssh -N -L 8787:127.0.0.1:8787 root@<server>, dann die URL öffnen. |
Der Server lauscht nie auf 0.0.0.0 oder einer öffentlichen Adresse.
Unbeaufsichtigte Installation
Beantworte jede Frage mit Variablen und füge ASSUME_YES=1 hinzu:
curl -fsSL https://get.harness-maxxing.com | ACCESS=domain DOMAIN=ui.example.com ASSUME_YES=1 bash
| Variable | Standard | Bedeutung |
|---|---|---|
REPO, BRANCH |
makushingu/harness-maxxing, stable |
das Git-Repository und der Branch, aus denen Code und Updates kommen (stable = veröffentlichte Versionen, main = Arbeitsstand) |
GH_TOKEN |
– | ein Lese-Token, nur für einen privaten Fork oder Mirror (REPO=owner/name) |
LICENSE |
– | optional: ein Enterprise-Schlüssel, der am Ende hinterlegt wird (wie Einstellungen → Lizenz, siehe Lizenz) |
LICENSE_API |
https://api.harness-maxxing.com |
Lizenzserver (prüft einen Enterprise-Schlüssel) |
INSTALL_DIR |
/opt/claude-maxxing |
Code + Python-Umgebung |
WORKSPACE |
/root/maxxing |
dein Workspace |
STATE_DIR |
/var/lib/claude-maxxing |
Konfiguration und Zustand |
PORT |
8787 |
HTTP-Port |
ACCESS |
wird gefragt (local bei unbeaufsichtigter Installation) |
domain, tailscale oder local |
DOMAIN |
– | erforderlich für domain |
TIMEZONE |
Systemzeitzone | IANA-Name, z. B. Europe/Paris. Wird meist stattdessen im Web-Onboarding gewählt. Auf einem frischen Server wird die Systemzeitzone umgestellt (timedatectl set-timezone), damit geplante Jobs zu den in der Oberfläche angezeigten Zeiten starten |
SYSTEM_CLOCK |
auto |
follow = die Systemzeitzone folgt deiner (Standard auf einem frischen Server), keep = nie anfassen (Standard auf einem bereits genutzten Server; Jobs laufen trotzdem zu deinen Zeiten) |
CLAUDE_DIR |
~/.claude (~/.claude-harness, wenn Claude Code schon genutzt wird und du die Standardantwort behältst) |
Claude-Code-Ordner, den Harness Maxxing nutzt; setze ihn, um die Frage zu überspringen. Ein anderer Ordner (z. B. /root/.claude-harness) hält ihn getrennt von einem Claude Code, das du auf diesem Server schon nutzt: eigene Skills, eigene globale CLAUDE.md, eigene Unterhaltungen und Anmeldung; dein ~/.claude bleibt unberührt. Hole Skills einzeln herüber, wenn du sie brauchst |
RESTORE_FROM, RESTORE_TOKEN |
– | ein bestehendes Gedächtnis-Backup wiederherstellen (siehe unten) |
CLAUDE_TOKEN / ANTHROPIC_API_KEY |
– | optional: Claude-Zugangsdaten, die sofort gespeichert werden |
FIREWALL |
auto |
auto = ufw nur auf einem Server, auf dem sonst nichts nach außen offen ist (eine aktive ufw bleibt erhalten, Regeln werden ergänzt), 1 = immer, 0 = nie (Sicherheitsupdates und fail2ban werden trotzdem eingerichtet) |
SSH_HARDEN |
auto |
auto = SSH-Passwort-Anmeldung nur ausschalten, wenn nachweislich ein Schlüssel für diese Session verwendet wird, 1 = auch dann, wenn ein Schlüssel installiert ist, die Session aber nicht geprüft werden kann (Konsole, Web-Terminal), 0 = SSH nie anfassen |
VOICE |
local (off unter 3 GB RAM) |
Sprachnachrichten: local (Whisper auf dem Server, Modell wird im Hintergrund heruntergeladen), groq, openai oder off – siehe Sprachnachrichten. VOICE=local auf einem kleineren Server wird nachgefragt, bei unbeaufsichtigter Installation abgelehnt |
TOOLS |
background |
background = Node.js, Chromium, Remotion, Scrapling und das Sprachmodell werden installiert, sobald der Dienst läuft, foreground = darauf warten, 0 = überspringen (später maxxing deps update) |
SWAP |
auto |
auto = eine 2-GB-/swapfile unter 4 GB RAM, wenn es keinen Swap gibt, nur auf einem frischen Server (nicht in Containern, nicht auf einem bereits genutzten Server oder bei einem erneuten Durchlauf), 1 = dasselbe auf jedem Server, 0 = nie |
SOURCE_DIR |
– | diese lokale Kopie des Codes installieren (siehe „Aus einer lokalen Kopie installieren“) |
ASSUME_YES |
0 |
1 = nie fragen, Standardwerte verwenden |
Auf einem neuen Server wiederherstellen
Du ziehst auf einen neuen Server um? Installiere mit deinem Backup-Repository (bei einem Enterprise-Schlüssel gib ihn zuerst auf dem alten Server frei: Einstellungen → Lizenz → Schlüssel entfernen, siehe Lizenz):
curl -fsSL https://get.harness-maxxing.com | RESTORE_FROM=owner/memory-backup RESTORE_TOKEN=<token> bash
Der Installer führt maxxing backup restore --from owner/memory-backup aus, nachdem er den
Workspace angelegt hat. Siehe Backup.
Erneut ausführen, aktualisieren, deinstallieren
- Erneut ausführen kannst du den Installer jederzeit: Jeder Schritt behält, was vorhanden ist (nützlich, um den Zugriffsmodus zu ändern oder eine Installation zu reparieren).
- Update:
maxxing update(oder... | bash -s -- --update). Es holt die neue Version, spielt deine Anpassungen darüber wieder ein, synchronisiert die Abhängigkeiten, aktualisiert Skills und Vorlagen (nie deine Dateien), startet den Dienst neu, prüft, ob er antwortet (sonst wird zurückgerollt), und gibt aus, was sich geändert hat. Auch verfügbar unter Einstellungen -> System und im Topicsystem/harness(system/updateauf älteren Servern). - Deinstallieren:
maxxing uninstall(oder... | bash -s -- --uninstall) entfernt den Dienst, die Caddy-Site, den Crontab-Block, die Produkt-Skills und den Befehlmaxxing. Mit--purgelöschst du zusätzlich den Code, das Zustandsverzeichnis und jede externe Komponente, die der Installer hinzugefügt hat (deps.toml: uv, Node.js, die Tools, Claude Code und Caddy, wenn der Installer sie installiert hat, die von ihm angelegte Swap-Datei), mit--purge-workspacelöschst du auch den Workspace (nicht rückgängig zu machen).
Installation prüfen
maxxing doctor
Jede Zeile ist ✔ (in Ordnung), ! (Warnung) oder ✘ (Problem), mit einem Hinweis zur Behebung. Siehe
Fehlerbehebung.