Harness MaxxingDocumentação
📚 Todas as páginas

🚀 Primeiros passos · 11 min de leitura

🚀Instalação

Requisitos

  • Um servidor com Ubuntu 24.04 (testado: Ubuntu 22.04, 24.04 e 26.04, Debian 12; outros sistemas baseados em apt normalmente funcionam) com systemd, em x86_64 ou arm64. Recomendamos 2 vCPU, 4 GB de RAM e 40 GB de disco (as ferramentas para vídeos e scraping ocupam ~1,5 GB). Com menos de 4 GB de RAM e sem swap, o instalador adiciona um arquivo de swap de 2 GB; com menos de 3 GB, a transcrição de voz local fica desativada, a menos que você peça para ativá-la.
  • Acesso root (sudo -i).
  • Uma assinatura do Claude (Pro/Max) ou uma chave de API da Anthropic.
  • Para acesso por HTTPS: um nome de domínio cujo registro DNS A/AAAA aponte para o servidor, e as portas 80/443 abertas. Como alternativa, Tailscale ou um túnel SSH.

Recomendamos um servidor dedicado ao Harness Maxxing: por padrão, o Claude roda com todas as permissões (veja Segurança). Um servidor que já executa outras coisas também funciona - veja Instalando em um servidor já em uso.

Instalar

Como root no servidor (use sudo -i antes, se você estiver logado com outro usuário):

curl -fsSL https://get.harness-maxxing.com | bash

Ele faz três perguntas (modo de acesso, domínio, restaurar um backup) e depois clona o repositório git público (github.com/makushingu/harness-maxxing, branch stable = as versões publicadas) - sem chave, sem conta. As atualizações passam a vir dessa branch (maxxing update). Instalação sem interação: curl -fsSL https://get.harness-maxxing.com | ACCESS=domain DOMAIN=ui.example.com ASSUME_YES=1 bash. O Harness Maxxing é gratuito sob uma licença fair source: veja Licença.

Nenhuma chave de licença é solicitada. Uma empresa que precise de uma chave Enterprise a informa após a instalação, em Configurações → Licença (ou na etapa de onboarding Sobre você); veja Licença.

Depois das perguntas, o instalador roda sem supervisão, com um painel de progresso ao vivo. As mensagens de voz são ativadas com o mecanismo local (em servidores com pelo menos 3 GB de RAM) e o fuso horário é escolhido no onboarding web:

  1. verifica o servidor (root, apt, systemd, arquitetura) e se ele já está em uso (veja abaixo);
  2. instala todos os pacotes de sistema de que precisa de uma só vez (git, curl, python3, gnupg, openssh-client, cron, ffmpeg, jq, ripgrep, ImageMagick, as bibliotecas do navegador, unattended-upgrades, fail2ban...), ativando o componente universe do Ubuntu se a imagem veio sem ele; em um servidor pequeno sem swap, adiciona um arquivo de swap de 2 GB;
  3. clona o código em /opt/claude-maxxing; suas personalizações ficam por cima dele, veja Personalização;
  4. instala o uv (ferramenta Python) em /usr/local/bin, o Python do servidor em /var/lib/claude-maxxing/tools/python e o Claude Code CLI: cada um com uma versão fixa cujo checksum está na lista de componentes da versão, deps.toml - nada que seja baixado é executado antes de ser verificado (veja Segurança, "Downloads");
  5. cria o ambiente Python e o comando maxxing, e então executa maxxing init: configuração, workspace, skills, jobs padrão;
  6. opcionalmente, restaura sua memória a partir de um backup;
  7. configura o acesso (Caddy para um domínio, Tailscale ou somente local);
  8. protege o servidor: atualizações de segurança automáticas, login SSH somente por chave (apenas quando isso for comprovadamente seguro, veja Segurança), fail2ban para o SSH e um firewall (ufw) que libera apenas SSH, 80/443 (domínio) ou Tailscale - veja Segurança (em um servidor já em uso, o firewall é tratado com cuidado: veja abaixo);
  9. instala e inicia o serviço claude-maxxing e verifica se ele responde;
  10. exibe um link de configuração de uso único (válido por uma hora);
  11. enquanto isso, em segundo plano, instala as ferramentas que o Claude usa todos os dias: Node.js 22, Remotion (vídeos de motion design), Scrapling (web scraping) e um Chromium compartilhado entre elas e a impressão de PDF, além do modelo de voz - veja Vídeos, PDFs e imagens. maxxing deps list mostra onde elas estão.

Cerca de um minuto até o link de configuração em um servidor pequeno, e mais um ou dois minutos para as ferramentas. Uma nova execução só refaz o que mudou (cerca de 10 segundos). Para executar apenas uma parte em um servidor existente: bash /opt/claude-maxxing/install.sh --tools (= maxxing deps update) ou --secure. Os nomes técnicos mantêm a grafia original: o serviço é claude-maxxing, o código fica em /opt/claude-maxxing, o estado em /var/lib/claude-maxxing.

Instalar a partir de uma cópia local

Sem nenhum download: descompacte um arquivo do Harness Maxxing (com o web/dist já compilado) no servidor e execute o instalador dele, bash /path/to/harness-maxxing/install.sh (ou SOURCE_DIR=/path/to/harness-maxxing bash install.sh). O código é copiado para /opt/claude-maxxing; uma instalação assim não tem fonte de atualização, então "Verificar atualizações" fica desativado e maxxing update diz "updates unavailable". Para atualizá-la, descompacte a cópia mais recente e execute o instalador dela novamente.

Componentes externos

Tudo o que o instalador adiciona além dos pacotes de sistema está listado, com versão e checksum, em server/maxxing/deps.toml e é gerenciado com 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)

Em uma instalação feita antes da 2.0.0-alpha.70, os dois jobs semanais são criados desativados (página Crons: ative-os se quiser), e o maxxing update mantém onde estão um Python de servidor que funciona e um uv que ele não instalou (maxxing deps update python / uv os move). O Node.js nunca é vinculado em /usr/local/bin quando o servidor já tem seu próprio node: o Harness Maxxing usa a cópia dele, e seus programas mantêm a deles.

Cada maxxing update leva esses componentes para as versões da nova release (instaladas ao lado das antigas, e a troca só acontece depois que funcionam). O Claude Code continua se atualizando sozinho (Configurações -> Claude). Os pacotes de sistema (Caddy, ffmpeg, git...) recebem suas atualizações de segurança pelo unattended-upgrades.

Abra o link: o onboarding cuida do resto.

Instalando em um servidor já em uso

Antes de mudar qualquer coisa, o instalador examina o servidor e exibe uma verificação do servidor: outros serviços acessíveis de fora, um servidor web nas portas 80/443, um firewall ativo, Docker, outros jobs agendados, um Node.js mais antigo, uma configuração existente do Claude Code, outras pontes do Telegram. Para ver apenas esse relatório (nada é alterado):

curl -fsSL https://get.harness-maxxing.com | bash -s -- --check

Quando o servidor já está em uso, o instalador pede confirmação e depois:

O que ele encontra O que ele faz
outros serviços acessíveis de fora, ou Docker não ativa o firewall (isso poderia cortar o acesso a eles). Para forçar: FIREWALL=1 bash /opt/claude-maxxing/install.sh --secure
um firewall ufw ativo mantém suas regras e apenas adiciona SSH (+ 80/443 para um domínio, + Tailscale)
nginx, Apache ou outro servidor web em 80/443 não instala o Caddy; com um domínio, salva em /var/lib/claude-maxxing/reverse-proxy.conf o bloco de proxy reverso para você adicionar ao seu servidor web
um Caddy que você já usa adiciona seu próprio site com uma linha import; seus sites ficam como estão
outros jobs agendados nunca altera o relógio do servidor: seus jobs mantêm os horários deles, e os jobs do Harness Maxxing rodam nos horários que você escolher no seu próprio fuso
um Node.js próprio mantém esse Node.js; o Harness Maxxing recebe o Node.js 22 dele em /var/lib/claude-maxxing/tools/nodejs, usado apenas pelas sessões e ferramentas dele
porta 8787 ocupada usa a próxima porta livre
Claude Code já autenticado, com skills ou um ~/.claude/CLAUDE.md mantém tudo e pergunta: dar ao Harness Maxxing a própria pasta do Claude Code (~/.claude-harness, o padrão - seu ~/.claude não é tocado, você faz login de novo na configuração web e traz as skills quando precisar) ou compartilhar o ~/.claude (as instruções globais e as skills dele passam a valer também para as sessões do Harness Maxxing; uma skill com o mesmo nome de uma skill do produto é movida antes para a lixeira). Sem terminal: pasta própria. Executar o instalador de novo mantém a escolha feita na primeira vez
outra ponte do Telegram ou outro agente avisa você: dê ao Harness Maxxing um bot novo (um token de bot só pode ser lido por um programa)
login SSH por senha ativado desativado somente quando está comprovado que a sessão que executa o instalador usa uma chave (pergunta antes quando você responde às perguntas); caso contrário, fica ativado, com um aviso
seu crontab, jail SSH do fail2ban, configurações de atualização automática mantidos (o Harness Maxxing só edita o próprio bloco do crontab)

maxxing uninstall lista o que o instalador alterou no servidor (firewall ativado, SSH somente por chave, fuso horário) e como desfazer.

Modos de acesso

Modo URL Como
domain (recomendado) https://ui.example.com O Caddy é instalado a partir do repositório oficial dele, obtém um certificado Let's Encrypt na primeira visita e encaminha para 127.0.0.1:8787. Arquivo do site: /etc/caddy/claude-maxxing.caddy.
tailscale http://100.x.y.z:8787 O servidor escuta apenas no IP do Tailscale: acessível a partir dos seus dispositivos Tailscale.
local http://127.0.0.1:8787 Escuta apenas no localhost. A partir do seu computador: ssh -N -L 8787:127.0.0.1:8787 root@<server> e depois abra a URL.

O servidor nunca escuta em 0.0.0.0 nem em um endereço público.

Instalação sem interação

Responda a todas as perguntas com variáveis e adicione ASSUME_YES=1:

curl -fsSL https://get.harness-maxxing.com | ACCESS=domain DOMAIN=ui.example.com ASSUME_YES=1 bash
Variável Padrão Significado
REPO, BRANCH makushingu/harness-maxxing, stable o repositório git e a branch de onde vêm o código e as atualizações (stable = versões publicadas, main = trabalho em andamento)
GH_TOKEN – um token de leitura, somente para um fork ou espelho privado (REPO=owner/name)
LICENSE – opcional: uma chave Enterprise, registrada no final (equivale a Configurações → Licença, veja Licença)
LICENSE_API https://api.harness-maxxing.com servidor de licenças (verifica uma chave Enterprise)
INSTALL_DIR /opt/claude-maxxing código + ambiente Python
WORKSPACE /root/maxxing seu workspace
STATE_DIR /var/lib/claude-maxxing configuração e estado
PORT 8787 porta HTTP
ACCESS perguntado (local sem interação) domain, tailscale ou local
DOMAIN – obrigatório para domain
TIMEZONE fuso do sistema nome IANA, por exemplo Europe/Paris. Normalmente é escolhido no onboarding web. Em um servidor novo, o fuso do sistema é alterado (timedatectl set-timezone) para que os jobs agendados disparem nos horários exibidos na interface
SYSTEM_CLOCK auto follow = o fuso do sistema acompanha o seu (padrão em um servidor novo), keep = nunca tocar nele (padrão em um servidor já em uso; os jobs ainda rodam nos seus horários)
CLAUDE_DIR ~/.claude (~/.claude-harness quando o Claude Code já é usado e você mantém a resposta padrão) pasta do Claude Code usada pelo Harness Maxxing; defina-a para pular a pergunta. Outra pasta (por exemplo /root/.claude-harness) a mantém separada de um Claude Code que você já usa neste servidor: com skills, CLAUDE.md global, conversas e login próprios; seu ~/.claude não é tocado. Traga as skills uma a uma quando precisar
RESTORE_FROM, RESTORE_TOKEN – restaurar um backup de memória existente (veja abaixo)
CLAUDE_TOKEN / ANTHROPIC_API_KEY – opcional: credenciais do Claude armazenadas imediatamente
FIREWALL auto auto = ufw somente em um servidor sem mais nada exposto (um ufw ativo é mantido, com regras adicionadas), 1 = sempre, 0 = nunca (as atualizações de segurança e o fail2ban continuam sendo configurados)
SSH_HARDEN auto auto = desativar o login SSH por senha somente quando está comprovado que esta sessão usa uma chave, 1 = também quando há uma chave instalada mas a sessão não pode ser verificada (console, terminal web), 0 = nunca mexer no SSH
VOICE local (off com menos de 3 GB de RAM) mensagens de voz: local (Whisper no servidor, modelo baixado em segundo plano), groq, openai ou off - veja Mensagens de voz. VOICE=local em um servidor menor é perguntado e, sem interação, recusado
TOOLS background background = Node.js, Chromium, Remotion, Scrapling e o modelo de voz são instalados depois que o serviço está rodando, foreground = esperar por eles, 0 = pular (maxxing deps update depois)
SWAP auto auto = um /swapfile de 2 GB com menos de 4 GB de RAM quando não há swap, apenas em um servidor novo (não em contêineres, não em um servidor já em uso nem em uma nova execução), 1 = o mesmo em qualquer servidor, 0 = nunca
SOURCE_DIR – instalar esta cópia local do código (veja "Instalar a partir de uma cópia local")
ASSUME_YES 0 1 = nunca perguntar, usar os padrões

Restaurar em um novo servidor

Mudando para um novo servidor? Instale com o seu repositório de backup (com uma chave Enterprise, libere-a primeiro no servidor antigo: Configurações → Licença → Remover a chave, veja Licença):

curl -fsSL https://get.harness-maxxing.com | RESTORE_FROM=owner/memory-backup RESTORE_TOKEN=<token> bash

O instalador executa maxxing backup restore --from owner/memory-backup depois de criar o workspace. Veja Backup.

Executar de novo, atualizar, desinstalar

  • Executar de novo o instalador a qualquer momento: cada etapa mantém o que já existe (útil para mudar o modo de acesso ou reparar uma instalação).
  • Atualizar: maxxing update (ou ... | bash -s -- --update). Ele baixa a nova versão, reaplica suas personalizações por cima, sincroniza as dependências, atualiza skills e modelos (nunca os seus arquivos), reinicia o serviço, verifica se ele responde (caso contrário, faz rollback) e exibe o que mudou. Também disponível em Configurações -> Sistema e no tópico system/harness (system/update em servidores mais antigos).
  • Desinstalar: maxxing uninstall (ou ... | bash -s -- --uninstall) remove o serviço, o site do Caddy, o bloco do crontab, as skills do produto e o comando maxxing. Adicione --purge para também apagar o código, o diretório de estado e todos os componentes externos que o instalador adicionou (deps.toml: uv, Node.js, as ferramentas, o Claude Code e o Caddy quando o instalador os instalou, o arquivo de swap que ele criou), e --purge-workspace para apagar também o workspace (irreversível).

Verificar a instalação

maxxing doctor

Cada linha é ✔ (tudo certo), ! (aviso) ou ✘ (problema), com uma dica de correção. Veja Solução de problemas.

💡 Travou? Abra uma sessão no topic system › help e pergunte com suas palavras: o Claude lê esta documentação no seu servidor e responde.✏️ Melhorar esta página