6.6 KiB
Обновление и расширение ресурсов 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
План работ
- apt update + upgrade в LXC 132
- Обновить Claude Code CLI (npm global)
- Остановить LXC 132, увеличить CPU 2→4, запустить
Отключить SOCKS5(было не причиной — оставил false, но баг был в другом)- Обновить OmniRoute 3.6.5 → 3.6.7 — починило
[ProxyDispatcher] Context proxy host is required - Обновить proxmox-inventory.md
- Проверить что 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
Настоящее решение — обновление пакета:
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.
Полезные команды для будущего
# Рестарт 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 — первым делом проверить его версию:
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 на хосте.