Files
knowledge-base/decisions/2026-04-17-code-server-upgrade.md

116 lines
6.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 на хосте.