From 42489c82cd96e5a113fce2800506740e1fd2d0ff Mon Sep 17 00:00:00 2001 From: dttb Date: Fri, 17 Apr 2026 21:38:50 +0300 Subject: [PATCH] obsidian auto-sync 2026-04-17 21:38:50 --- decisions/2026-04-17-code-server-upgrade.md | 109 ++++++ projects/dttb/openclaw.md | 380 ++++++++++++++++++++ projects/dttb/proxmox-inventory.md | 24 +- 3 files changed, 508 insertions(+), 5 deletions(-) create mode 100644 decisions/2026-04-17-code-server-upgrade.md create mode 100644 projects/dttb/openclaw.md diff --git a/decisions/2026-04-17-code-server-upgrade.md b/decisions/2026-04-17-code-server-upgrade.md new file mode 100644 index 0000000..c4d3d1e --- /dev/null +++ b/decisions/2026-04-17-code-server-upgrade.md @@ -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 на хосте. diff --git a/projects/dttb/openclaw.md b/projects/dttb/openclaw.md new file mode 100644 index 0000000..1763e4e --- /dev/null +++ b/projects/dttb/openclaw.md @@ -0,0 +1,380 @@ +# OpenClaw — основной AI-бот (LXC 137) + +Справочник по установке, настройке и починке OpenClaw. Обновлён 2026-04-17. + +## Что это + +**OpenClaw** (в Telegram/Nextcloud — "Максимка") — основной AI-бот Олега. Multi-channel AI gateway: принимает сообщения из Telegram и Nextcloud Talk, отвечает через OmniRoute (бесплатные модели) и умеет делегировать сложные задачи на code-server (Opus 4.7 через Max подписку). + +- **NPM пакет:** [`openclaw`](https://www.npmjs.com/package/openclaw) +- **GitHub:** https://github.com/openclaw/openclaw +- **Автор конфига:** установлен и ведётся Олегом под персонажа "Максимка" 🤖 + +## Где живёт + +| Параметр | Значение | +|----------|----------| +| Proxmox LXC | **137** (hostname `openclaw`) | +| IP | 10.0.0.239 (LAN) / 100.70.167.54 (NetBird) | +| CPU / RAM | 2 vCPU / 6 GB | +| Node.js | v24.x | +| Доступ | `sshpass -p '1qaz!QAZ' ssh root@10.0.0.250 "pct exec 137 -- bash"` | + +## Установка (из чистого LXC) + +```bash +# Ubuntu LXC с Node ≥ 20 +apt update && apt install -y nodejs npm +npm install -g openclaw +openclaw setup # интерактивный онбординг +openclaw configure # настройка каналов, моделей, креденшалов +``` + +Бинарь попадает в `/usr/bin/openclaw` (shim), код в `/usr/lib/node_modules/openclaw/`. + +## Структура на диске + +``` +/root/.openclaw/ ← state dir (OPENCLAW_STATE_DIR) +├── openclaw.json ← главный config +├── openclaw.json.bak ← автобэкап (последний) +├── openclaw.json.bak-YYYY-MM-DD-... ← ручные бэкапы (сам делай перед правками) +├── agents/ +│ ├── main/ +│ │ ├── sessions/ +│ │ │ ├── sessions.json ← индекс сессий (key → id, model, tokens) +│ │ │ ├── .jsonl ← полная переписка сессии (messages, tool calls) +│ │ │ └── .jsonl.reset.* ← архив после /reset +│ │ └── agent/models.json ← модели доступные агенту (в кэше) +│ ├── codex/ +│ └── claude-code/ +├── nextcloud-talk/ ← state Nextcloud Talk канала +├── credentials/ +├── memory/ ← векторная память (если включена) +├── canvas/ ← Canvas host контент +├── delivery-queue/ +├── flows/ +├── exec-approvals.json ← whitelist команд для exec tool +└── storage.sqlite? (нет в openclaw, только у omniroute) + +/root/clawd/ ← рабочая папка бота (workspace) +├── IDENTITY.md ← личность бота (имя, язык, аватар) +├── INFRASTRUCTURE.md ← карта инфраструктуры для бота +├── TOOLS.md ← креды, порты, ссылки (важно держать актуальным) +├── DELEGATION.md ← инструкция как делегировать на Opus/code-server +├── MEMORY.md ← что помнить постоянно +├── SOUL.md ← характер, вайб +├── USER.md ← что знать про пользователя (Олега) +├── AGENTS.md ← про суб-агентов +├── HEARTBEAT.md ← статус-флаг для self-check +├── HAPP-VPN.md ← текущие VPN настройки пользователя +├── tasks.md ← TODO бота +├── scripts/ ← рабочие скрипты (wrapper, monitor, cron) +│ ├── claude-code-wrapper.sh ← **делегирование на Opus 4.7** +│ ├── email_monitor.py ← cron */10, Авито уведомления +│ ├── znam-pairing-check.sh ← cron */3 +│ └── nextcloud-talk-bot.py ← legacy (старый бот, не используется) +├── knowledge-base/ ← база знаний бота +├── memory/ ← его заметки +├── projects/ ← проекты +├── prompts/ ← системные промпты +└── claude-code-sessions/ ← сессии claude CLI на этой машине (не на code-server) + +/root/.config/systemd/user/ +└── openclaw-gateway.service ← **systemd --user** service (не /etc/systemd/system!) +``` + +## Сервис (systemd user) + +OpenClaw gateway — systemd **user**-level unit, не system. Все команды с `--user`. + +```bash +systemctl --user status openclaw-gateway.service +systemctl --user restart openclaw-gateway.service +systemctl --user reset-failed openclaw-gateway.service # при restart loop +journalctl --user -u openclaw-gateway.service -n 50 --no-pager +``` + +Unit запускает: +``` +ExecStart=/usr/bin/node /usr/lib/node_modules/openclaw/dist/index.js gateway --port 18789 +``` + +Порты: +- **18789** — gateway (WebSocket + HTTP), в `.env` `OPENCLAW_GATEWAY_PORT` +- **18789/__openclaw__/canvas/** — Canvas host (UI) +- Если запущен в `--dev`: gateway 19001 + +## Конфигурация: `openclaw.json` + +Единый JSON, валидируется zod-схемой с `additionalProperties: false` на большинстве секций. **Любой лишний ключ ломает старт** с `Config invalid`. + +### Просмотр и правка + +```bash +openclaw config file # путь к активному конфигу +openclaw config get gateway.port # значение по dot-path +openclaw config set gateway.port 18789 # изменить +openclaw config unset acp.agents # удалить ключ +openclaw config schema # полная JSON schema — узнать какие поля допустимы +openclaw config validate # проверить без рестарта +openclaw doctor # диагностика +openclaw doctor --fix # автофикс (не всесильный, делай бэкап) +``` + +### Секции конфига (по schema) + +- `env` — переменные окружения gateway +- `update` — auto-update настройки, канал релизов +- `agents` — defaults (модель, workspace, concurrency) + **list** (массив агентов, не объект!) +- `acp` — Agent Control Protocol. Допустимые ключи: `enabled, dispatch, backend, defaultAgent, allowedAgents, maxConcurrentSessions, stream, runtime`. **`agents` запрещён!** +- `auth` — API ключи профилей +- `channels` — telegram, nextcloud-talk, discord и т.д. +- `messages` — маршрутизация сообщений +- `commands` — кастомные slash-команды +- `hooks` — webhook и event-хуки +- `skills` — skill-паки +- `tools` — browser, search, file, runtime и пр. +- `gateway` — настройки WS-сервера (порт, auth, binding) +- `wizard` — состояние setup wizard +- `meta` — версия/метаданные +- `logging` — уровни и вывод логов +- `browser` — headless browser настройки +- `ui` — UI preferences +- `models` — провайдеры + каталог моделей +- `bindings` — key bindings +- `broadcast` — broadcast/notification +- `audio` — входы/выходы аудио +- `session` — управление сессиями и persistence +- `cron` — scheduled tasks через gateway +- `web` — web server / API +- `discovery` — service discovery (Tailscale + CoreDNS) +- `canvasHost` — Canvas +- `talk` — голос/речь +- `plugins` — плагины +- `diagnostics` — OpenTelemetry, cache-trace +- `cli` — CLI баннер, startup +- `secrets` — secret providers +- `mcp` — MCP-сервера + +### Провайдеры моделей (наш стек) + +В `openclaw.json → models.providers` у Олега настроены: +- `openrouter` +- `anthropic` +- `zai` — OmniRoute через ZenAI адаптер +- `omniroute` — прямой OmniRoute (localhost:20128 на code-server) +- `zai-orig` — оригинальный zai endpoint + +### Модели в сессиях — **НЕ ТРОГАЙ** + +В `agents/main/sessions/sessions.json` и `agent/models.json` модели хранятся в формате: +- `kr/claude-sonnet-4.5` — Kiro провайдер +- `cx/gpt-5.4` — Codex (OpenAI) +- `gh/claude-sonnet-4.5` — GitHub Models +- `glm/glm-5.1` — Z.AI GLM +- `gemini-cli/gemini-2.5-pro` — Google Gemini CLI + +**Не добавляй префикс `zai/`!** Это прямая адресация Kiro/Codex/GH/GLM провайдеров. Работает. + +`openclaw models list` показывает только `zai/*` — это view того что openclaw регистрирует локально, но провайдеры резолвят и `kr/...` напрямую. + +Лог вида: +``` +[diagnostic] FailoverError: Unknown model: kr/claude-sonnet-4.5 ... next=zai/kr/claude-sonnet-4.5 +``` +— **безвредный warning** с автофоллбеком. Игнорируй. Это НЕ причина того что бот не отвечает. + +## Делегирование на code-server (Opus 4.7) + +Для сложных задач (большой рефакторинг, генерация кода) бот делегирует на LXC 132 (code-server) где установлен Claude Code CLI с Max подпиской. + +**Wrapper:** `/root/clawd/scripts/claude-code-wrapper.sh` + +Текущая (рабочая, 2026-04-17) реализация — non-interactive print-режим: +```bash +#!/bin/bash +# Wrapper: делегирует задачу на code-server (LXC 132), Opus 4.7. +# Использование: +# claude-code-wrapper.sh "текст задачи" +# echo "задача" | claude-code-wrapper.sh +set -e +if [ -t 0 ] && [ $# -eq 0 ]; then + echo "ERROR: нужен prompt в аргументе или на stdin" >&2 + exit 2 +fi +PROMPT="${*:-$(cat)}" +PROMPT_B64=$(printf %s "$PROMPT" | base64 -w0) +ssh -o StrictHostKeyChecking=no root@10.0.0.250 \ + "pct exec 132 -- bash -c \"cd /root && echo $PROMPT_B64 | base64 -d | claude -p --output-format text\"" +``` + +Ключевое: **`claude -p`** (print-режим). Без `-p` запускается REPL и виснет. + +Инструкция для самого бота — в `/root/clawd/DELEGATION.md`. + +## Каналы + +### Telegram +- Bot token хранится в `channels.telegram.token` (через `ref:env` или напрямую) +- `dmPolicy` и `groupPolicy` — доступ. **Open policy небезопасно** (security audit ругается), используй `allowlist` + `allowFrom` +- Bot username указан в openclaw status + +### Nextcloud Talk +- URL `http://10.0.0.230:11001` (Nextcloud AIO) +- Пользователь `maximka` / `MaximkaBot2026` +- Основная беседа token: `aecax6yg` +- Админ: `admin` / `1qaz!QAZ` + +## Частые проблемы и их решения + +### Проблема: `Config invalid ... Unrecognized key` +Новая версия openclaw ужесточила schema. Старые поля больше не принимаются. +1. `cp /root/.openclaw/openclaw.json /root/.openclaw/openclaw.json.bak-$(date +%F-%H%M)` +2. `openclaw doctor --fix` — мигрирует что может +3. Если не помогло — получить expected schema: `openclaw config schema` (JSON), сравнить со своим config +4. Частые исправления: + - `acp.agents` → перенести содержимое в `agents.list` (**массив**!), удалить из acp + - `agents.list` как `{"name": {...}}` → переделать в `[{"id":"name", ...}]` + - Удалить неизвестные top-level ключи + +### Проблема: Gateway падает с `Cannot find module 'dist/index.js'` +Временная ошибка во время `npm install` (файлы распаковываются). Подождать, сервис сам поднимется через Restart=always. + +### Проблема: Bot "залип" — не отвечает в Telegram/Talk +Порядок проверки: +1. `pct status 137` — LXC запущен? +2. `pct exec 137 -- systemctl --user is-active openclaw-gateway.service` — gateway активен? +3. `pct exec 137 -- openclaw status` — каналы ON? сессии есть? +4. `journalctl --user -u openclaw-gateway.service --since "10 min ago" | grep -iE "error|fail"` — последние ошибки +5. Если gateway в restart-loop: `systemctl --user reset-failed openclaw-gateway.service` перед рестартом + +### Проблема: Бот застревает при делегировании на Opus +Wrapper запускал `claude` без `-p` → интерактивный REPL → висел. Решение уже в wrapper (2026-04-17). Если опять: проверить что `/root/clawd/scripts/claude-code-wrapper.sh` использует `claude -p --output-format text`, а не голый `claude`. + +### Проблема: периодические сбои `sendChatAction failed: Network request failed` и "Something went wrong" (причина — IPv6) + +**Корень (обнаружено 2026-04-17):** в LXC 137 IPv6 настроен, но наружу не маршрутизируется. `curl -4 https://api.telegram.org/` → 302 OK; `curl -6 https://api.telegram.org/` → connection failed. Node.js по умолчанию может резолвить AAAA первым и застревать на IPv6. Это даёт случайные `Network request failed` в Telegram API → у бота не отправляется typing-индикатор и ответ, пользователь видит "Something went wrong". + +**Починка:** форсировать IPv4 через `NODE_OPTIONS=--dns-result-order=ipv4first` в systemd unit. + +```bash +UNIT=/root/.config/systemd/user/openclaw-gateway.service +cp $UNIT $UNIT.bak-$(date +%F-%H%M) +sed -i "/^Environment=OPENCLAW_GATEWAY_PORT=/a Environment=NODE_OPTIONS=--dns-result-order=ipv4first" $UNIT +systemctl --user daemon-reload +systemctl --user restart openclaw-gateway.service +``` + +Проверка: после рестарта в логах gateway не должно быть `sendChatAction failed: Network request failed` при нормальной работе. + +### Проблема: `FailoverError: Unknown model: kr/...` + +Ошибка пользователю "⚠️ Something went wrong while processing your request. Please try again, or use /new to start a fresh session." отправляется OpenClaw когда *external run* не вернул осмысленную ошибку (не OAuth, не API key, не session mismatch — см. `buildExternalRunFailureText` в `agent-runner.runtime-*.js`). То есть это fallback-сообщение для **неклассифицированных** ошибок. + +**Корень на нашей инсталляции (2026-04-17):** +В `openclaw.json → models.providers` **дублированы** два провайдера, указывающие на один и тот же OmniRoute (`10.0.0.179:20128`): +- `zai` — модели `kr/claude-sonnet-4.5`, `gh/claude-sonnet-4.5`, `glm/glm-5.1`, `cx/gpt-5.4` +- `omniroute` — те же модели + +В 2026.4.15 openclaw регистрирует модели **с префиксом провайдера** (`zai/kr/...`). Запрос без префикса (`kr/claude-sonnet-4.5`, как хранится в старых сессиях) не резолвится → FailoverError → fallback на `zai/kr/claude-sonnet-4.5` через `agents.defaults.model.fallbacks`. Fallback обычно успешен (+3-8 сек к ответу), но иногда падает → пользователь видит "Something went wrong". + +**Как починить окончательно (рекомендуется):** + +```bash +# Бэкап +cp /root/.openclaw/openclaw.json /root/.openclaw/openclaw.json.bak-dedup-$(date +%F) + +# Вариант A: удалить дубликат-провайдер omniroute (оставить zai) +openclaw config unset models.providers.omniroute + +# Вариант B: обновить model в индексе сессий (НЕ в .jsonl файлах!) +python3 <<'PY' +import json +p = '/root/.openclaw/agents/main/sessions/sessions.json' +d = json.load(open(p)) +for k, v in d.items(): + m = v.get('model') + if m and not m.startswith('zai/') and not m.startswith('openai/'): + v['model'] = 'zai/' + m +json.dump(d, open(p, 'w'), indent=2) +PY + +# После любого варианта: +systemctl --user restart openclaw-gateway.service +``` + +**ВАЖНО — что НЕ делать (уроки 2026-04-17):** +- НЕ трогай `agent/models.json` — там `id` моделей из registry провайдеров; замена id на `zai/...` сломает Kiro провайдер (бот "перестаёт отвечать"). +- НЕ трогай `.jsonl` файлы в `sessions/` — это неизменяемая история сообщений. +- **Даже точечное изменение поля `model` в sessions.json для одной сессии — ломает бота** (проверено: обновил только `agent:main:telegram:group:@heartbeat` с `kr/...` на `zai/kr/...`, бот перестал отвечать, откат из бэкапа вернул работу). Причина не совсем ясна, возможно конфликт между session.model и зарегистрированными в runtime моделями. +- НЕ удалять провайдер `zai` или `omniroute` — оба пробовали, ломает. + +**Реальная причина периодических "Something went wrong" — IPv6**, не провайдеры моделей. См. раздел выше про `NODE_OPTIONS=--dns-result-order=ipv4first`. FailoverError `kr/...` → `zai/kr/...` — это автофоллбек который работает, не трогай. + +### Проблема: CPU/load высокий +В LXC 137 `/proc/loadavg` показывает **нагрузку хоста Proxmox**, не контейнера. Смотри реальную нагрузку через `top`/`ps aux --sort=-%cpu` внутри контейнера. + +## Обновление + +```bash +# Версия установленная vs актуальная +cat /usr/lib/node_modules/openclaw/package.json | grep version +npm view openclaw version + +# Обновить +npm install -g openclaw@latest + +# Перезапустить gateway +systemctl --user restart openclaw-gateway.service +systemctl --user status openclaw-gateway.service + +# После обновления часто нужно: +openclaw doctor --fix +``` + +**Перед обновлением делай бэкап** `/root/.openclaw/openclaw.json` — схема меняется. + +## Полезные команды + +```bash +openclaw status # общий статус + сессии + каналы +openclaw status --all # расширенный +openclaw logs --follow # live tail gateway +openclaw gateway probe # диагностика reachability +openclaw models list # модели (только zai/*) +openclaw sessions list # все сессии +openclaw doctor # health-check +openclaw security audit # аудит безопасности (ACP/каналы) +openclaw security audit --deep # подробный +openclaw memory status --deep # состояние векторной памяти +openclaw --version # версия +openclaw config file # путь к config +openclaw config schema # JSON schema +``` + +## Что связано с OpenClaw (не путать) + +- **LXC 129** — `clawdbot-1` (старый бот, @maxim_dttb_bot). **Удалён 2026-04-14**. Данные перенесены в `/root/clawd/` на LXC 137. +- **LXC 132** — `code-server` (VS Code IDE + OmniRoute + CLIProxy). Не бот, а dev-среда + backend для ресёрча. +- **LXC 134** — `ZnamSecurityBot`. Отдельный Telegram-бот безопасности, не OpenClaw. + +## Бэкап и восстановление + +```bash +openclaw backup create # архив state (/root/.openclaw/backups/) +openclaw backup verify # проверка +# Или ручной: +tar czf /root/openclaw-state-$(date +%F).tar.gz /root/.openclaw /root/clawd +``` + +Ключевые файлы для ручного бэкапа: +- `/root/.openclaw/openclaw.json` — конфиг +- `/root/.openclaw/agents/main/sessions/` — история сессий +- `/root/clawd/*.md` — personality и инструкции +- `/root/.config/systemd/user/openclaw-gateway.service` — systemd unit + +## История изменений (релевантное) + +- **2026-04-14** — LXC 129 (старый Clawdbot) удалён, данные в `/root/clawd/` на LXC 137. Решение: [decisions/2026-04-14-openclaw-claude-code-pipeline.md](../../decisions/2026-04-14-openclaw-claude-code-pipeline.md). +- **2026-04-17** — обновление 2026.4.10 → 2026.4.15, починка config (удалён `acp.agents`, `agents.list` object → удалён), починка wrapper (`claude` → `claude -p`), создан DELEGATION.md. Решение: [decisions/2026-04-17-code-server-upgrade.md](../../decisions/2026-04-17-code-server-upgrade.md). diff --git a/projects/dttb/proxmox-inventory.md b/projects/dttb/proxmox-inventory.md index e7b7382..878baf5 100644 --- a/projects/dttb/proxmox-inventory.md +++ b/projects/dttb/proxmox-inventory.md @@ -259,11 +259,11 @@ |----------|----------| | VMID | 132 | | Статус | 🟢 running | -| CPU | 2 vCPU | -| RAM | 2 GB (использовано: 1.2 GB) | -| Диск | 7.8 GB (использовано: 4.3 GB) | -| Uptime | ~5.2 дней | -| Назначение | VS Code Server (веб-IDE) | +| CPU | 4 vCPU (увеличено с 2 → 4 — 2026-04-17) | +| RAM | 8 GB (использовано: ~1 GB) | +| Диск | 50 GB (использовано: 22 GB) | +| Uptime | свежий рестарт 2026-04-17 | +| Назначение | VS Code Server (веб-IDE) + OmniRoute + CLIProxy | ### LXC 133 — clawdbot-1 | Параметр | Значение | @@ -314,6 +314,20 @@ | NPM домен | git.dttb.ru → 10.0.0.189:3000 | | Назначение | Gitea — Git-сервер | +### LXC 137 — openclaw +| Параметр | Значение | +|----------|----------| +| VMID | 137 | +| Статус | 🟢 running | +| Hostname | openclaw | +| CPU | 2 vCPU | +| RAM | 6 GB | +| IP | 10.0.0.239 (LAN) / 100.70.167.54 (NetBird) | +| Назначение | **Основной AI-бот Олега (OpenClaw)** — Nextcloud Talk + Telegram | +| Ключевые пути | /root/clawd (KB, sessions, memory, scripts) | +| Сервис | systemd --user → `openclaw-gateway.service` (автозапуск) | +| Версия | npm пакет `openclaw`, CLI `openclaw`, gateway на порту 18789 | + --- ## 🔴 Остановленные LXC