🚀Installation
Prérequis
- Un serveur sous Ubuntu 24.04 (testé : Ubuntu 22.04, 24.04 et 26.04, Debian 12 ; les autres systèmes basés sur apt fonctionnent généralement) avec systemd, en x86_64 ou arm64. 2 vCPU, 4 Go de RAM et 40 Go de disque recommandés (les outils pour les vidéos et le scraping occupent environ 1,5 Go). Avec moins de 4 Go de RAM et sans swap, l'installateur ajoute un fichier swap de 2 Go ; avec moins de 3 Go, la transcription vocale locale reste désactivée sauf si vous la demandez.
- Un accès root (
sudo -i). - Un abonnement Claude (Pro/Max) ou une clé d'API Anthropic.
- Pour un accès en HTTPS : un nom de domaine dont l'enregistrement DNS A/AAAA pointe vers le serveur, et les ports 80/443 ouverts. Sinon, Tailscale ou un tunnel SSH.
Nous recommandons un serveur dédié à Harness Maxxing : par défaut, Claude s'exécute avec tous les droits (voir Sécurité). Un serveur qui fait déjà tourner d'autres choses fonctionne aussi - voir Installer sur un serveur déjà utilisé.
Installer
En root sur le serveur (faites d'abord sudo -i si vous êtes connecté avec un autre utilisateur) :
curl -fsSL https://get.harness-maxxing.com | bash
Il pose trois questions (mode d'accès, domaine, restauration d'une sauvegarde), puis clone le dépôt git public
(github.com/makushingu/harness-maxxing, branche stable = les versions publiées) - sans clé, sans compte. Les mises à jour viennent ensuite de cette branche
(maxxing update). Installation sans surveillance :
curl -fsSL https://get.harness-maxxing.com | ACCESS=domain DOMAIN=ui.example.com ASSUME_YES=1 bash.
Harness Maxxing est gratuit sous une licence fair source : voir Licence.
Aucune clé de licence n'est demandée. Une entreprise qui a besoin d'une clé Enterprise la saisit après l'installation, dans Paramètres → Licence (ou à l'étape d'accueil À propos de vous) ; voir Licence.
Après les questions, l'installateur s'exécute sans surveillance avec un affichage de progression en direct. Les messages vocaux sont activés avec le moteur local (sur les serveurs ayant au moins 3 Go de RAM) et le fuseau horaire se choisit dans l'accueil web :
- vérifie le serveur (root, apt, systemd, architecture) et s'il est déjà utilisé (voir plus bas) ;
- installe en une seule passe tous les paquets système nécessaires (git, curl, python3, gnupg, openssh-client, cron, ffmpeg,
jq, ripgrep, ImageMagick, les bibliothèques du navigateur, unattended-upgrades, fail2ban...), en activant le composant
universed'Ubuntu si l'image est livrée sans lui ; sur un petit serveur sans swap, il ajoute un fichier swap de 2 Go ; - clone le code dans
/opt/claude-maxxing; vos personnalisations se placent par-dessus, voir Personnalisation ; - installe uv (la chaîne d'outils Python) dans
/usr/local/bin, le Python du serveur dans/var/lib/claude-maxxing/tools/python, et la CLI Claude Code : chacun dans une version figée dont la somme de contrôle figure dans la liste des composants de la version,deps.toml- rien de ce qui est téléchargé n'est exécuté avant d'avoir été vérifié (voir Sécurité, « Téléchargements ») ; - crée l'environnement Python et la commande
maxxing, puis lancemaxxing init: configuration, espace de travail, skills, tâches par défaut ; - restaure éventuellement votre mémoire depuis une sauvegarde ;
- met en place l'accès (Caddy pour un domaine, Tailscale, ou local uniquement) ;
- sécurise le serveur : mises à jour de sécurité automatiques, connexions SSH par clé uniquement (seulement quand c'est démontré sans risque, voir Sécurité), fail2ban pour SSH, et un pare-feu (ufw) qui ne laisse passer que SSH, 80/443 (domaine) ou Tailscale - voir Sécurité (sur un serveur déjà utilisé, le pare-feu est géré avec précaution : voir plus bas) ;
- installe et démarre le service
claude-maxxinget vérifie qu'il répond ; - affiche un lien de configuration à usage unique (valable une heure) ;
- pendant ce temps, en arrière-plan, installe les outils que Claude utilise au quotidien : Node.js 22, Remotion (vidéos de
motion design), Scrapling (scraping web) et un Chromium qu'ils partagent avec l'impression en PDF, ainsi que le modèle
vocal - voir Vidéos, PDF et images.
maxxing deps listmontre où ils en sont.
Comptez environ une minute jusqu'au lien de configuration sur un petit serveur, et une à deux minutes de plus pour les outils. Une nouvelle exécution ne refait que ce qui a
changé (environ 10 secondes). Pour relancer une seule partie sur un serveur existant : bash /opt/claude-maxxing/install.sh --tools
(= maxxing deps update) ou --secure. Les noms techniques gardent leur orthographe d'origine : le service est
claude-maxxing, le code /opt/claude-maxxing, l'état /var/lib/claude-maxxing.
Installer depuis une copie locale
Aucun téléchargement : décompressez une archive de Harness Maxxing (avec son web/dist déjà construit) sur le serveur et lancez son
installateur, bash /path/to/harness-maxxing/install.sh (ou SOURCE_DIR=/path/to/harness-maxxing bash install.sh).
Le code est copié dans /opt/claude-maxxing ; une telle installation n'a pas de source de mise à jour, donc « Rechercher des mises à jour » est désactivé
et maxxing update répond « updates unavailable ». Pour la mettre à jour, décompressez la copie plus récente et relancez son installateur.
Composants externes
Tout ce que l'installateur ajoute en dehors des paquets système est listé, avec sa version et sa somme de contrôle, dans
server/maxxing/deps.toml et géré avec maxxing deps :
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)
Sur une installation réalisée avant la version 2.0.0-alpha.70, les deux tâches hebdomadaires sont créées désactivées (page Crons : activez-les
si vous le souhaitez), et maxxing update laisse en place un Python de serveur qui fonctionne et un uv qu'il n'a pas installé
(maxxing deps update python / uv les déplace). Node.js n'est jamais lié dans /usr/local/bin quand le serveur
a déjà son propre node : Harness Maxxing utilise sa copie, vos programmes gardent la leur.
Chaque maxxing update les fait passer aux versions de la nouvelle version (installées à côté des anciennes, puis basculées une fois
qu'elles fonctionnent). Claude Code continue de se mettre à jour tout seul (Paramètres -> Claude). Les paquets système (Caddy, ffmpeg, git...) reçoivent leurs
mises à jour de sécurité via unattended-upgrades.
Ouvrez le lien : l'accueil s'occupe du reste.
Installer sur un serveur déjà utilisé
Avant de modifier quoi que ce soit, l'installateur examine le serveur et affiche un contrôle du serveur : autres services accessibles depuis l'extérieur, un serveur web sur les ports 80/443, un pare-feu actif, Docker, d'autres tâches planifiées, un Node.js plus ancien, une configuration Claude Code existante, d'autres passerelles Telegram. Pour voir uniquement ce rapport (rien n'est modifié) :
curl -fsSL https://get.harness-maxxing.com | bash -s -- --check
Quand le serveur est déjà utilisé, l'installateur demande confirmation, puis :
| Ce qu'il trouve | Ce qu'il fait |
|---|---|
| d'autres services accessibles depuis l'extérieur, ou Docker | n'active pas le pare-feu (cela pourrait les couper). Forcez-le avec FIREWALL=1 bash /opt/claude-maxxing/install.sh --secure |
| un pare-feu ufw actif | garde vos règles et ajoute seulement SSH (+ 80/443 pour un domaine, + Tailscale) |
| nginx, Apache ou un autre serveur web sur 80/443 | n'installe pas Caddy ; avec un domaine, enregistre dans /var/lib/claude-maxxing/reverse-proxy.conf le bloc de proxy inverse à ajouter à votre serveur web |
| un Caddy que vous utilisez déjà | ajoute son propre site avec une ligne import, vos sites restent tels quels |
| d'autres tâches planifiées | ne modifie jamais l'horloge du serveur : vos tâches gardent leurs horaires, les tâches de Harness Maxxing s'exécutent aux heures que vous choisissez dans votre propre fuseau |
| un Node.js existant | le conserve ; Harness Maxxing obtient son Node.js 22 dans /var/lib/claude-maxxing/tools/nodejs, utilisé uniquement par ses sessions et ses outils |
| le port 8787 est pris | utilise le port libre suivant |
Claude Code déjà connecté, avec des skills ou un ~/.claude/CLAUDE.md |
conserve tout, et demande : donner à Harness Maxxing son propre dossier Claude Code (~/.claude-harness, le choix par défaut - votre ~/.claude n'est pas touché, vous vous reconnectez dans la configuration web et vous reprenez des skills quand vous en avez besoin) ou partager ~/.claude (ses instructions globales et ses skills s'appliquent alors aussi aux sessions de Harness Maxxing ; un skill portant le même nom qu'un skill du produit est d'abord mis à la corbeille). Sans terminal : dossier à part. Relancer l'installateur conserve le choix fait la première fois |
| une autre passerelle ou un autre agent Telegram | vous avertit : donnez à Harness Maxxing un nouveau bot (un jeton de bot ne peut être lu que par un seul programme) |
| connexions SSH par mot de passe activées | désactivées seulement quand il est démontré que la session qui lance l'installateur utilise une clé (demandé d'abord quand vous répondez aux questions) ; sinon laissées activées, avec un avertissement |
| votre crontab, la jail SSH de fail2ban, les réglages de mises à jour automatiques | conservés (Harness Maxxing ne modifie que son propre bloc de crontab) |
maxxing uninstall liste ce que l'installateur a modifié sur le serveur (pare-feu activé, SSH par clé uniquement, fuseau horaire)
et comment l'annuler.
Modes d'accès
| Mode | URL | Comment |
|---|---|---|
domain (recommandé) |
https://ui.example.com |
Caddy est installé depuis son dépôt officiel, obtient un certificat Let's Encrypt à la première visite et redirige vers 127.0.0.1:8787. Fichier du site : /etc/caddy/claude-maxxing.caddy. |
tailscale |
http://100.x.y.z:8787 |
Le serveur écoute uniquement sur l'IP Tailscale : accessible depuis vos appareils Tailscale. |
local |
http://127.0.0.1:8787 |
Écoute uniquement sur localhost. Depuis votre ordinateur : ssh -N -L 8787:127.0.0.1:8787 root@<server> puis ouvrez l'URL. |
Le serveur n'écoute jamais sur 0.0.0.0 ni sur une adresse publique.
Installation sans surveillance
Répondez à toutes les questions avec des variables et ajoutez ASSUME_YES=1 :
curl -fsSL https://get.harness-maxxing.com | ACCESS=domain DOMAIN=ui.example.com ASSUME_YES=1 bash
| Variable | Valeur par défaut | Signification |
|---|---|---|
REPO, BRANCH |
makushingu/harness-maxxing, stable |
le dépôt git et la branche d'où viennent le code et les mises à jour (stable = versions publiées, main = travail en cours) |
GH_TOKEN |
– | un jeton en lecture, uniquement pour un fork ou un miroir privé (REPO=owner/name) |
LICENSE |
– | facultatif : une clé Enterprise, enregistrée à la fin (comme Paramètres → Licence, voir Licence) |
LICENSE_API |
https://api.harness-maxxing.com |
serveur de licences (vérifie une clé Enterprise) |
INSTALL_DIR |
/opt/claude-maxxing |
code + environnement Python |
WORKSPACE |
/root/maxxing |
votre espace de travail |
STATE_DIR |
/var/lib/claude-maxxing |
configuration et état |
PORT |
8787 |
port HTTP |
ACCESS |
demandé (local sans surveillance) |
domain, tailscale ou local |
DOMAIN |
– | obligatoire pour domain |
TIMEZONE |
fuseau du système | nom IANA, par exemple Europe/Paris. En général choisi plutôt dans l'accueil web. Sur un serveur neuf, le fuseau du système est modifié (timedatectl set-timezone) pour que les tâches planifiées se déclenchent aux heures affichées dans l'interface |
SYSTEM_CLOCK |
auto |
follow = le fuseau du système suit le vôtre (par défaut sur un serveur neuf), keep = n'y touche jamais (par défaut sur un serveur déjà utilisé ; les tâches s'exécutent quand même à vos heures) |
CLAUDE_DIR |
~/.claude (~/.claude-harness quand Claude Code est déjà utilisé et que vous gardez la réponse par défaut) |
dossier Claude Code utilisé par Harness Maxxing ; définissez-le pour passer la question. Un autre dossier (par exemple /root/.claude-harness) le garde séparé d'un Claude Code que vous utilisez déjà sur ce serveur : ses propres skills, son CLAUDE.md global, ses conversations et sa connexion ; votre ~/.claude n'est pas touché. Reprenez les skills un par un quand vous en avez besoin |
RESTORE_FROM, RESTORE_TOKEN |
– | restaurer une sauvegarde de mémoire existante (voir plus bas) |
CLAUDE_TOKEN / ANTHROPIC_API_KEY |
– | facultatif : identifiants Claude enregistrés immédiatement |
FIREWALL |
auto |
auto = ufw uniquement sur un serveur sans rien d'autre d'exposé (un ufw actif est conservé, des règles sont ajoutées), 1 = toujours, 0 = jamais (les mises à jour de sécurité et fail2ban restent installés) |
SSH_HARDEN |
auto |
auto = désactive les connexions SSH par mot de passe seulement quand il est démontré que cette session utilise une clé, 1 = aussi quand une clé est installée mais que la session ne peut pas être vérifiée (console, terminal web), 0 = ne jamais toucher à SSH |
VOICE |
local (off sous 3 Go de RAM) |
messages vocaux : local (Whisper sur le serveur, modèle téléchargé en arrière-plan), groq, openai ou off - voir Messages vocaux. VOICE=local sur un serveur plus petit est demandé, refusé sans surveillance |
TOOLS |
background |
background = Node.js, Chromium, Remotion, Scrapling et le modèle vocal sont installés une fois le service lancé, foreground = on les attend, 0 = ignorer (maxxing deps update plus tard) |
SWAP |
auto |
auto = un /swapfile de 2 Go sous 4 Go de RAM quand il n'y a pas de swap, sur un serveur neuf uniquement (pas dans les conteneurs, pas sur un serveur déjà utilisé ni lors d'une nouvelle exécution), 1 = pareil sur n'importe quel serveur, 0 = jamais |
SOURCE_DIR |
– | installer cette copie locale du code (voir « Installer depuis une copie locale ») |
ASSUME_YES |
0 |
1 = ne jamais poser de question, utiliser les valeurs par défaut |
Restaurer sur un nouveau serveur
Vous changez de serveur ? Installez avec votre dépôt de sauvegarde (avec une clé Enterprise, libérez-la d'abord sur l'ancien serveur : Paramètres → Licence → Retirer la clé, voir Licence) :
curl -fsSL https://get.harness-maxxing.com | RESTORE_FROM=owner/memory-backup RESTORE_TOKEN=<token> bash
L'installateur exécute maxxing backup restore --from owner/memory-backup après avoir créé l'espace de
travail. Voir Sauvegarde.
Relancer, mettre à jour, désinstaller
- Relancez l'installateur à tout moment : chaque étape conserve ce qui existe (pratique pour changer le mode d'accès ou réparer une installation).
- Mise à jour :
maxxing update(ou... | bash -s -- --update). Elle récupère la nouvelle version, rejoue vos personnalisations par-dessus, synchronise les dépendances, actualise les skills et les modèles (jamais vos fichiers), redémarre le service, vérifie qu'il répond (sinon elle revient en arrière) et affiche ce qui a changé. Également disponible dans Paramètres -> Système et dans le sujetsystem/harness(system/updatesur les anciens serveurs). - Désinstaller :
maxxing uninstall(ou... | bash -s -- --uninstall) supprime le service, le site Caddy, le bloc de crontab, les skills du produit et la commandemaxxing. Ajoutez--purgepour supprimer aussi le code, le dossier d'état et tous les composants externes ajoutés par l'installateur (deps.toml: uv, Node.js, les outils, Claude Code et Caddy quand c'est l'installateur qui les a installés, le fichier swap qu'il a créé),--purge-workspacepour supprimer aussi l'espace de travail (irréversible).
Vérifier l'installation
maxxing doctor
Chaque ligne est ✔ (bien), ! (avertissement) ou ✘ (problème), avec une piste pour corriger. Voir
Dépannage.