🩺Solución de problemas
El punto al final de la barra lateral
Se vuelve naranja o rojo cuando algo requiere tu atención (disco, memoria, una tarea programada que ha fallado, un servicio detenido, Claude sin conexión, una copia de seguridad antigua). Haz clic en él para ver la lista. Visto en un problema hace que deje de contar en el punto (sigue en la lista, en gris): vuelve solo cuando cambia (por ejemplo, otra tarea que falla) o pasadas 24 horas si sigue ahí. La flecha junto a un problema visto lo vuelve a contar. Las marcas de visto se guardan en el servidor, así que se mantienen en todos tus dispositivos.
Empieza por el doctor
maxxing doctor # human readable, exit code 1 if something fails
maxxing doctor --json # for scripts and Claude
maxxing doctor --live # also makes a real one-line Claude call
O abre una sesión y di "algo va mal, usa la skill maxxing-doctor": Claude lee las comprobaciones y los registros, te lo explica y arregla lo que se pueda arreglar sin riesgo.
| Comprobación | Significado |
|---|---|
| python, uv | entorno de ejecución y herramientas |
| claude_cli, claude_auth | Claude Code instalado y con la sesión iniciada |
| claude_version | Claude Code por detrás de su última versión (informativo; las versiones incluyen correcciones de seguridad). Con Settings -> Claude -> Update Claude Code automatically (desactivado por defecto) el servidor instala por sí solo la versión estable cuando no se ha ejecutado nada durante 10 min; la pista indica por qué no lo hizo. Solución: claude update |
| skill_listing | cuántas skills ve Claude en cada prompt y su tamaño; al superar el presupuesto de Claude Code, las menos usadas pierden su descripción (informativo) - consulta Skills |
| deps | con --deps: paquetes instalados (servidor, web, herramientas de vídeo) con una vulnerabilidad conocida, según osv.dev |
| setup | primer inicio de sesión hecho |
| service, http | claude-maxxing en marcha y respondiendo |
| security | cortafuegos (ufw), fail2ban y actualizaciones de seguridad automáticas activos - solo aviso; solución: bash /opt/claude-maxxing/install.sh --secure |
| state_files | se encontró un config.json / secrets.json dañado y se reemplazó; su copia (*.damaged-<date>) se conserva a su lado: compárala, restaura lo que falte (claves: Settings -> Keys) y borra la copia |
| tools | Node.js, Remotion, Scrapling y el Chromium compartido listos (vídeos, PDF, scraping) - solo aviso; solución: maxxing deps update |
| deps_files | componentes externos (maxxing deps list): ✘ cuando un binario ha cambiado desde que se instaló o un archivo no pertenece a root (otro usuario podría reemplazarlo), ! cuando falta alguno o no está en la versión de esta release; solución: maxxing deps update |
| bind | no escucha en una dirección pública |
| public_url, caddy | tu URL es accesible, configuración de Caddy válida |
| caddy_site | el sitio de Caddy escrito por un instalador antiguo: X-Frame-Options DENY (las vistas previas de PDF en Files se quedan en blanco) o un límite de cuerpo inferior a las subidas de 2 GB - el comando de solución edita /etc/caddy/claude-maxxing.caddy y recarga Caddy |
| crontab | todas las tareas activadas están presentes en el crontab |
| timezone | zona horaria configurada = zona horaria del sistema (cron usa la del sistema), o reloj del servidor conservado (system_clock = keep) |
| telegram, backup | configurado, vinculado, copia de seguridad reciente |
| disk, workspace | espacio libre, espacio de trabajo con permiso de escritura |
| memory | RAM y swap; un servidor con menos de 4 GB sin swap recibe un aviso (cada turno de Claude en ejecución usa 200-300 MB, y la voz local, los navegadores y los renders más) y los comandos para añadir un archivo swap de 2 GB |
| skills, web | skills del producto y compilación de la interfaz web presentes |
| git | cambios locales, actualizaciones disponibles |
Registros
journalctl -u claude-maxxing -n 100 --no-pager # server
journalctl -u caddy -n 50 --no-pager # HTTPS proxy
systemctl list-units 'maxxing-*' # running Claude turns
journalctl -u maxxing-<id8> --no-pager # one turn
maxxing cron list # jobs and their last result
Los registros también se pueden ver en Settings -> System.
Problemas habituales
Un comando terminó con "Killed" (código de salida 137), o un render pesado se detuvo.
Se quedó sin memoria. Cada sesión y cada tarea programada puede usar como máximo el 75 % de la RAM del servidor: pasado ese límite, el kernel detiene solo el proceso más grande de esa sesión, y Claude te lo cuenta y continúa. La interfaz y las demás sesiones normalmente siguen funcionando (el límite es por sesión: varias sesiones pesadas a la vez aún pueden llenar la RAM). Pídele a Claude una forma más ligera (una resolución menor, un render por partes, menos entradas a la vez). Para cambiar el límite, define unit_memory_max en /var/lib/claude-maxxing/config.json ("4G", "90%", o "" para ninguno): se aplica a los siguientes turnos y tareas. Todas las tareas programadas que se ejecutan a la vez comparten además jobs_memory_max (por defecto 75 %, aplicado por maxxing init). journalctl -k | grep -i oom muestra qué se detuvo. Si se detuvo todo el turno, la sesión dice "The turn was stopped: the server ran out of memory".
Algo que iniciaste en el servidor (un sitio de desarrollo, una API en el puerto 3000…) no es accesible.
El cortafuegos solo deja entrar SSH, 80/443 y Tailscale. Abre el puerto a propósito (ufw allow 3000/tcp) o, mejor, sírvelo detrás de Caddy en tu dominio.
El instalador se detiene en "Claude Code".
Muestra el final de la salida del instalador de Anthropic y la causa probable encima del error (registro completo: /tmp/maxxing-claude-install.log). Causas habituales: downloads.claude.ai inaccesible desde el servidor (DNS, el cortafuegos de salida del proveedor, una caída temporal - ya reintentó una vez), un país donde Claude no está disponible (https://www.anthropic.com/supported-countries), un disco lleno o una arquitectura distinta de x86_64 / arm64. Corrígelo y vuelve a ejecutar curl -fsSL https://get.harness-maxxing.com | bash: los pasos terminados se omiten. (Ejecutarlo después de sudo -i no es problema: Claude Code se instala para root.)
El instalador dice "could not record the Enterprise key".
Solo con LICENSE=HM-… (no hace falta ninguna clave: déjala fuera). La instalación en sí está hecha; ejecuta maxxing license activate para ver por qué: clave desconocida (compruébala en el correo de tu licencia), clave revocada, o ya activa en otro servidor (una clave = un servidor): ejecuta maxxing license release en el que ya no uses.
maxxing update dice que el servidor "still runs the code of a signed archive".
Un servidor instalado con una clave antes de 2.0.0a87 pasa solo al repositorio git público; el mensaje indica qué lo retiene (sin red, ediciones de web/ en la carpeta del código, una actualización a medio terminar). Corrígelo y vuelve a ejecutar maxxing update.
La página no carga.
systemctl status claude-maxxing. Si está fallando, lee el journal. Tras un git pull manual, ejecuta maxxing update en su lugar (sincroniza las dependencias). systemctl restart claude-maxxing es seguro: los turnos de Claude en ejecución continúan en sus propias unidades.
Error de certificado / dominio inaccesible.
El registro DNS del dominio debe apuntar al servidor (getent ahosts ui.example.com), y los puertos 80 y 443 deben estar abiertos (ufw status, además del cortafuegos de tu proveedor de alojamiento). Caddy obtiene el certificado en la primera petición: journalctl -u caddy muestra por qué falló. Valida la configuración: caddy validate --config /etc/caddy/Caddyfile --adapter caddyfile.
Contraseña perdida. En el servidor: maxxing password. O empieza de nuevo con un nuevo enlace de configuración: maxxing setup-link --reset.
"Too many attempts". Espera 15 minutos o reinicia el servicio.
Enlace de configuración perdido. maxxing setup-link.
Todas las sesiones fallan a la vez. Claude no ha iniciado sesión o el token ha caducado: Settings -> Claude -> Test, o maxxing doctor --live. Renuévalo con claude setup-token.
Una sesión se queda en "running". Pulsa Stop. Si persiste: systemctl list-units 'maxxing-*' y lee el journal de esa unidad.
Una nota dice que la conversación no se pudo reanudar. Faltaba la transcripción de Claude; se inició automáticamente un contexto nuevo. El historial sigue visible.
Una tarea no se ejecutó. maxxing cron list (¿activada? ¿último resultado?), crontab -l (¿está su línea en el bloque gestionado?), maxxing cron sync, systemctl status cron. Ejecútala a mano: maxxing cron run <id>.
Una tarea se ejecuta a la hora equivocada. El demonio cron usa la zona horaria del sistema, la interfaz usa la de Settings -> General. maxxing doctor muestra ambas. En un servidor compartido, conserva el reloj del servidor y deja que las tareas sigan tu zona: maxxing init --system-clock keep. Si no, alinéalas: timedatectl set-timezone <Zone> && systemctl restart cron, y maxxing init --timezone <Zone> && systemctl restart claude-maxxing.
Telegram está en silencio. maxxing telegram status muestra el último error; maxxing telegram test. Consulta Telegram.
La copia de seguridad falló. maxxing backup status. Token caducado, repositorio hecho público, o un secreto encontrado en un archivo (el mensaje nombra el archivo). Consulta Backup.
Disco lleno. Revisa ~/.claude/projects (transcripciones), los adjuntos en los temas y el journal (journalctl --vacuum-size=200M). Borra con cuidado: las transcripciones son necesarias para reanudar sesiones.
La interfaz se ve desactualizada tras una actualización. Recarga la página; el HTML de la app nunca se guarda en caché, basta con recargar.
La URL de Tailscale deja de funcionar tras un reinicio. Si la IP de Tailscale cambió, vuelve a ejecutar el instalador con ACCESS=tailscale (o maxxing init --bind <ip> --public-url http://<ip>:8787 y reinicia).
¿Sigues atascado?
Recoge maxxing doctor --json y las últimas 200 líneas de journalctl -u claude-maxxing (comprueba que no contengan secretos) y contacta con el soporte.