🚀Installazione
Requisiti
- Un server con Ubuntu 24.04 (testati: Ubuntu 22.04, 24.04 e 26.04, Debian 12; gli altri sistemi basati su apt di solito funzionano) con systemd, su x86_64 o arm64. Consigliati 2 vCPU, 4 GB di RAM e 40 GB di disco (gli strumenti per i video e lo scraping occupano circa 1,5 GB). Con meno di 4 GB di RAM e senza swap l'installer aggiunge un file di swap da 2 GB; con meno di 3 GB la trascrizione vocale locale resta disattivata, a meno che tu non la richieda.
- Accesso root (
sudo -i). - Un abbonamento Claude (Pro/Max) oppure una chiave API Anthropic.
- Per l'accesso in HTTPS: un nome di dominio con il record DNS A/AAAA che punta al server, e le porte 80/443 aperte. In alternativa Tailscale, oppure un tunnel SSH.
Ti consigliamo un server dedicato a Harness Maxxing: per impostazione predefinita Claude funziona con tutti i permessi (vedi Sicurezza). Funziona anche un server che ospita già altre cose - vedi Installare su un server già in uso.
Installazione
Come root sul server (prima sudo -i se hai fatto l'accesso con un altro utente):
curl -fsSL https://get.harness-maxxing.com | bash
Ti fa tre domande (modalità di accesso, dominio, ripristino di un backup), poi clona il repository git pubblico
(github.com/makushingu/harness-maxxing, branch stable = le versioni pubblicate) - nessuna chiave, nessun account. Gli aggiornamenti arrivano poi da quel branch
(maxxing update). Installazione non presidiata:
curl -fsSL https://get.harness-maxxing.com | ACCESS=domain DOMAIN=ui.example.com ASSUME_YES=1 bash.
Harness Maxxing è gratuito con una licenza fair source: vedi Licenza.
Non viene richiesta nessuna chiave di licenza. Un'azienda che ha bisogno di una chiave Enterprise la inserisce dopo l'installazione, in Impostazioni → Licenza (oppure nel passaggio Su di te dell'onboarding); vedi Licenza.
Dopo le domande l'installer procede da solo, con un indicatore di avanzamento in tempo reale. I messaggi vocali sono attivati con il motore locale (sui server con almeno 3 GB di RAM) e il fuso orario si sceglie nell'onboarding web:
- controlla il server (root, apt, systemd, architettura) e se è già in uso (vedi sotto);
- installa tutti i pacchetti di sistema necessari in un'unica passata (git, curl, python3, gnupg, openssh-client, cron, ffmpeg,
jq, ripgrep, ImageMagick, le librerie per il browser, unattended-upgrades, fail2ban...), attivando il componente
universedi Ubuntu se l'immagine ne era priva; su un server piccolo senza swap aggiunge un file di swap da 2 GB; - clona il codice in
/opt/claude-maxxing; le tue personalizzazioni si appoggiano sopra, vedi Personalizzare; - installa uv (la toolchain Python) in
/usr/local/bin, il Python del server in/var/lib/claude-maxxing/tools/pythone la CLI di Claude Code: ognuno in una versione fissata, il cui checksum è nell'elenco dei componenti della release,deps.toml- nulla di ciò che viene scaricato viene eseguito prima di essere verificato (vedi Sicurezza, "Download"); - crea l'ambiente Python e il comando
maxxing, poi eseguemaxxing init: configurazione, workspace, skill, job predefiniti; - facoltativamente, ripristina la tua memoria da un backup;
- configura l'accesso (Caddy per un dominio, Tailscale, oppure solo locale);
- mette in sicurezza il server: aggiornamenti di sicurezza automatici, accessi SSH solo con chiave (solo quando è dimostrato che è sicuro, vedi Sicurezza), fail2ban per SSH e un firewall (ufw) che lascia passare solo SSH, 80/443 (dominio) o Tailscale - vedi Sicurezza (su un server già in uso, il firewall viene gestito con cautela: vedi sotto);
- installa e avvia il servizio
claude-maxxinge verifica che risponda; - mostra un link di configurazione monouso (valido un'ora);
- nel frattempo, in background, installa gli strumenti che Claude usa ogni giorno: Node.js 22, Remotion (video di
motion design), Scrapling (web scraping) e un unico Chromium che condividono con la stampa dei PDF, più il modello
vocale - vedi Video, PDF e immagini.
maxxing deps listmostra a che punto sono.
Circa un minuto fino al link di configurazione su un server piccolo, uno o due minuti in più per gli strumenti. Una nuova esecuzione rifà solo ciò che
è cambiato (circa 10 secondi). Per rieseguire una sola parte su un server esistente: bash /opt/claude-maxxing/install.sh --tools
(= maxxing deps update) oppure --secure. I nomi tecnici mantengono l'ortografia originale: il servizio è
claude-maxxing, il codice /opt/claude-maxxing, lo stato /var/lib/claude-maxxing.
Installare da una copia locale
Nessun download: decomprimi sul server un archivio di Harness Maxxing (con il suo web/dist già compilato) ed esegui il suo
installer, bash /path/to/harness-maxxing/install.sh (oppure SOURCE_DIR=/path/to/harness-maxxing bash install.sh).
Il codice viene copiato in /opt/claude-maxxing; un'installazione di questo tipo non ha una fonte di aggiornamento, quindi "Cerca aggiornamenti" è disattivato
e maxxing update risponde "updates unavailable". Per aggiornarla, decomprimi la copia più recente ed esegui di nuovo il suo installer.
Componenti esterni
Tutto ciò che l'installer aggiunge oltre ai pacchetti di sistema è elencato, con versione e checksum, in
server/maxxing/deps.toml e si gestisce con 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)
Su un'installazione fatta prima della 2.0.0-alpha.70, i due job settimanali vengono creati disattivati (pagina Cron: attivali
se vuoi), e maxxing update lascia dove sono un Python del server funzionante e un uv che non ha installato lui
(maxxing deps update python / uv li sposta). Node.js non viene mai collegato in /usr/local/bin quando il server
ha già un suo node: Harness Maxxing usa la propria copia, i tuoi programmi mantengono la loro.
Ogni maxxing update li porta alle versioni della nuova release (installate accanto alle vecchie, attivate non appena
funzionano). Claude Code si aggiorna da solo (Impostazioni -> Claude). I pacchetti di sistema (Caddy, ffmpeg, git...) ricevono i loro
aggiornamenti di sicurezza da unattended-upgrades.
Apri il link: l'onboarding fa il resto.
Installare su un server già in uso
Prima di cambiare qualsiasi cosa, l'installer esamina il server e mostra un controllo del server: altri servizi raggiungibili dall'esterno, un web server sulle porte 80/443, un firewall attivo, Docker, altri job pianificati, un Node.js più vecchio, una configurazione esistente di Claude Code, altri bridge Telegram. Per vedere solo quel report (nulla viene modificato):
curl -fsSL https://get.harness-maxxing.com | bash -s -- --check
Quando il server è già in uso, l'installer chiede conferma e poi:
| Cosa trova | Cosa fa |
|---|---|
| altri servizi raggiungibili dall'esterno, oppure Docker | non attiva il firewall (potrebbe tagliarli fuori). Per forzarlo: FIREWALL=1 bash /opt/claude-maxxing/install.sh --secure |
| un firewall ufw attivo | mantiene le tue regole e aggiunge solo SSH (+ 80/443 per un dominio, + Tailscale) |
| nginx, Apache o un altro web server su 80/443 | non installa Caddy; con un dominio, salva in /var/lib/claude-maxxing/reverse-proxy.conf il blocco reverse proxy da aggiungere al tuo web server |
| un Caddy che usi già | aggiunge il proprio sito con una sola riga import, i tuoi siti restano come sono |
| altri job pianificati | non cambia mai l'orologio del server: i tuoi job mantengono i loro orari, i job di Harness Maxxing girano agli orari che scegli nel tuo fuso |
| un Node.js già presente | lo mantiene; Harness Maxxing ottiene il proprio Node.js 22 in /var/lib/claude-maxxing/tools/nodejs, usato solo dalle sue sessioni e dai suoi strumenti |
| porta 8787 occupata | usa la prossima porta libera |
Claude Code già autenticato, con skill o un ~/.claude/CLAUDE.md |
mantiene tutto e chiede: dare a Harness Maxxing una cartella Claude Code tutta sua (~/.claude-harness, l'opzione predefinita - la tua ~/.claude non viene toccata, accedi di nuovo nella configurazione web e porti le skill quando ti servono) oppure condividere ~/.claude (le sue istruzioni globali e le sue skill valgono allora anche per le sessioni di Harness Maxxing; una skill con lo stesso nome di una skill del prodotto viene prima spostata nel cestino). Senza terminale: cartella propria. Rieseguendo l'installer, la scelta fatta la prima volta viene mantenuta |
| un altro bridge o agente Telegram | ti avvisa: dai a Harness Maxxing un nuovo bot (il token di un bot può essere letto da un solo programma) |
| accessi SSH con password attivi | li disattiva solo quando è dimostrato che la sessione che esegue l'installer usa una chiave (te lo chiede prima, quando rispondi alle domande); altrimenti li lascia attivi, con un avviso |
| il tuo crontab, il jail SSH di fail2ban, le impostazioni degli aggiornamenti automatici | mantenuti (Harness Maxxing modifica solo il proprio blocco del crontab) |
maxxing uninstall elenca ciò che l'installer ha cambiato sul server (firewall attivato, SSH solo con chiave, fuso orario)
e come annullarlo.
Modalità di accesso
| Modalità | URL | Come |
|---|---|---|
domain (consigliata) |
https://ui.example.com |
Caddy viene installato dal suo repository ufficiale, ottiene un certificato Let's Encrypt alla prima visita e inoltra a 127.0.0.1:8787. File del sito: /etc/caddy/claude-maxxing.caddy. |
tailscale |
http://100.x.y.z:8787 |
Il server ascolta solo sull'IP di Tailscale: raggiungibile dai tuoi dispositivi Tailscale. |
local |
http://127.0.0.1:8787 |
Ascolta solo su localhost. Dal tuo computer: ssh -N -L 8787:127.0.0.1:8787 root@<server> poi apri l'URL. |
Il server non ascolta mai su 0.0.0.0 né su un indirizzo pubblico.
Installazione non presidiata
Rispondi a ogni domanda con le variabili e aggiungi ASSUME_YES=1:
curl -fsSL https://get.harness-maxxing.com | ACCESS=domain DOMAIN=ui.example.com ASSUME_YES=1 bash
| Variabile | Predefinito | Significato |
|---|---|---|
REPO, BRANCH |
makushingu/harness-maxxing, stable |
il repository git e il branch da cui arrivano il codice e gli aggiornamenti (stable = versioni pubblicate, main = lavori in corso) |
GH_TOKEN |
– | un token di sola lettura, solo per un fork o mirror privato (REPO=owner/name) |
LICENSE |
– | facoltativo: una chiave Enterprise, registrata alla fine (come Impostazioni → Licenza, vedi Licenza) |
LICENSE_API |
https://api.harness-maxxing.com |
server delle licenze (verifica una chiave Enterprise) |
INSTALL_DIR |
/opt/claude-maxxing |
codice + ambiente Python |
WORKSPACE |
/root/maxxing |
il tuo workspace |
STATE_DIR |
/var/lib/claude-maxxing |
configurazione e stato |
PORT |
8787 |
porta HTTP |
ACCESS |
chiesto (local se non presidiata) |
domain, tailscale oppure local |
DOMAIN |
– | obbligatorio per domain |
TIMEZONE |
fuso del sistema | nome IANA, ad es. Europe/Paris. Di solito si sceglie invece nell'onboarding web. Su un server nuovo il fuso del sistema viene cambiato (timedatectl set-timezone) in modo che i job pianificati partano agli orari mostrati nell'interfaccia |
SYSTEM_CLOCK |
auto |
follow = il fuso del sistema segue il tuo (predefinito su un server nuovo), keep = non toccarlo mai (predefinito su un server già in uso; i job girano comunque ai tuoi orari) |
CLAUDE_DIR |
~/.claude (~/.claude-harness quando Claude Code è già in uso e mantieni la risposta predefinita) |
cartella di Claude Code usata da Harness Maxxing; impostala per saltare la domanda. Un'altra cartella (ad es. /root/.claude-harness) la tiene separata da un Claude Code che usi già su questo server: skill, CLAUDE.md globale, conversazioni e accesso propri; la tua ~/.claude non viene toccata. Porta le skill una per una quando ti servono |
RESTORE_FROM, RESTORE_TOKEN |
– | ripristina un backup di memoria esistente (vedi sotto) |
CLAUDE_TOKEN / ANTHROPIC_API_KEY |
– | facoltativo: credenziali Claude memorizzate subito |
FIREWALL |
auto |
auto = ufw solo su un server senza altro di esposto (un ufw attivo viene mantenuto, con regole aggiunte), 1 = sempre, 0 = mai (aggiornamenti di sicurezza e fail2ban vengono comunque configurati) |
SSH_HARDEN |
auto |
auto = disattiva gli accessi SSH con password solo quando è dimostrato che questa sessione usa una chiave, 1 = anche quando è installata una chiave ma la sessione non può essere verificata (console, terminale web), 0 = non toccare mai SSH |
VOICE |
local (off sotto i 3 GB di RAM) |
messaggi vocali: local (Whisper sul server, modello scaricato in background), groq, openai oppure off - vedi Messaggi vocali. VOICE=local su un server più piccolo viene chiesto, rifiutato se non presidiata |
TOOLS |
background |
background = Node.js, Chromium, Remotion, Scrapling e il modello vocale vengono installati quando il servizio è in esecuzione, foreground = aspetta che finiscano, 0 = salta (poi maxxing deps update) |
SWAP |
auto |
auto = un /swapfile da 2 GB sotto i 4 GB di RAM quando non c'è swap, solo su un server nuovo (non nei container, non su un server già in uso né in una riesecuzione), 1 = lo stesso su qualsiasi server, 0 = mai |
SOURCE_DIR |
– | installa questa copia locale del codice (vedi "Installare da una copia locale") |
ASSUME_YES |
0 |
1 = non chiedere mai, usa i valori predefiniti |
Ripristino su un nuovo server
Stai passando a un nuovo server? Installa con il tuo repository di backup (con una chiave Enterprise, liberala prima sul vecchio server: Impostazioni → Licenza → Rimuovi la chiave, vedi Licenza):
curl -fsSL https://get.harness-maxxing.com | RESTORE_FROM=owner/memory-backup RESTORE_TOKEN=<token> bash
L'installer esegue maxxing backup restore --from owner/memory-backup dopo aver creato il
workspace. Vedi Backup.
Rieseguire, aggiornare, disinstallare
- Rieseguire l'installer in qualsiasi momento: ogni passaggio mantiene ciò che esiste (utile per cambiare la modalità di accesso o riparare un'installazione).
- Aggiornare:
maxxing update(oppure... | bash -s -- --update). Scarica la nuova versione, riapplica le tue personalizzazioni sopra, sincronizza le dipendenze, aggiorna skill e template (mai i tuoi file), riavvia il servizio, verifica che risponda (altrimenti torna indietro) e mostra cosa è cambiato. Disponibile anche in Impostazioni -> Sistema e nel topicsystem/harness(system/updatesui server più vecchi). - Disinstallare:
maxxing uninstall(oppure... | bash -s -- --uninstall) rimuove il servizio, il sito Caddy, il blocco del crontab, le skill del prodotto e il comandomaxxing. Aggiungi--purgeper eliminare anche il codice, la cartella di stato e ogni componente esterno aggiunto dall'installer (deps.toml: uv, Node.js, gli strumenti, Claude Code e Caddy quando li ha installati l'installer, il file di swap che ha creato),--purge-workspaceper eliminare anche il workspace (irreversibile).
Verificare l'installazione
maxxing doctor
Ogni riga è ✔ (a posto), ! (avviso) oppure ✘ (problema), con un suggerimento per risolvere. Vedi
Risoluzione dei problemi.