--- date: 2026-04-17 type: decision tags: [decision] --- # Обновление и расширение ресурсов code-server (LXC 132) **Дата:** 2026-04-17 **Статус:** Реализовано ## Симптомы (до работ) - OpenClaw (Clawdbot AI через code-server) часто сбоит - Load average на LXC 132: **4.3** при 2 vCPU (перегрузка 2×) - RAM: 1 GB из 8 GB (проблема не в памяти) - Claude Code extension: 2.1.111 (актуальная 2.1.112) ## Найденные проблемы ### 1. Нехватка CPU - 2 vCPU, load avg 4.3 — процессор узкое место - top показывает 44% busy (us+sy), но load 4.3 → много процессов ждут ### 2. Сбои OmniRoute (journalctl -u omniroute) - `[HealthCheck] ✗ kiro/... refresh failed` — Kiro OAuth токен не рефрешится - `[Claude Usage] OAuth endpoint returned 429` — rate-limit от Anthropic - `[HealthCheck] Error: [ProxyDispatcher] Context proxy host is required` — сломан конфиг proxy ### 3. Устаревший Claude Code - На code-server 2.1.111, локально обновили до 2.1.112 ## План работ 1. [x] apt update + upgrade в LXC 132 2. [x] Обновить Claude Code CLI (npm global) 3. [x] Остановить LXC 132, увеличить CPU 2→4, запустить 4. [x] ~~Отключить SOCKS5~~ (было не причиной — оставил false, но баг был в другом) 5. [x] **Обновить OmniRoute 3.6.5 → 3.6.7** — починило `[ProxyDispatcher] Context proxy host is required` 6. [x] Обновить proxmox-inventory.md 7. [x] Проверить что OpenClaw стабилен — OmniRoute 3.6.7 работает без ошибок, токены рефрешатся ## Выполненные действия ### Обновления - Claude Code CLI: 2.1.107 → 2.1.112 (`npm install -g @anthropic-ai/claude-code`) - Локально (MacBook): 2.1.109 → 2.1.112 - apt upgrade: binutils, netplan.io, python3.12-dev, libpam-systemd, polkitd и др. ### Проблемы и их решения **apt "висел" 14 минут** — debconf prompt на обновлении пакета. Убил процесс, запустил с `DEBIAN_FRONTEND=noninteractive` и `--force-confold/--force-confdef`. **apt не качал пакеты** — IPv6 от archive.ubuntu.com недоступен (`No route to host` на всех IPv6 адресах). Решение: `-o Acquire::ForceIPv4=true`. Системная проблема LXC-сети — IPv6 не работает наружу. **OmniRoute ошибка `[ProxyDispatcher] Context proxy host is required`** — **настоящая причина**: баг в версии 3.6.5. `resolveProxyForConnection` возвращал wrapper объект `{ proxy: null, level, levelId }`, который без `host` передавался в `proxyConfigToUrl` и падал с этой ошибкой. В 3.6.7 исправлено. Сначала отключил SOCKS5 в `/root/OmniRoute/.env` (думал что это причина — не помогло, оставил `false` как и было в значении дефолта): ``` ENABLE_SOCKS5_PROXY=false NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false ``` Настоящее решение — обновление пакета: ```bash cd /root/.npm/_npx/cb5891f90ae65d14 systemctl stop omniroute npm install omniroute@latest systemctl start omniroute ``` После обновления `[ProxyDispatcher]` ошибки пропали, токены рефрешатся штатно (`✓ gemini-cli/...@...com refreshed`). **Важно:** в `/root/.npm/_npx/cb5891f90ae65d14/package.json` стоит `"omniroute": "^3.6.5"` — автоматически не обновится. Для будущих апдейтов — тот же `npm install omniroute@latest`. ### Ресурсы LXC 132 — CPU 2 → 4 (но это было не нужно) - CPU: 2 vCPU → 4 vCPU (`pct set 132 --cores 4`) - RAM: 8 GB (не менял) **Ошибочное допущение:** сначала думал что load avg 4.3 внутри LXC — нагрузка на LXC. На самом деле `/proc/loadavg` в LXC возвращает load хоста Proxmox. Проверено: на хосте load 4.7, 8 cores, грузят WinServer2025 (VM 111, 247% CPU) и Nextcloud-AIO (VM 250). Сам LXC 132 почти idle (все процессы в top имеют %CPU=0.0). Увеличение до 4 cores оставил — не вредит, запас для пиков. Но настоящая причина сбоев OpenClaw — баг в OmniRoute 3.6.5, не CPU. ### Полезные команды для будущего ```bash # Рестарт LXC со сменой cores pct shutdown 132 --timeout 30 pct set 132 --cores 4 pct start 132 # apt в LXC с проблемной IPv6 DEBIAN_FRONTEND=noninteractive apt-get -o Acquire::ForceIPv4=true \ -o Dpkg::Options::=--force-confold -o Dpkg::Options::=--force-confdef upgrade -y # Проверка сервисов code-server pct exec 132 -- systemctl is-active omniroute cliproxy code-server@root netbird ``` ## Что ещё стоит сделать потом - **IPv6 в LXC 132** — не работает наружу (`No route to host`). Не критично пока IPv4 работает, но стоит разобраться. - **Kiro OAuth токен** — после рестарта ждём интервал 60 минут (по логам). Если снова `✗ kiro/... refresh failed` — рефреш через UI OmniRoute (http://10.0.0.179:20128). - **Claude Usage 429** — rate-limit от Anthropic. Нормально при частых запросах, не наша проблема. - **Откатить CPU обратно 2 vCPU** — можно сделать позже, не срочно. Текущих 4 в запасе. ## Главный вывод (для будущего) Когда OmniRoute сбоит на code-server — **первым делом проверить его версию**: ```bash cat /root/.npm/_npx/cb5891f90ae65d14/node_modules/omniroute/package.json | grep version npm view omniroute version ``` Если расходятся — обновить. `^3.6.5` в package.json не обновляется автоматически. Load average внутри LXC **не отражает** нагрузку контейнера — это load хоста Proxmox. Для нагрузки LXC смотреть `top`/`ps` на самом процессе, или `pct cpusets`/метрики Proxmox на хосте.