🚀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:
- verifica o servidor (root, apt, systemd, arquitetura) e se ele já está em uso (veja abaixo);
- 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
universedo Ubuntu se a imagem veio sem ele; em um servidor pequeno sem swap, adiciona um arquivo de swap de 2 GB; - clona o código em
/opt/claude-maxxing; suas personalizações ficam por cima dele, veja Personalização; - instala o uv (ferramenta Python) em
/usr/local/bin, o Python do servidor em/var/lib/claude-maxxing/tools/pythone 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"); - cria o ambiente Python e o comando
maxxing, e então executamaxxing init: configuração, workspace, skills, jobs padrão; - opcionalmente, restaura sua memória a partir de um backup;
- configura o acesso (Caddy para um domínio, Tailscale ou somente local);
- 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);
- instala e inicia o serviço
claude-maxxinge verifica se ele responde; - exibe um link de configuração de uso único (válido por uma hora);
- 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 listmostra 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ópicosystem/harness(system/updateem 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 comandomaxxing. Adicione--purgepara 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-workspacepara 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.