obsidian auto-sync 2026-04-17 21:38:50
This commit is contained in:
109
decisions/2026-04-17-code-server-upgrade.md
Normal file
109
decisions/2026-04-17-code-server-upgrade.md
Normal file
@@ -0,0 +1,109 @@
|
||||
# Обновление и расширение ресурсов 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 на хосте.
|
||||
Reference in New Issue
Block a user